Commit Graph

118 Commits

Author SHA1 Message Date
Lonami Exo
a2fdd4b196 Ignore InvalidChecksumError's 2017-09-11 11:04:19 +02:00
Lonami Exo
25bbb20b0c Use RLocks properly on MtProtoSender (only needed on net IO) 2017-09-07 21:32:46 +02:00
Lonami Exo
d4f36162cd Create and use UpdateState to .process() unhandled TLObjects 2017-09-07 18:49:08 +02:00
Lonami Exo
15fd5390ae Optimize imports 2017-09-04 17:18:33 +02:00
Lonami Exo
97cab7347b Make lint happier 2017-09-04 17:10:04 +02:00
Lonami Exo
f8f389c850 Fix ack requests removing pending requests when they shouldn't 2017-09-03 11:21:42 +02:00
Lonami Exo
db6fd4bdc2 Fix RPC errors being ignored due to modifying the wrong attribute 2017-09-03 11:19:28 +02:00
Lonami Exo
83f3f66113 Fix MtProtoSender never clearing self._pending_receive requests 2017-09-03 10:50:55 +02:00
Lonami Exo
4de4026bb3 Move the "constant read" thread to the main TelegramClient 2017-09-03 09:56:10 +02:00
Lonami Exo
9bc1f64efe Move update handling to the MtProtoSender, being functional again 2017-09-02 21:46:44 +02:00
Lonami Exo
21eaf8bd72 Allow setting whether the MtProtoSender should use constant_read 2017-09-02 21:27:11 +02:00
Lonami Exo
863d2e8368 Make confirm_received a flag, avoid race conditions, fix bg RPCError
There was a race condition between TelegramBareClient.invoke
receiving part and MtProtoSender._handle_rpc_result actually
reading the result after setting request.confirmed = True.

The .confirmed is now a threading.Event to avoid the sleep(0.1).

RPC errors have been moved inside the request so they're not
raised on a background thread anymore.
2017-09-02 20:41:00 +02:00
Lonami Exo
b908296efa Remove unused TcpClien.read(timeout=...) param, change other accessors 2017-09-02 19:33:42 +02:00
Lonami Exo
43b79c3d36 Add a thread to constantly read messages from the network 2017-09-02 18:27:22 +02:00
Lonami Exo
fa22a3f848 Create a centralized Connection class, replaces TcpTransport (#112) 2017-08-28 21:23:31 +02:00
Lonami Exo
00b5b5021b Report errors to pwrtelegram.xyz by default 2017-08-25 15:34:20 +02:00
Lonami Exo
7844cd358e Attempt at making layer migrations more smooth (#158) 2017-07-26 16:10:45 +02:00
Lonami Exo
160a3699ac Fix confusing names "MtProtoRequest" and ".confirmed" (#176)
This also fixes the annoyingly confusing message:
"Odd msg_seqno expected (relevant message), but even received."
2017-07-24 16:54:48 +02:00
Lonami Exo
1f7ac71187 Debug level should always be used for logging since it's a library 2017-07-10 15:21:20 +02:00
Lonami Exo
83c8e98448 Ensure that message ids are signed once again 2017-06-27 18:45:52 +02:00
Lonami Exo
e4fbd87c75 Turn timeout into a property instead leaving it as a parameter 2017-06-22 11:43:42 +02:00
Lonami Exo
a9a5c7e254 Use signed longs for every request_id (#138 follow-up) 2017-06-21 10:21:09 +02:00
Lonami Exo
697434be37 Don't do anything on .connect() if it's already connected 2017-06-20 09:46:37 +02:00
Lonami Exo
8afb0a3f6b Rename Request.msg_id to request_msg_id to avoid name clash (fix #122) 2017-06-18 10:01:59 +02:00
Lonami Exo
2b85463ce6 Don't ignore more possible updates on .receive_updates() (closes #117) 2017-06-16 15:36:47 +02:00
Lonami Exo
3ed59d08e5 Fix commit 65912f9 by properly skipping lost messages 2017-06-11 17:53:53 +02:00
Lonami Exo
65912f926b Allow to send more than one request before receiving them (#105) 2017-06-11 14:58:16 +02:00
Lonami Exo
44ab85962b Completely change errors (make one class for each) 2017-06-10 11:47:51 +02:00
Lonami Exo
7adb4f09d6 Slightly reorganise the project structure 2017-06-09 16:13:39 +02:00
Lonami Exo
efd1c1ba64 Always acknowledge received errors for server not to resend them 2017-06-09 10:46:39 +02:00
Lonami Exo
1860054ec0 Make generate_sequence() thread-safe and move it to Session 2017-06-07 12:00:01 +01:00
Lonami Exo
0b9d76bda1 Replace library print()'s with calls to _logger 2017-05-30 10:24:08 +02:00
Lonami Exo
7c84c72f06 Minor change to make the code more pythonic 2017-05-29 21:27:20 +02:00
Lonami Exo
042e3069a9 Move UpdatesThread from MtProtoSender to TelegramClient
This makes it easier to perform a proper reconnection
2017-05-29 21:24:47 +02:00
Lonami Exo
ebe4232b32 Change the way in which updates are read and handled 2017-05-29 20:41:11 +02:00
Lonami Exo
452532cce7 Make certain methods and members private 2017-05-29 17:06:48 +02:00
Lonami Exo
63b1881c83 Raise FloodWaitError instead sleeping 2017-05-29 16:46:17 +02:00
Lonami Exo
7f84374e98 Attempt at fixing msg_id too low/high (#95) 2017-05-26 16:39:59 +02:00
Lonami Exo
02a847b64a Make lint happier 2017-05-21 13:59:16 +02:00
Lonami Exo
63c89af983 Use relative imports always where possible 2017-05-21 13:02:54 +02:00
Lonami Exo
fb9104417e Add more errors, change the way InvalidDC is created 2017-05-20 15:25:07 +02:00
Lonami Exo
eb7fb2ac24 Make logging a lot less intrusive
See https://docs.python.org/3/howto/logging.html#library-config
2017-05-20 11:49:09 +02:00
Lonami Exo
468033fa7e Avoid counterintuitive automatic connection 2017-05-20 11:33:37 +02:00
Lonami Exo
3c3946e6f1 Don't start the updates thread until signed in 2017-05-19 21:44:50 +02:00
Dmitry D. Chernov
7f787affc6 MtProtoSender: Fix crash on receiving unknown RPC results
Such RPC results may arrive after reconnection, for example.
2017-05-19 08:32:40 +02:00
Dmitry D. Chernov
048bc81b74 MtProtoSender: Use threading.Event instead of boolean flags 2017-05-09 19:50:46 +02:00
Lonami Exo
fbe65c2dfb Reconnect on timeout inside timeout (#61) 2017-04-29 11:07:32 +02:00
Lonami Exo
a7595347f3 Make the UpdatesThread a daemon (closes #60) 2017-04-29 10:41:56 +02:00
Lonami Exo
89326c998a Workaround for #50 suggested by @strayge (send not only Ping) 2017-04-21 14:02:21 +02:00
Lonami Exo
6b2c0271ae Fix updates thread crashing on logout 2017-04-14 15:28:15 +02:00
Lonami Exo
f6c34f8ba2 Add current time to the log output 2017-04-12 10:35:07 +02:00
Lonami Exo
4fa43f231f Fix "Must wait error" not causing updates thread to sleep 2017-04-11 09:58:22 +02:00
Lonami Exo
6d1ce4d48d Let only the LogOut request be confirmed via ack 2017-04-11 09:57:18 +02:00
Lonami Exo
f24d4f4a0e Fix updates thread not sleeping when handling pings 2017-04-09 13:16:22 +02:00
Lonami Exo
1232e8f607 Add logging to MTProtoSender 2017-04-09 13:14:04 +02:00
Lonami Exo
426b09aec0 Slightly improve the updates thread (also easier to understand) 2017-04-06 18:46:09 +02:00
Lonami Exo
628b7391e3 Greatly improve the handling of working with different DC 2017-03-20 12:32:10 +01:00
strayge
8256cb3e55 added ping requests 2017-02-19 20:20:21 +06:00
Lonami Exo
78fe053ff3 Handle server pongs for manual ping requests 2017-01-19 15:54:28 +01:00
Lonami Exo
8e48455cdc Fix bug introduced in #d08794 found by @k1-hedayati 2017-01-13 21:22:53 +01:00
Fadi Hadzh
d087941bd0 Many code-style improvements 2016-11-30 00:29:42 +03:00
Lonami
7399bfacd1 Implemented receive timeout (#6) and fixed error string 2016-10-03 09:54:17 +02:00
Lonami
e035939aa2 Attempt at fixing #5 (RPCError) and updated README
Now RPC results can be received from the updates thread, as long
as they are errors. This, however, should not happen!
A recursive lock is now used (and released on every method, rather
than only on the `.receive()` one)
2016-10-02 13:30:14 +02:00
Lonami
77aa37d2ad Added an .empty() function to the objects, fixes to msgs_ack
The .empty() function returns an "empty" instance of the object
(attributes set to None). This is used rather than using reflection.

The msgs_ack handling broke stuff (InvokeWithLayer when there were
updates), so this is now handled; yet there may be a better fix
2016-09-26 17:18:25 +02:00
Lonami
36b8a9026f Fixed revert by hand (I hope) 2016-09-26 13:13:11 +02:00
Lonami
4d5e11f4af Revert "Fixed logging out, added a proper function to list sessions"
This reverts commit 87969745f5.
The main purpose is to get rid of the JSON encoding (useless)
2016-09-26 13:06:36 +02:00
Lonami
87969745f5 Fixed logging out, added a proper function to list sessions
By fixing logging out, other request probably got fixed as well,
since now we can also read MessagesAcknowledge requests
2016-09-23 12:50:01 +02:00
Lonami
51a531225f Totally refactored source files location
Now it *should* be easier to turn Telethon
into a pip package
2016-09-17 20:45:12 +02:00