diff --git a/subsys/net/lib/lwm2m/lwm2m_engine.c b/subsys/net/lib/lwm2m/lwm2m_engine.c index 2eb63b8df56..9280b774491 100644 --- a/subsys/net/lib/lwm2m/lwm2m_engine.c +++ b/subsys/net/lib/lwm2m/lwm2m_engine.c @@ -875,8 +875,8 @@ int lwm2m_socket_start(struct lwm2m_ctx *client_ctx) } else if ((client_ctx->remote_addr).sa_family == AF_INET6) { addr_len = sizeof(struct sockaddr_in6); } else { - lwm2m_engine_stop(client_ctx); - return -EPROTONOSUPPORT; + ret = -EPROTONOSUPPORT; + goto error; } if (zsock_connect(client_ctx->sock_fd, &client_ctx->remote_addr, addr_len) < 0) { @@ -901,7 +901,7 @@ int lwm2m_socket_start(struct lwm2m_ctx *client_ctx) LOG_INF("Connected, sock id %d", client_ctx->sock_fd); return 0; error: - lwm2m_engine_stop(client_ctx); + lwm2m_socket_close(client_ctx); return ret; } diff --git a/subsys/net/lib/lwm2m/lwm2m_rd_client.c b/subsys/net/lib/lwm2m/lwm2m_rd_client.c index 417c5bb65ad..65af3130100 100644 --- a/subsys/net/lib/lwm2m/lwm2m_rd_client.c +++ b/subsys/net/lib/lwm2m/lwm2m_rd_client.c @@ -1219,6 +1219,7 @@ static void sm_do_network_error(void) #if defined(CONFIG_LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP) if (client.ctx->bootstrap_mode) { + lwm2m_engine_context_close(client.ctx); set_sm_state(ENGINE_DO_BOOTSTRAP_REG); return; } @@ -1226,6 +1227,7 @@ static void sm_do_network_error(void) if (!client.last_update || (k_uptime_get() - client.last_update) / 1000 > client.lifetime) { /* do full registration as there is no active registration or lifetime exceeded */ + lwm2m_engine_context_close(client.ctx); set_sm_state(ENGINE_DO_REGISTRATION); return; }