Author: pierre
Date: Thu Jan 19 13:53:05 2017
New Revision: 3495

Log:
Patch for MIT Kerberos, to fix starting daemons on IPv4 only hosts

Added:
   trunk/mitkrb/mitkrb-1.15-fix_ipv4_only-1.patch

Added: trunk/mitkrb/mitkrb-1.15-fix_ipv4_only-1.patch
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ trunk/mitkrb/mitkrb-1.15-fix_ipv4_only-1.patch      Thu Jan 19 13:53:05 
2017        (r3495)
@@ -0,0 +1,52 @@
+Submitted By: Pierre Labastie <pierre dot labastie at neuf dot fr>
+Date: 2017-01-20
+Initial Package Version: 1.15
+Upstream Status: Fixed in master
+Origin: Upstream
+Description: Fix starting daemons when the host is IPv4 only
+See http://krbdev.mit.edu/rt/Ticket/display.html?id=8531
+
+diff --git a/src/lib/apputils/net-server.c b/src/lib/apputils/net-server.c
+index 171ecc404..d64ffddd6 100644
+--- a/src/lib/apputils/net-server.c
++++ b/src/lib/apputils/net-server.c
+@@ -834,7 +834,7 @@ setup_addresses(struct socksetup *data)
+     };
+     krb5_error_code ret = 0;
+     size_t i;
+-    int err;
++    int err, bound_any;
+     struct bind_address addr;
+     struct addrinfo hints, *ai_list = NULL, *ai = NULL;
+     verto_callback vcb;
+@@ -871,8 +871,12 @@ setup_addresses(struct socksetup *data)
+          * Loop through all the sockets that getaddrinfo could find to match
+          * the requested address.  For wildcard listeners, this should usually
+          * have two results, one for each of IPv4 and IPv6, or one or the
+-         * other, depending on the system.
++         * other, depending on the system.  On IPv4-only systems, 
getaddrinfo()
++         * may return both IPv4 and IPv6 addresses, but creating an IPv6 
socket
++         * may give an EAFNOSUPPORT error, so tolerate that error as long as 
we
++         * can bind at least one socket.
+          */
++        bound_any = 0;
+         for (ai = ai_list; ai != NULL; ai = ai->ai_next) {
+             /* Make sure getaddrinfo returned a socket with the same type that
+              * was requested. */
+@@ -889,9 +893,15 @@ setup_addresses(struct socksetup *data)
+                                  _("Failed setting up a %s socket (for %s)"),
+                                  bind_type_names[addr.type],
+                                  paddr(ai->ai_addr));
+-                goto cleanup;
++                if (ret != EAFNOSUPPORT)
++                    goto cleanup;
++            } else {
++                bound_any = 1;
+             }
+         }
++        if (!bound_any)
++            goto cleanup;
++        ret = 0;
+ 
+         if (ai_list != NULL)
+             freeaddrinfo(ai_list);
-- 
http://lists.linuxfromscratch.org/listinfo/patches
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to