mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-25 19:03:46 +03:00
Attempt at fixing msg_id too low/high (#95)
This commit is contained in:
parent
289baa0fed
commit
7f84374e98
|
@ -333,7 +333,16 @@ class MtProtoSender:
|
||||||
reader.read_int() # request_sequence
|
reader.read_int() # request_sequence
|
||||||
|
|
||||||
error_code = reader.read_int()
|
error_code = reader.read_int()
|
||||||
raise BadMessageError(error_code)
|
error = BadMessageError(error_code)
|
||||||
|
if error_code in (16, 17):
|
||||||
|
# sent msg_id too low or too high (respectively).
|
||||||
|
# Use the current msg_id to determine the right time offset.
|
||||||
|
self.session.update_time_offset(correct_msg_id=msg_id)
|
||||||
|
self.session.save()
|
||||||
|
self.logger.warning('Read Bad Message error: ' + str(error))
|
||||||
|
self.logger.info('Attempting to use the correct time offset.')
|
||||||
|
else:
|
||||||
|
raise error
|
||||||
|
|
||||||
def handle_rpc_result(self, msg_id, sequence, reader, request):
|
def handle_rpc_result(self, msg_id, sequence, reader, request):
|
||||||
self.logger.debug('Handling RPC result, request is%s None', ' not' if request else '')
|
self.logger.debug('Handling RPC result, request is%s None', ' not' if request else '')
|
||||||
|
|
|
@ -65,3 +65,9 @@ class Session:
|
||||||
|
|
||||||
self.last_message_id = new_msg_id
|
self.last_message_id = new_msg_id
|
||||||
return new_msg_id
|
return new_msg_id
|
||||||
|
|
||||||
|
def update_time_offset(self, correct_msg_id):
|
||||||
|
"""Updates the time offset based on a known correct message ID"""
|
||||||
|
now = int(time.time())
|
||||||
|
correct = correct_msg_id >> 32
|
||||||
|
self.time_offset = correct - now
|
||||||
|
|
Loading…
Reference in New Issue
Block a user