comparison src/http/ngx_http_core_module.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 56675f002600
children f70f2f565fe0
comparison
equal deleted inserted replaced
323:85aeb2da6e4c 324:7cf404023f50
618 618
619 ngx_int_t 619 ngx_int_t
620 ngx_http_core_find_config_phase(ngx_http_request_t *r, 620 ngx_http_core_find_config_phase(ngx_http_request_t *r,
621 ngx_http_phase_handler_t *ph) 621 ngx_http_phase_handler_t *ph)
622 { 622 {
623 u_char *p;
624 size_t len;
623 ngx_int_t rc; 625 ngx_int_t rc;
624 ngx_http_core_loc_conf_t *clcf; 626 ngx_http_core_loc_conf_t *clcf;
625 ngx_http_core_srv_conf_t *cscf; 627 ngx_http_core_srv_conf_t *cscf;
626 628
627 r->content_handler = NULL; 629 r->content_handler = NULL;
678 /* 680 /*
679 * we do not need to set the r->headers_out.location->hash and 681 * we do not need to set the r->headers_out.location->hash and
680 * r->headers_out.location->key fields 682 * r->headers_out.location->key fields
681 */ 683 */
682 684
683 r->headers_out.location->value = clcf->name; 685 if (r->args.len == 0) {
686 r->headers_out.location->value = clcf->name;
687
688 } else {
689 len = clcf->name.len + 1 + r->args.len;
690 p = ngx_palloc(r->pool, len);
691
692 if (p == NULL) {
693 ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
694 return NGX_OK;
695 }
696
697 r->headers_out.location->value.len = len;
698 r->headers_out.location->value.data = p;
699
700 p = ngx_cpymem(p, clcf->name.data, clcf->name.len);
701 *p++ = '?';
702 ngx_memcpy(p, r->args.data, r->args.len);
703 }
684 704
685 ngx_http_finalize_request(r, NGX_HTTP_MOVED_PERMANENTLY); 705 ngx_http_finalize_request(r, NGX_HTTP_MOVED_PERMANENTLY);
686 return NGX_OK; 706 return NGX_OK;
687 } 707 }
688 708
2224 /* STUB: getuid() should be cached */ 2244 /* STUB: getuid() should be cached */
2225 ls->port = (getuid() == 0) ? 80 : 8000; 2245 ls->port = (getuid() == 0) ? 80 : 8000;
2226 #endif 2246 #endif
2227 ls->family = AF_INET; 2247 ls->family = AF_INET;
2228 2248
2229 ls->conf.backlog = -1; 2249 ls->conf.backlog = NGX_LISTEN_BACKLOG;
2230 ls->conf.rcvbuf = -1; 2250 ls->conf.rcvbuf = -1;
2231 ls->conf.sndbuf = -1; 2251 ls->conf.sndbuf = -1;
2232 } 2252 }
2233 2253
2234 if (conf->server_name.data == NULL) { 2254 if (conf->server_name.data == NULL) {
2573 ngx_memzero(ls, sizeof(ngx_http_listen_t)); 2593 ngx_memzero(ls, sizeof(ngx_http_listen_t));
2574 2594
2575 ls->family = AF_INET; 2595 ls->family = AF_INET;
2576 ls->addr = u.addr.in_addr; 2596 ls->addr = u.addr.in_addr;
2577 ls->port = u.port; 2597 ls->port = u.port;
2578 ls->file_name = cf->conf_file->file.name; 2598 ls->file_name = cf->conf_file->file.name.data;
2579 ls->line = cf->conf_file->line; 2599 ls->line = cf->conf_file->line;
2580 ls->conf.backlog = -1; 2600 ls->conf.backlog = NGX_LISTEN_BACKLOG;
2581 ls->conf.rcvbuf = -1; 2601 ls->conf.rcvbuf = -1;
2582 ls->conf.sndbuf = -1; 2602 ls->conf.sndbuf = -1;
2583 2603
2584 n = ngx_inet_ntop(AF_INET, &ls->addr, ls->conf.addr, INET_ADDRSTRLEN + 6); 2604 n = ngx_inet_ntop(AF_INET, &ls->addr, ls->conf.addr, INET_ADDRSTRLEN + 6);
2585 ngx_sprintf(&ls->conf.addr[n], ":%ui", ls->port); 2605 ngx_sprintf(&ls->conf.addr[n], ":%ui", ls->port);