diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/idevice.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/idevice.c b/src/idevice.c index ec426e5..3ed2e9f 100644 --- a/src/idevice.c +++ b/src/idevice.c | |||
| @@ -383,7 +383,15 @@ idevice_error_t idevice_connection_receive_timeout(idevice_connection_t connecti | |||
| 383 | 383 | ||
| 384 | if (connection->ssl_data) { | 384 | if (connection->ssl_data) { |
| 385 | #ifdef HAVE_OPENSSL | 385 | #ifdef HAVE_OPENSSL |
| 386 | int received = SSL_read(connection->ssl_data->session, (void*)data, (int)len); | 386 | uint32_t received = 0; |
| 387 | while (received < len) { | ||
| 388 | int r = SSL_read(connection->ssl_data->session, (void*)((char*)(data+received)), (int)len-received); | ||
| 389 | if (r > 0) { | ||
| 390 | received += r; | ||
| 391 | } else { | ||
| 392 | break; | ||
| 393 | } | ||
| 394 | } | ||
| 387 | debug_info("SSL_read %d, received %d", len, received); | 395 | debug_info("SSL_read %d, received %d", len, received); |
| 388 | #else | 396 | #else |
| 389 | ssize_t received = gnutls_record_recv(connection->ssl_data->session, (void*)data, (size_t)len); | 397 | ssize_t received = gnutls_record_recv(connection->ssl_data->session, (void*)data, (size_t)len); |
