comparison src/http/ngx_http_upstream_round_robin.c @ 434:49a0eb7ce20c NGINX_0_7_29

nginx 0.7.29 *) Bugfix: the "fastcgi_pass" and "proxy_pass" directives did not support variables if unix domain sockets were used. *) Bugfixes in subrequest processing; the bugs had appeared in 0.7.25. *) Bugfix: a "100 Continue" response was issued for HTTP/1.0 requests; Thanks to Maxim Dounin. *) Bugfix: in memory allocation in the ngx_http_gzip_filter_module on Cygwin.
author Igor Sysoev <http://sysoev.ru>
date Wed, 24 Dec 2008 00:00:00 +0300
parents 6ebbca3d5ed7
children 5b73504dd4ba
comparison
equal deleted inserted replaced
433:18f6c20ac73a 434:49a0eb7ce20c
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