From c3130e51e497bb8331257626e2c02310174ab1d5 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Mon, 29 Aug 2016 18:47:30 -0500 Subject: [PATCH] lwip - Added check for previously-bound socket Avoids what turns into an infinite loop in lwip's internals --- features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c b/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c index 1e04808275..3e3190264e 100644 --- a/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c +++ b/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c @@ -278,6 +278,11 @@ static int lwip_socket_bind(nsapi_stack_t *stack, nsapi_socket_t handle, nsapi_a return NSAPI_ERROR_PARAMETER; } + if ((s->conn->type == NETCONN_TCP && s->conn->pcb.tcp->local_port != 0) || + (s->conn->type == NETCONN_UDP && s->conn->pcb.udp->local_port != 0)) { + return NSAPI_ERROR_PARAMETER; + } + err_t err = netconn_bind(s->conn, (ip_addr_t *)addr.bytes, port); return lwip_err_remap(err); }