Lonami Exo
1974b663a2
Add missing type to _store_own_updates
2024-04-28 10:16:56 +02:00
Lonami Exo
7ce0b2f940
Fix invalid date type in UpdateShort
2023-09-12 17:16:55 +02:00
Lonami Exo
128b707488
Don't treat asyncio.IncompleteReadError as unhandled
...
The library will behave the same, but the log severity is lowered.
2023-08-03 19:01:10 +02:00
Lonami Exo
4ff7ac6b75
Handle CancelledError inside mtprotosender recv loop
2023-06-02 19:04:51 +02:00
Lonami Exo
be59c36ed3
Handle errors at connection level
...
Closes #4042 .
2023-03-12 17:43:36 +01:00
Lonami Exo
d81eb0b2e8
Apply pts returned by some additional requests
...
When a bot account sends a message, deletes it, and sends a new one,
very reliably it would detect a gap, and as a result recover the
second message it sent, processing it itself (because the hack with
`_self_outgoing` cannot possibly work when catching up).
Now certain `rpc_result` are also processed as-if they were updates
(including the ones from deleting messages), which solves this gap
issue. Not entirely sure if it's a hack or the intended way to do it
(since Telegram *does* return proper `updates` for other RPCs), but
it seems to solve this particular problem.
Other requests such as reading history, mentions or reactions also
return an instance of this type, but the `pts_count` should be 0,
and at worst it should simply trigger a gap, which shouldn't be a
big deal.
2023-01-14 12:31:01 +01:00
Lonami Exo
83bafa25e3
Stop using asyncio.get_event_loop()
...
It is deprecated in newer Python versions.
Closes #4013 .
2023-01-11 21:02:29 +01:00
Lonami Exo
2ffac2dcdb
Handle DestroyAuthKey result more gracefully
2022-10-21 15:52:00 +02:00
Lonami Exo
f902c9293a
Fix log message formatting when obj was not updates
2022-10-21 15:50:37 +02:00
Lonami Exo
a7db08d020
Fix sender destroy session handling was not running
2022-10-21 15:49:18 +02:00
Lonami Exo
7d21b40401
Revert "Make sessions async"
...
This reverts commit d2de0f3aca
.
2022-08-30 12:32:21 +02:00
Lonami Exo
1af6d9a873
Properly log RpcError with no parent request
...
This should get rid of the unexpected BufferError traceback.
2022-05-31 11:02:34 +02:00
Lonami Exo
3a44f56f64
Also process own updates in MessageBox
2022-05-19 16:40:32 +02:00
Lonami Exo
184984ac51
Protect against potential replay attacks
...
See #3753 .
2022-05-18 12:24:28 +02:00
Lonami Exo
db09a92bc5
Make use of the new MessageBox
2022-05-13 13:17:16 +02:00
Lonami Exo
fdb0720fe9
Don't reset the auth_key upon receiving -404
2022-05-12 12:03:48 +02:00
Tulir Asokan
d2de0f3aca
Make sessions async
...
SQLiteSession is not updated, don't try to use it
2022-05-12 10:36:10 +02:00
Lonami Exo
4c771bf2af
Fix setting logout result was not checking for future cancellation
2021-02-27 15:14:44 +01:00
Lonami Exo
292a36f760
Handle DestroySessionRes
...
Should close #1706 .
2021-02-27 15:13:53 +01:00
Lonami Exo
8f0de3d285
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.
2021-02-11 19:27:57 +01:00
Lonami Exo
ee0fc5cc29
Fix AttributeError on reconnect with no retries
...
Closes #1646 .
2020-12-11 21:43:39 +01:00
Lonami Exo
becfe2ce7a
Start reconnect if a second ping is sent without a pong for the first
...
May help with #1564 .
2020-12-11 17:18:25 +01:00
Lonami Exo
026c992395
Don't try to reconnect when authkey is invalid
2020-10-07 10:40:34 +02:00
Lonami Exo
09f4c5c708
Only reset auth_key on error -404
...
This error is "auth key not found", and the authorization key should
probably not be reset on other error codes. This might address #1457 .
2020-10-05 14:08:21 +02:00
Lonami Exo
185a93a105
Expect BufferError during automatic reconnect
...
This seems to occur whe the Telegram servers are dying and logging
everyone out.
2020-10-05 14:07:11 +02:00
Lonami Exo
10b2b60415
Fix requests were not re-enqueued if sending failed
2020-09-29 21:07:38 +02:00
yash-dk
1d6fd7898a
Consider all reconnect attempts as retrying ( #1557 )
...
This means that a value of 0 retries will no longer try to reconnect.
2020-09-13 09:43:01 +02:00
Lonami Exo
1c3e7dda01
Avoid explicitly passing the loop to asyncio
...
This behaviour is deprecated and will be removed in future versions
of Python. Technically, it could be considered a bug (invalid usage
causing different behaviour from the expected one), and in practice
it should not break much code (because .get_event_loop() would likely
be the same event loop anyway).
2020-07-25 18:39:35 +02:00
Lonami Exo
1e94fe25fa
Log requests that trigger struct.error
...
The exception hardly provides any valuable information.
This will hopefully help troubleshooting why the error happens.
2020-02-20 13:40:08 +01:00
Lonami Exo
3c253734ac
Clear old docs and fix formatting in ConnectionError messages
2020-01-07 12:20:01 +01:00
Lonami Exo
cd37478e31
Don't send pings unless the connection is made
...
This will hopefully avoid batching tens of ping requests which
we don't care about their results.
2019-12-02 18:36:20 +01:00
Lonami Exo
5dcc30dcc6
Handle connection errors during auth key generation
...
This should help with spurious server-side disconnects during
auth_key generation, which happen most commonly on user DC
migrations.
2019-10-24 13:48:29 +02:00
Lonami Exo
08b78f0c47
Unify retry loops in mtprotosender._connect
...
Now the retry count is not twice its value.
2019-10-24 13:40:09 +02:00
Lonami Exo
3039915ce9
Factor out parts from mtprotosender._connect
...
This will help unifying the retry loop and reconnecting
if the server disconnects us during auth key generation
which will be done in a follow-up commit.
2019-10-24 13:36:32 +02:00
Lonami Exo
e24dd3ad75
Prevent double-connect causing double-reads later
...
Which leads to "RuntimeError: readexactly() called while another
coroutine is already waiting for incoming data" being raised,
and causing everything to break or halt.
2019-08-11 19:05:11 +02:00
Lonami Exo
f5de2cd9a0
Fix logging bug on disconnect
2019-08-08 09:32:18 +02:00
Lonami Exo
a7a7c4add2
Pass all Updates when building events
2019-06-30 16:34:34 +02:00
Lonami Exo
aa2b3daccc
Factor out setting entities to events
2019-06-30 16:34:34 +02:00
Lonami
86cdb7c1f8
Remove accidentally-committed debug print
2019-06-15 23:14:59 +02:00
Lonami Exo
40d32cee95
Assert that dispatched updates are Updates
2019-06-15 21:15:57 +02:00
Lonami Exo
e5f1b2afa3
Update logging calls to use proper formatting
2019-05-17 12:30:13 +02:00
Lonami Exo
c1be0bd2e8
Fix disconnection without a previous connection
2019-05-11 16:53:11 +02:00
Lonami Exo
9965cda968
Save pts and date in a tuple for immutability
...
This way it is easy and cheap to copy the two required values
to all incoming updates in case we need to getDifference since
the previous pts/date to fetch entities.
This is still a work in progress.
2019-04-10 21:10:34 +04:00
Lonami Exo
ad963fd23e
Don't clear pending_ack on disconnect
...
Upon reconnecting, we must make sure to send all `pending_ack`,
or Telegram may resend some responses (e.g. causing duplicated
updates).
2019-03-28 12:16:15 +01:00
Lonami Exo
5554b414e1
Propagate the last error on reconnect, not always ConnectionError
2019-03-28 10:11:33 +01:00
Lonami Exo
7523869875
Except IOError and not ConnectionError
...
PySocks' errors do not subclass ConnectionError so the library
was unnecessarily logging them as unexpected, when any IOError
was actually expected.
2019-03-28 09:54:35 +01:00
Lonami Exo
f6fe580eb7
Safer auto reconnect to prevent double connect
2019-03-22 19:01:40 +01:00
Lonami Exo
436fb64289
Prevent double autoreconnect like #1112
2019-03-22 16:21:18 +01:00
Lonami Exo
04ba2e1fc7
Revert disconnect() to be async again ( #1133 )
...
It's the only way to properly clean all background tasks,
which the library makes heavy use for in MTProto/Connection
send and receive loops.
Some parts of the code even relied on the fact that it was
asynchronous (it used to return a future so you could await
it and not be breaking).
It's automatically syncified to reduce the damage of being
a breaking change.
2019-03-21 12:21:00 +01:00
Dmitry D. Chernov
fc2977fc0d
Tiny style fixes
2019-02-07 06:55:34 +10:00