Hello! On Sat, Oct 22, 2016 at 12:31:16AM +0300, [email protected] wrote:
> # HG changeset patch > # User Dmitry Lazurkin <[email protected]> > # Date 1476631441 -10800 > # Sun Oct 16 18:24:01 2016 +0300 > # Node ID 9fbfc0ccb28e1eee624ff212de88fa1c051f09d9 > # Parent 56d6bfe6b609c565a9f500bde573fd9b488ff960 > Proxy: support variables for proxy_method directive. > > diff -r 56d6bfe6b609 -r 9fbfc0ccb28e src/http/modules/ngx_http_proxy_module.c > --- a/src/http/modules/ngx_http_proxy_module.c Fri Oct 21 16:28:39 > 2016 +0300 > +++ b/src/http/modules/ngx_http_proxy_module.c Sun Oct 16 18:24:01 > 2016 +0300 > @@ -73,7 +73,7 @@ > ngx_array_t *cookie_domains; > ngx_array_t *cookie_paths; > > - ngx_str_t method; > + ngx_http_complex_value_t *method; > ngx_str_t location; > ngx_str_t url; > > @@ -380,7 +380,7 @@ > > { ngx_string("proxy_method"), > NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, > - ngx_conf_set_str_slot, > + ngx_http_set_complex_value_slot, > NGX_HTTP_LOC_CONF_OFFSET, > offsetof(ngx_http_proxy_loc_conf_t, method), > NULL }, > @@ -1159,8 +1159,10 @@ > /* HEAD was changed to GET to cache response */ > method = u->method; > > - } else if (plcf->method.len) { > - method = plcf->method; > + } else if (plcf->method != NULL) { > + if (ngx_http_complex_value(r, plcf->method, &method) != NGX_OK) { > + return NGX_ERROR; > + } > > } else { > method = r->method_name; > @@ -3158,7 +3160,9 @@ > > #endif > > - ngx_conf_merge_str_value(conf->method, prev->method, ""); > + if (conf->method == NULL) { > + conf->method = prev->method; > + } > > ngx_conf_merge_value(conf->upstream.pass_request_headers, > prev->upstream.pass_request_headers, 1); Looks good, except a few style nits: - We don't usually check pointers with "!= NULL", just testing "if (plcf->method)" would be enough here. - You've forgot to update the "set by ngx_pcalloc()" comment in ngx_http_proxy_create_loc_conf(). Committed with the following patch on top: --- a/src/http/modules/ngx_http_proxy_module.c +++ b/src/http/modules/ngx_http_proxy_module.c @@ -1159,7 +1159,7 @@ ngx_http_proxy_create_request(ngx_http_r /* HEAD was changed to GET to cache response */ method = u->method; - } else if (plcf->method != NULL) { + } else if (plcf->method) { if (ngx_http_complex_value(r, plcf->method, &method) != NGX_OK) { return NGX_ERROR; } @@ -2799,7 +2799,7 @@ ngx_http_proxy_create_loc_conf(ngx_conf_ * conf->upstream.store_values = NULL; * conf->upstream.ssl_name = NULL; * - * conf->method = { 0, NULL }; + * conf->method = NULL; * conf->headers_source = NULL; * conf->headers.lengths = NULL; * conf->headers.values = NULL; Thanks! -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-devel mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-devel
