diff options
author | Lance Stout <lancestout@gmail.com> | 2010-12-16 22:21:50 -0500 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2010-12-16 22:21:50 -0500 |
commit | 0aee445e6976b03f7e04bcab6ec40ecf14b5d1a4 (patch) | |
tree | 28c5114ddde64af67a16e041f60edb61e4920fb0 /sleekxmpp/xmlstream/xmlstream.py | |
parent | cbc42c29fb02a6fd22a0c303e8d02364545c86cf (diff) | |
download | slixmpp-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/xmlstream.py')
-rw-r--r-- | sleekxmpp/xmlstream/xmlstream.py | 20 |
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): |