Issue: Once failed to DTLS Handshake between A and B in abnormal case,
it is unable to establish dtls session between both.
Relate jira : IOTSEC-824
Patch 1 : Init
Patch 2,3 : Refesh dtls.c file
Change-Id: I1be5717580d7fa254af562c672d187653ff81f11
Signed-off-by: js126.lee <js126.lee@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/7597
Reviewed-by: Chul Lee <chuls.lee@samsung.com>
Reviewed-by: Kyungsun Cho <goodsun.cho@samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
}
if (peer) {
peer->state = DTLS_STATE_CLOSING;
+#ifndef WITH_CONTIKI
+ HASH_DEL_PEER(ctx->peers, peer);
+#else /* WITH_CONTIKI */
+ list_remove(ctx->peers, peer);
+#endif
+ (void)CALL(ctx, event, &peer->session,
+ DTLS_ALERT_LEVEL_FATAL, DTLS_ALERT_HANDSHAKE_FAILURE);
+
return dtls_send_alert(ctx, peer, DTLS_ALERT_LEVEL_FATAL, DTLS_ALERT_INTERNAL_ERROR);
}
}
OIC_LOG(INFO, NET_DTLS_TAG, "Peer closing connection");
CARemovePeerFromPeerInfoList(peerAddr, port);
}
+ else if(DTLS_ALERT_LEVEL_FATAL == level && DTLS_ALERT_HANDSHAKE_FAILURE == code)
+ {
+ OIC_LOG(INFO, NET_DTLS_TAG, "Failed to DTLS handshake, the peer will be removed.");
+ CARemovePeerFromPeerInfoList(peerAddr, port);
+ }
OIC_LOG(DEBUG, NET_DTLS_TAG, "OUT");
return 0;