summaryrefslogtreecommitdiffstats
path: root/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c')
-rw-r--r--x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c b/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c
new file mode 100644
index 000000000..ede7f2c2f
--- /dev/null
+++ b/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c
@@ -0,0 +1,48 @@
+--- daemon/gdm-xdmcp-display-factory.c.orig 2009-12-21 17:36:30.000000000 +0100
++++ daemon/gdm-xdmcp-display-factory.c 2009-12-26 23:26:24.000000000 +0100
+@@ -35,6 +35,7 @@
+ #include <netdb.h>
+ #include <arpa/inet.h>
+ #include <net/if.h>
++#include <netinet/in.h>
+ #ifdef HAVE_SYS_SOCKIO_H
+ #include <sys/sockio.h>
+ #endif
+@@ -76,7 +77,7 @@
+ #define DEFAULT_USE_MULTICAST FALSE
+ #define DEFAULT_MULTICAST_ADDRESS "ff02::1"
+ #define DEFAULT_HONOR_INDIRECT TRUE
+-#define DEFAULT_MAX_DISPLAYS_PER_HOST 1
++#define DEFAULT_MAX_DISPLAYS_PER_HOST 2
+ #define DEFAULT_MAX_DISPLAYS 16
+ #define DEFAULT_MAX_PENDING_DISPLAYS 4
+ #define DEFAULT_MAX_WAIT 30
+@@ -404,6 +405,11 @@
+ create_socket (struct addrinfo *ai)
+ {
+ int sock;
++#ifdef ENABLE_IPV6
++#ifdef IPV6_V6ONLY
++ int off = 0;
++#endif
++#endif
+
+ sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+ if (sock < 0) {
+@@ -411,6 +417,16 @@
+ return sock;
+ }
+
++#ifdef ENABLE_IPV6
++#ifdef IPV6_V6ONLY
++ if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&off, sizeof (off)) < 0) {
++ g_warning ("setsockopt: %s", g_strerror (errno));
++ close (sock);
++ return -1;
++ }
++#endif
++#endif
++
+ if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) {
+ g_warning ("bind: %s", g_strerror (errno));
+ close (sock);