summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/app/generic_worker.py8
-rw-r--r--synapse/handlers/presence.py13
2 files changed, 10 insertions, 11 deletions
diff --git a/synapse/app/generic_worker.py b/synapse/app/generic_worker.py
index 207d5ccd02..caef394e1d 100644
--- a/synapse/app/generic_worker.py
+++ b/synapse/app/generic_worker.py
@@ -441,12 +441,12 @@ class GenericWorkerPresence(BasePresenceHandler):
             PresenceState.ONLINE,
             PresenceState.UNAVAILABLE,
             PresenceState.OFFLINE,
+            PresenceState.BUSY,
         )
 
-        if self._busy_presence_enabled:
-            valid_presence += (PresenceState.BUSY,)
-
-        if presence not in valid_presence:
+        if presence not in valid_presence or (
+            presence == PresenceState.BUSY and not self._busy_presence_enabled
+        ):
             raise SynapseError(400, "Invalid presence state")
 
         user_id = target_user.to_string()
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py
index 372017590d..492c4478fa 100644
--- a/synapse/handlers/presence.py
+++ b/synapse/handlers/presence.py
@@ -732,12 +732,12 @@ class PresenceHandler(BasePresenceHandler):
             PresenceState.ONLINE,
             PresenceState.UNAVAILABLE,
             PresenceState.OFFLINE,
+            PresenceState.BUSY,
         )
 
-        if self._busy_presence_enabled:
-            valid_presence += (PresenceState.BUSY,)
-
-        if presence not in valid_presence:
+        if presence not in valid_presence or (
+            presence == PresenceState.BUSY and not self._busy_presence_enabled
+        ):
             raise SynapseError(400, "Invalid presence state")
 
         user_id = target_user.to_string()
@@ -750,9 +750,8 @@ class PresenceHandler(BasePresenceHandler):
             msg = status_msg if presence != PresenceState.OFFLINE else None
             new_fields["status_msg"] = msg
 
-        if (
-            presence == PresenceState.ONLINE or
-            (self._busy_presence_enabled and presence == PresenceState.BUSY)
+        if presence == PresenceState.ONLINE or (
+            self._busy_presence_enabled and presence == PresenceState.BUSY
         ):
             new_fields["last_active_ts"] = self.clock.time_msec()