Skip to content

Commit b3419e0

Browse files
author
Tero Heinonen
authored
Fix session lost issue (#36)
This fixes unstability issues. Still need to refactor coap_security_handler_read()-function to work as specified in mbedTLS documentation. This commit should be treated as a temporary fix.
1 parent 07d7222 commit b3419e0

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

source/coap_connection_handler.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -490,8 +490,11 @@ static void secure_recv_sckt_msg(void *cb_res)
490490
int len = 0;
491491
len = coap_security_handler_read(session->sec_handler, data, sock->data_len);
492492
if( len < 0 ){
493+
if (len != MBEDTLS_ERR_SSL_WANT_READ && len != MBEDTLS_ERR_SSL_WANT_WRITE &&
494+
len != MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE) {
495+
secure_session_delete(session);
496+
}
493497
ns_dyn_mem_free(data);
494-
secure_session_delete( session );
495498
}else{
496499
if( sock->parent->_recv_cb ){
497500
sock->parent->_recv_cb(sock->listen_socket, src_address.address, src_address.identifier, data, len);
@@ -593,11 +596,14 @@ int coap_connection_handler_virtual_recv(coap_conn_handler_t *handler, uint8_t a
593596
int len = 0;
594597
len = coap_security_handler_read(session->sec_handler, data, sock->data_len);
595598
if( len < 0 ){
599+
if (len != MBEDTLS_ERR_SSL_WANT_READ && len != MBEDTLS_ERR_SSL_WANT_WRITE &&
600+
len != MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE) {
601+
secure_session_delete(session);
602+
}
596603
ns_dyn_mem_free(data);
597-
secure_session_delete( session );
598604
return 0;
599-
}else{
600-
if( sock->parent->_recv_cb ){
605+
} else {
606+
if (sock->parent->_recv_cb) {
601607
sock->parent->_recv_cb(sock->listen_socket, address, port, data, len);
602608
}
603609
ns_dyn_mem_free(data);

0 commit comments

Comments
 (0)