summaryrefslogtreecommitdiffhomepage
path: root/src/http/ngx_http_core_module.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-01-26 15:22:24 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-01-26 15:22:24 +0000
commit80a45a061332ea364dbd542b7ad84f974a1cedac (patch)
treecf8299e1d1b6db52c452c1e7e51e4e56eecd2fd4 /src/http/ngx_http_core_module.c
parent27947f38ef109b38f0c5530582536546cb074a8d (diff)
downloadnginx-80a45a061332ea364dbd542b7ad84f974a1cedac.tar.gz
nginx-80a45a061332ea364dbd542b7ad84f974a1cedac.tar.bz2
r2420, r2421, r2435, r2436, r2437 merge:
*) send "100 Continue" for HTTP/1.1 only *) do not send "100 Continue" for subrequests *) send "100 Continue" just before reading request body *) set send() slot for POSIX systems
Diffstat (limited to 'src/http/ngx_http_core_module.c')
-rw-r--r--src/http/ngx_http_core_module.c52
1 files changed, 2 insertions, 50 deletions
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index b58137d25..58072347a 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -30,7 +30,6 @@ typedef struct {
static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r,
ngx_array_t *locations, ngx_uint_t regex_start, size_t len);
-static ngx_int_t ngx_http_core_send_continue(ngx_http_request_t *r);
static ngx_int_t ngx_http_core_preconfiguration(ngx_conf_t *cf);
static void *ngx_http_core_create_main_conf(ngx_conf_t *cf);
@@ -786,7 +785,7 @@ ngx_http_core_find_config_phase(ngx_http_request_t *r,
{
u_char *p;
size_t len;
- ngx_int_t rc, expect;
+ ngx_int_t rc;
ngx_http_core_loc_conf_t *clcf;
ngx_http_core_srv_conf_t *cscf;
@@ -833,15 +832,6 @@ ngx_http_core_find_config_phase(ngx_http_request_t *r,
return NGX_OK;
}
- if (r->headers_in.expect) {
- expect = ngx_http_core_send_continue(r);
-
- if (expect != NGX_OK) {
- ngx_http_finalize_request(r, expect);
- return NGX_OK;
- }
- }
-
if (rc == NGX_HTTP_LOCATION_AUTO_REDIRECT) {
r->headers_out.location = ngx_list_push(&r->headers_out.headers);
if (r->headers_out.location == NULL) {
@@ -1261,45 +1251,6 @@ ngx_http_core_find_location(ngx_http_request_t *r,
}
-static ngx_int_t
-ngx_http_core_send_continue(ngx_http_request_t *r)
-{
- ngx_int_t n;
- ngx_str_t *expect;
-
- if (r->expect_tested) {
- return NGX_OK;
- }
-
- r->expect_tested = 1;
-
- expect = &r->headers_in.expect->value;
-
- if (expect->len != sizeof("100-continue") - 1
- || ngx_strncasecmp(expect->data, (u_char *) "100-continue",
- sizeof("100-continue") - 1)
- != 0)
- {
- return NGX_OK;
- }
-
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
- "send 100 Continue");
-
- n = r->connection->send(r->connection,
- (u_char *) "HTTP/1.1 100 Continue" CRLF CRLF,
- sizeof("HTTP/1.1 100 Continue" CRLF CRLF) - 1);
-
- if (n == sizeof("HTTP/1.1 100 Continue" CRLF CRLF) - 1) {
- return NGX_OK;
- }
-
- /* we assume that such small packet should be send successfully */
-
- return NGX_HTTP_INTERNAL_SERVER_ERROR;
-}
-
-
ngx_int_t
ngx_http_set_content_type(ngx_http_request_t *r)
{
@@ -1861,6 +1812,7 @@ ngx_http_subrequest(ngx_http_request_t *r,
sr->fast_subrequest = 1;
sr->discard_body = r->discard_body;
+ sr->expect_tested = 1;
sr->main_filter_need_in_memory = r->main_filter_need_in_memory;
sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;