From 8f0de3d285723224a780bbdedaffe950ae0db497 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Thu, 11 Feb 2021 19:26:40 +0100 Subject: [PATCH] Fix TypeNotFoundError was not being propagated Closes #1697. This would cause deadlocks, as the request future would never be resolved, so await would wait forever. --- telethon/network/mtprotosender.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/telethon/network/mtprotosender.py b/telethon/network/mtprotosender.py index 581dd43d..d511e7af 100644 --- a/telethon/network/mtprotosender.py +++ b/telethon/network/mtprotosender.py @@ -610,11 +610,16 @@ class MTProtoSender: if not state.future.cancelled(): state.future.set_exception(error) else: - with BinaryReader(rpc_result.body) as reader: - result = state.request.read_result(reader) - - if not state.future.cancelled(): - state.future.set_result(result) + try: + with BinaryReader(rpc_result.body) as reader: + result = state.request.read_result(reader) + except Exception as e: + # e.g. TypeNotFoundError, should be propagated to caller + if not state.future.cancelled(): + state.future.set_exception(e) + else: + if not state.future.cancelled(): + state.future.set_result(result) async def _handle_container(self, message): """