/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/smart/server.py

1st cut merge of bzr.dev r3907

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
    trace,
28
28
    transport,
29
29
)
30
 
from bzrlib.smart.medium import SmartServerSocketStreamMedium
 
30
from bzrlib.lazy_import import lazy_import
 
31
lazy_import(globals(), """
 
32
from bzrlib.smart import medium
 
33
""")
31
34
 
32
35
 
33
36
class SmartTCPServer(object):
59
62
        from socket import error as socket_error
60
63
        self._socket_error = socket_error
61
64
        self._socket_timeout = socket_timeout
62
 
        self._server_socket = socket.socket()
 
65
        addrs = socket.getaddrinfo(host, port, socket.AF_UNSPEC, 
 
66
            socket.SOCK_STREAM, 0, socket.AI_PASSIVE)[0]
 
67
 
 
68
        (family, socktype, proto, canonname, sockaddr) = addrs
 
69
 
 
70
        self._server_socket = socket.socket(family, socktype, proto)
63
71
        # SO_REUSERADDR has a different meaning on Windows
64
72
        if sys.platform != 'win32':
65
73
            self._server_socket.setsockopt(socket.SOL_SOCKET,
66
74
                socket.SO_REUSEADDR, 1)
67
75
        try:
68
 
            self._server_socket.bind((host, port))
 
76
            self._server_socket.bind(sockaddr)
69
77
        except self._socket_error, message:
70
78
            raise errors.CannotBindAddress(host, port, message)
71
79
        self._sockname = self._server_socket.getsockname()
147
155
        # propogates to the newly accepted socket.
148
156
        conn.setblocking(True)
149
157
        conn.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
150
 
        handler = SmartServerSocketStreamMedium(
 
158
        handler = medium.SmartServerSocketStreamMedium(
151
159
            conn, self.backing_transport, self.root_client_path)
152
160
        thread_name = 'smart-server-child' + thread_name_suffix
153
161
        connection_thread = threading.Thread(