Commit graph

117 commits

Author SHA1 Message Date
Andres G. Aragoneses e4d0e97571 Add ability to set directory to store sessions
Now user can set directory to store sessions somewhere else
other than the folder where the program's executable is.

(Based on patch from Felony <onyfel@gmail.com> contributed
in https://github.com/sochix/TLSharp/pull/874 )
2019-10-05 12:41:50 +08:00
Felony 8a15feea7c Add Session getter-only property to TelegramClient
Add Session readonly field which lets the developer read session
properties like current logged-in user's Username et-al.

https://github.com/sochix/TLSharp/pull/875
2019-10-05 10:23:14 +08:00
Felony 4a663d89b3 Fix typo in Receive method declaration 2019-10-02 22:02:54 +08:00
Felony 460ec6fb32 Free TCP network stream
- Use single TCP network stream fore read and write

- Cleanup TCP stream on disposing as microsoft note : https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient.getstream?view=netframework-4.8
2019-10-02 22:02:54 +08:00
Mike 00330c9bd0 Fix Issue #862 (#863)
Fix connection with IPv4 address. A regression introduced in 3224113e4c.
2019-07-12 07:35:26 +08:00
Nicholas Rodine 3224113e4c Modified TcpClient setup to work with IPv6 addresses, fixing #773. 2019-06-28 13:25:35 +08:00
Andres G. Aragoneses 6ce4eceaca Core: fix typo in commented logging code 2019-02-10 13:54:04 +01:00
Andres G. Aragoneses 60a3c62357 Core: avoid possible infinite loop if switching to same DC
People are reporting that under some circumstances, an infinite
loop could happen when TLSharp tries to handle a reconnection to
a different DC, if the DC instructed to be used is the same as
the one that was used in the last connection.

Not sure how could this happen (although the analysis present in
this github issue [1] might help understand it), but this commit
helps to make TLSharp fail fast (with an exception) instead of an
infinite loop from now on, which will help avoiding people file
issues such as [2] and [3] and instead maybe file a proper bug
report easier to understand, to try to fix the underlying root
cause.

[1] https://github.com/sochix/TLSharp/issues/719
[2] https://github.com/sochix/TLSharp/issues/803
[3] https://github.com/sochix/TLSharp/issues/839
2019-02-10 13:53:46 +01:00
Andres G. Aragoneses d04ddb1e0e Core: fix 2 warnings 2019-02-10 13:36:37 +01:00
Marc R Kellerman f2a394ea15 Fixed OffSet paramets for GetUserDialogsAsync & GetHistoryAsync (#831)
Fixes https://github.com/sochix/TLSharp/issues/696

Fixes https://github.com/sochix/TLSharp/issues/597
2019-01-04 18:16:35 +08:00
vlad_neg 47e973823a issue#768 fix exception 'Constructor Invalid Or Context.Init Not Called !' 2018-05-30 07:31:03 +08:00
Andres G. Aragoneses bd7f5f09eb Core(MtProtoSender): mark immutable fields as readonly
To make sure they are kept immutable when upcoming
devs make changes to this file.
2018-03-05 03:54:21 +08:00
Andres G. Aragoneses e6250b1234 Core(MtProtoSender): remove mutation-based dangerous API
It wasn't being used internally, and the use-case to be used
externally is too intricated. There's already a way to change
the handler at contructor time[1] so that should be enough
customization.

[1] 48077961ae
2018-03-05 03:54:21 +08:00
Andres G. Aragoneses 3762664c14 Normalize line endings 2018-03-04 00:39:23 +08:00
Andres G. Aragoneses bf568d80cc TelegramClient: change Connect() to return void instead of always true
If a method that returns bool is never returning false,
it's essentially not giving any information at all, which
means that it should return void. This will help the
consumers of this API to stop thinking that the result
of this function means if the connection was succesful
(which it is, actually, but it was never returning false
because if there's any problem connecting, the result would
be an exception instead).
2018-03-01 23:41:35 +08:00
Andres G. Aragoneses 4ce0f72d6d TelegramClient: move the _sender null check to RequestWithDcMigration()
The method IsPhoneRegisteredAsync() was calling
RequestWithDcMigration() which was the real method
that made use of the _sender field, so we can move
the null check to there.

This will also help track down possible NullReferenceExceptions
that could happen when other callers of this method
arrive with a bad _sender, which might aid us trying
to fix #706.
2018-02-28 08:43:28 +08:00
PROger4ever 7cbc40a090 Make Session constructor public for custom ISessionStore implementations
Load() method in ISessionStore requires public constructor of class Session in some cases.
E.g., loading session from a db or a key-value store, manual loading from text-file, JSON/XML and so on.
2017-12-17 21:04:11 +05:00
Robert Massa 0940d3d982 Prepare requests for re-sending after a DC migration
Fixes #608.
2017-11-21 21:02:51 +08:00
Afshin Arani d15d87833e Remove Old FileMigrationException Handler
this catch block could never be reached anymore because of changes
proposed in #622
2017-11-16 14:04:24 +03:30
Afshin Arani 1877c9061c Handle Import & Export Authorization While Reconnecting
closes #624
2017-11-16 14:03:31 +03:30
Afshin Arani 659becfd51 Make TLVector implement IList 2017-11-09 20:10:22 +08:00
Afshin Arani d769dd3c2f Generator Must Respect MS .NET API guidelines 2017-11-09 19:37:09 +08:00
Robert Massa 3ba3ea53fd Handle DataCenterMigration exceptions in all methods exposed by TelegramClient
This handles the data center migration in more cases.
Fixes bugs like mentioned in #599.
2017-11-08 09:54:05 +08:00
Daniel Vygolov 0015cf494b Added new type of DataCenterMigrateException - NetworkMigrateException
Now we catch not only PhoneMigrateException but all DataCenterMigrationExceptions and reconnect
Fixes #568
2017-09-29 01:09:48 +08:00
Afshin Arani 133b9fdf6c TL-Layer: Update To Layer 66 (#519)
* TL-Layer: Update To Layer 66
2017-07-20 10:07:24 +08:00
AmiNadim 0d55940c12 Added while loop to MakeAuthAsync method. (#477)
fix PhoneMigrationException by reconnecting to DC on the error .
(fix for #458)
2017-05-18 21:06:33 +08:00
salarcode c5187ae12b Implementing IsConnected
Closes #460
2017-04-26 13:18:17 +08:00
Barsham Sotoudeh 26aa35b88a Add missing "offset" parameter in catch block of the GetFile method (#402)
This offset optional parameter was added in a753a1ab13
2017-02-17 23:16:55 +08:00
Starli0n 48077961ae Custom TCP hanlder to allow HTTP proxy auth 2017-01-27 10:58:47 +01:00
Starli0n a753a1ab13 Add offset parameter to GetFile() method 2017-01-19 19:31:27 +01:00
Starli0n 5e6cf48490 Add GetHistoryAsync() to TelegramClient 2017-01-09 18:25:55 +01:00
Mikhail 47d1c10c9d Search user by username with send message test. (#356)
* Search user by username with send message test.
2016-12-28 22:37:34 +08:00
Andres G. Aragoneses 6d73c0e964 Merge pull request #344 from salarcode/master
Implement IDisposable in TelegramClient class
2016-12-16 15:00:46 +08:00
salar2k fc09dba71b Implementing IDisposable 2016-12-16 10:25:33 +03:30
unn4m3d 545e736808 Catch PhoneMigrationException in IsPhoneRegisteredAsync 2016-11-27 19:37:15 +10:00
Afshin Arani 6f9c328349 Add Cloud Password Support 2016-11-16 17:01:00 +03:30
Eugene Timokhov 8b2f227142 Added possibility to do ping request (SendPingAsync method) 2016-11-07 02:40:19 +03:00
Andres G. Aragoneses 5e9bb6163f Throw FloodException instead of calling Thread.Sleep()
Doing this is better when looking at the problem from at least
these 2 points of view:

a) You're working on TLSharp itself: You might be testing some
new things or running TLSharp's tests. Suddenly, if a FLOOD_WAIT
response happens, there's no clear way to know. You just see the
tests taking forever. But if a test has reached a situation in
which Telegram has returned a FLOOD_WAIT error, it's very likely
that what happens is that the TLSharp operation being tested is
actually buggy, which means that the test should FAIL FAST and
show a stacktrace of the problem so that you can see where in the
code was the FLOOD_WAIT received/caused. You shouldn't need to
kill the run of the test suite and hope to hit the problem again
only when you were using the debugger (to be able to pause
execution and examine a stacktrace of where the execution flow is).

b) You're using TLSharp: if you hit a FLOOD_WAIT problem it may
happen because:

b1) TLSharp has a bug: in this case it's better to throw an
exception so that the user can copy the stacktrace and paste
it into a new Github issue.

b2) Your program uses TLSharp sending excessive requests: you
want to have your program know when you hit the limit, to be
able to fix your program to not be so floody. But a call to
Thread.Sleep() doesn't help you to know this, you just know
that suddenly your program has hung, and you don't know why.
You cannot react to the problem, however with an exception you
can react to the problem (for example by examining the time
that the exception provides, as a TimeSpan property, to know
how much your program needs to wait to be able to use TLSharp
again).
2016-11-01 23:52:58 +08:00
Ilya Pirozhenko 24a9ea1ed9 Merge pull request #277 from knocte/friendlerAuthTestFailures
Friendlier exceptions for Auth testing
2016-10-31 11:12:36 +03:00
Andres G. Aragoneses f062c0a7a1 Friendlier exceptions for Auth testing
This change also lets you write the auth code in the
app.config file without the need to recompile/debug.
2016-10-31 00:17:03 +08:00
Andres G. Aragoneses 34e89f3f37 Require some parameters as non empty & not null before proceeding 2016-10-30 23:34:44 +08:00
Andres G. Aragoneses a029c33e34 TelegramClient ctor: move null checks earlier
This way we avoid creating a FileSessionStore object
or initializing the TLContext if API credentials are
not supplied, to be on the safe side.
2016-10-30 23:34:33 +08:00
Andres G. Aragoneses 5161d38456 MigrationExceptions: update URL
Previous commit[1] made the anchor change its name due to
changing slightly the content of the README around the
MIGRATE problem.

[1] e1ff4bb75b
2016-10-30 16:33:29 +08:00
Andres G. Aragoneses e1ff4bb75b Bring back report message to Migration exceptions
When refactoring recently the PHONE_MIGRATE_X error
wrt exception handling [1] I removed the dubious/obsolete
"settings" part, but I mistakenly removed the URL which
tells library consumers that if they face this exception,
it's actually a bug of the library that they should report.

[1] 77867b44e6
2016-10-30 16:16:55 +08:00
Andres G. Aragoneses a521466bb0 Create common abstract DataCenterMigrationException
We can abstract the DC property to a common abstract class
so have a bit of less code and we join these 3 classes together
semantically.
2016-10-30 16:04:32 +08:00
Andres G. Aragoneses c1305ada65 Rename MigrationNeededException to PhoneMigrationException
There are different kind of MIGRATE errors that could be
thrown by the Telegram API, as evidenced by this recent
change:
b06f8a8e11

So this rename tries to make it consistent to the new
exception names:
* FILE_MIGRATE_x -> FileMigrationException
* USER_MIGRATE_y -> UserMigrationException
* PHONE_MIGRATE_z -> PhoneMigrationException
2016-10-30 15:57:45 +08:00
Ilya P d692196dce another fix 2016-10-29 17:13:28 +03:00
Ilya P 58d83cfcfe Path fix 2016-10-29 17:05:40 +03:00
Ilya P 46694e2406 Moved nuspec to a proper place 2016-10-29 15:34:01 +03:00
Ilya P b06f8a8e11 Added File-Migrate feature 2016-10-29 11:47:18 +03:00