summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2010-12-16 22:21:50 -0500
committerLance Stout <lancestout@gmail.com>2010-12-16 22:21:50 -0500
commit0aee445e6976b03f7e04bcab6ec40ecf14b5d1a4 (patch)
tree28c5114ddde64af67a16e041f60edb61e4920fb0 /sleekxmpp/xmlstream
parentcbc42c29fb02a6fd22a0c303e8d02364545c86cf (diff)
downloadslixmpp-0aee445e6976b03f7e04bcab6ec40ecf14b5d1a4.tar.gz
slixmpp-0aee445e6976b03f7e04bcab6ec40ecf14b5d1a4.tar.bz2
slixmpp-0aee445e6976b03f7e04bcab6ec40ecf14b5d1a4.tar.xz
slixmpp-0aee445e6976b03f7e04bcab6ec40ecf14b5d1a4.zip
Use daemon threads instead of signals.
Daemonized threads exit once the main program has quit, and the only threads left running are all daemon threads. Should fix hanging clients while not trampling over anyone else's signal handlers.
Diffstat (limited to 'sleekxmpp/xmlstream')
-rw-r--r--sleekxmpp/xmlstream/xmlstream.py20
1 files changed, 1 insertions, 19 deletions
diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py
index 9e91b5d8..2317f04c 100644
--- a/sleekxmpp/xmlstream/xmlstream.py
+++ b/sleekxmpp/xmlstream/xmlstream.py
@@ -16,7 +16,6 @@ import sys
import threading
import time
import types
-import signal
try:
import queue
except ImportError:
@@ -209,24 +208,6 @@ class XMLStream(object):
self.auto_reconnect = True
self.is_client = False
- try:
- if hasattr(signal, 'SIGHUP'):
- signal.signal(signal.SIGHUP, self._handle_kill)
- if hasattr(signal, 'SIGTERM'):
- # Used in Windows
- signal.signal(signal.SIGTERM, self._handle_kill)
- except:
- log.debug("Can not set interrupt signal handlers. " + \
- "SleekXMPP is not running from a main thread.")
-
- def _handle_kill(self, signum, frame):
- """
- Capture kill event and disconnect cleanly after first
- spawning the "killed" event.
- """
- self.event("killed", direct=True)
- self.disconnect()
-
def new_id(self):
"""
Generate and return a new stream ID in hexadecimal form.
@@ -705,6 +686,7 @@ class XMLStream(object):
def start_thread(name, target):
self.__thread[name] = threading.Thread(name=name, target=target)
+ self.__thread[name].daemon = True
self.__thread[name].start()
for t in range(0, HANDLER_THREADS):