From b83f925e58d4e8b89d042c0f375045a94bb0b202 Mon Sep 17 00:00:00 2001 From: Geoff Paul Date: Thu, 12 Jan 2012 01:33:17 +0100 Subject: idevice: add error checking to internal_ssl_write() Returning 0 bytes sent upon error causes an infinite loop within the calling gnutls code. Returning -1 as an error code allows gnutls to properly detect and recover. --- src/idevice.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/idevice.c b/src/idevice.c index cad1431..af87e61 100644 --- a/src/idevice.c +++ b/src/idevice.c @@ -504,9 +504,13 @@ static ssize_t internal_ssl_read(gnutls_transport_ptr_t transport, char *buffer, static ssize_t internal_ssl_write(gnutls_transport_ptr_t transport, char *buffer, size_t length) { uint32_t bytes = 0; + idevice_error_t res; idevice_connection_t connection = (idevice_connection_t)transport; debug_info("pre-send length = %zi", length); - internal_connection_send(connection, buffer, length, &bytes); + if ((res = internal_connection_send(connection, buffer, length, &bytes)) != IDEVICE_E_SUCCESS) { + debug_info("ERROR: internal_connection_send returned %d", res); + return -1; + } debug_info("post-send sent %i bytes", bytes); return bytes; } -- cgit v1.1-32-gdbae