Changeset 4461:103587c7ae5f in nginx


Ignore:
Timestamp:
02/13/12 10:42:44 (8 years ago)
Author:
Valentin Bartenev <vbart@…>
Branch:
default
Phase:
public
Convert:
svn:c3fe7df1-7212-e011-8a91-001109144009/trunk@4462
Message:

Proxy: renamed some "proxy_redirect" related declarations to a more general and
reusable.

No functional changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/http/modules/ngx_http_proxy_module.c

    r4422 r4461  
    1111
    1212
    13 typedef struct ngx_http_proxy_redirect_s  ngx_http_proxy_redirect_t;
    14 
    15 typedef ngx_int_t (*ngx_http_proxy_redirect_pt)(ngx_http_request_t *r,
    16     ngx_table_elt_t *h, size_t prefix, ngx_http_proxy_redirect_t *pr);
    17 
    18 struct ngx_http_proxy_redirect_s {
    19     ngx_http_proxy_redirect_pt     handler;
     13typedef struct ngx_http_proxy_rewrite_s  ngx_http_proxy_rewrite_t;
     14
     15typedef ngx_int_t (*ngx_http_proxy_rewrite_pt)(ngx_http_request_t *r,
     16    ngx_table_elt_t *h, size_t prefix, ngx_http_proxy_rewrite_t *pr);
     17
     18struct ngx_http_proxy_rewrite_s {
     19    ngx_http_proxy_rewrite_pt      handler;
    2020
    2121    union {
     
    2424        ngx_http_regex_t          *regex;
    2525#endif
    26     } redirect;
     26    } pattern;
    2727
    2828    ngx_http_complex_value_t       replacement;
     
    22752275    ngx_int_t                   rc;
    22762276    ngx_uint_t                  i;
     2277    ngx_http_proxy_rewrite_t   *pr;
    22772278    ngx_http_proxy_loc_conf_t  *plcf;
    2278     ngx_http_proxy_redirect_t  *pr;
    22792279
    22802280    plcf = ngx_http_get_module_loc_conf(r, ngx_http_proxy_module);
     
    22992299
    23002300static ngx_int_t
    2301 ngx_http_proxy_rewrite_redirect_complex(ngx_http_request_t *r,
    2302     ngx_table_elt_t *h, size_t prefix, ngx_http_proxy_redirect_t *pr)
     2301ngx_http_proxy_rewrite_complex_handler(ngx_http_request_t *r,
     2302    ngx_table_elt_t *h, size_t prefix, ngx_http_proxy_rewrite_t *pr)
    23032303{
    23042304    size_t      len;
    23052305    u_char     *data, *p;
    2306     ngx_str_t   redirect, replacement;
    2307 
    2308     if (ngx_http_complex_value(r, &pr->redirect.complex, &redirect) != NGX_OK) {
     2306    ngx_str_t   pattern, replacement;
     2307
     2308    if (ngx_http_complex_value(r, &pr->pattern.complex, &pattern) != NGX_OK) {
    23092309        return NGX_ERROR;
    23102310    }
    23112311
    2312     if (redirect.len > h->value.len - prefix
    2313         || ngx_rstrncmp(h->value.data + prefix, redirect.data,
    2314                         redirect.len) != 0)
     2312    if (pattern.len > h->value.len - prefix
     2313        || ngx_rstrncmp(h->value.data + prefix, pattern.data,
     2314                        pattern.len) != 0)
    23152315    {
    23162316        return NGX_DECLINED;
     
    23212321    }
    23222322
    2323     len = replacement.len + h->value.len - redirect.len;
     2323    len = replacement.len + h->value.len - pattern.len;
    23242324
    23252325    data = ngx_pnalloc(r->pool, len);
     
    23342334    }
    23352335
    2336     ngx_memcpy(p, h->value.data + prefix + redirect.len,
    2337                h->value.len - redirect.len - prefix);
     2336    ngx_memcpy(p, h->value.data + prefix + pattern.len,
     2337               h->value.len - pattern.len - prefix);
    23382338
    23392339    h->value.len = len;
     
    23472347
    23482348static ngx_int_t
    2349 ngx_http_proxy_rewrite_redirect_regex(ngx_http_request_t *r, ngx_table_elt_t *h,
    2350     size_t prefix, ngx_http_proxy_redirect_t *pr)
     2349ngx_http_proxy_rewrite_regex_handler(ngx_http_request_t *r, ngx_table_elt_t *h,
     2350    size_t prefix, ngx_http_proxy_rewrite_t *pr)
    23512351{
    23522352    size_t      len;
    23532353    u_char     *data;
    2354     ngx_str_t   redirect, replacement;
    2355 
    2356     redirect.len = h->value.len - prefix;
    2357     redirect.data = h->value.data + prefix;
    2358 
    2359     if (ngx_http_regex_exec(r, pr->redirect.regex, &redirect) != NGX_OK) {
     2354    ngx_str_t   pattern, replacement;
     2355
     2356    pattern.len = h->value.len - prefix;
     2357    pattern.data = h->value.data + prefix;
     2358
     2359    if (ngx_http_regex_exec(r, pr->pattern.regex, &pattern) != NGX_OK) {
    23602360        return NGX_DECLINED;
    23612361    }
     
    25082508    ngx_hash_init_t             hash;
    25092509    ngx_http_core_loc_conf_t   *clcf;
    2510     ngx_http_proxy_redirect_t  *pr;
     2510    ngx_http_proxy_rewrite_t   *pr;
    25112511    ngx_http_script_compile_t   sc;
    25122512
     
    27612761
    27622762            conf->redirects = ngx_array_create(cf->pool, 1,
    2763                                             sizeof(ngx_http_proxy_redirect_t));
     2763                                             sizeof(ngx_http_proxy_rewrite_t));
    27642764            if (conf->redirects == NULL) {
    27652765                return NGX_CONF_ERROR;
     
    27712771            }
    27722772
    2773             ngx_memzero(&pr->redirect.complex,
     2773            ngx_memzero(&pr->pattern.complex,
    27742774                        sizeof(ngx_http_complex_value_t));
    27752775
    27762776            ngx_memzero(&pr->replacement, sizeof(ngx_http_complex_value_t));
    27772777
    2778             pr->handler = ngx_http_proxy_rewrite_redirect_complex;
     2778            pr->handler = ngx_http_proxy_rewrite_complex_handler;
    27792779
    27802780            if (conf->vars.uri.len) {
    2781                 pr->redirect.complex.value = conf->url;
     2781                pr->pattern.complex.value = conf->url;
    27822782                pr->replacement.value = conf->location;
    27832783
    27842784            } else {
    2785                 pr->redirect.complex.value.len = conf->url.len
    2786                                                  + sizeof("/") - 1;
    2787 
    2788                 p = ngx_pnalloc(cf->pool, pr->redirect.complex.value.len);
     2785                pr->pattern.complex.value.len = conf->url.len
     2786                                                + sizeof("/") - 1;
     2787
     2788                p = ngx_pnalloc(cf->pool, pr->pattern.complex.value.len);
    27892789                if (p == NULL) {
    27902790                    return NGX_CONF_ERROR;
    27912791                }
    27922792
    2793                 pr->redirect.complex.value.data = p;
     2793                pr->pattern.complex.value.data = p;
    27942794
    27952795                p = ngx_cpymem(p, conf->url.data, conf->url.len);
     
    32863286    u_char                            *p;
    32873287    ngx_str_t                         *value;
    3288     ngx_http_proxy_redirect_t         *pr;
     3288    ngx_http_proxy_rewrite_t          *pr;
    32893289    ngx_http_compile_complex_value_t   ccv;
    32903290
     
    33213321    if (plcf->redirects == NULL) {
    33223322        plcf->redirects = ngx_array_create(cf->pool, 1,
    3323                                            sizeof(ngx_http_proxy_redirect_t));
     3323                                           sizeof(ngx_http_proxy_rewrite_t));
    33243324        if (plcf->redirects == NULL) {
    33253325            return NGX_CONF_ERROR;
     
    33473347        }
    33483348
    3349         pr->handler = ngx_http_proxy_rewrite_redirect_complex;
    3350 
    3351         ngx_memzero(&pr->redirect.complex, sizeof(ngx_http_complex_value_t));
     3349        pr->handler = ngx_http_proxy_rewrite_complex_handler;
     3350
     3351        ngx_memzero(&pr->pattern.complex, sizeof(ngx_http_complex_value_t));
    33523352
    33533353        ngx_memzero(&pr->replacement, sizeof(ngx_http_complex_value_t));
    33543354
    33553355        if (plcf->vars.uri.len) {
    3356             pr->redirect.complex.value = plcf->url;
     3356            pr->pattern.complex.value = plcf->url;
    33573357            pr->replacement.value = plcf->location;
    33583358
    33593359        } else {
    3360             pr->redirect.complex.value.len = plcf->url.len + sizeof("/") - 1;
    3361 
    3362             p = ngx_pnalloc(cf->pool, pr->redirect.complex.value.len);
     3360            pr->pattern.complex.value.len = plcf->url.len + sizeof("/") - 1;
     3361
     3362            p = ngx_pnalloc(cf->pool, pr->pattern.complex.value.len);
    33633363            if (p == NULL) {
    33643364                return NGX_CONF_ERROR;
    33653365            }
    33663366
    3367             pr->redirect.complex.value.data = p;
     3367            pr->pattern.complex.value.data = p;
    33683368
    33693369            p = ngx_cpymem(p, plcf->url.data, plcf->url.len);
     
    33973397        rc.err.data = errstr;
    33983398
    3399         pr->redirect.regex = ngx_http_regex_compile(cf, &rc);
    3400         if (pr->redirect.regex == NULL) {
     3399        pr->pattern.regex = ngx_http_regex_compile(cf, &rc);
     3400        if (pr->pattern.regex == NULL) {
    34013401            return NGX_CONF_ERROR;
    34023402        }
    34033403
    3404         pr->handler = ngx_http_proxy_rewrite_redirect_regex;
     3404        pr->handler = ngx_http_proxy_rewrite_regex_handler;
    34053405
    34063406#else
     
    34173417        ccv.cf = cf;
    34183418        ccv.value = &value[1];
    3419         ccv.complex_value = &pr->redirect.complex;
     3419        ccv.complex_value = &pr->pattern.complex;
    34203420
    34213421        if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
     
    34233423        }
    34243424
    3425         pr->handler = ngx_http_proxy_rewrite_redirect_complex;
     3425        pr->handler = ngx_http_proxy_rewrite_complex_handler;
    34263426    }
    34273427
Note: See TracChangeset for help on using the changeset viewer.