Commit 40b95326 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Fixed #16753 -- Supported network-path references in the syndication...

Fixed #16753 -- Supported network-path references in the syndication framework. Thanks cato for the report and patch.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@17108 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 6f66b551
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -9,15 +9,15 @@ from django.utils.html import escape
from django.utils.timezone import is_naive

def add_domain(domain, url, secure=False):
    if not (url.startswith('http://')
    protocol = 'https' if secure else 'http'
    if url.startswith('//'):
        # Support network-path reference (see #16753) - RSS requires a protocol
        url = '%s:%s' % (protocol, url)
    elif not (url.startswith('http://')
            or url.startswith('https://')
            or url.startswith('mailto:')):
        # 'url' must already be ASCII and URL-quoted, so no need for encoding
        # conversions here.
        if secure:
            protocol = 'https'
        else:
            protocol = 'http'
        url = iri_to_uri(u'%s://%s%s' % (protocol, domain, url))
    return url

+4 −0
Original line number Diff line number Diff line
@@ -305,3 +305,7 @@ class SyndicationFeedTest(FeedTestCase):
            views.add_domain('example.com', 'mailto:uhoh@djangoproject.com'),
            'mailto:uhoh@djangoproject.com'
        )
        self.assertEqual(
            views.add_domain('example.com', '//example.com/foo/?arg=value'),
            'http://example.com/foo/?arg=value'
        )