From 1a0eea25c32cb3ae68a447ae8ef5e632bb0a500a Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Mon, 9 Apr 2018 21:06:51 +0900 Subject: [PATCH] ElectrumX 1.4.3 Close connections more aggressively on shutdown We need VERSION in its own file, unfortunately Fixes #442 --- docs/changelog.rst | 6 ++++++ server/controller.py | 5 +++-- server/peers.py | 1 + server/version.py | 1 + setup.py | 6 +++--- 5 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 server/version.py diff --git a/docs/changelog.rst b/docs/changelog.rst index 2c25d9d..e95ee7c 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,11 @@ ChangeLog ========= +Version 1.4.3 +------------- + +* Fix `#442`_. + Version 1.4.2 ------------- @@ -137,3 +142,4 @@ LKaFk4KkVpw9pYoUpbckQSKKgCVC4oj78b .. _#287: https://github.com/kyuupichan/electrumx/issues/287 .. _#301: https://github.com/kyuupichan/electrumx/issues/301 .. _#302: https://github.com/kyuupichan/electrumx/issues/302 +.. _#442: https://github.com/kyuupichan/electrumx/issues/442 diff --git a/server/controller.py b/server/controller.py index c8146b0..dfc37d8 100644 --- a/server/controller.py +++ b/server/controller.py @@ -28,6 +28,7 @@ from server.daemon import DaemonError from server.mempool import MemPool from server.peers import PeerManager from server.session import LocalRPC, BAD_REQUEST, DAEMON_ERROR +from server.version import VERSION class SessionGroup(object): @@ -48,7 +49,7 @@ class Controller(ServerBase): CATCHING_UP, LISTENING, PAUSED, SHUTTING_DOWN = range(4) PROTOCOL_MIN = '1.0' PROTOCOL_MAX = '1.2' - VERSION = 'ElectrumX 1.4.2' + VERSION = VERSION def __init__(self, env): '''Initialize everything that doesn't require the event loop.''' @@ -140,7 +141,7 @@ class Controller(ServerBase): # Close servers and sessions, and cancel all tasks self.close_servers(list(self.servers.keys())) for session in self.sessions: - self.close_session(session) + session.abort() self.tasks.cancel_all() # Wait for the above to take effect diff --git a/server/peers.py b/server/peers.py index bcb70c2..e3fd4c5 100644 --- a/server/peers.py +++ b/server/peers.py @@ -491,6 +491,7 @@ class PeerManager(object): await self.retry_peers() finally: for session in list(PeerSession.sessions): + session.abort() await session.wait_closed() def is_coin_onion_peer(self, peer): diff --git a/server/version.py b/server/version.py new file mode 100644 index 0000000..d831d4b --- /dev/null +++ b/server/version.py @@ -0,0 +1 @@ +VERSION = 'ElectrumX 1.4.3' diff --git a/setup.py b/setup.py index 984c04c..a45458b 100644 --- a/setup.py +++ b/setup.py @@ -1,10 +1,10 @@ import setuptools -from server.controller import Controller +from server.version import VERSION setuptools.setup( name='electrumx', - version=Controller.short_version(), + version=VERSION, scripts=['electrumx_server.py', 'electrumx_rpc.py'], python_requires='>=3.6', # via environment variables, in which case I've tested with 15.0.4 @@ -17,7 +17,7 @@ setuptools.setup( author='Neil Booth', author_email='kyuupichan@gmail.com', license='MIT Licence', - url='https://github.com/kyuupichan/electrumx/', + url='https://github.com/kyuupichan/electrumx', long_description='Server implementation for the Electrum wallet', classifiers=[ 'Development Status :: 5 - Production/Stable',