Commit graph

45 commits

Author SHA1 Message Date
Andres G. Aragoneses d41fdab0ff WIP: fix possible rare error-code 32 problem (seq too low)
Being hit by @Laiteux sometimes
2020-10-14 21:40:07 +02:00
Andres G. Aragoneses 0dd6d70c60 Core: save session as soon as a the sequence is incremented
Just be safe, let's not wait until other part of the code saves the
session, and let's do it right here on the spot, where we know it
changes.

@Laituex was having a ErrCode=32 'msg_seqno too low' problem and this
is the second thing we suspected to be the culprit, because if there's
any issue (e.g. exception) that makes the session not be saved after
the sequence got incremented, then an old sequence would be used the
next time upon loading an old session file.

(Backported from 1b06473108)
2020-10-14 20:53:27 +02:00
Andres G. Aragoneses 79ad0fc21e Core: make MtProtoSender.GenerateSequence() thread-safe
Even if you're not supposed to use multiple threads with TLSharp,
it might be worth it to try to make this sequence increment in
a thread-safe way. Race conditions are always bad even if you know
you are not supposed to use something in a certain way...

@Laituex was having a ErrCode=32 'msg_seqno too low' problem and this
is the first thing we looked at (even if he swore that he was not
using different threads to access the telegram network).

(Backported from 881bdd27a5 )

# Conflicts:
#	src/TgSharp.Core/Session.cs
2020-10-14 20:48:43 +02:00
Andres G. Aragoneses ef499c6fef Core: refactor FileSessionStore class
* Move it into its own file.
* Fix typo in var name "Exsist"
* Move Session.ToBytes() and Session.FromBytes() methods to it.
2020-10-13 15:18:41 +02:00
Andres G. Aragoneses ef89274e1f Core: refactor around Session vs SessionStore
This will help implementing session storage in JSON
format. WIP PRs:
- https://github.com/nblockchain/TgSharp/pull/18
- https://github.com/nblockchain/TgSharp/pull/29
2020-10-13 15:02:00 +02:00
Andres G. Aragoneses 8766824b8b Tests: reenable SendMessageByUserName
Also changing messages in other test to differentiate their origin.
2020-09-20 17:56:31 +08:00
Andres G. Aragoneses 5f62ccf7e3 Core,Tests: fix SendUploadedPhoto
It got broken in one [1] of the LayerUpdate PR [2]
commits because TLInputMediaUploadedPhoto's [3]
Caption property was dropped, but somehow the
replacement of it is now TLRequestSendMedia's [4]
Message property.

[1] 07c4812e99
[2] https://github.com/nblockchain/TgSharp/pull/13
[3] 07c4812e99 (diff-8fc2b6f90844589a5a85c31971236c6a)
[4] 07c4812e99 (diff-6579e69beaef1ce3efce20d9f9a087ea)
2020-09-20 16:59:01 +08:00
Andres Aragoneses cec35c6004 Run tests in CI (Windows OS only for now)
The reason for such a hack when runing in CI is because we
need to make sure we're using higher sequence numbers than
any previous times (and even previous runs of the test suite).

And we run 1 test only for now, later we will enable more.

Other notes:

The trick to extract secrets to files was taken from:
https://stackoverflow.com/a/59482124/544947

The binary-to-text encoding/decoding was taken from:
https://stackoverflow.com/a/42725926/544947

The way to add defines to DefineConstants for MSBuild:
https://stackoverflow.com/a/5053070/544947
2020-09-19 17:00:34 +08:00
Andres Aragoneses e304b00089 Tests.NUnit: add NUnitTestAdapter nuget dep
Otherwise the tests can't actually be run in VS for Windows
(follow-up to 90e16c1b1e).
2020-09-18 02:18:48 -07:00
Andres G. Aragoneses 90e16c1b1e TgSharp.Tests.VS: remove VS-tests layer as it's not needed anymore
Fixes https://github.com/nblockchain/TgSharp/issues/24
2020-09-18 14:07:04 +08:00
Andres G. Aragoneses fe60a44fa7 Core,Tests.VS: fix ref names following rename
Similar to recent commit 42468e2881
2020-09-14 23:58:06 +08:00
Afshin Arani 42468e2881 Tests.VS: fix ref name following rename
This should have been done in d4a4c66d35
2020-09-14 23:51:24 +08:00
Andres G. Aragoneses ff4ba68074 Core: cosmetic, fix whitespace in Session.cs
Some tabs to spaces
2020-09-14 23:51:13 +08:00
Afshin Arani a74f8f2252 Removing constructor double write
In "TLObject.Serialize() -> Serialize(BinaryWriter br) -> SerializeBody"
code path, constructor get written two times instead of once, which
since this code path is currently unused and it's only provided for
completeness, It's undetectable while testing.
2020-09-14 19:02:18 +08:00
Andres G. Aragoneses 3ea897402c TgSharp.TL: fix invalid Context type initialization for TLVector
Fixes https://github.com/nblockchain/TgSharp/issues/15
2020-09-13 18:18:28 +08:00
Andres G. Aragoneses 73313ae199 Core: place the DataCenterIPVersion as first optional parameter
It's the most important one so it should be the first.
2020-09-12 17:22:12 +08:00
Andres G. Aragoneses 94edf1b3eb Rename TeleSharp.TL->TgSharp.TL, fixing TgSharp.Core build (5/5) 2020-09-11 17:15:25 +08:00
Andres G. Aragoneses 350d28c7f8 Rename TeleSharp.TL->TgSharp.TL, fixing base types (4/5)
These types are not auto-generated so they needed to be fixed
manually.
2020-09-11 17:15:25 +08:00
Andres G. Aragoneses 2c0352e38d Rename TeleSharp.TL->TgSharp.TL, auto-generating again (3/5) 2020-09-11 17:15:25 +08:00
Andres G. Aragoneses d4a4c66d35 Rename TeleSharp.TL->TgSharp.TL (2/5) 2020-09-11 17:15:25 +08:00
Andres G. Aragoneses dfb8b52bb0 Generator: start rename of TeleSharp.TL->TgSharp.TL assembly (1/5) 2020-09-11 17:14:19 +08:00
Andres G. Aragoneses 8c3ddeb1b2 Rename TeleSharp.Generator->TgSharp.Generator
For consistency.
2020-09-11 17:14:19 +08:00
Andres G. Aragoneses 75fb3c1488 TeleSharp.TL: fix build
Manual edits needed after code autogeneration.
2020-09-11 17:14:19 +08:00
Andres G. Aragoneses a3ebd07d82 TeleSharp.TL: update generated code
This was the result of running the latest version of the generator,
which fixes many whitespace issues such as trailing whitespace.
2020-09-11 17:14:19 +08:00
Andres G. Aragoneses 7be6122381 Generator: fix many whitespace nits (especially in generated code) 2020-09-11 17:14:18 +08:00
Afshin Arani 3cb0ef63ca api: change layer number 2020-09-11 17:14:18 +08:00
Afshin Arani a853f1210d fix: Duplicate TLVector and API Changes in SendCode Method 2020-09-11 17:14:18 +08:00
Afshin Arani 07c4812e99 api: Update to Layer 108 2020-09-11 17:14:18 +08:00
Andres G. Aragoneses 58df196e08 nuspec: net45->net46 folder, forgotten change in 4.5->4.6 .NET upgrade
Hopefully fixes https://github.com/nblockchain/TgSharp/issues/8
2020-04-16 19:20:30 +08:00
Andres G. Aragoneses c20b2cddc5 Generator: fix regression caused by a typo
It was introduced in here: 012207251b
2020-04-15 18:22:53 +08:00
Andres G. Aragoneses 0a5ab705f8 TeleSharp.TL: try wildcards in the project file
This makes Layer updates much easier, without having to
include new files manually.
2020-04-14 20:42:32 +08:00
Andres G. Aragoneses 012207251b Generator: allow running generator from TeleSharp.TL/ folder
Bear with me, the part of the code that traverses the path with ".."
subfolders is actually not needed, but whatever, I had already written
it.
2020-04-14 16:55:34 +08:00
Andres G. Aragoneses a85f0d8e11 Generator: make it work with Unix paths
It was hardcoding the Windows path separator so this could only
run on Windows before.
2020-04-14 15:58:11 +08:00
Andres G. Aragoneses 292d92e4a2 Core: TelegramClient class hardening, adding readonly keywords 2020-04-12 23:29:58 +08:00
Andres G. Aragoneses 4d09ac711d
Merge pull request #7 from nblockchain/allowReconnecting
Core: allow reconnecting same TelegramClient instance
2020-04-12 23:06:54 +08:00
Andres G. Aragoneses 10632fed22 Generator: default to a schema filename in line to online resource
The schema is in https://core.telegram.org/schema/json so it's more
logical to expect the file to be named `json`, which is what would
happen if you download it with wget, for example.
2020-04-12 23:00:44 +08:00
Andres G. Aragoneses 6ff40930c1 Core: don't expose "reconnect" optional param in public API
It was only meant to be used internally.
2020-04-12 02:29:42 +08:00
solarin 94775cebd8 Core: allow reconnecting same TelegramClient instance
Fixes https://github.com/sochix/TLSharp/issues/930
2020-04-12 02:14:54 +08:00
solarin 874cfd07a2 Core: don't consider MediaOnly DCs at reconnect
Fixes https://github.com/sochix/TLSharp/issues/935

(This commit was brought from TLSharp [1] version 0.1.0.554.)

[1] 9a6e391cae
2020-04-12 02:02:45 +08:00
solarin 6d99916bc6 Added an IPv4/IPv6 toggle to TelegramClient constructor
Fixes https://github.com/sochix/TLSharp/issues/857

(This commit was brought from TLSharp [1] version 0.1.0.532.)

[1] c67801a6c9
2020-04-06 15:29:43 +08:00
Afshin Arani f40474f9e9 Remove unnecessary dependencies
(This commit was brought from TLSharp [1] version 0.1.0.524.)

[1] 6d2c77f5ef
2020-04-05 20:23:44 +08:00
Afshin Arani 3bde55ed1e Upgrade from .NET4.5 to .NET4.6
Because we might use dependencies soon that require this framework.
And anyway these days the .NET world is mostly a hybrid between
.NETStandard/.NETCore libs and .NET4.6 ones, not older than that.

(This commit was brought from TLSharp [1] version 0.1.0.522.)

[1] 709e5be7cc
2020-04-05 20:03:16 +08:00
Andres G. Aragoneses a73028f44e nuspec: fix warning
WARNING: NU5118: File 'D:\a\TLSharp\TLSharp\TLSharp.Core\bin\Debug\TLSharp.Core.dll' is not added because the package already contains file 'lib\net45\TLSharp.Core.dll'

(This commit was brought from TLSharp [1] version 0.1.0.521.)

[1] 6b35857923
2020-04-05 14:54:58 +08:00
Afshin Arani 66942979ab Add GithubActions workflow for nugetUpload 2020-04-02 21:37:33 +08:00
Andres G. Aragoneses 932a733197
Finish TLSharp -> TgSharp rename (#1) 2020-04-02 16:37:22 +08:00