47 lines
1.5 KiB
Diff
47 lines
1.5 KiB
Diff
From 95a865b462195d9d847f7f2676f0c789179e2073 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Stenberg <daniel@haxx.se>
|
|
Date: Mon, 4 Sep 2023 14:14:32 +0200
|
|
Subject: [PATCH] transfer: also stop the sending on closed connection
|
|
|
|
Previously this cleared the receiving bit only but in some cases it is
|
|
also still sending (like a request-body) when disconnected and neither
|
|
direction can continue then.
|
|
|
|
Fixes #11769
|
|
Reported-by: Oleg Jukovec
|
|
Closes #11795
|
|
|
|
Conflict: NA
|
|
Reference: https://github.com/curl/curl/commit/95a865b462195d9d847f7f2676f0c789179e2073
|
|
---
|
|
lib/transfer.c | 7 ++++---
|
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/lib/transfer.c b/lib/transfer.c
|
|
index fb0a6a45d..d0602b875 100644
|
|
--- a/lib/transfer.c
|
|
+++ b/lib/transfer.c
|
|
@@ -492,15 +492,16 @@ static CURLcode readwrite_data(struct Curl_easy *data,
|
|
if(0 < nread || is_empty_data) {
|
|
buf[nread] = 0;
|
|
}
|
|
- else {
|
|
+ if(!nread) {
|
|
/* if we receive 0 or less here, either the data transfer is done or the
|
|
server closed the connection and we bail out from this! */
|
|
if(data_eof_handled)
|
|
DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
|
|
else
|
|
DEBUGF(infof(data, "nread <= 0, server closed connection, bailing"));
|
|
- k->keepon &= ~KEEP_RECV;
|
|
- break;
|
|
+ k->keepon = 0; /* stop sending as well */
|
|
+ if(!is_empty_data)
|
|
+ break;
|
|
}
|
|
|
|
/* Default buffer to use when we write the buffer, it may be changed
|
|
--
|
|
2.33.0
|
|
|