From 9ce44dd377c6a07f6bed78dcbfe83b5b00e15b6d Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sun, 22 Apr 2012 23:48:09 +0200 Subject: skyped: set FD_CLOEXEC on listening socket MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skype4Py uses os.execlp() to spawn skype if it is not yet started, this leaks our listening FD to skype process and can't get it back even if we ourself exit meanwhile. and we can't startup again: error: [Errno 98] Address already in use Patch-by: Elan Ruusamäe --- protocols/skype/skyped.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'protocols/skype/skyped.py') diff --git a/protocols/skype/skyped.py b/protocols/skype/skyped.py index 3b6499c1..07c08435 100644 --- a/protocols/skype/skyped.py +++ b/protocols/skype/skyped.py @@ -31,6 +31,7 @@ import Skype4Py import hashlib from ConfigParser import ConfigParser, NoOptionError from traceback import print_exception +from fcntl import fcntl, F_SETFD, FD_CLOEXEC import ssl __version__ = "0.1.1" @@ -184,8 +185,10 @@ def server(host, port, skype = None): else: sock = socket.socket() sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + fcntl(sock, F_SETFD, FD_CLOEXEC); sock.bind((host, port)) sock.listen(1) + if hasgobject: gobject.io_add_watch(sock, gobject.IO_IN, listener) else: -- cgit v1.2.3