mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-07-26 14:58:12 +00:00
AdminScreen::onRoomLoginResult()'s only guard was "_phase == LOGIN" -- true for *any* node currently sat at the login screen, not specifically _target. Combined with UITask::onRoomLoginResult()'s current-screen dispatch (not requester-based), a slow reply for an earlier login attempt (this screen's own previous target, or even MessagesScreen's) arriving while the user has since opened Admin on a different, password-less node -- still parked at the blank LOGIN keyboard, so _phase == LOGIN here too -- was accepted as that new node's own login result, flipping _admin_ok/_phase to COMMAND without ever actually authenticating with it. Root-caused by cancelUiPendingLogin() (previous commit): that fix covers the "gave up, then it resolved late" path, but not "a reply for a genuinely different pubkey arrives while merely _phase == LOGIN". Checking pub_key against _target.id.pub_key closes that regardless of which path let the reply through. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>