Correctly handle RPC Error for methods returning bool.

Also don't hang CallAsync on ReadRpcResult deserializing error
This commit is contained in:
Wizou 2021-12-07 16:35:23 +01:00
parent 95d9135bd0
commit f289b9e2e5
2 changed files with 19 additions and 10 deletions

View file

@ -698,6 +698,8 @@ namespace WTelegram
var (type, tcs) = PullPendingRequest(msgId);
object result;
if (tcs != null)
{
try
{
if (!type.IsArray)
result = reader.ReadTLValue(type);
@ -712,6 +714,12 @@ namespace WTelegram
Log(1, "");
tcs.SetResult(result);
}
catch (Exception ex)
{
tcs.SetException(ex);
throw;
}
}
else
{
result = reader.ReadTLObject();

View file

@ -130,6 +130,7 @@ namespace TL
{
0x997275b5 => true,
0xbc799737 => false,
Layer.RpcErrorCtor => reader.ReadTLObject(Layer.RpcErrorCtor),
var value => throw new ApplicationException($"Invalid boolean value #{value:x}")
};
case TypeCode.Object: