http2: Check session closure early in http2_recv

Ref: https://github.com/curl/curl/issues/659
Ref: https://github.com/curl/curl/pull/663
This commit is contained in:
Tatsuhiro Tsujikawa 2016-02-20 00:05:47 +09:00 committed by Jay Satiro
parent 92c2a4c053
commit 4ec9eeb0c9
1 changed files with 8 additions and 7 deletions

View File

@ -1150,6 +1150,14 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
(void)sockindex; /* we always do HTTP2 on sockindex 0 */
if(!nghttp2_session_want_read(httpc->h2) &&
!nghttp2_session_want_write(httpc->h2)) {
DEBUGF(infof(data,
"http2_recv: nothing to do in this session\n"));
*err = CURLE_HTTP2;
return -1;
}
/* Nullify here because we call nghttp2_session_send() and they
might refer to the old buffer. */
stream->upload_mem = NULL;
@ -1231,13 +1239,6 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
*err = CURLE_AGAIN;
return -1;
}
else if(!nghttp2_session_want_read(httpc->h2) &&
!nghttp2_session_want_write(httpc->h2)) {
DEBUGF(infof(data,
"http2_recv: nothing to do in this session\n"));
*err = CURLE_HTTP2;
return -1;
}
else {
char *inbuf;
/* remember where to store incoming data for this stream and how big the