ip_hash used wrong byte order
diff --git a/src/http/modules/ngx_http_upstream_ip_hash_module.c b/src/http/modules/ngx_http_upstream_ip_hash_module.c
index 87e5ac4..ba1cd53 100644
--- 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 @@
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 @@
/* 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;