From 0a8952cd7b2d2e8aae5ddf5f6c418537541f0ff7 Mon Sep 17 00:00:00 2001 From: Dmitriy Zhuravlev Date: Fri, 30 Dec 2016 09:28:14 +0200 Subject: [PATCH] Fix for patchset 15853 Fixed OTM error caused by patchset 15853. Added close notify alert sending to DeletePeerList() Change-Id: Ib5363f8d16358a388df0f003e9111f1d56ccca62 Signed-off-by: Oleksii Beketov Signed-off-by: Dmitriy Zhuravlev Reviewed-on: https://gerrit.iotivity.org/gerrit/16001 Tested-by: jenkins-iotivity Reviewed-by: Chul Lee Reviewed-by: Jongsung Lee Reviewed-by: Randeep Singh (cherry picked from commit 085d7a8af264f8731ee11014f711d9f39b678376) Reviewed-on: https://gerrit.iotivity.org/gerrit/16413 Tested-by: jenkins-iotivity --- .../csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c b/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c index c618736..425db6c 100644 --- a/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c +++ b/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c @@ -214,7 +214,7 @@ if (g_sslCallback) * @param[in] msg allert message */ #define SSL_CHECK_FAIL(peer, ret, str, mutex, error, msg) \ -if (MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY != (int) (ret) && \ +if (0 != (ret) && MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY != (int) (ret) && \ MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED != (int) (ret) && \ MBEDTLS_ERR_SSL_WANT_READ != (int) (ret) && \ MBEDTLS_ERR_SSL_WANT_WRITE != (int) (ret) && \ @@ -974,6 +974,15 @@ static void DeletePeerList() { continue; } + if (MBEDTLS_SSL_HANDSHAKE_OVER == tep->ssl.state) + { + int ret = 0; + do + { + ret = mbedtls_ssl_close_notify(&tep->ssl); + } + while (MBEDTLS_ERR_SSL_WANT_WRITE == ret); + } DeleteSslEndPoint(tep); } u_arraylist_free(&g_caSslContext->peerList); @@ -1861,7 +1870,6 @@ CAResult_t CAdecryptSsl(const CASecureEndpoint_t *sep, uint8_t *data, uint32_t d MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY == peer->ssl.in_msg[1])) { OIC_LOG(INFO, NET_SSL_TAG, "Connection was closed gracefully"); - SSL_CLOSE_NOTIFY(peer, ret); RemovePeerFromList(&peer->sep.endpoint); oc_mutex_unlock(g_sslContextMutex); return CA_STATUS_OK; -- 2.7.4