diff --git a/src/TgSharp.Core/Network/MtProtoSender.cs b/src/TgSharp.Core/Network/MtProtoSender.cs index b1699ce..04295a2 100644 --- a/src/TgSharp.Core/Network/MtProtoSender.cs +++ b/src/TgSharp.Core/Network/MtProtoSender.cs @@ -37,7 +37,9 @@ namespace TgSharp.Core.Network private int GenerateSequence(bool confirmed) { - return confirmed ? session.Sequence++ * 2 + 1 : session.Sequence * 2; + lock (session.Lock) { + return confirmed ? session.Sequence++ * 2 + 1 : session.Sequence * 2; + } } public async Task Send(TLMethod request, CancellationToken token = default(CancellationToken)) diff --git a/src/TgSharp.Core/Session.cs b/src/TgSharp.Core/Session.cs index 93db017..c20cdd5 100644 --- a/src/TgSharp.Core/Session.cs +++ b/src/TgSharp.Core/Session.cs @@ -52,6 +52,8 @@ namespace TgSharp.Core public class Session { + internal object Lock = new object (); + public int Sequence { get; set; } #if CI // see the same CI-wrapped assignment in .FromBytes(), but this one will become useful