[Pcsclite-cvs-commit] r5692 - /trunk/PCSC/src/pcscdaemon.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Tue Apr 5 08:11:23 UTC 2011


Author: rousseau
Date: Tue Apr  5 08:11:13 2011
New Revision: 5692

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5692
Log:
signal_trap(): exit immediatly in case of SIGTERM

Closes Debian bug #620305 "pcscd slows down sutdown/restart"

Modified:
    trunk/PCSC/src/pcscdaemon.c

Modified: trunk/PCSC/src/pcscdaemon.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/pcscdaemon.c?rev=5692&op=diff
==============================================================================
--- trunk/PCSC/src/pcscdaemon.c (original)
+++ trunk/PCSC/src/pcscdaemon.c Tue Apr  5 08:11:13 2011
@@ -459,8 +459,8 @@
 	 * signal_trap() does just set a global variable used by the main loop
 	 */
 	(void)signal(SIGQUIT, signal_trap);
-	(void)signal(SIGTERM, signal_trap);
-	(void)signal(SIGINT, signal_trap);
+	(void)signal(SIGTERM, signal_trap); /* default kill signal & init round 1 */
+	(void)signal(SIGINT, signal_trap);	/* sent by Ctrl-C */
 
 	/* exits on SIGALARM to allow pcscd to suicide if not used */
 	(void)signal(SIGALRM, signal_trap);
@@ -674,6 +674,14 @@
 static void signal_trap(int sig)
 {
 	Log2(PCSC_LOG_INFO, "Received signal: %d", sig);
+
+	/* do not wait if asked to terminate
+	 * avoids waiting after the reader(s) in shutdown for example */
+	if (SIGTERM == sig)
+	{
+		Log1(PCSC_LOG_INFO, "Direct suicide");
+		at_exit();
+	}
 
 	/* the signal handler is called several times for the same Ctrl-C */
 	if (AraKiri == FALSE)




More information about the Pcsclite-cvs-commit mailing list