changeset 981:6fe76f377a62

fix key length and alignment
author Igor Sysoev <igor@sysoev.ru>
date Sun, 07 Jan 2007 09:18:26 +0000
parents 7cb910b4a58a
children 664afe2c1480
files src/http/modules/ngx_http_limit_zone_module.c
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/modules/ngx_http_limit_zone_module.c
+++ b/src/http/modules/ngx_http_limit_zone_module.c
@@ -10,7 +10,8 @@
 
 
 typedef struct {
-    u_short             len;
+    u_char              color;
+    u_char              len;
     u_short             conn;
     u_char              data[1];
 } ngx_http_limit_zone_node_t;
@@ -148,12 +149,12 @@ ngx_http_limit_zone_handler(ngx_http_req
         }
 
         if (hash == node->key ){
-            lz = (ngx_http_limit_zone_node_t *) &node->data;
+            lz = (ngx_http_limit_zone_node_t *) &node->color;
 
             if (len == (size_t) lz->len
                 && ngx_strncmp(lz->data, vv->data, len) == 0)
             {
-                if (lz->conn < (u_short) lzcf->conn) {
+                if ((ngx_uint_t) lz->conn < lzcf->conn) {
                     lz->conn++;
                     goto done;
                 }
@@ -165,7 +166,7 @@ ngx_http_limit_zone_handler(ngx_http_req
         }
     }
 
-    n = offsetof(ngx_rbtree_node_t, data)
+    n = offsetof(ngx_rbtree_node_t, color)
         + offsetof(ngx_http_limit_zone_node_t, data)
         + len;
 
@@ -175,10 +176,10 @@ ngx_http_limit_zone_handler(ngx_http_req
         return NGX_HTTP_SERVICE_UNAVAILABLE;
     }
 
-    lz = (ngx_http_limit_zone_node_t *) &node->data;
+    lz = (ngx_http_limit_zone_node_t *) &node->color;
 
     node->key = hash;
-    lz->len = (u_short) len;
+    lz->len = (u_char) len;
     lz->conn = 1;
     ngx_memcpy(lz->data, vv->data, len);
 
@@ -214,7 +215,7 @@ ngx_http_limit_zone_cleanup(void *data)
     rbtree = lzcln->shm_zone->data;
     shpool = (ngx_slab_pool_t *) lzcln->shm_zone->shm.addr;
     node = lzcln->node;
-    lz = (ngx_http_limit_zone_node_t *) &node->data;
+    lz = (ngx_http_limit_zone_node_t *) &node->color;
 
     ngx_shmtx_lock(&shpool->mutex);