Mercurial > hg > nginx
comparison src/http/ngx_http_core_module.c @ 3368:75b96847351a
fix server_name regex named captures given by "?P<...>"
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 29 Nov 2009 20:39:32 +0000 |
parents | d8228f0b5113 |
children | 6b8e5c882e47 |
comparison
equal
deleted
inserted
replaced
3367:568a854383f9 | 3368:75b96847351a |
---|---|
3505 sn->regex = NULL; | 3505 sn->regex = NULL; |
3506 #endif | 3506 #endif |
3507 sn->server = cscf; | 3507 sn->server = cscf; |
3508 sn->name = value[i]; | 3508 sn->name = value[i]; |
3509 | 3509 |
3510 ngx_strlow(sn->name.data, sn->name.data, sn->name.len); | |
3511 | |
3512 if (value[i].data[0] != '~') { | 3510 if (value[i].data[0] != '~') { |
3511 ngx_strlow(sn->name.data, sn->name.data, sn->name.len); | |
3513 continue; | 3512 continue; |
3514 } | 3513 } |
3515 | 3514 |
3516 #if (NGX_PCRE) | 3515 #if (NGX_PCRE) |
3517 { | 3516 { |
3518 ngx_regex_compile_t rc; | 3517 u_char *p; |
3519 u_char errstr[NGX_MAX_CONF_ERRSTR]; | 3518 ngx_regex_compile_t rc; |
3519 u_char errstr[NGX_MAX_CONF_ERRSTR]; | |
3520 | 3520 |
3521 if (value[i].len == 1) { | 3521 if (value[i].len == 1) { |
3522 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | 3522 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
3523 "empty regex in server name \"%V\"", &value[i]); | 3523 "empty regex in server name \"%V\"", &value[i]); |
3524 return NGX_CONF_ERROR; | 3524 return NGX_CONF_ERROR; |
3530 ngx_memzero(&rc, sizeof(ngx_regex_compile_t)); | 3530 ngx_memzero(&rc, sizeof(ngx_regex_compile_t)); |
3531 | 3531 |
3532 rc.pattern = value[i]; | 3532 rc.pattern = value[i]; |
3533 rc.err.len = NGX_MAX_CONF_ERRSTR; | 3533 rc.err.len = NGX_MAX_CONF_ERRSTR; |
3534 rc.err.data = errstr; | 3534 rc.err.data = errstr; |
3535 | |
3536 for (p = value[i].data; p < value[i].data + value[i].len; p++) { | |
3537 if (*p >= 'A' && *p <= 'Z') { | |
3538 rc.options = NGX_REGEX_CASELESS; | |
3539 break; | |
3540 } | |
3541 } | |
3535 | 3542 |
3536 sn->regex = ngx_http_regex_compile(cf, &rc); | 3543 sn->regex = ngx_http_regex_compile(cf, &rc); |
3537 if (sn->regex == NULL) { | 3544 if (sn->regex == NULL) { |
3538 return NGX_CONF_ERROR; | 3545 return NGX_CONF_ERROR; |
3539 } | 3546 } |