r125 - /debtorrent/trunk/DebTorrent/RawServer.py

camrdale-guest at users.alioth.debian.org camrdale-guest at users.alioth.debian.org
Sun Jun 24 00:32:57 UTC 2007


Author: camrdale-guest
Date: Sun Jun 24 00:32:57 2007
New Revision: 125

URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=125
Log:
Improved the SIGINT handling so the program can be reliably stopped.

Modified:
    debtorrent/trunk/DebTorrent/RawServer.py

Modified: debtorrent/trunk/DebTorrent/RawServer.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/RawServer.py?rev=125&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/RawServer.py (original)
+++ debtorrent/trunk/DebTorrent/RawServer.py Sun Jun 24 00:32:57 2007
@@ -20,6 +20,7 @@
 from threading import Thread, Event
 from time import sleep
 from clock import clock
+from signal import signal, SIGINT
 import sys
 try:
     True
@@ -302,6 +303,20 @@
             self._add_task(a, b, c)
 
 
+    def sighandler(self, signalnum, frame):
+        """Properly handle a SIGINT.
+        
+        @type signalnum: C{int}
+        @param signalnum: the signal that was received
+        @type frame: C{frame}
+        @param frame: the current stack frame (not used)
+        
+        """
+        
+        if self.noisy:
+            print "Received signal:", signalnum
+        raise KeyboardInterrupt
+
     def listen_forever(self, handler):
         """Start the server listening on sockets and processing tasks.
         
@@ -311,6 +326,7 @@
         """
         
         self.sockethandler.set_handler(handler)
+        signal(SIGINT, self.sighandler)
         try:
             while not self.doneflag.isSet():
                 try:




More information about the Debtorrent-commits mailing list