Changeset 9446

Show
Ignore:
Timestamp:
04/06/08 23:33:40 (8 months ago)
Author:
asterix
Message:

use getaddrinfo to know if we should use ipv4 or v6 for zeroconf

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/common/zeroconf/client_zeroconf.py

    r9443 r9446  
    6060 
    6161        def bind(self): 
    62                 try: 
    63                         self._serv = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) 
    64                 except socket.error: 
    65                         self._serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     62                ai = socket.getaddrinfo(None, self.port, socket.AF_UNSPEC, 
     63                        socket.SOCK_STREAM, 0, socket.AI_PASSIVE | socket.AI_ADDRCONFIG)[0] 
     64                self._serv = socket.socket(ai[0], ai[1]) 
    6665                self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    6766                self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) 
     
    6968                # will fail when port is busy, or we don't have rights to bind 
    7069                try: 
    71                         self._serv.bind(('', self.port)) 
     70                        self._serv.bind((ai[4][0], self.port)) 
    7271                except Exception, e: 
    7372                        # unable to bind, show error dialog