diff --git a/django/contrib/syndication/views.py b/django/contrib/syndication/views.py
index a6e18e3cd8..2480ff6caa 100644
--- a/django/contrib/syndication/views.py
+++ b/django/contrib/syndication/views.py
@@ -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
 
diff --git a/tests/regressiontests/syndication/tests.py b/tests/regressiontests/syndication/tests.py
index 14dcd0a471..95b4efb4f4 100644
--- a/tests/regressiontests/syndication/tests.py
+++ b/tests/regressiontests/syndication/tests.py
@@ -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'
+        )