comparison src/http/ngx_http_upstream.c @ 552:c04fa65fe604 NGINX_0_8_22

nginx 0.8.22 *) Feature: the "proxy_bind", "fastcgi_bind", and "memcached_bind" directives. *) Feature: the "access" and the "deny" directives support IPv6. *) Feature: the "set_real_ip_from" directive supports IPv6 addresses in request headers. *) Feature: the "unix:" parameter of the "set_real_ip_from" directive. *) Bugfix: nginx did not delete unix domain socket after configuration testing. *) Bugfix: nginx deleted unix domain socket while online upgrade. *) Bugfix: the "!-x" operator did not work. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process, if limit_rate was used in HTTPS server. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process while $limit_rate logging. Thanks to Maxim Dounin. *) Bugfix: a segmentation fault might occur in a worker process, if there was no "listen" directive in "server" block; the bug had appeared in 0.8.21.
author Igor Sysoev <http://sysoev.ru>
date Tue, 03 Nov 2009 00:00:00 +0300
parents 0dc162a5f3e8
children 5c576ea5dbd9
comparison
equal deleted inserted replaced
551:c88014f74832 552:c04fa65fe604
477 if (u->create_request(r) != NGX_OK) { 477 if (u->create_request(r) != NGX_OK) {
478 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); 478 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
479 return; 479 return;
480 } 480 }
481 481
482 u->peer.local = u->conf->local;
483
482 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); 484 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
483 485
484 u->output.alignment = clcf->directio_alignment; 486 u->output.alignment = clcf->directio_alignment;
485 u->output.pool = r->pool; 487 u->output.pool = r->pool;
486 u->output.bufs.num = 1; 488 u->output.bufs.num = 1;
4194 4196
4195 return uscf; 4197 return uscf;
4196 } 4198 }
4197 4199
4198 4200
4201 char *
4202 ngx_http_upsteam_bind_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
4203 void *conf)
4204 {
4205 char *p = conf;
4206
4207 ngx_int_t rc;
4208 ngx_str_t *value;
4209 ngx_addr_t **paddr;
4210
4211 paddr = (ngx_addr_t **) (p + cmd->offset);
4212
4213 *paddr = ngx_palloc(cf->pool, sizeof(ngx_addr_t));
4214 if (*paddr == NULL) {
4215 return NGX_CONF_ERROR;
4216 }
4217
4218 value = cf->args->elts;
4219
4220 rc = ngx_parse_addr(cf->pool, *paddr, value[1].data, value[1].len);
4221
4222 switch (rc) {
4223 case NGX_OK:
4224 (*paddr)->name = value[1];
4225 return NGX_CONF_OK;
4226
4227 case NGX_DECLINED:
4228 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4229 "invalid address \"%V\"", &value[1]);
4230 default:
4231 return NGX_CONF_ERROR;
4232 }
4233 }
4234
4235
4199 ngx_int_t 4236 ngx_int_t
4200 ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf, 4237 ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
4201 ngx_http_upstream_conf_t *conf, ngx_http_upstream_conf_t *prev, 4238 ngx_http_upstream_conf_t *conf, ngx_http_upstream_conf_t *prev,
4202 ngx_str_t *default_hide_headers, ngx_hash_init_t *hash) 4239 ngx_str_t *default_hide_headers, ngx_hash_init_t *hash)
4203 { 4240 {