http2: drain the socket better...

... but ignore EAGAIN if the stream has ended so that we don't end up in
a loop. This is a follow-up to c8ab613 in order to avoid the problem
d261652 was made to fix.

Reported-by: Jay Satiro
Clues-provided-by: Tatsuhiro Tsujikawa

Discussed in #750
This commit is contained in:
Daniel Stenberg 2016-04-11 16:00:15 +02:00
parent 15cadb1f7a
commit b2a0376350
1 changed files with 4 additions and 0 deletions

View File

@ -1246,6 +1246,10 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
if(nread == -1) {
if(result != CURLE_AGAIN)
failf(data, "Failed receiving HTTP2 data");
else if(stream->closed)
/* received when the stream was already closed! */
return http2_handle_stream_close(conn, data, stream, err);
*err = result;
return -1;
}