-
Notifications
You must be signed in to change notification settings - Fork 874
Open
Description
I added tests in curl using GET
on long urls, running all HTTP versions and backends. The tests add n * 'x'
as query string to a url with n
in [1k, 16k, 32k, 54k]. (see curl/curl#18129).
All QUIC backends except quiche
work, giving the server 4xx response for the URL being too long. quiche
is unable to start the stream. This happens in curl_quiche.c:1025
:
stream3_id = quiche_h3_send_request(ctx->h3c, ctx->qconn, nva, nheader,
stream->send_closed);
if(stream3_id < 0) {
if(QUICHE_H3_ERR_STREAM_BLOCKED == stream3_id) {
/* quiche seems to report this error if the connection window is
* exhausted. Which happens frequently and intermittent. */
CURL_TRC_CF(data, cf, "[%"FMT_PRIu64"] blocked", stream->id);
stream->quic_flow_blocked = TRUE;
result = CURLE_AGAIN;
goto out;
}
...
So, we are getting QUICHE_H3_ERR_STREAM_BLOCKED
and interpret this as a temporary failure, as the description say "retry later". Are we wrong or is there an error code missing for a permanent failure here?
Note: this happens not only the first request of a connection, but also when sending a successful other request with response first.
Please advise.
Version used: quiche v0.24.4
Metadata
Metadata
Assignees
Labels
No labels