From: Maxim Dounin Date: Mon, 2 Jul 2012 16:59:34 +0000 (+0000) Subject: Merge of r4690: conflicting wildcard server names fix. X-Git-Tag: release-1.2.2~5 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=63c3d481684fed4d9589d4566d3631e21458d215;p=nginx.git Merge of r4690: conflicting wildcard server names fix. With previous code wildcard names were added to hash even if conflict was detected. This resulted in identical names in hash and segfault later in ngx_hash_wildcard_init(). --- diff --git a/src/core/ngx_hash.c b/src/core/ngx_hash.c index 7d04f7484..b53294502 100644 --- a/src/core/ngx_hash.c +++ b/src/core/ngx_hash.c @@ -924,17 +924,6 @@ wildcard: } - hk = ngx_array_push(hwc); - if (hk == NULL) { - return NGX_ERROR; - } - - hk->key.len = last - 1; - hk->key.data = p; - hk->key_hash = 0; - hk->value = value; - - /* check conflicts in wildcard hash */ name = keys->elts; @@ -972,5 +961,18 @@ wildcard: ngx_memcpy(name->data, key->data + skip, name->len); + + /* add to wildcard hash */ + + hk = ngx_array_push(hwc); + if (hk == NULL) { + return NGX_ERROR; + } + + hk->key.len = last - 1; + hk->key.data = p; + hk->key_hash = 0; + hk->value = value; + return NGX_OK; }