]> git.kaiwu.me - nginx.git/commitdiff
merge r3460:
authorIgor Sysoev <igor@sysoev.ru>
Mon, 7 Jun 2010 10:15:21 +0000 (10:15 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 7 Jun 2010 10:15:21 +0000 (10:15 +0000)
allow HTTPS referers

src/http/modules/ngx_http_referer_module.c

index 8daa399bd5bd8489db88acd420113d1fd9918a4a..a62b6d4617af8421dc6563070e1e8ab187c80a68 100644 (file)
@@ -124,18 +124,27 @@ ngx_http_referer_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
     len = r->headers_in.referer->value.len;
     ref = r->headers_in.referer->value.data;
 
-    if (len < sizeof("http://i.ru") - 1
-        || (ngx_strncasecmp(ref, (u_char *) "http://", 7) != 0))
-    {
-        if (rlcf->blocked_referer) {
-            goto valid;
+    if (len >= sizeof("http://i.ru") - 1) {
+        last = ref + len;
+
+        if (ngx_strncasecmp(ref, (u_char *) "http://", 7) == 0) {
+            ref += 7;
+            goto valid_scheme;
+
+        } else if (ngx_strncasecmp(ref, (u_char *) "https://", 8) == 0) {
+            ref += 8;
+            goto valid_scheme;
         }
+    }
 
-        goto invalid;
+    if (rlcf->blocked_referer) {
+        goto valid;
     }
 
-    last = ref + len;
-    ref += 7;
+    goto invalid;
+
+valid_scheme:
+
     i = 0;
     key = 0;