comparison src/http/modules/ngx_http_upstream_ip_hash_module.c @ 6100:c44459611d91

Upstream: store peers as a linked list. This is an API change.
author Ruslan Ermilov <ru@nginx.com>
date Fri, 10 Apr 2015 14:48:36 +0300
parents 6ff0ebd6fbf4
children 3264b7828f72
comparison
equal deleted inserted replaced
6099:6ff0ebd6fbf4 6100:c44459611d91
179 } 179 }
180 180
181 if (!iphp->rrp.peers->weighted) { 181 if (!iphp->rrp.peers->weighted) {
182 p = hash % iphp->rrp.peers->number; 182 p = hash % iphp->rrp.peers->number;
183 183
184 peer = iphp->rrp.peers->peer;
185 for (i = 0; i < p; i++) {
186 peer = peer->next;
187 }
188
184 } else { 189 } else {
185 w = hash % iphp->rrp.peers->total_weight; 190 w = hash % iphp->rrp.peers->total_weight;
186 191
187 for (i = 0; i < iphp->rrp.peers->number; i++) { 192 for (peer = iphp->rrp.peers->peer, i = 0;
188 w -= iphp->rrp.peers->peer[i].weight; 193 peer;
194 peer = peer->next, i++)
195 {
196 w -= peer->weight;
189 if (w < 0) { 197 if (w < 0) {
190 break; 198 break;
191 } 199 }
192 } 200 }
193 201
201 goto next; 209 goto next;
202 } 210 }
203 211
204 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, 212 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0,
205 "get ip hash peer, hash: %ui %04XA", p, m); 213 "get ip hash peer, hash: %ui %04XA", p, m);
206
207 peer = &iphp->rrp.peers->peer[p];
208 214
209 /* ngx_lock_mutex(iphp->rrp.peers->mutex); */ 215 /* ngx_lock_mutex(iphp->rrp.peers->mutex); */
210 216
211 if (peer->down) { 217 if (peer->down) {
212 goto next_try; 218 goto next_try;
234 if (++iphp->tries > 20) { 240 if (++iphp->tries > 20) {
235 return iphp->get_rr_peer(pc, &iphp->rrp); 241 return iphp->get_rr_peer(pc, &iphp->rrp);
236 } 242 }
237 } 243 }
238 244
239 iphp->rrp.current = p; 245 iphp->rrp.current = peer;
240 246
241 pc->sockaddr = peer->sockaddr; 247 pc->sockaddr = peer->sockaddr;
242 pc->socklen = peer->socklen; 248 pc->socklen = peer->socklen;
243 pc->name = &peer->name; 249 pc->name = &peer->name;
244 250