comparison src/http/ngx_http_upstream.c @ 366:babd3d9efb62 NGINX_0_6_27

nginx 0.6.27 *) Change: now by default the rtsig method is not built on Linux 2.6.18+. *) Change: now a request method is not changed while redirection to a named location via an "error_page" directive. *) Feature: the "resolver" and "resolver_timeout" directives in SMTP proxy. *) Feature: the "post_action" directive supports named locations. *) Bugfix: a segmentation fault occurred in worker process, if a request was redirected from proxy, FastCGI, or memcached location to static named locations. *) Bugfix: browsers did not repeat SSL handshake if there is no valid client certificate in first handshake. Thanks to Alexander V. Inyukhin. *) Bugfix: if response code 495-497 was redirected via an "error_page" directive without code change, then nginx tried to allocate too many memory. *) Bugfix: memory leak in long-lived non buffered connections. *) Bugfix: memory leak in resolver. *) Bugfix: a segmentation fault occurred in worker process, if a request was redirected from proxy, FastCGI, or memcached location to static named locations. *) Bugfix: in the $proxy_host and $proxy_port variables caching. Thanks to Sergey Bochenkov. *) Bugfix: a "proxy_pass" directive with variables used incorrectly the same port as in another "proxy_pass" directive with the same host name and without variables. Thanks to Sergey Bochenkov. *) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some 64-bit platforms while reconfiguration. *) Bugfix: a segmentation fault occurred in worker process, if empty stub block was used second time in SSI. *) Bugfix: in copying URI part contained escaped symbols into arguments.
author Igor Sysoev <http://sysoev.ru>
date Wed, 12 Mar 2008 00:00:00 +0300
parents a39aab45a53f
children 9a242235a80a
comparison
equal deleted inserted replaced
365:9b0140fa1132 366:babd3d9efb62
390 for (i = 0; i < umcf->upstreams.nelts; i++) { 390 for (i = 0; i < umcf->upstreams.nelts; i++) {
391 391
392 uscf = uscfp[i]; 392 uscf = uscfp[i];
393 393
394 if (uscf->host.len == host->len 394 if (uscf->host.len == host->len
395 && ((uscf->port == 0 && u->resolved->default_port)
396 || uscf->port == u->resolved->port)
395 && ngx_memcmp(uscf->host.data, host->data, host->len) == 0) 397 && ngx_memcmp(uscf->host.data, host->data, host->len) == 0)
396 { 398 {
397 goto found; 399 goto found;
398 } 400 }
399 } 401 }
418 ctx->type = NGX_RESOLVE_A; 420 ctx->type = NGX_RESOLVE_A;
419 ctx->handler = ngx_http_upstream_resolve_handler; 421 ctx->handler = ngx_http_upstream_resolve_handler;
420 ctx->data = r; 422 ctx->data = r;
421 ctx->timeout = clcf->resolver_timeout; 423 ctx->timeout = clcf->resolver_timeout;
422 424
423 u->resolved->ctx = ctx;
424
425 if (ngx_resolve_name(ctx) != NGX_OK) { 425 if (ngx_resolve_name(ctx) != NGX_OK) {
426 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); 426 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
427 return; 427 return;
428 } 428 }
429
430 u->resolved->ctx = ctx;
429 431
430 return; 432 return;
431 } 433 }
432 434
433 found: 435 found:
1934 b = &u->buffer; 1936 b = &u->buffer;
1935 1937
1936 cl->buf->pos = b->last; 1938 cl->buf->pos = b->last;
1937 b->last += bytes; 1939 b->last += bytes;
1938 cl->buf->last = b->last; 1940 cl->buf->last = b->last;
1941 cl->buf->tag = u->output.tag;
1939 1942
1940 if (u->length == NGX_MAX_SIZE_T_VALUE) { 1943 if (u->length == NGX_MAX_SIZE_T_VALUE) {
1941 return NGX_OK; 1944 return NGX_OK;
1942 } 1945 }
1943 1946