]> git.kaiwu.me - nginx.git/commitdiff
Perl: named locations in $r->internal_redirect().
authorMaxim Dounin <mdounin@mdounin.ru>
Fri, 12 Jul 2019 12:39:28 +0000 (15:39 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Fri, 12 Jul 2019 12:39:28 +0000 (15:39 +0300)
src/http/modules/perl/ngx_http_perl_module.c

index a123e3875bacbb30bfcdcbab93a34eac5a631b74..f3fc629477ff11f7105bdcc835a5401d5b2b5a61 100644 (file)
@@ -257,15 +257,21 @@ ngx_http_perl_handle_request(ngx_http_request_t *r)
     }
 
     if (uri.len) {
-        ngx_str_null(&args);
-        flags = NGX_HTTP_LOG_UNSAFE;
+        if (uri.data[0] == '@') {
+            ngx_http_named_location(r, &uri);
 
-        if (ngx_http_parse_unsafe_uri(r, &uri, &args, &flags) != NGX_OK) {
-            ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
-            return;
+        } else {
+            ngx_str_null(&args);
+            flags = NGX_HTTP_LOG_UNSAFE;
+
+            if (ngx_http_parse_unsafe_uri(r, &uri, &args, &flags) != NGX_OK) {
+                ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+                return;
+            }
+
+            ngx_http_internal_redirect(r, &uri, &args);
         }
 
-        ngx_http_internal_redirect(r, &uri, &args);
         ngx_http_finalize_request(r, NGX_DONE);
         return;
     }