aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/skype/skyped.py
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 /protocols/skype/skyped.py
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.
Diffstat (limited to 'protocols/skype/skyped.py')
-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()