[MERGE][#182849] Don't traceback on host name errors when connecting to bzr://...
Andrew Bennetts
andrew at canonical.com
Tue Jan 15 04:03:25 GMT 2008
When connecting to a plain TCP smart server (bzr://foo/...) bzrlib.smart.medium
was using socket_object.connect_ex without catching exceptions, however
connect_ex does raise errors in some situations, e.g. when a host name could not
be resolved. This caused <https://bugs.launchpad.net/bzr/+bug/182849>.
This patch uses connect rather than connect_ex, and if it fails, it catches the
exception and extracts the appropriate error string from the exception. This
should properly catch all errors from connecting the socket, and make sure they
are reported correctly.
-Andrew.
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: andrew.bennetts at canonical.com-20080115005912-\
# sz20uhvhskju57t0
# target_branch: http://bazaar-vcs.org/bzr/bzr.dev
# testament_sha1: 62eb45a1bd23dbd1cc19bc1b4a93ed6ac5a4252b
# timestamp: 2008-01-15 14:36:35 +1100
# source_branch: http://people.ubuntu.com/~andrew/bzr/smart-tcp-\
# unknown-host
# base_revision_id: pqm at pqm.ubuntu.com-20080115003405-jfuumkpctmvl2e4r
#
# Begin patch
=== modified file 'bzrlib/smart/medium.py'
--- bzrlib/smart/medium.py 2007-12-19 02:25:26 +0000
+++ bzrlib/smart/medium.py 2008-01-15 00:59:12 +0000
@@ -545,10 +545,17 @@
port = BZR_DEFAULT_PORT
else:
port = int(self._port)
- result = self._socket.connect_ex((self._host, port))
- if result:
+ try:
+ self._socket.connect((self._host, port))
+ except socket.error, err:
+ # socket errors either have a (string) or (errno, string) as their
+ # args.
+ if type(err.args) is str:
+ err_msg = err.args
+ else:
+ err_msg = err.args[1]
raise errors.ConnectionError("failed to connect to %s:%d: %s" %
- (self._host, port, os.strerror(result)))
+ (self._host, port, err_msg))
self._connected = True
def _flush(self):
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWa0UWZoAAjl/gCRUQABZ5///
f///+r////BQBS16QAu7h1tg0prCUSGhGmVH6JPaNDKnp6U81J5Rp6hkMgNGg3qTyJ+oQpRkZG01
NGjQBppoaA0BoyAyNDQGTTICUSTyaRGmMkaM9SaNGg0aZNAAaAAaNADjJk0aA0aYjI0MQwJo0xBi
NBhAAYJJBAAIyTJkBPQiPI0eoAnppojQGjTJkjEfRJZlxUHPLZhRuJ0y7qN87Ef6cFMaOig4tVMU
TvBsUjRCc9WTLPmaVFqoANEKduVvXA7ZFFUx+aPx5HSCqqeNkiv9RbPtOYZ8UsYV5eGUw0mwvwkr
N03fPc/rt59o4/CV9Ay2y2tZHGQew6EnrjzT7uXftbhfwcTGhJijM8R0nlqmlZjU28bMfeujFGpD
5FSj0iBzJWlpnbOX0EvmILvZOmYCDLbL7traG+92pIk2CFp3AoF4wX0S9rJKCzfVNpdTPhn7BQCh
JjwtB7tOjfDSwDADuQFpnJ3HlHkSCKg9I5I8zIWyBSpPn0/LXZWU+i4Dhu7ujJDxlPa0C77XhZmy
TAqAPLfTHyayl58M41QLpffpYxOC6s6IErqXH0yHmeUdNWA9sgD7gPMYR4RvsWR6JaMa5yYoR33D
zwBGoOA+riZkmVhTptoH73q2hMTTF97TQIvs4TYSDBf832lwTgoqfGBIcW+Vu4ES2GQDsJwO+bsJ
ygYptyoqkcS0KGwvcW5NvaIELCBNMi81FsabKc5MT1PyypDkqmCexjACq10lYKVwosVGklJZCPb1
vzyU1MVTHCRxKQLDkg4vJyJHfa7p8dV0eu2DNvGKwCAVlqI9Rs3FT3C97KbQb2FjSjrsLg8ipDkr
ODA41jivq46MENIdH+5eg8OLXDbJEgqdJh0c9H36ESPSjWHliDj3QSvhJkXrBqGB8POMFOaKoJ/e
QGYCA1q3kM+nDympi8XxJ0vS5b/JtjwSWMMufhlNy1R7jQbn2WFau+9g3jAaG8jkcafJ6I7mlyPF
EnZYmPrKvN6mlrII9gjruC0h/XZtV/nTpxHcVpZyRu8O9blX25c+fINB7TsNY408vuLhExXiY8wZ
vfOjuOLgEf8I1TeKqLQHdatEqmbjwNgNqm992WJkWL4EQi8zXUsjtxgeA2DFnbeTqhIx+PJnbpYo
1c4XTVW9AlJFPMLLE8hdn03BaLqQSNzSJ1uaZhE0uKYVMnDnwpq/Jj6DO5XH21C4i0nbyLIFcCPr
EG6MH2EuXCsQIi6lo0nDSInDz116pGVGBkvnoFgaCyZtSJxZI8etRV7lKriqhJwyZd6uPPeBug1A
WZCMBtIUtZkIZp6ERPwyLNigW7UUvpOj48MZf0oEbX50DuexWSc3ozBlgBHeXWSOWSIAdXu02BWc
oi8Kpgbz8izKS4dyZjf3CUV+YTsFVRIqA9MjOdrrLqApk2mK28YTSYMQZBsDf91FMyO14jwzajcy
RJxMoCHTOK0jGcRv7oImYUodzw4M1WqDKnjST8/ycg/GUQaORHK9CQGFuik5GBTe9teRywhAJgcY
qAmc8ozY9gcVKrrTF9+9qXSePRYBpwl1+17tSgfB1euHVBQlRuyoXNSln8JqyZP6kiIay2asrCxz
8wnqKREZlGMGKCjl1mNmcycEcbhVEIlgXb5gs6aUGE2YSszFawoY94CwOPx66JWz5zEGLEQMHZAX
xux5KPvzxIjEi9IGrVGgo9o8qcY3KUbewrHliGnRQpnPYf7HWCiDWBBN4kQcCN4IXwjkNAD9moKa
j6AcdZeucLq5Qz2yhXmO9hPBQAzoIg5yRHDRdZ3SXMGbRIIxwsQq0gLxSHjsMkp/i7kinChIVoos
zQA=
More information about the bazaar
mailing list