diff --git a/libxcb-1.4-keepalive.patch b/libxcb-1.4-keepalive.patch new file mode 100644 index 0000000..3f81bfa --- /dev/null +++ b/libxcb-1.4-keepalive.patch @@ -0,0 +1,28 @@ +From 1cf2a87def76f4646fe05e282b45605d572f2513 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 2 Dec 2009 14:31:56 -0500 +Subject: [PATCH] setsockopt(SO_KEEPALIVE) on TCP display connections. + +This matches xtrans behaviour in SocketINETConnect, and makes it so apps +don't hang forever if their display dies. + +Signed-off-by: Adam Jackson +--- + src/xcb_util.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/src/xcb_util.c b/src/xcb_util.c +index 55aadb7..c3cbfa6 100644 +--- a/src/xcb_util.c ++++ b/src/xcb_util.c +@@ -260,6 +260,7 @@ static int _xcb_open_tcp(char *host, char *protocol, const unsigned short port) + if(fd >= 0) { + int on = 1; + setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); ++ setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)); + + if (connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0) + break; +-- +1.6.5.2 + diff --git a/libxcb.spec b/libxcb.spec index 0b65eb9..1ece889 100644 --- a/libxcb.spec +++ b/libxcb.spec @@ -7,7 +7,7 @@ Name: libxcb Version: 1.4 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A C binding to the X11 protocol Group: System Environment/Libraries @@ -22,6 +22,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source1: pthread-stubs.pc.in Source2: http://xcb.freedesktop.org/dist/xpyb-%{xpyb_version}.tar.bz2 +Patch1: libxcb-1.4-keepalive.patch + BuildRequires: autoconf automake libtool pkgconfig BuildRequires: doxygen BuildRequires: graphviz @@ -70,6 +72,7 @@ Python bindings for %{name}. %prep %setup -q -b2 +%patch1 -p1 -b .keepalive %if !0%{?bootstrap} pushd ../xpyb-%{xpyb_version} @@ -155,6 +158,9 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Wed Dec 02 2009 Adam Jackson 1.4-2 +- libxcb-1.4-keepalive.patch: setsockopt(SO_KEEPALIVE) for TCP (#476415) + * Thu Aug 27 2009 Adam Jackson 1.4-1 - libxcb 1.4 (#518597)