diff --git a/packages/core/src/network/mtproto-session.ts b/packages/core/src/network/mtproto-session.ts index 2aa5db53..9d4342bf 100644 --- a/packages/core/src/network/mtproto-session.ts +++ b/packages/core/src/network/mtproto-session.ts @@ -155,16 +155,20 @@ export class MtprotoSession { */ reset(withAuthKey = false): void { if (withAuthKey) { - this._authKey.reset() - this._authKeyTemp.reset() - this._authKeyTempSecondary.reset() + this.resetAuthKey() } clearTimeout(this.current429Timeout) - this.resetState() + this.resetState(withAuthKey) this.resetLastPing(true) } + resetAuthKey(): void { + this._authKey.reset() + this._authKeyTemp.reset() + this._authKeyTempSecondary.reset() + } + /** * Reset session state and generate a new session ID. * diff --git a/packages/core/src/network/session-connection.ts b/packages/core/src/network/session-connection.ts index d58ce4f6..753a68de 100644 --- a/packages/core/src/network/session-connection.ts +++ b/packages/core/src/network/session-connection.ts @@ -218,13 +218,13 @@ export class SessionConnection extends PersistentConnection { } // otherwise, 404 must be referencing the perm_key - this.log.info('transport error 404, reauthorizing') } // there happened a little trolling - this._session.reset(true) + this.log.info('transport error 404, reauthorizing') + this._session.resetAuthKey() + this._resetSession() this.emit('key-change', null) - this._authorize() return } @@ -1290,6 +1290,7 @@ export class SessionConnection extends PersistentConnection { this._queuedDestroySession.push(this._session._sessionId) this._session.resetState(true) + this._onAllFailed('session reset') this.reconnect() // once we receive new_session_created, all pending messages will be resent.