[PATCH 3 of 3 hglib] hgclient: look for an open server before closing it in ResponseError block

Augie Fackler raf at durin42.com
Sun Dec 10 12:54:54 EST 2017


# HG changeset patch
# User Augie Fackler <raf at durin42.com>
# Date 1512928357 18000
#      Sun Dec 10 12:52:37 2017 -0500
# Node ID 20fdbd5e5d426bb710df2be46b7877ea99d18ada
# Parent  a58ab92c962337fe177001ec17df0efc673e8279
hgclient: look for an open server before closing it in ResponseError block

At least some of the codepaths that can throw a ResponseError close
the server first (the one in _readchannel does so in order to detect
server startup failures, for example), so we have to verify we have a
server to close before doing so, otherwise we can lose the
ResponseError and the user sees an AttributeError when we try to use
.close() on a NoneType.

diff --git a/hglib/client.py b/hglib/client.py
--- a/hglib/client.py
+++ b/hglib/client.py
@@ -271,7 +271,8 @@ class hgclient(object):
         try:
             self._readhello()
         except error.ResponseError:
-            self.close()
+            if self.server is not None:
+                self._close()
             raise
         except error.ServerError:
             if self.server is None:


More information about the Mercurial-devel mailing list