Merge of r4833: limit req: fix of rbtree node insertion.

Limit req: fix of rbtree node insertion on hash collisions.

The rbtree used in ngx_http_limit_req_module has two level of keys, the top is
hash, and the next is the value string itself. However, when inserting a new
node, only hash has been set, while the value string has been left empty.

The bug was introduced in r4419 (1.1.14).
Found by Charles Chen.
This commit is contained in:
Maxim Dounin 2012-09-24 19:11:45 +00:00
parent 917a5c0a6f
commit 8a90b57fc9
1 changed files with 4 additions and 4 deletions

View File

@ -444,17 +444,17 @@ ngx_http_limit_req_lookup(ngx_http_limit_req_limit_t *limit, ngx_uint_t hash,
node->key = hash;
ngx_rbtree_insert(&ctx->sh->rbtree, node);
lr = (ngx_http_limit_req_node_t *) &node->color;
ngx_queue_insert_head(&ctx->sh->queue, &lr->queue);
lr->len = (u_char) len;
lr->excess = 0;
ngx_memcpy(lr->data, data, len);
ngx_rbtree_insert(&ctx->sh->rbtree, node);
ngx_queue_insert_head(&ctx->sh->queue, &lr->queue);
if (account) {
lr->last = now;
lr->count = 0;