Mercurial > hg > nginx
changeset 2195:a953f73273ee
server_name "" support
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 21 Aug 2008 12:56:10 +0000 |
parents | d3f833da6b65 |
children | fab3fa7339ff |
files | src/core/ngx_hash.c src/http/ngx_http_core_module.c src/http/ngx_http_request.c |
diffstat | 3 files changed, 32 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_hash.c Tue Aug 19 19:50:53 2008 +0000 +++ b/src/core/ngx_hash.c Thu Aug 21 12:56:10 2008 +0000 @@ -220,6 +220,10 @@ } } + if (len == 0) { + return NULL; + } + if (hash->wc_head && hash->wc_head->hash.buckets) { value = ngx_hash_find_wc_head(hash->wc_head, name, len);
--- a/src/http/ngx_http_core_module.c Tue Aug 19 19:50:53 2008 +0000 +++ b/src/http/ngx_http_core_module.c Thu Aug 21 12:56:10 2008 +0000 @@ -3094,17 +3094,24 @@ ch = value[1].data[0]; - if (cscf->server_name.data == NULL && value[1].len) { - name = value[1]; - - if (ch == '.') { - name.len--; - name.data++; - } - - cscf->server_name.len = name.len; - cscf->server_name.data = ngx_pstrdup(cf->pool, &name); - if (cscf->server_name.data == NULL) { + if (cscf->server_name.data == NULL) { + if (value[1].len) { + name = value[1]; + + if (ch == '.') { + name.len--; + name.data++; + } + + cscf->server_name.len = name.len; + cscf->server_name.data = ngx_pstrdup(cf->pool, &name); + if (cscf->server_name.data == NULL) { + return NGX_CONF_ERROR; + } + + } else { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "the first server name must not be empty"); return NGX_CONF_ERROR; } } @@ -3113,8 +3120,7 @@ ch = value[i].data[0]; - if (value[i].len == 0 - || (ch == '*' && (value[i].len < 3 || value[i].data[1] != '.')) + if ((ch == '*' && (value[i].len < 3 || value[i].data[1] != '.')) || (ch == '.' && value[i].len < 2)) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
--- a/src/http/ngx_http_request.c Tue Aug 19 19:50:53 2008 +0000 +++ b/src/http/ngx_http_request.c Thu Aug 21 12:56:10 2008 +0000 @@ -571,6 +571,7 @@ int ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) { + size_t len; const char *servername; ngx_connection_t *c; ngx_http_request_t *r; @@ -587,12 +588,15 @@ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, "SSL server name: \"%s\"", servername); + len = ngx_strlen(servername); + + if (len == 0) { + return SSL_TLSEXT_ERR_NOACK; + } + r = c->data; - if (ngx_http_find_virtual_server(r, (u_char *) servername, - ngx_strlen(servername)) - != NGX_OK) - { + if (ngx_http_find_virtual_server(r, (u_char *) servername, len) != NGX_OK) { return SSL_TLSEXT_ERR_NOACK; } @@ -1559,7 +1563,7 @@ ngx_http_core_srv_conf_t *cscf; u_char buf[32]; - if (len == 0 || r->virtual_names == NULL) { + if (r->virtual_names == NULL) { return NGX_DECLINED; }