Mercurial > python-hglib
comparison hglib/client.py @ 197:6949fc164439 2.5
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.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sun, 10 Dec 2017 12:52:37 -0500 |
parents | c586d02f7cda |
children | 7da1dad166b5 |
comparison
equal
deleted
inserted
replaced
196:c586d02f7cda | 197:6949fc164439 |
---|---|
269 | 269 |
270 self.server = util.popen(self._args, self._env) | 270 self.server = util.popen(self._args, self._env) |
271 try: | 271 try: |
272 self._readhello() | 272 self._readhello() |
273 except error.ResponseError: | 273 except error.ResponseError: |
274 self.close() | 274 if self.server is not None: |
275 self._close() | |
275 raise | 276 raise |
276 except error.ServerError: | 277 except error.ServerError: |
277 if self.server is None: | 278 if self.server is None: |
278 # server is already closed, hopefully the ServerError | 279 # server is already closed, hopefully the ServerError |
279 # we got has enough information. | 280 # we got has enough information. |