diff options
author | Daniel Stenberg <daniel@haxx.se> | 2018-05-12 21:58:46 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-05-14 08:22:46 +0200 |
commit | 7d6e01441a161c81b19626bdf2b85dafece5f1b8 (patch) | |
tree | 8d481faa7497253d157d0bfe4ae2c36ddbc0f0f1 | |
parent | 583b42cb3b809b1bf597af160468ccba728c2248 (diff) | |
download | curl-7d6e01441a161c81b19626bdf2b85dafece5f1b8.tar.gz |
http2: getsock fix for uploads
When there's an upload in progress, make sure to wait for the socket to
become writable.
Detected-by: steini2000 on github
Bug: #2520
Closes #2567
-rw-r--r-- | lib/http2.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/http2.c b/lib/http2.c index 770ebdab5..62b109293 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -108,6 +108,7 @@ static int http2_perform_getsock(const struct connectdata *conn, int numsocks) { const struct http_conn *c = &conn->proto.httpc; + struct SingleRequest *k = &conn->data->req; int bitmap = GETSOCK_BLANK; (void)numsocks; @@ -119,7 +120,9 @@ static int http2_perform_getsock(const struct connectdata *conn, always be ready for one */ bitmap |= GETSOCK_READSOCK(FIRSTSOCKET); - if(nghttp2_session_want_write(c->h2)) + /* we're still uploading or the HTTP/2 layer wants to send data */ + if(((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND) || + nghttp2_session_want_write(c->h2)) bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET); return bitmap; |