From 206ae296b6d94203bbf1f475ebcc1b8997b32e33 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Sun, 8 Apr 2018 13:33:36 +0200
Subject: [PATCH] Ensure timeout in requests

---
 api/funkwhale_api/federation/activity.py  | 1 +
 api/funkwhale_api/federation/actors.py    | 2 ++
 api/funkwhale_api/federation/webfinger.py | 2 +-
 api/funkwhale_api/music/views.py          | 1 +
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py
index 7d20d7f9cc..a674c70e3e 100644
--- a/api/funkwhale_api/federation/activity.py
+++ b/api/funkwhale_api/federation/activity.py
@@ -73,6 +73,7 @@ def deliver(activity, on_behalf_of, to=[]):
             auth=auth,
             json=activity,
             url=recipient_actor.inbox_url,
+            timeout=5,
             headers={
                 'Content-Type': 'application/activity+json'
             }
diff --git a/api/funkwhale_api/federation/actors.py b/api/funkwhale_api/federation/actors.py
index 2f6c04de0f..d3a2093a97 100644
--- a/api/funkwhale_api/federation/actors.py
+++ b/api/funkwhale_api/federation/actors.py
@@ -31,6 +31,7 @@ def remove_tags(text):
 def get_actor_data(actor_url):
     response = session.get_session().get(
         actor_url,
+        timeout=5,
         headers={
             'Accept': 'application/activity+json',
         }
@@ -42,6 +43,7 @@ def get_actor_data(actor_url):
         raise ValueError(
             'Invalid actor payload: {}'.format(response.text))
 
+
 def get_actor(actor_url):
     data = get_actor_data(actor_url)
     serializer = serializers.ActorSerializer(data=data)
diff --git a/api/funkwhale_api/federation/webfinger.py b/api/funkwhale_api/federation/webfinger.py
index 011dcf576f..444998b945 100644
--- a/api/funkwhale_api/federation/webfinger.py
+++ b/api/funkwhale_api/federation/webfinger.py
@@ -47,7 +47,7 @@ def get_resource(resource_string):
     username, hostname = clean_acct(resource, ensure_local=False)
     url = 'https://{}/.well-known/webfinger?resource={}'.format(
         hostname, resource_string)
-    response = session.get_session().get(url)
+    response = session.get_session().get(url, timeout=5)
     response.raise_for_status()
     serializer = serializers.ActorWebfingerSerializer(data=response.json())
     serializer.is_valid(raise_exception=True)
diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py
index 0870d98163..6bbc21db7f 100644
--- a/api/funkwhale_api/music/views.py
+++ b/api/funkwhale_api/music/views.py
@@ -218,6 +218,7 @@ class TrackFileViewSet(viewsets.ReadOnlyModelViewSet):
                 library_track.audio_url,
                 auth=auth,
                 stream=True,
+                timeout=20,
                 headers={
                     'Content-Type': 'application/activity+json'
                 })
-- 
GitLab