Skip to content

Commit 4369443

Browse files
committed
TLSSocketWrapper: add read/write event flags
This allows to properly handle timeouts during read write operations
1 parent efd54c8 commit 4369443

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

connectivity/netsocket/include/netsocket/TLSSocketWrapper.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ class TLSSocketWrapper : public Socket {
379379
Socket *_transport;
380380
int _timeout = -1;
381381

382+
// Event flags
383+
static const int READ_FLAG = 0x1u;
384+
static const int WRITE_FLAG = 0x2u;
385+
382386
#ifdef MBEDTLS_X509_CRT_PARSE_C
383387
mbedtls_x509_crt *_cacert = nullptr;
384388
mbedtls_x509_crt *_clicert = nullptr;

connectivity/netsocket/source/TLSSocketWrapper.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ nsapi_error_t TLSSocketWrapper::continue_handshake()
381381
ret = mbedtls_ssl_handshake(&_ssl);
382382
if (_timeout && (ret == MBEDTLS_ERR_SSL_WANT_READ || ret == MBEDTLS_ERR_SSL_WANT_WRITE)) {
383383
uint32_t flag;
384-
flag = _event_flag.wait_any(1, _timeout);
384+
flag = _event_flag.wait_any(WRITE_FLAG | READ_FLAG, _timeout);
385385
if (flag & osFlagsError) {
386386
break;
387387
}
@@ -461,7 +461,7 @@ nsapi_error_t TLSSocketWrapper::send(const void *data, nsapi_size_t size)
461461
break;
462462
} else if (ret == MBEDTLS_ERR_SSL_WANT_WRITE || ret == MBEDTLS_ERR_SSL_WANT_READ) {
463463
uint32_t flag;
464-
flag = _event_flag.wait_any(1, _timeout);
464+
flag = _event_flag.wait_any(WRITE_FLAG, _timeout);
465465
if (flag & osFlagsError) {
466466
// Timeout break
467467
break;
@@ -522,7 +522,7 @@ nsapi_size_or_error_t TLSSocketWrapper::recv(void *data, nsapi_size_t size)
522522
break;
523523
} else if (ret == MBEDTLS_ERR_SSL_WANT_WRITE || ret == MBEDTLS_ERR_SSL_WANT_READ) {
524524
uint32_t flag;
525-
flag = _event_flag.wait_any(1, _timeout);
525+
flag = _event_flag.wait_any(READ_FLAG, _timeout);
526526
if (flag & osFlagsError) {
527527
// Timeout break
528528
break;
@@ -855,7 +855,7 @@ nsapi_error_t TLSSocketWrapper::listen(int)
855855

856856
void TLSSocketWrapper::event()
857857
{
858-
_event_flag.set(1);
858+
_event_flag.set(READ_FLAG | WRITE_FLAG);
859859
if (_sigio) {
860860
_sigio();
861861
}

0 commit comments

Comments
 (0)