1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-24 09:08:49 -05:00

hyper: propagate errors back up from read callbacks

Makes test 513 work with hyper

Closes #7266
This commit is contained in:
Daniel Stenberg 2021-06-16 10:52:21 +02:00
parent 52aa18411c
commit 80e1054fe5
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
3 changed files with 13 additions and 4 deletions

View File

@ -566,8 +566,10 @@ static int uploadpostfields(void *userdata, hyper_context *ctx,
(size_t)data->req.p.http->postsize);
if(copy)
*chunk = copy;
else
else {
data->state.hresult = CURLE_OUT_OF_MEMORY;
return HYPER_POLL_ERROR;
}
/* increasing the writebytecount here is a little premature but we
don't know exactly when the body is sent*/
data->req.writebytecount += (size_t)data->req.p.http->postsize;
@ -585,8 +587,10 @@ static int uploadstreamed(void *userdata, hyper_context *ctx,
CURLcode result =
Curl_fillreadbuffer(data, data->set.upload_buffer_size, &fillcount);
(void)ctx;
if(result)
if(result) {
data->state.hresult = result;
return HYPER_POLL_ERROR;
}
if(!fillcount)
/* done! */
*chunk = NULL;
@ -594,8 +598,10 @@ static int uploadstreamed(void *userdata, hyper_context *ctx,
hyper_buf *copy = hyper_buf_copy((uint8_t *)data->state.ulbuf, fillcount);
if(copy)
*chunk = copy;
else
else {
data->state.hresult = CURLE_OUT_OF_MEMORY;
return HYPER_POLL_ERROR;
}
/* increasing the writebytecount here is a little premature but we
don't know exactly when the body is sent*/
data->req.writebytecount += fillcount;
@ -952,6 +958,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
hyper_code code = hyper_error_code(hypererr);
failf(data, "Hyper: [%d] %.*s", (int)code, (int)errlen, errbuf);
hyper_error_free(hypererr);
if(data->state.hresult)
return data->state.hresult;
}
return CURLE_OUT_OF_MEMORY;
}

View File

@ -55,7 +55,6 @@
357
358
359
513
547
551
552

View File

@ -34,12 +34,14 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER
# Verify data after the test has been "shot"
<verify>
<protocol>
%if !hyper
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 1
Content-Type: application/x-www-form-urlencoded
%endif
</protocol>
# 42 - aborted by callback
<errorcode>