diff options
author | dartraiden <wowemuh@gmail.com> | 2023-07-26 15:20:15 +0300 |
---|---|---|
committer | dartraiden <wowemuh@gmail.com> | 2023-07-26 17:45:46 +0300 |
commit | f53a55e58dd7733f1176a0ac268b2df576778970 (patch) | |
tree | 37e4f2fda1ce457bba52fed3e19b5870d3dc388e /libs/libcurl/src/vquic | |
parent | e0bf792776131deef8f2634fb3eeb8bd8239c059 (diff) |
libcurl: update to 8.2.1
Diffstat (limited to 'libs/libcurl/src/vquic')
-rw-r--r-- | libs/libcurl/src/vquic/curl_ngtcp2.c | 2 | ||||
-rw-r--r-- | libs/libcurl/src/vquic/curl_quiche.c | 26 |
2 files changed, 14 insertions, 14 deletions
diff --git a/libs/libcurl/src/vquic/curl_ngtcp2.c b/libs/libcurl/src/vquic/curl_ngtcp2.c index 41ed55a64a..50ca212a96 100644 --- a/libs/libcurl/src/vquic/curl_ngtcp2.c +++ b/libs/libcurl/src/vquic/curl_ngtcp2.c @@ -1835,6 +1835,8 @@ out: *err = result;
sent = -1;
}
+ DEBUGF(LOG_CF(data, cf, "[h3sid=%" PRId64 "] cf_send(len=%zu) -> %zd, %d",
+ stream? stream->id : -1, len, sent, *err));
CF_DATA_RESTORE(cf, save);
return sent;
}
diff --git a/libs/libcurl/src/vquic/curl_quiche.c b/libs/libcurl/src/vquic/curl_quiche.c index c587b13571..f6e995c6c5 100644 --- a/libs/libcurl/src/vquic/curl_quiche.c +++ b/libs/libcurl/src/vquic/curl_quiche.c @@ -329,7 +329,7 @@ static struct Curl_easy *get_stream_easy(struct Curl_cfilter *cf, else {
DEBUGASSERT(data->multi);
for(sdata = data->multi->easyp; sdata; sdata = sdata->next) {
- if(H3_STREAM_ID(sdata) == stream3_id) {
+ if((sdata->conn == data->conn) && H3_STREAM_ID(sdata) == stream3_id) {
return sdata;
}
}
@@ -426,7 +426,7 @@ static ssize_t stream_resp_read(void *reader_ctx, return nread;
}
else {
- *err = stream->resp_got_header? CURLE_PARTIAL_FILE : CURLE_RECV_ERROR;
+ *err = CURLE_AGAIN;
return -1;
}
}
@@ -457,8 +457,8 @@ static CURLcode cf_recv_body(struct Curl_cfilter *cf, if(nwritten < 0 && result != CURLE_AGAIN) {
DEBUGF(LOG_CF(data, cf, "[h3sid=%"PRId64"] recv_body error %zd",
stream->id, nwritten));
- failf(data, "Error %zd in HTTP/3 response body for stream[%"PRId64"]",
- nwritten, stream->id);
+ failf(data, "Error %d in HTTP/3 response body for stream[%"PRId64"]",
+ result, stream->id);
stream->closed = TRUE;
stream->reset = TRUE;
stream->send_closed = TRUE;
@@ -591,8 +591,13 @@ static CURLcode cf_poll_events(struct Curl_cfilter *cf, "for [h3sid=%"PRId64"] -> %d",
stream? stream->id : -1, cf_ev_name(ev),
stream3_id, result));
- quiche_h3_event_free(ev);
- return result;
+ if(data == sdata) {
+ /* Only report this error to the caller if it is about the
+ * transfer we were called with. Otherwise we fail a transfer
+ * due to a problem in another one. */
+ quiche_h3_event_free(ev);
+ return result;
+ }
}
quiche_h3_event_free(ev);
}
@@ -1147,10 +1152,8 @@ static CURLcode cf_quiche_data_event(struct Curl_cfilter *cf, (void)arg1;
(void)arg2;
switch(event) {
- case CF_CTRL_DATA_SETUP: {
- result = h3_data_setup(cf, data);
+ case CF_CTRL_DATA_SETUP:
break;
- }
case CF_CTRL_DATA_PAUSE:
result = h3_data_pause(cf, data, (arg1 != 0));
break;
@@ -1339,11 +1342,6 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf, }
#endif
- /* we do not get a setup event for the initial transfer */
- result = h3_data_setup(cf, data);
- if(result)
- return result;
-
result = cf_flush_egress(cf, data);
if(result)
return result;
|