Skip to content
Snippets Groups Projects
Unverified Commit 2cb74669 authored by Erik Johnston's avatar Erik Johnston Committed by GitHub
Browse files

Merge pull request #6161 from matrix-org/erikj/dont_regen_user_id_on_failure

Don't regenerate numeric user ID if registration fails.
parents dc795ba7 0186ec9d
No related branches found
No related tags found
No related merge requests found
Fix bug where guest account registration can wedge after restart.
...@@ -217,10 +217,9 @@ class RegistrationHandler(BaseHandler): ...@@ -217,10 +217,9 @@ class RegistrationHandler(BaseHandler):
else: else:
# autogen a sequential user ID # autogen a sequential user ID
attempts = 0
user = None user = None
while not user: while not user:
localpart = yield self._generate_user_id(attempts > 0) localpart = yield self._generate_user_id()
user = UserID(localpart, self.hs.hostname) user = UserID(localpart, self.hs.hostname)
user_id = user.to_string() user_id = user.to_string()
yield self.check_user_id_not_appservice_exclusive(user_id) yield self.check_user_id_not_appservice_exclusive(user_id)
...@@ -238,7 +237,6 @@ class RegistrationHandler(BaseHandler): ...@@ -238,7 +237,6 @@ class RegistrationHandler(BaseHandler):
# if user id is taken, just generate another # if user id is taken, just generate another
user = None user = None
user_id = None user_id = None
attempts += 1
if not self.hs.config.user_consent_at_registration: if not self.hs.config.user_consent_at_registration:
yield self._auto_join_rooms(user_id) yield self._auto_join_rooms(user_id)
...@@ -379,10 +377,10 @@ class RegistrationHandler(BaseHandler): ...@@ -379,10 +377,10 @@ class RegistrationHandler(BaseHandler):
) )
@defer.inlineCallbacks @defer.inlineCallbacks
def _generate_user_id(self, reseed=False): def _generate_user_id(self):
if reseed or self._next_generated_user_id is None: if self._next_generated_user_id is None:
with (yield self._generate_user_id_linearizer.queue(())): with (yield self._generate_user_id_linearizer.queue(())):
if reseed or self._next_generated_user_id is None: if self._next_generated_user_id is None:
self._next_generated_user_id = ( self._next_generated_user_id = (
yield self.store.find_next_generated_user_id_localpart() yield self.store.find_next_generated_user_id_localpart()
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment