From: Daniel Stenberg Date: Mon, 23 Aug 2021 11:04:59 +0000 (+0200) Subject: c-hyper: deal with Expect: 100-continue combined with POSTFIELDS X-Git-Tag: curl-7_79_0~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38941ad6f315b9277833df74b9feb6b2df3f50e2;p=thirdparty%2Fcurl.git c-hyper: deal with Expect: 100-continue combined with POSTFIELDS Enable test 1130 and 1131 Closes #7616 --- diff --git a/lib/c-hyper.c b/lib/c-hyper.c index 5cb04bb3e1..f17180bc86 100644 --- a/lib/c-hyper.c +++ b/lib/c-hyper.c @@ -203,11 +203,9 @@ static int hyper_body_chunk(void *userdata, const hyper_buf *chunk) } else { /* >= 4xx */ k->exp100 = EXP100_FAILED; - done = TRUE; } } - if(data->state.hconnect && - (data->req.httpcode/100 != 2)) { + if(data->state.hconnect && (data->req.httpcode/100 != 2)) { done = TRUE; result = CURLE_OK; } @@ -596,6 +594,16 @@ static int uploadpostfields(void *userdata, hyper_context *ctx, { struct Curl_easy *data = (struct Curl_easy *)userdata; (void)ctx; + if(data->req.exp100 > EXP100_SEND_DATA) { + if(data->req.exp100 == EXP100_FAILED) + return HYPER_POLL_ERROR; + + /* still waiting confirmation */ + if(data->hyp.exp100_waker) + hyper_waker_free(data->hyp.exp100_waker); + data->hyp.exp100_waker = hyper_context_waker(ctx); + return HYPER_POLL_PENDING; + } if(data->req.upload_done) *chunk = NULL; /* nothing more to deliver */ else { diff --git a/tests/data/DISABLED b/tests/data/DISABLED index d5f1b7087c..301de6c70a 100644 --- a/tests/data/DISABLED +++ b/tests/data/DISABLED @@ -78,8 +78,6 @@ 1123 1125 1129 -1130 -1131 1144 1156 1160