From f64808c38509057d504546a57b5011c3a7555657 Mon Sep 17 00:00:00 2001 From: Simon Goldschmidt Date: Wed, 24 Aug 2011 21:12:12 +0200 Subject: [PATCH] fixed bug #33956 Wrong error returned when calling accept() on UDP connections --- CHANGELOG | 4 ++++ src/api/api_msg.c | 2 ++ src/api/sockets.c | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index fcfde34b..73f38413 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -41,6 +41,10 @@ HISTORY ++ Bugfixes: + 2011-08-24: Simon Goldschmidt + * api_msg.c, sockets.c: fixed bug #33956 Wrong error returned when calling + accept() on UDP connections + 2011-08-24: Simon Goldschmidt * sockets.h: fixed bug #34057 socklen_t should be a typedef diff --git a/src/api/api_msg.c b/src/api/api_msg.c index 54fbabcf..7cffe3eb 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -1095,6 +1095,8 @@ do_listen(struct api_msg_msg *msg) } } } + } else { + msg->err = ERR_ARG; } } } diff --git a/src/api/sockets.c b/src/api/sockets.c index e3e01ca4..2982f191 100644 --- a/src/api/sockets.c +++ b/src/api/sockets.c @@ -407,6 +407,10 @@ lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen) err = netconn_accept(sock->conn, &newconn); if (err != ERR_OK) { LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d): netconn_acept failed, err=%d\n", s, err)); + if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { + sock_set_errno(sock, EOPNOTSUPP); + return EOPNOTSUPP; + } sock_set_errno(sock, err_to_errno(err)); return -1; } @@ -611,6 +615,10 @@ lwip_listen(int s, int backlog) if (err != ERR_OK) { LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_listen(%d) failed, err=%d\n", s, err)); + if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { + sock_set_errno(sock, EOPNOTSUPP); + return EOPNOTSUPP; + } sock_set_errno(sock, err_to_errno(err)); return -1; } -- 2.39.2