summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Mikkel Kamstrup Erlandsen2019-09-27 10:18:04 +0200
committerGravatar Nikias Bassen2019-09-28 12:12:23 +0200
commite88fdf99f943c9523ed9f1d30c940804ad99d7de (patch)
tree23f3f1396abf7a2ceb41c9a40c48d8167bcaaa87 /src
parent8c7321b11512cc3cfd112ad2b4b65c5a81e12bba (diff)
downloadlibimobiledevice-e88fdf99f943c9523ed9f1d30c940804ad99d7de.tar.gz
libimobiledevice-e88fdf99f943c9523ed9f1d30c940804ad99d7de.tar.bz2
idevice: fix hang in SSL_shutdown
Diffstat (limited to 'src')
-rw-r--r--src/idevice.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/idevice.c b/src/idevice.c
index fd1f4b5..90b531d 100644
--- a/src/idevice.c
+++ b/src/idevice.c
@@ -930,7 +930,13 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_disable_ssl(idevice_conn
if (connection->ssl_data->session) {
/* see: https://www.openssl.org/docs/ssl/SSL_shutdown.html#RETURN_VALUES */
if (SSL_shutdown(connection->ssl_data->session) == 0) {
- SSL_shutdown(connection->ssl_data->session);
+ /* Only try bidirectional shutdown if we know it can complete */
+ int ssl_error;
+ if ((ssl_error = SSL_get_error(connection->ssl_data->session, 0)) == SSL_ERROR_NONE) {
+ SSL_shutdown(connection->ssl_data->session);
+ } else {
+ debug_info("Skipping bidirectional SSL shutdown. SSL error code: %i\n", ssl_error);
+ }
}
}
#else