idevice: [OpenSSL] Fix SSL_read with non-blocking sockets
diff --git a/src/idevice.c b/src/idevice.c
index 3c312d2..0a62907 100644
--- a/src/idevice.c
+++ b/src/idevice.c
@@ -590,14 +590,23 @@
 
 #ifdef HAVE_OPENSSL
 			int r = SSL_read(connection->ssl_data->session, (void*)((char*)(data+received)), (int)len-received);
+			if (r > 0) {
+				received += r;
+			} else {
+				int sslerr = SSL_get_error(connection->ssl_data->session, r);
+				if (sslerr == SSL_ERROR_WANT_READ) {
+					continue;
+				}
+				break;
+			}
 #else
 			ssize_t r = gnutls_record_recv(connection->ssl_data->session, (void*)(data+received), (size_t)len-received);
-#endif
 			if (r > 0) {
 				received += r;
 			} else {
 				break;
 			}
+#endif
 		}
 
 		debug_info("SSL_read %d, received %d", len, received);