Skip to content

Commit

Permalink
fix timeout event lead to OS error
Browse files Browse the repository at this point in the history
  • Loading branch information
LukasKarel committed Sep 27, 2021
1 parent f6e165f commit 813175c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
8 changes: 8 additions & 0 deletions connectivity/netsocket/include/netsocket/DTLSSocketWrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ class DTLSSocketWrapper : public TLSSocketWrapper {
* @param control Transport control mode. See @ref control_transport.
*/
DTLSSocketWrapper(Socket *transport, const char *hostname = NULL, control_transport control = TRANSPORT_CONNECT_AND_CLOSE);

/** Destroy a socket wrapper.
*
* Closes socket wrapper if the socket wrapper is still open.
*/
~DTLSSocketWrapper();

nsapi_error_t close() override;
private:
static void timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fin_ms);
static int timing_get_delay(void *ctx);
Expand Down
15 changes: 15 additions & 0 deletions connectivity/netsocket/source/DTLSSocketWrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ DTLSSocketWrapper::DTLSSocketWrapper(Socket *transport, const char *hostname, co
#endif /* !defined(MBEDTLS_SSL_CONF_SET_TIMER) && !defined(MBEDTLS_SSL_CONF_GET_TIMER) */
}

DTLSSocketWrapper::~DTLSSocketWrapper()
{
close();
}

void DTLSSocketWrapper::timing_set_delay(void *ctx, uint32_t int_ms, uint32_t fin_ms)
{
DTLSSocketWrapper *context = static_cast<DTLSSocketWrapper *>(ctx);
Expand Down Expand Up @@ -74,6 +79,16 @@ int DTLSSocketWrapper::timing_get_delay(void *ctx)
}
}

nsapi_error_t DTLSSocketWrapper::close()
{
if (_timer_event_id != 0) {
mbed::mbed_event_queue()->cancel(_timer_event_id);
_timer_event_id = 0;
}

return TLSSocketWrapper::close();
}

void DTLSSocketWrapper::timer_event(void)
{
_timer_expired = true;
Expand Down

0 comments on commit 813175c

Please sign in to comment.