mirror of
https://github.com/curl/curl.git
synced 2026-08-25 11:13:32 +03:00
vtls: revert "receive max buffer" + add test case
- add test_05_04 for requests using http/1.0, http/1.1 and h2 against an
Apache resource that does an unclean TLS shutdown.
- revert special workarund in openssl.c for suppressing shutdown errors
on multiplexed connections
- vlts.c restore to its state before 9a90c9dd64
Fixes #12885
Fixes #12844
Closes #12848
This commit is contained in:
parent
7cf8414fab
commit
ed09a99af5
4 changed files with 41 additions and 24 deletions
|
|
@ -1715,32 +1715,17 @@ static ssize_t ssl_cf_recv(struct Curl_cfilter *cf,
|
|||
{
|
||||
struct cf_call_data save;
|
||||
ssize_t nread;
|
||||
size_t ntotal = 0;
|
||||
|
||||
CF_DATA_SAVE(save, cf, data);
|
||||
*err = CURLE_OK;
|
||||
/* Do receive until we fill the buffer somehwhat or EGAIN, error or EOF */
|
||||
while(!ntotal || (len - ntotal) > (4*1024)) {
|
||||
*err = CURLE_OK;
|
||||
nread = Curl_ssl->recv_plain(cf, data, buf + ntotal, len - ntotal, err);
|
||||
if(nread < 0) {
|
||||
if(*err == CURLE_AGAIN && ntotal > 0) {
|
||||
/* we EAGAINed after having reed data, return the success amount */
|
||||
*err = CURLE_OK;
|
||||
break;
|
||||
}
|
||||
/* we have a an error to report */
|
||||
goto out;
|
||||
}
|
||||
else if(nread == 0) {
|
||||
/* eof */
|
||||
break;
|
||||
}
|
||||
ntotal += (size_t)nread;
|
||||
DEBUGASSERT((size_t)ntotal <= len);
|
||||
nread = Curl_ssl->recv_plain(cf, data, buf, len, err);
|
||||
if(nread > 0) {
|
||||
DEBUGASSERT((size_t)nread <= len);
|
||||
}
|
||||
else if(nread == 0) {
|
||||
/* eof */
|
||||
*err = CURLE_OK;
|
||||
}
|
||||
nread = (ssize_t)ntotal;
|
||||
out:
|
||||
CURL_TRC_CF(data, cf, "cf_recv(len=%zu) -> %zd, %d", len,
|
||||
nread, *err);
|
||||
CF_DATA_RESTORE(cf, save);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue