diff -u portmap-6.0.0/debian/changelog portmap-6.0.0/debian/changelog --- portmap-6.0.0/debian/changelog +++ portmap-6.0.0/debian/changelog @@ -1,3 +1,11 @@ +portmap (6.0.0-1ubuntu2.1) lucid-proposed; urgency=low + + * Fix portmap to reuse socket during a package upgrade + and a restart when there is an active portmap connection + established. (LP: #688550) + + -- Adam Stokes Thu, 18 Oct 2012 13:11:26 -0400 + portmap (6.0.0-1ubuntu2) lucid; urgency=low * portmap should start on virtual-filesystems, not local-filesystems, since diff -u portmap-6.0.0/debian/patches/series portmap-6.0.0/debian/patches/series --- portmap-6.0.0/debian/patches/series +++ portmap-6.0.0/debian/patches/series @@ -5,0 +6 @@ +05-free-socket-on-restart.diff only in patch2: unchanged: --- portmap-6.0.0.orig/debian/patches/05-free-socket-on-restart.diff +++ portmap-6.0.0/debian/patches/05-free-socket-on-restart.diff @@ -0,0 +1,36 @@ +--- a/portmap.c ++++ b/portmap.c +@@ -142,9 +142,9 @@ + * loopback interface address. + */ + ++static int on = 1; + #ifdef LOOPBACK_SETUNSET + static SVCXPRT *ludpxprt, *ltcpxprt; +-static int on = 1; + #ifndef INADDR_LOOPBACK + #define INADDR_LOOPBACK ntohl(inet_addr("127.0.0.1")) + #endif +@@ -399,9 +399,8 @@ + syslog(LOG_ERR, "cannot create udp socket: %m"); + exit(1); + } +-#ifdef LOOPBACK_SETUNSET ++ + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof on); +-#endif + + memset((char *) &addr, 0, sizeof(addr)); + addr.sin_addr.s_addr = 0; +@@ -434,9 +433,9 @@ + syslog(LOG_ERR, "cannot create tcp socket: %m"); + exit(1); + } +-#ifdef LOOPBACK_SETUNSET ++ + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof on); +-#endif ++ + if (bind(sock, (struct sockaddr *)&addr, len) != 0) { + syslog(LOG_ERR, "cannot bind tcp: %m"); + exit(1);