@@ -985,23 +985,7 @@ private async Task DoConnectAsync(bool quickResume)
985
985
else
986
986
{
987
987
if ( _dcSession . Layer != 0 && _dcSession . Layer != Layer . Version ) _dcSession . Renew ( ) ;
988
- var initParams = JSONValue . FromJsonElement ( System . Text . Json . JsonDocument . Parse ( Config ( "init_params" ) ) . RootElement ) ;
989
- TLConfig = await this . InvokeWithLayer ( Layer . Version ,
990
- new TL . Methods . InitConnection < Config >
991
- {
992
- flags = TL . Methods . InitConnection < Config > . Flags . has_params ,
993
- api_id = _session . ApiId ,
994
- device_model = Config ( "device_model" ) ,
995
- system_version = Config ( "system_version" ) ,
996
- app_version = Config ( "app_version" ) ,
997
- system_lang_code = Config ( "system_lang_code" ) ,
998
- lang_pack = Config ( "lang_pack" ) ,
999
- lang_code = Config ( "lang_code" ) ,
1000
- params_ = initParams ,
1001
- query = new TL . Methods . Help_GetConfig ( )
1002
- } ) ;
1003
- _dcSession . Layer = Layer . Version ;
1004
- _session . DcOptions = TLConfig . dc_options ;
988
+ await InitConnection ( ) ;
1005
989
if ( _dcSession . DataCenter == null )
1006
990
{
1007
991
_dcSession . DataCenter = _session . DcOptions . Where ( dc => dc . id == TLConfig . this_dc )
@@ -1022,6 +1006,27 @@ private async Task DoConnectAsync(bool quickResume)
1022
1006
Helpers . Log ( 2 , $ "Connected to { ( TLConfig . test_mode ? "Test DC" : "DC" ) } { TLConfig . this_dc } ... { TLConfig . flags & ( Config . Flags ) ~ 0x18E00U } ") ;
1023
1007
}
1024
1008
1009
+ private async Task InitConnection ( )
1010
+ {
1011
+ var initParams = JSONValue . FromJsonElement ( System . Text . Json . JsonDocument . Parse ( Config ( "init_params" ) ) . RootElement ) ;
1012
+ TLConfig = await this . InvokeWithLayer ( Layer . Version ,
1013
+ new TL . Methods . InitConnection < Config >
1014
+ {
1015
+ flags = TL . Methods . InitConnection < Config > . Flags . has_params ,
1016
+ api_id = _session . ApiId ,
1017
+ device_model = Config ( "device_model" ) ,
1018
+ system_version = Config ( "system_version" ) ,
1019
+ app_version = Config ( "app_version" ) ,
1020
+ system_lang_code = Config ( "system_lang_code" ) ,
1021
+ lang_pack = Config ( "lang_pack" ) ,
1022
+ lang_code = Config ( "lang_code" ) ,
1023
+ params_ = initParams ,
1024
+ query = new TL . Methods . Help_GetConfig ( )
1025
+ } ) ;
1026
+ _dcSession . Layer = Layer . Version ;
1027
+ _session . DcOptions = TLConfig . dc_options ;
1028
+ }
1029
+
1025
1030
private async Task KeepAlive ( CancellationToken ct )
1026
1031
{
1027
1032
int ping_id = _random . Next ( ) ;
@@ -1615,6 +1620,11 @@ public async Task<T> Invoke<T>(IMethod<T> query)
1615
1620
got503 = true ;
1616
1621
goto retry ;
1617
1622
}
1623
+ else if ( code == 400 && message == "CONNECTION_NOT_INITED" )
1624
+ {
1625
+ await InitConnection ( ) ;
1626
+ goto retry ;
1627
+ }
1618
1628
else if ( code == 500 && message == "AUTH_RESTART" )
1619
1629
{
1620
1630
_session . UserId = 0 ; // force a full login authorization flow, next time
0 commit comments