From: Garrett Squire Date: Sat, 7 May 2022 00:34:14 +0000 (-0700) Subject: hyper: fix test 357 X-Git-Tag: curl-7_83_1~19 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=652fd3fab820d786b62997e3700517e5f2e31d78;p=thirdparty%2Fcurl.git hyper: fix test 357 This change fixes the hyper API such that PUT requests that receive a 417 response can retry without the Expect header. Closes #8811 --- diff --git a/lib/c-hyper.c b/lib/c-hyper.c index de09568741..69082982cf 100644 --- a/lib/c-hyper.c +++ b/lib/c-hyper.c @@ -439,6 +439,13 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data, reasonp = hyper_response_reason_phrase(resp); reason_len = hyper_response_reason_phrase_len(resp); + if(http_status == 417 && data->state.expect100header) { + infof(data, "Got 417 while waiting for a 100"); + data->state.disableexpect = TRUE; + data->req.newurl = strdup(data->state.url); + Curl_done_sending(data, k); + } + result = status_line(data, conn, http_status, http_version, reasonp, reason_len); if(result) @@ -951,6 +958,11 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) goto error; } } + else { + if(!h2 && !data->state.disableexpect) { + data->state.expect100header = TRUE; + } + } if(hyper_request_set_method(req, (uint8_t *)method, strlen(method))) { failf(data, "error setting method"); diff --git a/tests/data/DISABLED b/tests/data/DISABLED index 453a0ecebe..fe06367b4d 100644 --- a/tests/data/DISABLED +++ b/tests/data/DISABLED @@ -42,7 +42,6 @@ %if hyper 265 266 -357 565 579 587