diff options
author | Mikkel Kamstrup Erlandsen | 2019-09-27 10:18:04 +0200 |
---|---|---|
committer | Nikias Bassen | 2019-09-28 12:12:23 +0200 |
commit | e88fdf99f943c9523ed9f1d30c940804ad99d7de (patch) | |
tree | 23f3f1396abf7a2ceb41c9a40c48d8167bcaaa87 | |
parent | 8c7321b11512cc3cfd112ad2b4b65c5a81e12bba (diff) | |
download | libimobiledevice-e88fdf99f943c9523ed9f1d30c940804ad99d7de.tar.gz libimobiledevice-e88fdf99f943c9523ed9f1d30c940804ad99d7de.tar.bz2 |
idevice: fix hang in SSL_shutdown
-rw-r--r-- | src/idevice.c | 8 |
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 |