Remove invalid error inits and move bad msg error

This commit is contained in:
Lonami Exo 2019-05-15 13:57:55 +02:00
parent 0946a7902f
commit bcfc3e7550
3 changed files with 49 additions and 69 deletions

View File

@ -7,7 +7,7 @@ import re
from .common import (
ReadCancelledError, TypeNotFoundError, InvalidChecksumError,
InvalidBufferError, SecurityError, CdnFileTamperedError,
AlreadyInConversationError, MultiError
AlreadyInConversationError, BadMessageError, MultiError
)
# This imports the base errors too, as they're imported there

View File

@ -90,6 +90,53 @@ class AlreadyInConversationError(Exception):
)
class BadMessageError(Exception):
"""Occurs when handling a bad_message_notification."""
ErrorMessages = {
16:
'msg_id too low (most likely, client time is wrong it would be '
'worthwhile to synchronize it using msg_id notifications and re-send '
'the original message with the "correct" msg_id or wrap it in a '
'container with a new msg_id if the original message had waited too '
'long on the client to be transmitted).',
17:
'msg_id too high (similar to the previous case, the client time has '
'to be synchronized, and the message re-sent with the correct msg_id).',
18:
'Incorrect two lower order msg_id bits (the server expects client '
'message msg_id to be divisible by 4).',
19:
'Container msg_id is the same as msg_id of a previously received '
'message (this must never happen).',
20:
'Message too old, and it cannot be verified whether the server has '
'received a message with this msg_id or not.',
32:
'msg_seqno too low (the server has already received a message with a '
'lower msg_id but with either a higher or an equal and odd seqno).',
33:
'msg_seqno too high (similarly, there is a message with a higher '
'msg_id but with either a lower or an equal and odd seqno).',
34:
'An even msg_seqno expected (irrelevant message), but odd received.',
35:
'Odd msg_seqno expected (relevant message), but even received.',
48:
'Incorrect server salt (in this case, the bad_server_salt response '
'is received with the correct salt, and the message is to be re-sent '
'with it).',
64:
'Invalid container.'
}
def __init__(self, request, code):
super().__init__(request, self.ErrorMessages.get(
code,
'Unknown error code (this should not happen): {}.'.format(code)))
self.code = code
class MultiError(Exception):
"""Exception container for multiple `TLRequest`'s."""

View File

@ -53,10 +53,6 @@ class ForbiddenError(RPCError):
code = 403
message = 'FORBIDDEN'
def __init__(self, request, message):
super().__init__(request, message)
self.message = message
class NotFoundError(RPCError):
"""
@ -65,10 +61,6 @@ class NotFoundError(RPCError):
code = 404
message = 'NOT_FOUND'
def __init__(self, request, message):
super().__init__(request, message)
self.message = message
class AuthKeyError(RPCError):
"""
@ -78,10 +70,6 @@ class AuthKeyError(RPCError):
code = 406
message = 'AUTH_KEY'
def __init__(self, request, message):
super().__init__(request, message)
self.message = message
class FloodError(RPCError):
"""
@ -103,10 +91,6 @@ class ServerError(RPCError):
code = 500 # Also witnessed as -500
message = 'INTERNAL'
def __init__(self, request, message):
super().__init__(request, message)
self.message = message
class TimedOutError(RPCError):
"""
@ -116,62 +100,11 @@ class TimedOutError(RPCError):
code = 503 # Only witnessed as -503
message = 'Timeout'
def __init__(self, request, message):
super().__init__(request, message)
self.message = message
BotTimeout = TimedOutError
class BadMessageError(Exception):
"""Occurs when handling a bad_message_notification."""
ErrorMessages = {
16:
'msg_id too low (most likely, client time is wrong it would be '
'worthwhile to synchronize it using msg_id notifications and re-send '
'the original message with the "correct" msg_id or wrap it in a '
'container with a new msg_id if the original message had waited too '
'long on the client to be transmitted).',
17:
'msg_id too high (similar to the previous case, the client time has '
'to be synchronized, and the message re-sent with the correct msg_id).',
18:
'Incorrect two lower order msg_id bits (the server expects client '
'message msg_id to be divisible by 4).',
19:
'Container msg_id is the same as msg_id of a previously received '
'message (this must never happen).',
20:
'Message too old, and it cannot be verified whether the server has '
'received a message with this msg_id or not.',
32:
'msg_seqno too low (the server has already received a message with a '
'lower msg_id but with either a higher or an equal and odd seqno).',
33:
'msg_seqno too high (similarly, there is a message with a higher '
'msg_id but with either a lower or an equal and odd seqno).',
34:
'An even msg_seqno expected (irrelevant message), but odd received.',
35:
'Odd msg_seqno expected (relevant message), but even received.',
48:
'Incorrect server salt (in this case, the bad_server_salt response '
'is received with the correct salt, and the message is to be re-sent '
'with it).',
64:
'Invalid container.'
}
def __init__(self, request, code):
super().__init__(request, self.ErrorMessages.get(
code,
'Unknown error code (this should not happen): {}.'.format(code)))
self.code = code
base_errors = {x.code: x for x in (
InvalidDCError, BadRequestError, UnauthorizedError, ForbiddenError,
NotFoundError, AuthKeyError, FloodError, ServerError, BotTimeout
NotFoundError, AuthKeyError, FloodError, ServerError, TimedOutError
)}