nghttpx: Require content-length in SPDY upstream if FIN flag is not set
This commit is contained in:
parent
591f73e043
commit
823bb6c35e
|
@ -161,6 +161,7 @@ void on_ctrl_recv_callback
|
|||
const char *scheme = 0;
|
||||
const char *host = 0;
|
||||
const char *method = 0;
|
||||
const char *content_length = 0;
|
||||
for(size_t i = 0; nv[i]; i += 2) {
|
||||
if(strcmp(nv[i], ":path") == 0) {
|
||||
path = nv[i+1];
|
||||
|
@ -172,6 +173,9 @@ void on_ctrl_recv_callback
|
|||
} else if(strcmp(nv[i], ":host") == 0) {
|
||||
host = nv[i+1];
|
||||
} 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]);
|
||||
}
|
||||
}
|
||||
|
@ -179,6 +183,12 @@ void on_ctrl_recv_callback
|
|||
upstream->rst_stream(downstream, SPDYLAY_INTERNAL_ERROR);
|
||||
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
|
||||
// scheme. We construct abs URI for spdy_bridge mode as well as
|
||||
// spdy_proxy mode.
|
||||
|
|
Loading…
Reference in New Issue