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