aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kazantsev <mk.fraggod@gmail.com>2013-02-11 13:56:04 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-02-11 13:56:04 +0100
commit4da4e9b8a8260a55f734fefcf80ce64fc6dbdfc5 (patch)
treeb59d789b1dc8c28717825cdf2fe14a6d4ea7155f
parent5a4f22e15ec95696b02d9592fdd1b24adae9674e (diff)
skype: handle socket errors during tls session negotiation in a graceful way
Before this patch, such errors (which happen 1/4 times here) lock skyped forever, producing traceback (and hanging because threads in python). Proper fix would be to see why these happen (might be ssl handling in the plugin), but that's no excuse not to handle socket errors without crashing the daemon.
-rw-r--r--protocols/skype/skyped.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/protocols/skype/skyped.py b/protocols/skype/skyped.py
index 68008fbf..ae4df6a2 100644
--- a/protocols/skype/skyped.py
+++ b/protocols/skype/skyped.py
@@ -201,9 +201,13 @@ def listener(sock, skype):
certfile=options.config.sslcert,
keyfile=options.config.sslkey,
ssl_version=ssl.PROTOCOL_TLSv1)
- except ssl.SSLError:
- dprint("Warning, SSL init failed, did you create your certificate?")
- return False
+ except (ssl.SSLError, socket.error) as err:
+ if isinstance(err, ssl.SSLError):
+ dprint("Warning, SSL init failed, did you create your certificate?")
+ return False
+ else:
+ dprint('Warning, SSL init failed')
+ return True
if hasattr(options.conn, 'handshake'):
try:
options.conn.handshake()