tfix #1554: use AF_INET instead of AF_UNIX, and write port number to lockfile - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit b727824eedd7324133e18f698cf7babc156fd801
 (DIR) parent 34c2010e63ec35f88854bf655edebda22adc95b1
 (HTM) Author: ThomasV <thomasv@electrum.org>
       Date:   Thu, 19 Nov 2015 12:42:11 +0100
       
       fix #1554: use AF_INET instead of AF_UNIX, and write port number to lockfile
       
       Diffstat:
         M electrum                            |      25 ++++++++++---------------
       
       1 file changed, 10 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/electrum b/electrum
       t@@ -30,7 +30,6 @@ import socket
        import Queue
        from collections import defaultdict
        
       -DAEMON_SOCKET = 'daemon.sock'
        
        script_dir = os.path.dirname(os.path.realpath(__file__))
        is_bundle = getattr(sys, 'frozen', False)
       t@@ -350,13 +349,11 @@ class NetworkServer(util.DaemonThread):
                    print_error("client quit:", len(self.clients))
        
            def run(self):
       -        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
       -        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
       -        daemon_socket = os.path.join(self.config.path, DAEMON_SOCKET)
       -        if os.path.exists(daemon_socket):
       -            os.remove(daemon_socket)
       -        daemon_timeout = self.config.get('daemon_timeout', None)
       -        s.bind(daemon_socket)
       +        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
       +        s.bind(('', 0))
       +        lockfile = os.path.join(self.config.path, 'lock')
       +        with open(lockfile, 'w') as f:
       +            f.write("%d"%s.getsockname()[1])
                s.listen(5)
                s.settimeout(0.1)
                while self.is_running():
       t@@ -370,19 +367,17 @@ class NetworkServer(util.DaemonThread):
        
        
        def get_daemon(config):
       -    daemon_socket = os.path.join(config.path, DAEMON_SOCKET)
       +    lockfile = os.path.join(config.path, 'lock')
            try:
       -        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
       -        s.connect(daemon_socket)
       +        with open(lockfile) as f:
       +            num = int(f.read())
       +        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
       +        s.connect(('', num))
                return s
       -    except socket.error:
       -        return False
            except:
       -        # do not use daemon if AF_UNIX is not available (windows)
                return False
        
        
       -
        if __name__ == '__main__':
        
            # make sure that certificates are here