comparison src/http/ngx_http_core_module.c @ 76:da9a3b14312d NGINX_0_1_38

nginx 0.1.38 *) Feature: the "limit_rate" directive is supported in in proxy and FastCGI mode. *) Feature: the "X-Accel-Limit-Rate" response header line is supported in proxy and FastCGI mode. *) Feature: the "break" directive. *) Feature: the "log_not_found" directive. *) Bugfix: the response status code was not changed when request was redirected by the ""X-Accel-Redirect" header line. *) Bugfix: the variables set by the "set" directive could not be used in SSI. *) Bugfix: the segmentation fault may occurred if the SSI page has more than one remote subrequest. *) Bugfix: nginx treated the backend response as invalid if the status line in the header was transferred in two packets; bug appeared in 0.1.29. *) Feature: the "ssi_types" directive. *) Feature: the "autoindex_exact_size" directive. *) Bugfix: the ngx_http_autoindex_module did not support the long file names in UTF-8. *) Feature: the IMAP/POP3 proxy.
author Igor Sysoev <http://sysoev.ru>
date Fri, 08 Jul 2005 00:00:00 +0400
parents b31656313b59
children 6ae11d59d10e
comparison
equal deleted inserted replaced
75:985847bb65f9 76:da9a3b14312d
324 ngx_conf_set_flag_slot, 324 ngx_conf_set_flag_slot,
325 NGX_HTTP_LOC_CONF_OFFSET, 325 NGX_HTTP_LOC_CONF_OFFSET,
326 offsetof(ngx_http_core_loc_conf_t, msie_padding), 326 offsetof(ngx_http_core_loc_conf_t, msie_padding),
327 NULL }, 327 NULL },
328 328
329 { ngx_string("log_not_found"),
330 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
331 ngx_conf_set_flag_slot,
332 NGX_HTTP_LOC_CONF_OFFSET,
333 offsetof(ngx_http_core_loc_conf_t, log_not_found),
334 NULL },
335
329 { ngx_string("error_page"), 336 { ngx_string("error_page"),
330 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF 337 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
331 |NGX_CONF_2MORE, 338 |NGX_CONF_2MORE,
332 ngx_http_core_error_page, 339 ngx_http_core_error_page,
333 NGX_HTTP_LOC_CONF_OFFSET, 340 NGX_HTTP_LOC_CONF_OFFSET,
631 r->headers_out.location->value = clcf->name; 638 r->headers_out.location->value = clcf->name;
632 639
633 return NGX_HTTP_MOVED_PERMANENTLY; 640 return NGX_HTTP_MOVED_PERMANENTLY;
634 } 641 }
635 642
643 r->limit_rate = clcf->limit_rate;
644
636 if (clcf->handler) { 645 if (clcf->handler) {
637 r->content_handler = clcf->handler; 646 r->content_handler = clcf->handler;
638 } 647 }
639 648
640 return NGX_OK; 649 return NGX_OK;
860 ngx_int_t 869 ngx_int_t
861 ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in) 870 ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in)
862 { 871 {
863 ngx_int_t rc; 872 ngx_int_t rc;
864 873
865 if (r->connection->write->error) {
866 return NGX_ERROR;
867 }
868
869 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 874 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
870 "http output filter \"%V\"", &r->uri); 875 "http output filter \"%V\"", &r->uri);
871 876
872 rc = ngx_http_top_body_filter(r, in); 877 rc = ngx_http_top_body_filter(r, in);
873 878
874 if (rc == NGX_ERROR) { 879 if (rc == NGX_ERROR) {
875 /* NGX_ERROR may be returned by any filter */ 880 /* NGX_ERROR may be returned by any filter */
876 r->connection->write->error = 1; 881 r->connection->closed = 1;
877 } 882 }
878 883
879 return rc; 884 return rc;
880 } 885 }
881 886
1725 lcf->lingering_time = NGX_CONF_UNSET_MSEC; 1730 lcf->lingering_time = NGX_CONF_UNSET_MSEC;
1726 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC; 1731 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC;
1727 lcf->reset_timedout_connection = NGX_CONF_UNSET; 1732 lcf->reset_timedout_connection = NGX_CONF_UNSET;
1728 lcf->port_in_redirect = NGX_CONF_UNSET; 1733 lcf->port_in_redirect = NGX_CONF_UNSET;
1729 lcf->msie_padding = NGX_CONF_UNSET; 1734 lcf->msie_padding = NGX_CONF_UNSET;
1735 lcf->log_not_found = NGX_CONF_UNSET;
1730 1736
1731 return lcf; 1737 return lcf;
1732 } 1738 }
1733 1739
1734 1740
1839 1845
1840 ngx_conf_merge_value(conf->reset_timedout_connection, 1846 ngx_conf_merge_value(conf->reset_timedout_connection,
1841 prev->reset_timedout_connection, 0); 1847 prev->reset_timedout_connection, 0);
1842 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1); 1848 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1);
1843 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1); 1849 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1);
1850 ngx_conf_merge_value(conf->log_not_found, prev->log_not_found, 1);
1844 1851
1845 if (conf->open_files == NULL) { 1852 if (conf->open_files == NULL) {
1846 conf->open_files = prev->open_files; 1853 conf->open_files = prev->open_files;
1847 } 1854 }
1848 1855