This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/23933 ) Change subject: socket: reduce code duplication, introduce socket_helper_tail() ...................................................................... socket: reduce code duplication, introduce socket_helper_tail() Common bits shared by various functions (currently setting non-blocking) should not be copy+pasted around. Change-Id: I95056940ddc26b65f63eedaeaab6882edaef6317 --- M src/socket.c 1 file changed, 39 insertions(+), 40 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/src/socket.c b/src/socket.c index 6b8c34a..b44bbc6 100644 --- a/src/socket.c +++ b/src/socket.c @@ -132,9 +132,26 @@ } #endif /* HAVE_LIBSCTP*/ +static int socket_helper_tail(int sfd, unsigned int flags) +{ + int on = 1; + + if (flags & OSMO_SOCK_F_NONBLOCK) { + if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { + LOGP(DLGLOBAL, LOGL_ERROR, + "cannot set this socket unblocking: %s\n", + strerror(errno)); + close(sfd); + return -EINVAL; + } + } + + return 0; +} + static int socket_helper(const struct addrinfo *rp, unsigned int flags) { - int sfd, on = 1; + int sfd, rc; sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); if (sfd == -1) { @@ -142,21 +159,17 @@ "unable to create socket: %s\n", strerror(errno)); return sfd; } - if (flags & OSMO_SOCK_F_NONBLOCK) { - if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { - LOGP(DLGLOBAL, LOGL_ERROR, - "cannot set this socket unblocking: %s\n", - strerror(errno)); - close(sfd); - sfd = -EINVAL; - } - } + + rc = socket_helper_tail(sfd, flags); + if (rc < 0) + return rc; + return sfd; } static int socket_helper_osa(const struct osmo_sockaddr *addr, uint16_t type, uint8_t proto, unsigned int flags) { - int sfd, on = 1; + int sfd, rc; sfd = socket(addr->u.sa.sa_family, type, proto); if (sfd == -1) { @@ -164,15 +177,11 @@ "unable to create socket: %s\n", strerror(errno)); return sfd; } - if (flags & OSMO_SOCK_F_NONBLOCK) { - if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { - LOGP(DLGLOBAL, LOGL_ERROR, - "cannot set this socket unblocking: %s\n", - strerror(errno)); - close(sfd); - sfd = -EINVAL; - } - } + + rc = socket_helper_tail(sfd, flags); + if (rc < 0) + return rc; + return sfd; } @@ -621,7 +630,7 @@ static int socket_helper_multiaddr(uint16_t family, uint16_t type, uint8_t proto, unsigned int flags) { - int sfd, on = 1; + int sfd, rc; sfd = socket(family, type, proto); if (sfd == -1) { @@ -629,15 +638,11 @@ "Unable to create socket: %s\n", strerror(errno)); return sfd; } - if (flags & OSMO_SOCK_F_NONBLOCK) { - if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { - LOGP(DLGLOBAL, LOGL_ERROR, - "Cannot set this socket unblocking: %s\n", - strerror(errno)); - close(sfd); - sfd = -EINVAL; - } - } + + rc = socket_helper_tail(sfd, flags); + if (rc < 0) + return rc; + return sfd; } @@ -1218,7 +1223,7 @@ const char *socket_path, unsigned int flags) { struct sockaddr_un local; - int sfd, rc, on = 1; + int sfd, rc; unsigned int namelen; if ((flags & (OSMO_SOCK_F_BIND | OSMO_SOCK_F_CONNECT)) == @@ -1258,15 +1263,9 @@ goto err; } - if (flags & OSMO_SOCK_F_NONBLOCK) { - if (ioctl(sfd, FIONBIO, (unsigned char *)&on) < 0) { - LOGP(DLGLOBAL, LOGL_ERROR, - "cannot set this socket unblocking: %s\n", - strerror(errno)); - close(sfd); - return -EINVAL; - } - } + rc = socket_helper_tail(sfd, flags); + if (rc < 0) + return rc; rc = osmo_sock_init_tail(sfd, type, flags); if (rc < 0) { -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/23933 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I95056940ddc26b65f63eedaeaab6882edaef6317 Gerrit-Change-Number: 23933 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge at osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de> Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210428/f8d11ef3/attachment.htm>