summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Li Beinan2020-06-27 20:51:04 +0800
committerGravatar Nikias Bassen2022-04-22 12:10:52 +0200
commit4a77478c13b35e311922d05f0866adce817a0d6a (patch)
treefe805d3be6598e3e476a9651e5671ddf0c519cbc
parent1f625b2e89b27c391a8c2f4aa9a82630f10abb92 (diff)
downloadlibimobiledevice-4a77478c13b35e311922d05f0866adce817a0d6a.tar.gz
libimobiledevice-4a77478c13b35e311922d05f0866adce817a0d6a.tar.bz2
idevice: Fix mistreatment of 0-byte sent cases
Currently if 0 byte gets sent, it is treated as not-enough-data. This is wrong, because with TCP, 0-byte-sent usually means the receiver end is closed. We must set a new case for this and must not normalize the sent-bytes to 0 in general.
-rw-r--r--src/idevice.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/idevice.c b/src/idevice.c
index d6c1d06..f64570b 100644
--- a/src/idevice.c
+++ b/src/idevice.c
@@ -650,7 +650,10 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_send(idevice_connection_
}
debug_info("len %d, sent %d", len, sent);
if (sent < len) {
- *sent_bytes = 0;
+ *sent_bytes = sent;
+ if (sent == 0) {
+ return IDEVICE_E_UNKNOWN_ERROR;
+ }
return IDEVICE_E_NOT_ENOUGH_DATA;
}
*sent_bytes = sent;