commit 83cfe4cf517e72d5ff28731da849462ac13d7b6a Author: Illia Volochii illia.volochii@gmail.com Date: Tue Apr 21 22:59:20 2020 +0300
Make `Controller.create_ephemeral_hidden_service` asynchronous --- stem/control.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/stem/control.py b/stem/control.py index 618408c3..dce1584b 100644 --- a/stem/control.py +++ b/stem/control.py @@ -2832,7 +2832,7 @@ class Controller(BaseController):
return [r for r in result if r] # drop any empty responses (GETINFO is blank if unset)
- def create_ephemeral_hidden_service(self, ports: Union[int, Sequence[int], Mapping[int, str]], key_type: str = 'NEW', key_content: str = 'BEST', discard_key: bool = False, detached: bool = False, await_publication: bool = False, timeout: Optional[float] = None, basic_auth: Optional[Mapping[str, str]] = None, max_streams: Optional[int] = None) -> stem.response.add_onion.AddOnionResponse: + async def create_ephemeral_hidden_service(self, ports: Union[int, Sequence[int], Mapping[int, str]], key_type: str = 'NEW', key_content: str = 'BEST', discard_key: bool = False, detached: bool = False, await_publication: bool = False, timeout: Optional[float] = None, basic_auth: Optional[Mapping[str, str]] = None, max_streams: Optional[int] = None) -> stem.response.add_onion.AddOnionResponse: """ Creates a new hidden service. Unlike :func:`~stem.control.Controller.create_hidden_service` this style of @@ -2934,15 +2934,15 @@ class Controller(BaseController): * :class:`stem.Timeout` if **timeout** was reached """
- hs_desc_queue = queue.Queue() # type: queue.Queue[stem.response.events.Event] + hs_desc_queue = asyncio.Queue() # type: asyncio.Queue[stem.response.events.Event] hs_desc_listener = None start_time = time.time()
if await_publication: - def hs_desc_listener(event: stem.response.events.Event) -> None: - hs_desc_queue.put(event) + async def hs_desc_listener(event: stem.response.events.Event) -> None: + await hs_desc_queue.put(event)
- self.add_event_listener(hs_desc_listener, EventType.HS_DESC) + await self.add_event_listener(hs_desc_listener, EventType.HS_DESC)
request = 'ADD_ONION %s:%s' % (key_type, key_content)
@@ -2960,7 +2960,7 @@ class Controller(BaseController): if max_streams is not None: flags.append('MaxStreamsCloseCircuit')
- if self.get_conf('HiddenServiceSingleHopMode', None) == '1' and self.get_conf('HiddenServiceNonAnonymousMode', None) == '1': + if (await self.get_conf('HiddenServiceSingleHopMode', None)) == '1' and (await self.get_conf('HiddenServiceNonAnonymousMode', None)) == '1': flags.append('NonAnonymous')
if flags: @@ -2987,7 +2987,7 @@ class Controller(BaseController): else: request += ' ClientAuth=%s' % client_name
- response = stem.response._convert_to_add_onion(stem.response._convert_to_add_onion(self.msg(request))) + response = stem.response._convert_to_add_onion(await self.msg(request))
if await_publication: # We should receive five UPLOAD events, followed by up to another five @@ -3000,7 +3000,7 @@ class Controller(BaseController):
try: while True: - event = _get_with_timeout(hs_desc_queue, timeout, start_time) + event = await _get_with_timeout(hs_desc_queue, timeout, start_time)
if event.action == stem.HSDescAction.UPLOAD and event.address == response.service_id: directories_uploaded_to.append(event.directory_fingerprint) @@ -3012,7 +3012,7 @@ class Controller(BaseController): if len(directories_uploaded_to) == len(failures): raise stem.OperationFailed(message = 'Failed to upload our hidden service descriptor to %s' % ', '.join(failures)) finally: - self.remove_event_listener(hs_desc_listener) + await self.remove_event_listener(hs_desc_listener)
return response