mirror of
https://github.com/wiz0u/WTelegramClient.git
synced 2025-12-06 06:52:01 +01:00
Correctly handle RPC Error for methods returning bool.
Also don't hang CallAsync on ReadRpcResult deserializing error
This commit is contained in:
parent
95d9135bd0
commit
f289b9e2e5
|
|
@ -699,18 +699,26 @@ namespace WTelegram
|
|||
object result;
|
||||
if (tcs != null)
|
||||
{
|
||||
if (!type.IsArray)
|
||||
result = reader.ReadTLValue(type);
|
||||
else if (reader.ReadUInt32() == Layer.RpcErrorCtor)
|
||||
result = reader.ReadTLObject(Layer.RpcErrorCtor);
|
||||
else
|
||||
try
|
||||
{
|
||||
reader.BaseStream.Position -= 4;
|
||||
result = reader.ReadTLValue(type);
|
||||
if (!type.IsArray)
|
||||
result = reader.ReadTLValue(type);
|
||||
else if (reader.ReadUInt32() == Layer.RpcErrorCtor)
|
||||
result = reader.ReadTLObject(Layer.RpcErrorCtor);
|
||||
else
|
||||
{
|
||||
reader.BaseStream.Position -= 4;
|
||||
result = reader.ReadTLValue(type);
|
||||
}
|
||||
if (type.IsEnum) result = Enum.ToObject(type, result);
|
||||
Log(1, "");
|
||||
tcs.SetResult(result);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
tcs.SetException(ex);
|
||||
throw;
|
||||
}
|
||||
if (type.IsEnum) result = Enum.ToObject(type, result);
|
||||
Log(1, "");
|
||||
tcs.SetResult(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue