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 }