Skip to content

Commit

Permalink
renamed the "nonbuffered-upstream-truncation" patch to "upstream-trun…
Browse files Browse the repository at this point in the history
…cation" patch; also fixed issues with chunked upstream response bodies. thanks Andy Yuan for reporting this issue in #24.
  • Loading branch information
agentzh committed Apr 5, 2013
1 parent 1d90953 commit 042e2fd
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 65 deletions.
63 changes: 0 additions & 63 deletions patches/nginx-1.2.7-nonbuffered-upstream-truncation.patch

This file was deleted.

83 changes: 83 additions & 0 deletions patches/nginx-1.2.7-upstream-truncation.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
--- nginx-1.2.7/src/http/ngx_http_upstream.c 2013-02-11 06:39:49.000000000 -0800
+++ nginx-1.2.7-patched/src/http/ngx_http_upstream.c 2013-04-04 18:18:09.749357094 -0700
@@ -2399,7 +2399,7 @@ ngx_http_upstream_process_non_buffered_u

if (c->read->timedout) {
ngx_connection_error(c, NGX_ETIMEDOUT, "upstream timed out");
- ngx_http_upstream_finalize_request(r, u, 0);
+ ngx_http_upstream_finalize_request(r, u, NGX_HTTP_GATEWAY_TIME_OUT);
return;
}

@@ -2415,11 +2415,13 @@ ngx_http_upstream_process_non_buffered_r
ssize_t n;
ngx_buf_t *b;
ngx_int_t rc;
+ ngx_event_pipe_t *p;
ngx_connection_t *downstream, *upstream;
ngx_http_upstream_t *u;
ngx_http_core_loc_conf_t *clcf;

u = r->upstream;
+ p = u->pipe;
downstream = r->connection;
upstream = u->peer.connection;

@@ -2446,13 +2448,19 @@ ngx_http_upstream_process_non_buffered_r
if (u->busy_bufs == NULL) {

if (u->length == 0
- || upstream->read->eof
- || upstream->read->error)
+ || (upstream->read->eof
+ && u->length == -1
+ && p->length == -1))
{
ngx_http_upstream_finalize_request(r, u, 0);
return;
}

+ if (upstream->read->eof || upstream->read->error) {
+ ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
+ return;
+ }
+
b->pos = b->start;
b->last = b->start;
}
@@ -2720,7 +2728,9 @@ ngx_http_upstream_process_request(ngx_ht

#endif

- if (p->upstream_done || p->upstream_eof || p->upstream_error) {
+ if (p->upstream_done
+ || (p->upstream_eof && u->length == -1 && p->length == -1))
+ {
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http upstream exit: %p", p->out);
#if 0
@@ -2729,6 +2739,14 @@ ngx_http_upstream_process_request(ngx_ht
ngx_http_upstream_finalize_request(r, u, 0);
return;
}
+
+ if (p->upstream_eof || p->upstream_error) {
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http upstream exit: %p", p->out);
+
+ ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
+ return;
+ }
}

if (p->downstream_error) {
@@ -3087,7 +3105,8 @@ ngx_http_upstream_finalize_request(ngx_h

if (u->header_sent
&& rc != NGX_HTTP_REQUEST_TIME_OUT
- && (rc == NGX_ERROR || rc >= NGX_HTTP_SPECIAL_RESPONSE))
+ && rc != NGX_HTTP_GATEWAY_TIME_OUT
+ && rc >= NGX_HTTP_SPECIAL_RESPONSE)
{
rc = 0;
}
4 changes: 2 additions & 2 deletions util/mirror-tarballs
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ echo "$info_txt applying the location_if_inherits_proxy patch for nginx"
patch -p1 < $root/patches/nginx-$main_ver-location_if_inherits_proxy.patch || exit 1
echo

echo "$info_txt applying the nonbuffered-upstream-truncation patch for nginx"
patch -p1 < $root/patches/nginx-$main_ver-nonbuffered-upstream-truncation.patch || exit 1
echo "$info_txt applying the upstream-truncation patch for nginx"
patch -p1 < $root/patches/nginx-$main_ver-upstream-truncation.patch || exit 1
echo

echo "$info_txt applying the channel-uninit-params patch for nginx"
Expand Down

0 comments on commit 042e2fd

Please sign in to comment.