Rev 3714: (Jelmer) Support IPv6 in the smart server. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Sep 19 12:01:35 BST 2008
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3714
revision-id: pqm at pqm.ubuntu.com-20080919110131-v81t8izemtywe4vu
parent: pqm at pqm.ubuntu.com-20080919034851-21510mhvx3xwyrta
parent: jelmer at samba.org-20080919101218-w00fsqqxv0zy6j6r
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2008-09-19 12:01:31 +0100
message:
(Jelmer) Support IPv6 in the smart server.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
------------------------------------------------------------
revno: 3711.2.3
revision-id: jelmer at samba.org-20080919101218-w00fsqqxv0zy6j6r
parent: jelmer at samba.org-20080919005726-sbvjd808xkjbbroe
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzr.dev
timestamp: Fri 2008-09-19 12:12:18 +0200
message:
Add comment.
modified:
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
------------------------------------------------------------
revno: 3711.2.2
revision-id: jelmer at samba.org-20080919005726-sbvjd808xkjbbroe
parent: jelmer at samba.org-20080919002853-r47mvu07ldqowbq2
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzr.dev
timestamp: Fri 2008-09-19 02:57:26 +0200
message:
Avoid using AI_ADDRCONFIG since it's not portable.
modified:
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
------------------------------------------------------------
revno: 3711.2.1
revision-id: jelmer at samba.org-20080919002853-r47mvu07ldqowbq2
parent: pqm at pqm.ubuntu.com-20080917230446-p0wippqwikt511sp
parent: jelmer at samba.org-20080830184812-9fcdxoxlrkdk85s8
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzr.dev
timestamp: Fri 2008-09-19 02:28:53 +0200
message:
Merge ipv6 changes.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
------------------------------------------------------------
revno: 3665.4.2
revision-id: jelmer at samba.org-20080830184812-9fcdxoxlrkdk85s8
parent: jelmer at samba.org-20080830163506-wal9a9xcah391p2g
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: ip6
timestamp: Sat 2008-08-30 20:48:12 +0200
message:
Fall through to next available address if previous fails.
modified:
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
------------------------------------------------------------
revno: 3665.4.1
revision-id: jelmer at samba.org-20080830163506-wal9a9xcah391p2g
parent: pqm at pqm.ubuntu.com-20080829062746-ny482m2f2pukdhqt
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzr.dev
timestamp: Sat 2008-08-30 18:35:06 +0200
message:
Support IPv6 in the smart server.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
=== modified file 'NEWS'
--- a/NEWS 2008-09-19 03:17:09 +0000
+++ b/NEWS 2008-09-19 11:01:31 +0000
@@ -95,6 +95,8 @@
* Support for GSSAPI authentication when using FTP as documented in
RFC2228. (Jelmer Vernooij, #49623)
+ * Add support for IPv6 in the smart server. (Jelmer Vernooij, #165014)
+
IMPROVEMENTS:
* A url like ``log+file:///tmp`` will log all access to that Transport
=== modified file 'bzrlib/smart/medium.py'
--- a/bzrlib/smart/medium.py 2008-08-14 02:15:31 +0000
+++ b/bzrlib/smart/medium.py 2008-09-19 10:12:18 +0000
@@ -704,7 +704,7 @@
# Port 4155 is the default port for bzr://, registered with IANA.
-BZR_DEFAULT_INTERFACE = '0.0.0.0'
+BZR_DEFAULT_INTERFACE = None
BZR_DEFAULT_PORT = 4155
@@ -736,15 +736,31 @@
"""Connect this medium if not already connected."""
if self._connected:
return
- self._socket = socket.socket()
- self._socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
if self._port is None:
port = BZR_DEFAULT_PORT
else:
port = int(self._port)
try:
- self._socket.connect((self._host, port))
- except socket.error, err:
+ sockaddrs = socket.getaddrinfo(self._host, port, socket.AF_UNSPEC,
+ socket.SOCK_STREAM, 0, 0)
+ except socket.gaierror, (err_num, err_msg):
+ raise errors.ConnectionError("failed to lookup %s:%d: %s" %
+ (self._host, port, err_msg))
+ # Initialize err in case there are no addresses returned:
+ err = socket.error("no address found for %s" % self._host)
+ for (family, socktype, proto, canonname, sockaddr) in sockaddrs:
+ try:
+ self._socket = socket.socket(family, socktype, proto)
+ self._socket.setsockopt(socket.IPPROTO_TCP,
+ socket.TCP_NODELAY, 1)
+ self._socket.connect(sockaddr)
+ except socket.error, err:
+ if self._socket is not None:
+ self._socket.close()
+ self._socket = None
+ continue
+ break
+ if self._socket is None:
# socket errors either have a (string) or (errno, string) as their
# args.
if type(err.args) is str:
=== modified file 'bzrlib/smart/server.py'
--- a/bzrlib/smart/server.py 2008-06-05 22:56:42 +0000
+++ b/bzrlib/smart/server.py 2008-09-19 00:57:26 +0000
@@ -59,13 +59,18 @@
from socket import error as socket_error
self._socket_error = socket_error
self._socket_timeout = socket_timeout
- self._server_socket = socket.socket()
+ addrs = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
+ socket.SOCK_STREAM, 0, socket.AI_PASSIVE)[0]
+
+ (family, socktype, proto, canonname, sockaddr) = addrs
+
+ self._server_socket = socket.socket(family, socktype, proto)
# SO_REUSERADDR has a different meaning on Windows
if sys.platform != 'win32':
self._server_socket.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR, 1)
try:
- self._server_socket.bind((host, port))
+ self._server_socket.bind(sockaddr)
except self._socket_error, message:
raise errors.CannotBindAddress(host, port, message)
self._sockname = self._server_socket.getsockname()
More information about the bazaar-commits
mailing list