Let only the LogOut request be confirmed via ack

This commit is contained in:
Lonami Exo 2017-04-11 09:52:44 +02:00
parent 3e611cdd42
commit 6d1ce4d48d
3 changed files with 13 additions and 7 deletions

View File

@ -12,7 +12,7 @@ cols, rows = shutil.get_terminal_size()
def print_title(title):
# Clear previous window
print('\n')
available_cols = cols - 2 # -2 sincewe omit '┌' and '┐'
available_cols = cols - 2 # -2 since we omit '┌' and '┐'
print('{}'.format('' * available_cols))
print('{}'.format(title.center(available_cols)))
print('{}'.format('' * available_cols))

View File

@ -228,11 +228,15 @@ class MtProtoSender:
return self.handle_bad_msg_notification(msg_id, sequence, reader)
# msgs_ack, it may handle the request we wanted
if self.ack_requests_confirm and code == 0x62d6b459:
if code == 0x62d6b459:
ack = reader.tgread_object()
if request and request.msg_id in ack.msg_ids:
Log.w('Message ack confirmed a request')
request.confirm_received = True
Log.w('Ack found for the current request ID')
if self.ack_requests_confirm:
Log.w('Message ack confirmed a request')
request.confirm_received = True
return False
# If the code is not parsed manually, then it was parsed by the code generator!

View File

@ -121,9 +121,6 @@ class TelegramClient:
# although many other options are available!
self.dc_options = result.dc_options
# We can now enable these (for such methods such as logout)
self.sender.ack_requests_confirm = True
# We're signed in if we're authorized
self.signed_in = self.is_user_authorized()
return True
@ -259,6 +256,9 @@ class TelegramClient:
def log_out(self):
"""Logs out and deletes the current session. Returns True if everything went OK"""
# Only the logout request is confirmed via an ack request
# TODO This is only a supposition, there has to be a better way to handle acks
self.sender.ack_requests_confirm = True
try:
self.invoke(LogOutRequest())
if not self.session.delete():
@ -266,6 +266,8 @@ class TelegramClient:
self.session = None
except:
# Something happened when logging out, restore the state back
self.sender.ack_requests_confirm = False
return False
@staticmethod