From f5a6a40d7f2f960b82e5a007dad3a9d2e9c2f547 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Fri, 5 Apr 2019 16:22:32 +0200
Subject: [PATCH] Fix #787: federation issue due to missing error handling

---
 api/funkwhale_api/federation/activity.py | 2 +-
 api/tests/federation/test_activity.py    | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py
index 4141da79..4e6e8236 100644
--- a/api/funkwhale_api/federation/activity.py
+++ b/api/funkwhale_api/federation/activity.py
@@ -388,7 +388,7 @@ def recursive_getattr(obj, key, permissive=False):
 
 def match_route(route, payload):
     for key, value in route.items():
-        payload_value = recursive_getattr(payload, key)
+        payload_value = recursive_getattr(payload, key, permissive=True)
         if payload_value != value:
             return False
 
diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py
index e195a758..c69ac5d7 100644
--- a/api/tests/federation/test_activity.py
+++ b/api/tests/federation/test_activity.py
@@ -91,6 +91,11 @@ def test_receive_skips_if_no_matching_route(factories, now, mocker):
     assert models.Activity.objects.count() == 0
 
 
+def test_match_route_ignore_payload_issues():
+    payload = {"object": "http://hello"}
+    assert activity.match_route({"object.type": "Test"}, payload) is False
+
+
 @pytest.mark.parametrize(
     "params, policy_kwargs, expected",
     [
-- 
GitLab