diff -Nru librpcsecgss-0.17/debian/changelog librpcsecgss-0.17/debian/changelog --- librpcsecgss-0.17/debian/changelog 2008-04-09 13:33:07.000000000 -0700 +++ librpcsecgss-0.17/debian/changelog 2008-04-09 13:33:08.000000000 -0700 @@ -1,3 +1,9 @@ +librpcsecgss (0.17-1ubuntu2) hardy; urgency=low + + * Add patch to retry connect() when interrupted by signal (LP: #214770) + + -- Andrew Pollock Wed, 09 Apr 2008 13:29:54 -0700 + librpcsecgss (0.17-1ubuntu1) hardy; urgency=low * Merge from debian unstable, remaining changes: diff -Nru /tmp/CCgTBD9cbb/librpcsecgss-0.17/debian/patches/01-eintr.patch /tmp/tROab5j6qz/librpcsecgss-0.17/debian/patches/01-eintr.patch --- librpcsecgss-0.17/debian/patches/01-eintr.patch 1969-12-31 16:00:00.000000000 -0800 +++ librpcsecgss-0.17/debian/patches/01-eintr.patch 2008-04-09 13:33:08.000000000 -0700 @@ -0,0 +1,72 @@ +diff -Nur -x '*.orig' -x '*~' librpcsecgss-0.17/src/clnt_tcp.c librpcsecgss-0.17.new/src/clnt_tcp.c +--- librpcsecgss-0.17/src/clnt_tcp.c 2006-06-08 08:16:35.000000000 -0700 ++++ librpcsecgss-0.17.new/src/clnt_tcp.c 2008-04-09 13:29:07.000000000 -0700 +@@ -60,6 +60,7 @@ + #include + #include + #include ++#include + + #define MCALL_MSG_SIZE 24 + +@@ -156,14 +157,57 @@ + if (*sockp < 0) { + *sockp = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + (void)bindresvport(*sockp, (struct sockaddr_in *)0); +- if ((*sockp < 0) +- || (connect(*sockp, (struct sockaddr *)raddr, +- sizeof(*raddr)) < 0)) { ++ if (*sockp < 0) { + rpc_createerr.cf_stat = RPC_SYSTEMERROR; + rpc_createerr.cf_error.re_errno = errno; + if (*sockp != -1) + (void)close(*sockp); + goto fooy; ++ } else if(connect(*sockp, (struct sockaddr *)raddr, ++ sizeof(*raddr)) < 0) { ++ struct pollfd sockpoll; ++ int sockoptval; ++ socklen_t socklen; ++ ++ /* ++ * Check to see if there was an interrupt and if so, poll until ++ * either an error occurs or the connect finishes. ++ */ ++ if ( errno != EINTR ) { ++ rpc_createerr.cf_stat = RPC_SYSTEMERROR; ++ rpc_createerr.cf_error.re_errno = errno; ++ if (*sockp != -1) ++ (void)close(*sockp); ++ goto fooy; ++ } ++ sockpoll.fd = *sockp; ++ sockpoll.events = POLLOUT; ++ while ( poll (&sockpoll, 1, -1) == -1 ) { ++ if ( errno != EINTR ) { ++ rpc_createerr.cf_stat = RPC_SYSTEMERROR; ++ rpc_createerr.cf_error.re_errno = errno; ++ if (*sockp != -1) ++ (void)close(*sockp); ++ goto fooy; ++ } ++ socklen = sizeof(sockoptval); ++ if ( getsockopt (*sockp, SOL_SOCKET, SO_ERROR, ++ &sockoptval, ++ &socklen) == -1 ) { ++ rpc_createerr.cf_stat = RPC_SYSTEMERROR; ++ rpc_createerr.cf_error.re_errno = errno; ++ if (*sockp != -1) ++ (void)close(*sockp); ++ goto fooy; ++ } ++ if ( sockoptval != 0 ) { ++ rpc_createerr.cf_stat = RPC_SYSTEMERROR; ++ rpc_createerr.cf_error.re_errno = sockoptval; ++ if (*sockp != -1) ++ (void)close(*sockp); ++ goto fooy; ++ } ++ } + } + ct->ct_closeit = TRUE; + } else { diff -Nru /tmp/CCgTBD9cbb/librpcsecgss-0.17/debian/rules /tmp/tROab5j6qz/librpcsecgss-0.17/debian/rules --- librpcsecgss-0.17/debian/rules 2007-10-16 11:17:04.000000000 -0700 +++ librpcsecgss-0.17/debian/rules 2008-04-09 13:33:08.000000000 -0700 @@ -2,3 +2,4 @@ include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/autotools.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk