sochix / TLSharp

Telegram client library implemented in C#
1k stars 380 forks source link

throw InvalidOperationException("invalid checksum! skip"); #406

Open ace37 opened 7 years ago

ace37 commented 7 years ago

When i call GetUserDialogsAsync and GetHistoryAsync in many threads

System.AggregateException: Some errors. ---> System.InvalidOperationException: invalid checksum! skip в TLSharp.Core.Network.TcpTransport.d__4.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в TLSharp.Core.Network.MtProtoSender.d__9.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter1.GetResult() в TLSharp.Core.TelegramClient.<SendRequestAsync>d__181.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в TLSharp.Core.TelegramClient.d__22.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

knocte commented 7 years ago

Can you paste the exception in English instead of Russian? Thanks

ace37 commented 7 years ago

it is not important messages about start and end previous stack block

Also after that exception if i call SendRequestAsync i got

System.AggregateException: Some errors. ---> System.OverflowException: в TLSharp.Core.Network.TcpTransport.d__4.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в TLSharp.Core.Network.MtProtoSender.d__9.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter1.GetResult() в TLSharp.Core.TelegramClient.<SendRequestAsync>d__181.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в TLSharp.Core.TelegramClient.d__22.MoveNext()

в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

DanyaSWorlD commented 6 years ago

got same problem


in TLSharp.Core.Network.TcpTransport.<Receieve>d__4.MoveNext()

in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
in TLSharp.Core.Network.MtProtoSender.<Receive>d__9.MoveNext()

in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
in TLSharp.Core.TelegramClient.<RequestWithDcMigration>d__11.MoveNext()

in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

any solution?

DanyaSWorlD commented 6 years ago

Problem simply solved by deleting "session.dat" file

DanyaSWorlD commented 6 years ago

Going deeper. "session.dat" file needs to be renewed after ewery time im trying to get media attached to message like this:

                var media = (TLMessageMediaPhoto)message.Media;
                var tlPhoto = (TLPhoto)media.Photo;
                var size = tlPhoto.Sizes.OfType<TLPhotoSize>().Last();
                var tf = (TLFileLocation)size.Location;
                var tlInputFile = new TLInputFileLocation
                {
                    LocalId = tf.LocalId,
                    Secret = tf.Secret,
                    VolumeId = tf.VolumeId
                };
                var file = await TG_UserInfo.Client.GetFile(tlInputFile, 1024 * 32);
                var bytes = file.Bytes;