Hello community,

here is the log from the commit of package xinetd for openSUSE:Factory checked 
in at 2011-11-18 15:48:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xinetd (Old)
 and      /work/SRC/openSUSE:Factory/.xinetd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xinetd", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xinetd/xinetd.changes    2011-09-23 
12:51:41.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xinetd.new/xinetd.changes       2011-11-18 
15:48:23.000000000 +0100
@@ -1,0 +2,6 @@
+Thu Nov 17 20:13:51 UTC 2011 - [email protected]
+
+- added xinetd-2.3.14-nodeadlock-revisited.patch: ignore SIGCONT
+  and avoid print in signal handler (bnc#726737)
+
+-------------------------------------------------------------------

New:
----
  xinetd-2.3.14-nodeadlock-revisited.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xinetd.spec ++++++
--- /var/tmp/diff_new_pack.4LXiYp/_old  2011-11-18 15:48:27.000000000 +0100
+++ /var/tmp/diff_new_pack.4LXiYp/_new  2011-11-18 15:48:27.000000000 +0100
@@ -1,7 +1,7 @@
 #
-# spec file for package xinetd (Version 2.3.14)
+# spec file for package xinetd
 #
-# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -45,6 +45,7 @@
 Patch9:         %{name}-%{version}-ipv6-ipv4-fallback.patch
 Patch10:        %{name}-%{version}-honour_disable.patch
 Patch11:        %{name}-%{version}-ident-bind.patch
+Patch12:        %{name}-%{version}-nodeadlock-revisited.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -78,6 +79,7 @@
 %patch9
 %patch10
 %patch11 -p1
+%patch12 -p1
 
 %build
 %{suse_update_config}

++++++ xinetd-2.3.14-ident-bind.patch ++++++
--- /var/tmp/diff_new_pack.4LXiYp/_old  2011-11-18 15:48:27.000000000 +0100
+++ /var/tmp/diff_new_pack.4LXiYp/_new  2011-11-18 15:48:27.000000000 +0100
@@ -7,10 +7,11 @@
 Author: Jan Safranek <[email protected]>
 Reviewed-By: Adam Tkac <[email protected]>
 
-diff -up xinetd-2.3.14/xinetd/ident.c.orig xinetd-2.3.14/xinetd/ident.c
---- xinetd-2.3.14/xinetd/ident.c.orig  2008-05-29 16:30:19.000000000 +0200
-+++ xinetd-2.3.14/xinetd/ident.c       2008-05-29 16:29:57.000000000 +0200
-@@ -97,7 +98,13 @@ idresult_e log_remote_user( const struct
+Index: xinetd-2.3.14/xinetd/ident.c
+===================================================================
+--- xinetd-2.3.14.orig/xinetd/ident.c
++++ xinetd-2.3.14/xinetd/ident.c
+@@ -97,7 +97,13 @@ idresult_e log_remote_user( const struct
     }
  
     CLEAR( sin_contact );
@@ -25,13 +26,13 @@
     sin_contact = sin_remote;
     memcpy( &sin_bind, &sin_local, sizeof(sin_bind) ) ;
     local_port = 0;
-@@ -121,7 +128,13 @@ idresult_e log_remote_user( const struct
+@@ -127,7 +133,13 @@ idresult_e log_remote_user( const struct
        msg( LOG_ERR, func, "socket creation: %m" ) ;
        return( IDR_ERROR ) ;
     }
 -   if ( bind(sd, &sin_bind.sa, sizeof(sin_bind.sa)) == -1 )
 +
-+   if ( sin_bind.sa.sa_family == AF_INET ) 
++   if ( sin_bind.sa.sa_family == AF_INET )
 +      sin_len = sizeof( sin_bind.sa_in ) ;
 +   else
 +      sin_len = sizeof( sin_bind.sa_in6 ) ;

++++++ xinetd-2.3.14-nodeadlock-revisited.patch ++++++
From: Leonardo Chiquitto <[email protected]>
Subject: Prevent dead locks in the signal handler
References: bnc#726737

A signal can interrupt xinetd when it's printing / logging.

Currently, the generic signal handler tries to print something as
well (the "Unexpected signal" message), but to do that it needs a
lock that xinetd already holds, deadlocking.

We really can't print anything in the signal handler if the process
is supposed to continue running.

This patch is not perfect but it avoids the most common cases by
no longer catching SIGCONT and no longer printing the "Unexpected
signal" message in the generic signal handler.

---
 xinetd/signals.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Index: xinetd-2.3.14/xinetd/signals.c
===================================================================
--- xinetd-2.3.14.orig/xinetd/signals.c
+++ xinetd-2.3.14/xinetd/signals.c
@@ -186,6 +186,8 @@ static status_e handle_signal( int sig )
             return( OK ) ;
          /* FALL THROUGH */
           
+      case SIGCONT:
+         /* FALL THROUGH */
       /*
        * We may receive a SIGPIPE when handling an internal stream 
        * service and the other end closes the connection.
@@ -395,7 +397,11 @@ static void general_handler( int sig )
          break ;
       
       default:
-         msg( LOG_NOTICE, func, "Unexpected signal %s", sig_name( sig ) ) ;
+         /* This will cause a dead lock if the signal happens when the
+          * daemon is writing / logging something. The message is not
+          * important, so comment it out.
+          */
+         // msg( LOG_NOTICE, func, "Unexpected signal %s", sig_name( sig ) ) ;
          if ( debug.on && sig == SIGINT )
             exit( 1 ) ;
    }
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to