From 2f641bd1f56eaad88f7a63715320a3540effd902 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sat, 7 Sep 2013 00:13:51 +0000 Subject: [PATCH] net: Improve error handling of makesock_addrinfo(). Rename rc to ret, and always set this variable so that an appropriate error code will be returned in all cases. --- net.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/net.c b/net.c index 2d0c9e22..740dfa18 100644 --- a/net.c +++ b/net.c @@ -418,7 +418,7 @@ static int makesock_addrinfo(unsigned l4type, bool passive, struct addrinfo *ai, struct flowopts *fo) { struct addrinfo *local, *remote, *src = NULL, *dst = NULL; - int rc = -E_MAKESOCK, on = 1, sockfd = -1; + int ret = -E_MAKESOCK, on = 1, sockfd = -1; if (passive) { local = ai; @@ -434,11 +434,11 @@ static int makesock_addrinfo(unsigned l4type, bool passive, struct addrinfo *ai, && dst->ai_family == AF_INET6) goto get_next_dst; /* v4 -> v6 is not possible */ - sockfd = socket(src ? src->ai_family : dst->ai_family, + ret = socket(src ? src->ai_family : dst->ai_family, sock_type(l4type), l4type); - if (sockfd < 0) + if (ret < 0) goto get_next_dst; - + sockfd = ret; /* * Reuse the address on passive sockets to avoid failure on * restart (protocols using listen()) and when creating @@ -446,11 +446,10 @@ static int makesock_addrinfo(unsigned l4type, bool passive, struct addrinfo *ai, */ if (passive && setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) { - rc = errno; + ret = -ERRNO_TO_PARA_ERROR(errno); close(sockfd); PARA_ERROR_LOG("can not set SO_REUSEADDR: %s\n", - strerror(rc)); - rc = -ERRNO_TO_PARA_ERROR(rc); + para_strerror(-ret)); break; } flowopt_setopts(sockfd, fo); @@ -474,11 +473,8 @@ get_next_src: if (src && (src = src->ai_next)) /* restart inner loop */ dst = remote; } - if (src == NULL && dst == NULL) { - if (rc >= 0) - rc = -E_MAKESOCK; - return rc; - } + if (src == NULL && dst == NULL) + return ret < 0? ret : -E_MAKESOCK; return sockfd; } -- 2.39.2