diff --git a/subsys/net/lib/lwm2m/lwm2m_engine.c b/subsys/net/lib/lwm2m/lwm2m_engine.c index 924ba3dcf83..64d448469f2 100644 --- a/subsys/net/lib/lwm2m/lwm2m_engine.c +++ b/subsys/net/lib/lwm2m/lwm2m_engine.c @@ -5589,6 +5589,7 @@ static int load_tls_credential(struct lwm2m_ctx *client_ctx, uint16_t res_id, int lwm2m_socket_start(struct lwm2m_ctx *client_ctx) { + socklen_t addr_len; int flags; #if defined(CONFIG_LWM2M_DTLS_SUPPORT) int ret; @@ -5661,9 +5662,17 @@ int lwm2m_socket_start(struct lwm2m_ctx *client_ctx) } } #endif /* CONFIG_LWM2M_DTLS_SUPPORT */ + if ((client_ctx->remote_addr).sa_family == AF_INET) { + addr_len = sizeof(struct sockaddr_in); + } else if ((client_ctx->remote_addr).sa_family == AF_INET6) { + addr_len = sizeof(struct sockaddr_in6); + } else { + lwm2m_engine_context_close(client_ctx); + return -EPROTONOSUPPORT; + } if (connect(client_ctx->sock_fd, &client_ctx->remote_addr, - NET_SOCKADDR_MAX_SIZE) < 0) { + addr_len) < 0) { LOG_ERR("Cannot connect UDP (-%d)", errno); lwm2m_engine_context_close(client_ctx); return -errno;