Browse Source

fix the check for whether `is_url` to match all the other ones in codebase (#3405)

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Michael Telatynski 5 years ago
parent
commit
a27e501b09
2 changed files with 9 additions and 3 deletions
  1. 1 0
      changelog.d/3405.bugfix
  2. 8 3
      synapse/api/filtering.py

+ 1 - 0
changelog.d/3405.bugfix

@@ -0,0 +1 @@
+Fix contains_url check to be consistent with other instances in code-base and check that value is an instance of string.

+ 8 - 3
synapse/api/filtering.py

@@ -12,6 +12,8 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+from six import text_type
+
 import jsonschema
 from canonicaljson import json
 from jsonschema import FormatChecker
@@ -353,7 +355,7 @@ class Filter(object):
             sender = event.user_id
             room_id = None
             ev_type = "m.presence"
-            is_url = False
+            contains_url = False
         else:
             sender = event.get("sender", None)
             if not sender:
@@ -368,13 +370,16 @@ class Filter(object):
 
             room_id = event.get("room_id", None)
             ev_type = event.get("type", None)
-            is_url = "url" in event.get("content", {})
+
+            content = event.get("content", {})
+            # check if there is a string url field in the content for filtering purposes
+            contains_url = isinstance(content.get("url"), text_type)
 
         return self.check_fields(
             room_id,
             sender,
             ev_type,
-            is_url,
+            contains_url,
         )
 
     def check_fields(self, room_id, sender, event_type, contains_url):