Change in ...libosmocore[master]: socket.c: Move glibc workarounds to same place in addrinfo_helper()

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/.

pespin gerrit-no-reply at lists.osmocom.org
Thu Oct 10 15:54:01 UTC 2019


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/15758


Change subject: socket.c: Move glibc workarounds to same place in addrinfo_helper()
......................................................................

socket.c: Move glibc workarounds to same place in addrinfo_helper()

Change-Id: Ifc3a30881f865f88bcfc1307a3c89c1ab79eecd4
---
M src/socket.c
1 file changed, 10 insertions(+), 19 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/58/15758/1

diff --git a/src/socket.c b/src/socket.c
index c50af55..ef3bb58 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -56,7 +56,7 @@
 static struct addrinfo *addrinfo_helper(uint16_t family, uint16_t type, uint8_t proto,
 					const char *host, uint16_t port, bool passive)
 {
-	struct addrinfo hints, *result;
+	struct addrinfo hints, *result, *rp;
 	char portbuf[6];
 	int rc;
 
@@ -66,6 +66,7 @@
 	if (type == SOCK_RAW) {
 		/* Workaround for glibc, that returns EAI_SERVICE (-8) if
 		 * SOCK_RAW and IPPROTO_GRE is used.
+		 * http://sourceware.org/bugzilla/show_bug.cgi?id=15015
 		 */
 		hints.ai_socktype = SOCK_DGRAM;
 		hints.ai_protocol = IPPROTO_UDP;
@@ -84,6 +85,14 @@
 		return NULL;
 	}
 
+	for (rp = result; rp != NULL; rp = rp->ai_next) {
+		/* Workaround for glibc again */
+		if (type == SOCK_RAW) {
+			rp->ai_socktype = SOCK_RAW;
+			rp->ai_protocol = proto;
+		}
+	}
+
 	return result;
 }
 
@@ -199,12 +208,6 @@
 			return -EINVAL;
 
 		for (rp = result; rp != NULL; rp = rp->ai_next) {
-			/* Workaround for glibc again */
-			if (type == SOCK_RAW) {
-				rp->ai_socktype = SOCK_RAW;
-				rp->ai_protocol = proto;
-			}
-
 			sfd = socket_helper(rp, flags);
 			if (sfd < 0)
 				continue;
@@ -253,12 +256,6 @@
 		}
 
 		for (rp = result; rp != NULL; rp = rp->ai_next) {
-			/* Workaround for glibc again */
-			if (type == SOCK_RAW) {
-				rp->ai_socktype = SOCK_RAW;
-				rp->ai_protocol = proto;
-			}
-
 			if (sfd < 0) {
 				sfd = socket_helper(rp, flags);
 				if (sfd < 0)
@@ -332,12 +329,6 @@
 	}
 
 	for (rp = result; rp != NULL; rp = rp->ai_next) {
-		/* Workaround for glibc again */
-		if (type == SOCK_RAW) {
-			rp->ai_socktype = SOCK_RAW;
-			rp->ai_protocol = proto;
-		}
-
 		sfd = socket_helper(rp, flags);
 		if (sfd == -1)
 			continue;

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/15758
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ifc3a30881f865f88bcfc1307a3c89c1ab79eecd4
Gerrit-Change-Number: 15758
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191010/6c4f4e98/attachment.htm>


More information about the gerrit-log mailing list