package telegram

import (
	

	

	

	
	
)

func ( *Client) ( error) {
	if !errors.Is(, mtproto.ErrPFSDropKeysRequired) {
		return
	}

	// Keep DC but wipe key/salt so next reconnect performs full key bootstrap.
	 := .session.Load().DC
	.log.Warn(context.Background(), "Dropping stored primary session key after PFS key reset request",
		log.Int("dc_id", ),
	)
	.session.Store(pool.Session{DC: })

	.sessionsMux.Lock()
	if ,  := .sessions[];  {
		.Store(pool.Session{DC: })
	}
	.sessionsMux.Unlock()
}

func ( *Client) ( int,  error) {
	if !errors.Is(, mtproto.ErrPFSDropKeysRequired) {
		// Preserve old error path for non-PFS failures.
		if .onDead != nil {
			.onDead()
		}
		return
	}

	.log.Warn(context.Background(), "Dropping stored DC session key after PFS key reset request",
		log.Int("dc_id", ),
	)
	.sessionsMux.Lock()
	,  := .sessions[]
	if ! {
		 = pool.NewSyncSession(pool.Session{DC: })
		.sessions[] = 
	}
	.Store(pool.Session{DC: })
	.sessionsMux.Unlock()

	if .onDead != nil {
		.onDead()
	}
}