comparison src/http/ngx_http_upstream_round_robin.c @ 324:7cf404023f50 NGINX_0_5_32

nginx 0.5.32 *) Change: now nginx tries to set the "worker_priority", "worker_rlimit_nofile", "worker_rlimit_core", and "worker_rlimit_sigpending" without super-user privileges. *) Change: now nginx escapes space and "%" in request to a mail proxy authentication server. *) Change: now nginx escapes "%" in $memcached_key variable. *) Change: the special make target "upgrade1" was defined for online upgrade of 0.1.x versions. *) Feature: the "add_header Last-Modified ..." directive changes the "Last-Modified" response header line. *) Feature: the mail proxy supports AUTHENTICATE in IMAP mode. Thanks to Maxim Dounin. *) Feature: the mail proxy supports STARTTLS in SMTP mode. Thanks to Maxim Dounin. *) Bugfix: nginx did not close directory file on HEAD request if autoindex was used. Thanks to Arkadiusz Patyk. *) Bugfix: the "proxy_hide_header" and "fastcgi_hide_header" directives did not hide response header lines whose name was longer than 32 characters. Thanks to Manlio Perillo. *) Bugfix: active connection counter always increased if mail proxy was used. *) Bugfix: if backend returned response header only using non-buffered proxy, then nginx closed backend connection on timeout. *) Bugfix: nginx did not support several "Connection" request header lines. *) Bugfix: a charset set by the "charset" directive was not appended to the "Content-Type" header set by $r->send_http_header(). *) Bugfix: a segmentation fault might occur in worker process if /dev/poll method was used. *) Bugfix: nginx did not work on FreeBSD/sparc64. *) Bugfix: a segmentation fault occurred in worker process if invalid address was set in the "auth_http" directive. *) Bugfix: now nginx uses default listen backlog value 511 on all platforms except FreeBSD. Thanks to Jiang Hong. *) Bugfix: now Solaris sendfilev() is not used to transfer the client request body to FastCGI-server via the unix domain socket. *) Bugfix: if the same host without specified port was used as backend for HTTP and HTTPS, then nginx used only one port - 80 or 443. *) Bugfix: the "proxy_ignore_client_abort" and "fastcgi_ignore_client_abort" directives did not work; bug appeared in 0.5.13.
author Igor Sysoev <http://sysoev.ru>
date Mon, 24 Sep 2007 00:00:00 +0400
parents 1e9e2c5e7c14
children 26ff8d6b618d
comparison
equal deleted inserted replaced
323:85aeb2da6e4c 324:7cf404023f50
62 /* an upstream implicitly defined by proxy_pass, etc. */ 62 /* an upstream implicitly defined by proxy_pass, etc. */
63 63
64 if (us->port == 0 && us->default_port == 0) { 64 if (us->port == 0 && us->default_port == 0) {
65 ngx_log_error(NGX_LOG_EMERG, cf->log, 0, 65 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
66 "no port in upstream \"%V\" in %s:%ui", 66 "no port in upstream \"%V\" in %s:%ui",
67 &us->host, us->file_name.data, us->line); 67 &us->host, us->file_name, us->line);
68 return NGX_ERROR; 68 return NGX_ERROR;
69 } 69 }
70 70
71 ngx_memzero(&u, sizeof(ngx_url_t)); 71 ngx_memzero(&u, sizeof(ngx_url_t));
72 72
75 75
76 if (ngx_inet_resolve_host(cf, &u) != NGX_OK) { 76 if (ngx_inet_resolve_host(cf, &u) != NGX_OK) {
77 if (u.err) { 77 if (u.err) {
78 ngx_log_error(NGX_LOG_EMERG, cf->log, 0, 78 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
79 "%s in upstream \"%V\" in %s:%ui", 79 "%s in upstream \"%V\" in %s:%ui",
80 u.err, &us->host, us->file_name.data, us->line); 80 u.err, &us->host, us->file_name, us->line);
81 } 81 }
82 82
83 return NGX_ERROR; 83 return NGX_ERROR;
84 } 84 }
85 85
426 ssl_session = peer->ssl_session; 426 ssl_session = peer->ssl_session;
427 427
428 rc = ngx_ssl_set_session(pc->connection, ssl_session); 428 rc = ngx_ssl_set_session(pc->connection, ssl_session);
429 429
430 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, 430 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0,
431 "set session: %p:%d", 431 "set session: %p:%d",
432 ssl_session, ssl_session ? ssl_session->references : 0); 432 ssl_session, ssl_session ? ssl_session->references : 0);
433 433
434 /* ngx_unlock_mutex(rrp->peers->mutex); */ 434 /* ngx_unlock_mutex(rrp->peers->mutex); */
435 435
436 return rc; 436 return rc;
437 } 437 }
451 if (ssl_session == NULL) { 451 if (ssl_session == NULL) {
452 return; 452 return;
453 } 453 }
454 454
455 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, 455 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0,
456 "save session: %p:%d", ssl_session, ssl_session->references); 456 "save session: %p:%d", ssl_session, ssl_session->references);
457 457
458 peer = &rrp->peers->peer[rrp->current]; 458 peer = &rrp->peers->peer[rrp->current];
459 459
460 /* TODO: threads only mutex */ 460 /* TODO: threads only mutex */
461 /* ngx_lock_mutex(rrp->peers->mutex); */ 461 /* ngx_lock_mutex(rrp->peers->mutex); */
466 /* ngx_unlock_mutex(rrp->peers->mutex); */ 466 /* ngx_unlock_mutex(rrp->peers->mutex); */
467 467
468 if (old_ssl_session) { 468 if (old_ssl_session) {
469 469
470 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, 470 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0,
471 "old session: %p:%d", 471 "old session: %p:%d",
472 old_ssl_session, old_ssl_session->references); 472 old_ssl_session, old_ssl_session->references);
473 473
474 /* TODO: may block */ 474 /* TODO: may block */
475 475
476 ngx_ssl_free_session(old_ssl_session); 476 ngx_ssl_free_session(old_ssl_session);