diff options
author | Mike Kazantsev <mk.fraggod@gmail.com> | 2013-02-11 13:56:04 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2013-02-11 13:56:04 +0100 |
commit | 4da4e9b8a8260a55f734fefcf80ce64fc6dbdfc5 (patch) | |
tree | b59d789b1dc8c28717825cdf2fe14a6d4ea7155f | |
parent | 5a4f22e15ec95696b02d9592fdd1b24adae9674e (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.py | 10 |
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() |