Mercurial > hg > nginx
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 |