summarylogtreecommitdiffstats
path: root/02_xdmcp-ipv6_bindv6only.patch
blob: b6278c9c32e2d16139d3d0923ecbe067028e4b3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Debian #563406

Index: gdm-2.20.10/daemon/gdm-xdmcp-manager.c
===================================================================
--- gdm-2.20.10.orig/daemon/gdm-xdmcp-manager.c	2010-02-28 13:57:47.685002928 +0100
+++ gdm-2.20.10/daemon/gdm-xdmcp-manager.c	2010-02-28 14:01:54.697504018 +0100
@@ -398,6 +398,7 @@ static int
 create_socket (struct addrinfo *ai)
 {
 	int sock;
+	int zero = 0;
 
 	sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol);
 	if (sock < 0) {
@@ -405,6 +406,14 @@ create_socket (struct addrinfo *ai)
 		return sock;
 	}
 
+	if (ai->ai_family == AF_INET6) {
+		if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof zero) < 0) {
+			gdm_error("setsockopt(IPV6_V6ONLY): %s\n", g_strerror(errno));
+			close(sock);
+			return -1;
+		}
+	}
+
 	if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) {
 		gdm_error ("bind: %s", g_strerror (errno));
 		close (sock);