Commit 823bb6c3 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

nghttpx: Require content-length in SPDY upstream if FIN flag is not set

parent 591f73e0
...@@ -161,6 +161,7 @@ void on_ctrl_recv_callback ...@@ -161,6 +161,7 @@ void on_ctrl_recv_callback
const char *scheme = 0; const char *scheme = 0;
const char *host = 0; const char *host = 0;
const char *method = 0; const char *method = 0;
const char *content_length = 0;
for(size_t i = 0; nv[i]; i += 2) { for(size_t i = 0; nv[i]; i += 2) {
if(strcmp(nv[i], ":path") == 0) { if(strcmp(nv[i], ":path") == 0) {
path = nv[i+1]; path = nv[i+1];
...@@ -172,6 +173,9 @@ void on_ctrl_recv_callback ...@@ -172,6 +173,9 @@ void on_ctrl_recv_callback
} else if(strcmp(nv[i], ":host") == 0) { } else if(strcmp(nv[i], ":host") == 0) {
host = nv[i+1]; host = nv[i+1];
} else if(nv[i][0] != ':') { } else if(nv[i][0] != ':') {
if(strcmp(nv[i], "content-length") == 0) {
content_length = nv[i+1];
}
downstream->add_request_header(nv[i], nv[i+1]); downstream->add_request_header(nv[i], nv[i+1]);
} }
} }
...@@ -179,6 +183,12 @@ void on_ctrl_recv_callback ...@@ -179,6 +183,12 @@ void on_ctrl_recv_callback
upstream->rst_stream(downstream, SPDYLAY_INTERNAL_ERROR); upstream->rst_stream(downstream, SPDYLAY_INTERNAL_ERROR);
return; return;
} }
// Require content-length if FIN flag is not set.
if((frame->syn_stream.hd.flags & SPDYLAY_CTRL_FLAG_FIN) == 0 &&
!content_length) {
upstream->rst_stream(downstream, SPDYLAY_PROTOCOL_ERROR);
return;
}
// SpdyDownstreamConnection examines request path to find // SpdyDownstreamConnection examines request path to find
// scheme. We construct abs URI for spdy_bridge mode as well as // scheme. We construct abs URI for spdy_bridge mode as well as
// spdy_proxy mode. // spdy_proxy mode.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment