changeset 1144:324a5a3fe27f

ip_hash used wrong byte order
author Igor Sysoev <igor@sysoev.ru>
date Fri, 23 Mar 2007 12:52:33 +0000
parents c6c42497106c
children 64854c7c95d0
files src/http/modules/ngx_http_upstream_ip_hash_module.c
diffstat 1 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/modules/ngx_http_upstream_ip_hash_module.c
+++ b/src/http/modules/ngx_http_upstream_ip_hash_module.c
@@ -93,6 +93,7 @@ static ngx_int_t
 ngx_http_upstream_init_ip_hash_peer(ngx_http_request_t *r,
     ngx_http_upstream_srv_conf_t *us)
 {
+    u_char                                 *p;
     struct sockaddr_in                     *sin;
     ngx_http_upstream_ip_hash_peer_data_t  *iphp;
 
@@ -111,9 +112,10 @@ ngx_http_upstream_init_ip_hash_peer(ngx_
 
     /* AF_INET only */
     sin = (struct sockaddr_in *) r->connection->sockaddr;
-    iphp->addr[0] = (u_char) ((sin->sin_addr.s_addr >> 24) & 0xff);
-    iphp->addr[1] = (u_char) ((sin->sin_addr.s_addr >> 16) & 0xff);
-    iphp->addr[2] = (u_char) ((sin->sin_addr.s_addr >> 8) & 0xff);
+    p = (u_char *) &sin->sin_addr.s_addr;
+    iphp->addr[0] = p[0];
+    iphp->addr[1] = p[1];
+    iphp->addr[2] = p[2];
 
     iphp->hash = 89;
     iphp->tries = 0;