summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2019-03-19 11:43:46 +0000
committerRichard van der Hoff <richard@matrix.org>2019-03-19 11:43:46 +0000
commit45c4e19c74d8b3e05af221ffc5c81e04bd427fcc (patch)
tree6a6e9743f1c6926690c6e070abec0dbc5efc0fa7 /synapse
parentEnforce hs_disabled_message correctly (diff)
parentfix test_auto_create_auto_join_where_no_consent (#4886) (diff)
downloadsynapse-45c4e19c74d8b3e05af221ffc5c81e04bd427fcc.tar.xz
Merge remote-tracking branch 'origin/develop' into HEAD
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/message.py13
-rw-r--r--synapse/handlers/register.py5
-rw-r--r--synapse/storage/schema/delta/53/user_dir_populate.sql2
3 files changed, 16 insertions, 4 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index c762b58902..55787563c0 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -243,7 +243,14 @@ class EventCreationHandler(object):
 
         self.spam_checker = hs.get_spam_checker()
 
-        if self.config.block_events_without_consent_error is not None:
+        self._block_events_without_consent_error = (
+            self.config.block_events_without_consent_error
+        )
+
+        # we need to construct a ConsentURIBuilder here, as it checks that the necessary
+        # config options, but *only* if we have a configuration for which we are
+        # going to need it.
+        if self._block_events_without_consent_error:
             self._consent_uri_builder = ConsentURIBuilder(self.config)
 
     @defer.inlineCallbacks
@@ -378,7 +385,7 @@ class EventCreationHandler(object):
         Raises:
             ConsentNotGivenError: if the user has not given consent yet
         """
-        if self.config.block_events_without_consent_error is None:
+        if self._block_events_without_consent_error is None:
             return
 
         # exempt AS users from needing consent
@@ -405,7 +412,7 @@ class EventCreationHandler(object):
         consent_uri = self._consent_uri_builder.build_user_consent_uri(
             requester.user.localpart,
         )
-        msg = self.config.block_events_without_consent_error % {
+        msg = self._block_events_without_consent_error % {
             'consent_uri': consent_uri,
         }
         raise ConsentNotGivenError(
diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py
index 0ec16b1d2e..68f73d3793 100644
--- a/synapse/handlers/register.py
+++ b/synapse/handlers/register.py
@@ -23,6 +23,7 @@ from synapse.api.constants import LoginType
 from synapse.api.errors import (
     AuthError,
     Codes,
+    ConsentNotGivenError,
     InvalidCaptchaError,
     LimitExceededError,
     RegistrationError,
@@ -311,6 +312,10 @@ class RegistrationHandler(BaseHandler):
                         )
                 else:
                     yield self._join_user_to_room(fake_requester, r)
+            except ConsentNotGivenError as e:
+                # Technically not necessary to pull out this error though
+                # moving away from bare excepts is a good thing to do.
+                logger.error("Failed to join new user to %r: %r", r, e)
             except Exception as e:
                 logger.error("Failed to join new user to %r: %r", r, e)
 
diff --git a/synapse/storage/schema/delta/53/user_dir_populate.sql b/synapse/storage/schema/delta/53/user_dir_populate.sql
index 955b8fdbd6..ffcc896b58 100644
--- a/synapse/storage/schema/delta/53/user_dir_populate.sql
+++ b/synapse/storage/schema/delta/53/user_dir_populate.sql
@@ -23,7 +23,7 @@ INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES
 
 -- Insert all users, if search_all_users is on
 INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES
-    ('populate_user_directory_process_users', '{}', 'populate_user_directory_rooms');
+    ('populate_user_directory_process_users', '{}', 'populate_user_directory_process_rooms');
 
 -- Clean up staging tables
 INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES