Mercurial > hg > nginx
comparison src/http/modules/ngx_http_referer_module.c @ 3459:958f8de0c45f
allow HTTPS referers
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 03 Mar 2010 10:21:12 +0000 |
parents | 42c16d8bddbe |
children | dd1570b6f237 |
comparison
equal
deleted
inserted
replaced
3458:bdcae1a576e3 | 3459:958f8de0c45f |
---|---|
122 } | 122 } |
123 | 123 |
124 len = r->headers_in.referer->value.len; | 124 len = r->headers_in.referer->value.len; |
125 ref = r->headers_in.referer->value.data; | 125 ref = r->headers_in.referer->value.data; |
126 | 126 |
127 if (len < sizeof("http://i.ru") - 1 | 127 if (len >= sizeof("http://i.ru") - 1) { |
128 || (ngx_strncasecmp(ref, (u_char *) "http://", 7) != 0)) | 128 last = ref + len; |
129 { | 129 |
130 if (rlcf->blocked_referer) { | 130 if (ngx_strncasecmp(ref, (u_char *) "http://", 7) == 0) { |
131 goto valid; | 131 ref += 7; |
132 } | 132 goto valid_scheme; |
133 | 133 |
134 goto invalid; | 134 } else if (ngx_strncasecmp(ref, (u_char *) "https://", 8) == 0) { |
135 } | 135 ref += 8; |
136 | 136 goto valid_scheme; |
137 last = ref + len; | 137 } |
138 ref += 7; | 138 } |
139 | |
140 if (rlcf->blocked_referer) { | |
141 goto valid; | |
142 } | |
143 | |
144 goto invalid; | |
145 | |
146 valid_scheme: | |
147 | |
139 i = 0; | 148 i = 0; |
140 key = 0; | 149 key = 0; |
141 | 150 |
142 for (p = ref; p < last; p++) { | 151 for (p = ref; p < last; p++) { |
143 if (*p == '/' || *p == ':') { | 152 if (*p == '/' || *p == ':') { |