Harald Welte has submitted this change and it was merged.

Change subject: socket.c: osmo_sock_init: Several logic fixes and log 
improvements
......................................................................


socket.c: osmo_sock_init: Several logic fixes and log improvements

See explanations in previous commit.

Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2
---
M src/socket.c
1 file changed, 16 insertions(+), 8 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/socket.c b/src/socket.c
index 0e0aa24..d96f664 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -339,8 +339,10 @@
 
                if (flags & OSMO_SOCK_F_CONNECT) {
                        rc = connect(sfd, rp->ai_addr, rp->ai_addrlen);
-                       if (rc != -1 || (rc == -1 && errno == EINPROGRESS))
-                               break;
+                       if (rc != 0 && errno != EINPROGRESS) {
+                               close(sfd);
+                               continue;
+                       }
                } else {
                        rc = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR,
                                                        &on, sizeof(on));
@@ -349,18 +351,24 @@
                                        "cannot setsockopt socket:"
                                        " %s:%u: %s\n",
                                        host, port, strerror(errno));
-                               break;
+                               close(sfd);
+                               continue;
                        }
-                       if (bind(sfd, rp->ai_addr, rp->ai_addrlen) != -1)
-                               break;
+                       if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == -1) {
+                               LOGP(DLGLOBAL, LOGL_ERROR, "unable to bind 
socket:"
+                                       "%s:%u: %s\n",
+                                       host, port, strerror(errno));
+                               close(sfd);
+                               continue;
+                       }
                }
-               close(sfd);
+               break;
        }
        freeaddrinfo(result);
 
        if (rp == NULL) {
-               LOGP(DLGLOBAL, LOGL_ERROR, "unable to connect/bind socket: 
%s:%u: %s\n",
-                       host, port, strerror(errno));
+               LOGP(DLGLOBAL, LOGL_ERROR, "no suitable addr found for: 
%s:%u\n",
+                       host, port);
                return -ENODEV;
        }
 

-- 
To view, visit https://gerrit.osmocom.org/7649
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I4889e777d8627fdfb52c97ab3ab353b6ed34aab2
Gerrit-PatchSet: 2
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pes...@sysmocom.de>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder

Reply via email to