fix: resume the Login on a reopened connection - #391
Open
diegolmello wants to merge 6 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
A Reopen builds a new connection, and the DDP session the previous Login belonged to is gone with the old one. Nothing logged in again on the new connection, so a reopened Socket carried no authenticated identity — closes #359.
onOpennow resumes the Login when a token is held. It fires afteremit("open")and after the open resolves, and it is not awaited: the open path never waits on the Login, and a failure is logged rather than thrown into the websocket callback.loggedInwasconnected && !!resume. The token survives across connections and nothing clears it, so a reopened, anonymous session reported itself logged in. Authentication is now tracked per connection: set whenloginresolves, cleared when a connection is created, on close, and on logout. The token store is unchanged — it is what makes the resume possible.Steps to reproduce
loginmethod call goes out, whileloggedInreports true.Tests
loginmethod call carrying the resume tokenloginmethod callopenis emitted without waiting on the login responseloggedInis false between the reopen and the login result, and true after it