Skip to content

Commit 96cd715

Browse files
committed
fix 2575
1 parent e13cab6 commit 96cd715

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

.clangd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ CompileFlags:
22
Add:
33
- -xc++-header
44
- -DINTELLISENSE
5-
- -std=gnu++11
5+
- -std=gnu++14
66
- -ferror-limit=0

CHANGELOG

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Release 6.1.1 (Not yet released)
33
* [Ruby] Improve support for Ruby 4 and Frozen String Literals. Closes GH-2619.
44
* [Ubuntu] Add packages for Ubuntu 25.10 "questing", remove packages for Ubuntu 25.04 "plucky".
55
* Upgrade Boost from 1.87 -> 1.89.
6+
* [Nginx] Fixes bug with unbuffered uploads. Closes GH-2575.
67
* [Nginx] Upgrades preferred Nginx to 1.28.0 from 1.26.3.
78
* [Nginx] The preferred PCRE2 version is now 10.46 (previously 10.45).
89
* Updated various library versions used in precompiled binaries (used for e.g. gem installs):

src/nginx_module/ContentHandler.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,7 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
13021302
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
13031303
}
13041304

1305+
r->http_major = ch - '0';
13051306
state = sw_major_digit;
13061307
break;
13071308

@@ -1316,6 +1317,11 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
13161317
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
13171318
}
13181319

1320+
if (r->http_major > 99) {
1321+
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1322+
}
1323+
1324+
r->http_major = r->http_major * 10 + (ch - '0');
13191325
break;
13201326

13211327
/* the first digit of minor HTTP version */
@@ -1324,6 +1330,7 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
13241330
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
13251331
}
13261332

1333+
r->http_minor = ch - '0';
13271334
state = sw_minor_digit;
13281335
break;
13291336

@@ -1338,6 +1345,11 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
13381345
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
13391346
}
13401347

1348+
if (r->http_minor > 99) {
1349+
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1350+
}
1351+
1352+
r->http_minor = r->http_minor * 10 + (ch - '0');
13411353
break;
13421354

13431355
/* HTTP status code */
@@ -1350,7 +1362,7 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
13501362
return NGX_HTTP_SCGI_PARSE_NO_HEADER;
13511363
}
13521364

1353-
context->status = context->status * 10 + ch - '0';
1365+
context->status = context->status * 10 + (ch - '0');
13541366

13551367
if (++context->status_count == 3) {
13561368
state = sw_space_after_status;
@@ -1827,7 +1839,13 @@ passenger_content_handler(ngx_http_request_t *r)
18271839
u->pipe->input_filter = ngx_event_pipe_copy_input_filter;
18281840
u->pipe->input_ctx = r;
18291841

1830-
r->request_body_no_buffering = !slcf->upstream_config.request_buffering;
1842+
if (!slcf->upstream_config.request_buffering
1843+
&& slcf->upstream_config.pass_request_body
1844+
&& !r->headers_in.chunked) {
1845+
r->request_body_no_buffering = 1;
1846+
} else {
1847+
r->request_body_no_buffering = !slcf->upstream_config.request_buffering;
1848+
}
18311849

18321850
rc = ngx_http_read_client_request_body(r, ngx_http_upstream_init);
18331851

0 commit comments

Comments
 (0)