[tor-commits] [stem/master] Stop joining the thread for the asynchronous controller while closing

atagar at torproject.org atagar at torproject.org
Thu Jul 16 01:28:59 UTC 2020


commit fe14b7164a10868c7bec12a7d25810bbbc6813b9
Author: Illia Volochii <illia.volochii at gmail.com>
Date:   Thu Apr 30 19:25:38 2020 +0300

    Stop joining the thread for the asynchronous controller while closing
    
    If it is joined, it will not be possible to reconnect.
---
 stem/control.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/stem/control.py b/stem/control.py
index b2d2d9d7..a87e88ca 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -3987,8 +3987,6 @@ class Controller(_ControllerClassMethodMixin, _BaseControllerSocketMixin):
 
   def close(self) -> None:
     self._execute_async_method('close')
-    if self._async_controller_thread.is_alive():
-      self._async_controller_thread.join()
 
   def get_latest_heartbeat(self) -> float:
     return self._async_controller.get_latest_heartbeat()
@@ -4170,6 +4168,10 @@ class Controller(_ControllerClassMethodMixin, _BaseControllerSocketMixin):
   def drop_guards(self) -> None:
     self._execute_async_method('drop_guards')
 
+  def __del__(self) -> None:
+    if self._asyncio_loop.is_running():
+      self._asyncio_loop.call_soon_threadsafe(self._asyncio_loop.stop)
+
   def __enter__(self) -> 'stem.control.Controller':
     return self
 





More information about the tor-commits mailing list