quiche: after leaving h3_recving state, poll again
This could otherwise easily leave libcurl "hanging" after the entire transfer is done but without noticing the end-of-transfer signal. Assisted-by: Lucas Pardue Closes #8436
This commit is contained in:
parent
6883180fa5
commit
96f85a0fef
@ -596,13 +596,15 @@ static ssize_t h3_stream_recv(struct Curl_easy *data,
|
||||
if(rcode <= 0) {
|
||||
recvd = -1;
|
||||
qs->h3_recving = FALSE;
|
||||
/* fall through into the while loop below */
|
||||
}
|
||||
else
|
||||
recvd = rcode;
|
||||
}
|
||||
else {
|
||||
|
||||
while(recvd < 0) {
|
||||
int64_t s = quiche_h3_conn_poll(qs->h3c, qs->conn, &ev);
|
||||
infof(data, "quiche_h3_conn_poll: %ld", s);
|
||||
if(s < 0)
|
||||
/* nothing more to do */
|
||||
break;
|
||||
@ -656,7 +658,6 @@ static ssize_t h3_stream_recv(struct Curl_easy *data,
|
||||
|
||||
quiche_h3_event_free(ev);
|
||||
}
|
||||
}
|
||||
if(flush_egress(data, sockfd, qs)) {
|
||||
*curlcode = CURLE_SEND_ERROR;
|
||||
return -1;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user