From efbfc6de740ba14a593539d599ec9db1de5861fb Mon Sep 17 00:00:00 2001 From: Geoff Paul Date: Mon, 9 Jan 2012 11:42:42 -0600 Subject: [PATCH] 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 files changed, 5 insertions(+), 1 deletions(-) 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; } -- 1.7.4.1