From b193918ca076b0615cb0d49ecee069cd732f7026 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Thu, 21 Dec 2017 21:56:01 +0000 Subject: [PATCH] [649] Don't close socket again if nonblock fails. Thanks to Edwin van den Oetelaar. Bug: https://github.com/eclipse/mosquitto/issues/649 --- ChangeLog.txt | 1 + lib/net_mosq.c | 8 -------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index d77a54fcec..7c7ff363bb 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -14,6 +14,7 @@ Client library: - Fix incorrect PSK key being used if it had leading zeroes. - Initialise "result" variable as soon as possible in mosquitto_topic_matches_sub. Closes #654. +- No need to close socket again if setting non-blocking failed. Closes #649. Build: - Don't run TLS-PSK tests if TLS-PSK disabled at compile time. Closes #636. diff --git a/lib/net_mosq.c b/lib/net_mosq.c index 9684b22407..e8097b6d07 100644 --- a/lib/net_mosq.c +++ b/lib/net_mosq.c @@ -329,7 +329,6 @@ int _mosquitto_try_connect_step2(struct mosquitto *mosq, uint16_t port, mosq_soc /* Set non-blocking */ if(_mosquitto_socket_nonblock(*sock)){ - COMPAT_CLOSE(*sock); continue; } @@ -344,7 +343,6 @@ int _mosquitto_try_connect_step2(struct mosquitto *mosq, uint16_t port, mosq_soc /* Set non-blocking */ if(_mosquitto_socket_nonblock(*sock)){ - COMPAT_CLOSE(*sock); continue; } break; @@ -429,7 +427,6 @@ int _mosquitto_try_connect(struct mosquitto *mosq, const char *host, uint16_t po if(!blocking){ /* Set non-blocking */ if(_mosquitto_socket_nonblock(*sock)){ - COMPAT_CLOSE(*sock); continue; } } @@ -446,7 +443,6 @@ int _mosquitto_try_connect(struct mosquitto *mosq, const char *host, uint16_t po if(blocking){ /* Set non-blocking */ if(_mosquitto_socket_nonblock(*sock)){ - COMPAT_CLOSE(*sock); continue; } } @@ -1250,7 +1246,6 @@ int _mosquitto_socketpair(mosq_sock_t *pairR, mosq_sock_t *pairW) continue; } if(_mosquitto_socket_nonblock(spR)){ - COMPAT_CLOSE(spR); COMPAT_CLOSE(listensock); continue; } @@ -1278,7 +1273,6 @@ int _mosquitto_socketpair(mosq_sock_t *pairR, mosq_sock_t *pairW) if(_mosquitto_socket_nonblock(spW)){ COMPAT_CLOSE(spR); - COMPAT_CLOSE(spW); COMPAT_CLOSE(listensock); continue; } @@ -1296,13 +1290,11 @@ int _mosquitto_socketpair(mosq_sock_t *pairR, mosq_sock_t *pairW) return MOSQ_ERR_ERRNO; } if(_mosquitto_socket_nonblock(sv[0])){ - COMPAT_CLOSE(sv[0]); COMPAT_CLOSE(sv[1]); return MOSQ_ERR_ERRNO; } if(_mosquitto_socket_nonblock(sv[1])){ COMPAT_CLOSE(sv[0]); - COMPAT_CLOSE(sv[1]); return MOSQ_ERR_ERRNO; } *pairR = sv[0];