Mercurial > hg > nginx
comparison src/http/ngx_http_upstream_round_robin.c @ 2422:7af1e5fe102c
variable support for unix sockets in fastcgi_pass and proxy_pass
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 23 Dec 2008 19:35:12 +0000 |
parents | 70a2bcc7e307 |
children | ff127ba3b091 |
comparison
equal
deleted
inserted
replaced
2421:8f0f1d151f14 | 2422:7af1e5fe102c |
---|---|
277 | 277 |
278 peers->single = (ur->naddrs == 1); | 278 peers->single = (ur->naddrs == 1); |
279 peers->number = ur->naddrs; | 279 peers->number = ur->naddrs; |
280 peers->name = &ur->host; | 280 peers->name = &ur->host; |
281 | 281 |
282 for (i = 0; i < ur->naddrs; i++) { | 282 if (ur->sockaddr) { |
283 | 283 peers->peer[0].sockaddr = ur->sockaddr; |
284 len = NGX_INET_ADDRSTRLEN + sizeof(":65536") - 1; | 284 peers->peer[0].socklen = ur->socklen; |
285 | 285 peers->peer[0].name = ur->host; |
286 p = ngx_pnalloc(r->pool, len); | 286 peers->peer[0].weight = 1; |
287 if (p == NULL) { | 287 peers->peer[0].current_weight = 1; |
288 return NGX_ERROR; | 288 peers->peer[0].max_fails = 1; |
289 } | 289 peers->peer[0].fail_timeout = 10; |
290 | 290 |
291 len = ngx_inet_ntop(AF_INET, &ur->addrs[i], p, NGX_INET_ADDRSTRLEN); | 291 } else { |
292 len = ngx_sprintf(&p[len], ":%d", ur->port) - p; | 292 |
293 | 293 for (i = 0; i < ur->naddrs; i++) { |
294 sin = ngx_pcalloc(r->pool, sizeof(struct sockaddr_in)); | 294 |
295 if (sin == NULL) { | 295 len = NGX_INET_ADDRSTRLEN + sizeof(":65536") - 1; |
296 return NGX_ERROR; | 296 |
297 } | 297 p = ngx_pnalloc(r->pool, len); |
298 | 298 if (p == NULL) { |
299 sin->sin_family = AF_INET; | 299 return NGX_ERROR; |
300 sin->sin_port = htons(ur->port); | 300 } |
301 sin->sin_addr.s_addr = ur->addrs[i]; | 301 |
302 | 302 len = ngx_inet_ntop(AF_INET, &ur->addrs[i], p, NGX_INET_ADDRSTRLEN); |
303 peers->peer[i].sockaddr = (struct sockaddr *) sin; | 303 len = ngx_sprintf(&p[len], ":%d", ur->port) - p; |
304 peers->peer[i].socklen = sizeof(struct sockaddr_in); | 304 |
305 peers->peer[i].name.len = len; | 305 sin = ngx_pcalloc(r->pool, sizeof(struct sockaddr_in)); |
306 peers->peer[i].name.data = p; | 306 if (sin == NULL) { |
307 peers->peer[i].weight = 1; | 307 return NGX_ERROR; |
308 peers->peer[i].current_weight = 1; | 308 } |
309 peers->peer[i].max_fails = 1; | 309 |
310 peers->peer[i].fail_timeout = 10; | 310 sin->sin_family = AF_INET; |
311 sin->sin_port = htons(ur->port); | |
312 sin->sin_addr.s_addr = ur->addrs[i]; | |
313 | |
314 peers->peer[i].sockaddr = (struct sockaddr *) sin; | |
315 peers->peer[i].socklen = sizeof(struct sockaddr_in); | |
316 peers->peer[i].name.len = len; | |
317 peers->peer[i].name.data = p; | |
318 peers->peer[i].weight = 1; | |
319 peers->peer[i].current_weight = 1; | |
320 peers->peer[i].max_fails = 1; | |
321 peers->peer[i].fail_timeout = 10; | |
322 } | |
311 } | 323 } |
312 | 324 |
313 rrp->peers = peers; | 325 rrp->peers = peers; |
314 rrp->current = 0; | 326 rrp->current = 0; |
315 | 327 |