summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-03-16 15:24:32 +0000
committerKegan Dougal <kegan@matrix.org>2015-03-16 15:24:32 +0000
commitf0d6f724a241a50d4a12b1c00af2a4cc6f9a43f1 (patch)
tree3cfad53bcef8a3b08e25e9a08da1f91f78789a5a /synapse
parentImplement ServiceQueuer with tests. (diff)
downloadsynapse-f0d6f724a241a50d4a12b1c00af2a4cc6f9a43f1.tar.xz
Set the service ID as soon as it is known.
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/appservice.py2
-rw-r--r--synapse/storage/appservice.py7
2 files changed, 5 insertions, 4 deletions
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py
index a24f7f5587..58b5b60bb7 100644
--- a/synapse/handlers/appservice.py
+++ b/synapse/handlers/appservice.py
@@ -59,13 +59,13 @@ class ApplicationServicesHandler(object):
             )
             if not stored_service:
                 raise StoreError(404, "Application service not found")
+            app_service.id = stored_service.id
         except StoreError:
             raise SynapseError(
                 403, "Unrecognised application services token. "
                 "Consult the home server admin.",
                 errcode=Codes.FORBIDDEN
             )
-
         app_service.hs_token = self._generate_hs_token()
 
         # create a sender for this application service which is used when
diff --git a/synapse/storage/appservice.py b/synapse/storage/appservice.py
index e928812bc9..06b3a04afc 100644
--- a/synapse/storage/appservice.py
+++ b/synapse/storage/appservice.py
@@ -101,11 +101,12 @@ class ApplicationServiceStore(SQLBaseStore):
         if not service.hs_token:
             raise StoreError(500, "No HS token")
 
-        yield self.runInteraction(
+        as_id = yield self.runInteraction(
             "update_app_service",
             self._update_app_service_txn,
             service
         )
+        service.id = as_id
 
         # update cache TODO: Should this be in the txn?
         for (index, cache_service) in enumerate(self.services_cache):
@@ -124,7 +125,7 @@ class ApplicationServiceStore(SQLBaseStore):
                 "update_app_service_txn: Failed to find as_id for token=",
                 service.token
             )
-            return False
+            return
 
         txn.execute(
             "UPDATE application_services SET url=?, hs_token=?, sender=? "
@@ -144,7 +145,7 @@ class ApplicationServiceStore(SQLBaseStore):
                         "as_id, namespace, regex) values(?,?,?)",
                         (as_id, ns_int, json.dumps(regex_obj))
                     )
-        return True
+        return as_id
 
     def _get_as_id_txn(self, txn, token):
         cursor = txn.execute(