Handle CONNECTION_NOT_INITED

This commit is contained in:
Wizou 2025-03-12 02:17:36 +01:00
parent 1ecd7047ef
commit 0867c044fa
2 changed files with 28 additions and 18 deletions

View file

@ -47,7 +47,7 @@ jobs:
JSON: | JSON: |
{ {
"status": "success", "complete": true, "commitMessage": ${{ toJSON(github.event.head_commit.message) }}, "status": "success", "complete": true, "commitMessage": ${{ toJSON(github.event.head_commit.message) }},
"message": "{ \"commitId\": \"${{ github.event.head_commit.id }}\", \"buildNumber\": \"${{ env.VERSION }}\", \"teamProjectName\": \"${{ github.event.repository.name }}\"}" "message": "{ \"commitId\": \"${{ github.sha }}\", \"buildNumber\": \"${{ env.VERSION }}\", \"repoName\": \"${{ github.repository }}\"}"
} }
run: | run: |
curl -X POST -H "Content-Type: application/json" -d "$JSON" ${{ secrets.DEPLOYED_WEBHOOK }} curl -X POST -H "Content-Type: application/json" -d "$JSON" ${{ secrets.DEPLOYED_WEBHOOK }}

View file

@ -985,23 +985,7 @@ namespace WTelegram
else else
{ {
if (_dcSession.Layer != 0 && _dcSession.Layer != Layer.Version) _dcSession.Renew(); if (_dcSession.Layer != 0 && _dcSession.Layer != Layer.Version) _dcSession.Renew();
var initParams = JSONValue.FromJsonElement(System.Text.Json.JsonDocument.Parse(Config("init_params")).RootElement); await InitConnection();
TLConfig = await this.InvokeWithLayer(Layer.Version,
new TL.Methods.InitConnection<Config>
{
flags = TL.Methods.InitConnection<Config>.Flags.has_params,
api_id = _session.ApiId,
device_model = Config("device_model"),
system_version = Config("system_version"),
app_version = Config("app_version"),
system_lang_code = Config("system_lang_code"),
lang_pack = Config("lang_pack"),
lang_code = Config("lang_code"),
params_ = initParams,
query = new TL.Methods.Help_GetConfig()
});
_dcSession.Layer = Layer.Version;
_session.DcOptions = TLConfig.dc_options;
if (_dcSession.DataCenter == null) if (_dcSession.DataCenter == null)
{ {
_dcSession.DataCenter = _session.DcOptions.Where(dc => dc.id == TLConfig.this_dc) _dcSession.DataCenter = _session.DcOptions.Where(dc => dc.id == TLConfig.this_dc)
@ -1022,6 +1006,27 @@ namespace WTelegram
Helpers.Log(2, $"Connected to {(TLConfig.test_mode ? "Test DC" : "DC")} {TLConfig.this_dc}... {TLConfig.flags & (Config.Flags)~0x18E00U}"); Helpers.Log(2, $"Connected to {(TLConfig.test_mode ? "Test DC" : "DC")} {TLConfig.this_dc}... {TLConfig.flags & (Config.Flags)~0x18E00U}");
} }
private async Task InitConnection()
{
var initParams = JSONValue.FromJsonElement(System.Text.Json.JsonDocument.Parse(Config("init_params")).RootElement);
TLConfig = await this.InvokeWithLayer(Layer.Version,
new TL.Methods.InitConnection<Config>
{
flags = TL.Methods.InitConnection<Config>.Flags.has_params,
api_id = _session.ApiId,
device_model = Config("device_model"),
system_version = Config("system_version"),
app_version = Config("app_version"),
system_lang_code = Config("system_lang_code"),
lang_pack = Config("lang_pack"),
lang_code = Config("lang_code"),
params_ = initParams,
query = new TL.Methods.Help_GetConfig()
});
_dcSession.Layer = Layer.Version;
_session.DcOptions = TLConfig.dc_options;
}
private async Task KeepAlive(CancellationToken ct) private async Task KeepAlive(CancellationToken ct)
{ {
int ping_id = _random.Next(); int ping_id = _random.Next();
@ -1615,6 +1620,11 @@ namespace WTelegram
got503 = true; got503 = true;
goto retry; goto retry;
} }
else if (code == 400 && message == "CONNECTION_NOT_INITED")
{
await InitConnection();
goto retry;
}
else if (code == 500 && message == "AUTH_RESTART") else if (code == 500 && message == "AUTH_RESTART")
{ {
_session.UserId = 0; // force a full login authorization flow, next time _session.UserId = 0; // force a full login authorization flow, next time