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:
parent
2b52ec5af4
commit
84ed29ca71
1 changed files with 4 additions and 4 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue