You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2019/09/30 17:31:48 UTC
[allura] branch db/8334 created (now 5c4baf3)
This is an automated email from the ASF dual-hosted git repository.
brondsem pushed a change to branch db/8334
in repository https://gitbox.apache.org/repos/asf/allura.git.
at 5c4baf3 [#8334] set a global socket default timeout for oembed usage
This branch includes the following new commits:
new 5c4baf3 [#8334] set a global socket default timeout for oembed usage
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[allura] 01/01: [#8334] set a global socket default timeout for
oembed usage
Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
brondsem pushed a commit to branch db/8334
in repository https://gitbox.apache.org/repos/asf/allura.git
commit 5c4baf3b1ca0627f331854c838e4b8013fbc06dd
Author: Dave Brondsema <da...@brondsema.net>
AuthorDate: Mon Sep 30 13:31:40 2019 -0400
[#8334] set a global socket default timeout for oembed usage
---
Allura/allura/lib/macro.py | 13 +++++++++----
Allura/allura/lib/utils.py | 11 +++++++++++
2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/Allura/allura/lib/macro.py b/Allura/allura/lib/macro.py
index 6746a48..abb4776 100644
--- a/Allura/allura/lib/macro.py
+++ b/Allura/allura/lib/macro.py
@@ -31,6 +31,7 @@ from tg import request
from paste.deploy.converters import asint
from bs4 import BeautifulSoup
+from allura.lib.utils import socket_default_timeout
from . import helpers as h
from . import security
@@ -452,10 +453,14 @@ def embed(url=None):
'http://*.youtube-nocookie.com/*', 'https://*.youtube-nocookie.com/*',
])
consumer.addEndpoint(endpoint)
- try:
- html = consumer.embed(url)['html']
- except oembed.OEmbedNoEndpoint:
- html = None
+
+ # workaround for https://github.com/abarmat/python-oembed/pull/9 not being implemented yet
+ with socket_default_timeout(5):
+
+ try:
+ html = consumer.embed(url)['html']
+ except oembed.OEmbedNoEndpoint:
+ html = None
if html:
# youtube has a trailing ")" at the moment
diff --git a/Allura/allura/lib/utils.py b/Allura/allura/lib/utils.py
index 0203f7a..fdf0340 100644
--- a/Allura/allura/lib/utils.py
+++ b/Allura/allura/lib/utils.py
@@ -33,6 +33,7 @@ import collections
from urlparse import urlparse
import urllib
import types
+import socket
import tg
import emoji
@@ -862,3 +863,13 @@ def urlencode(params):
def close_ipv4_addrs(ip1, ip2):
return ip1.split('.')[0:3] == ip2.split('.')[0:3]
+
+
+@contextmanager
+def socket_default_timeout(timeout):
+ orig_timeout = socket.getdefaulttimeout()
+ socket.setdefaulttimeout(timeout)
+ try:
+ yield
+ finally:
+ socket.setdefaulttimeout(orig_timeout)
\ No newline at end of file