Forgot to backport the rest of #1637.
diff --git a/Lib/urlparse.py b/Lib/urlparse.py
index ad5d75f..4bc577c 100644
--- a/Lib/urlparse.py
+++ b/Lib/urlparse.py
@@ -169,13 +169,12 @@
return url[:i], url[i+1:]
def _splitnetloc(url, start=0):
- for c in '/?#': # the order is important!
- delim = url.find(c, start)
- if delim >= 0:
- break
- else:
- delim = len(url)
- return url[start:delim], url[delim:]
+ delim = len(url) # position of end of domain part of url, default is end
+ for c in '/?#': # look for delimiters; the order is NOT important
+ wdelim = url.find(c, start) # find first of this delim
+ if wdelim >= 0: # if found
+ delim = min(delim, wdelim) # use earliest delim position
+ return url[start:delim], url[delim:] # return (domain, rest)
def urlsplit(url, scheme='', allow_fragments=True):
"""Parse a URL into 5 components:
diff --git a/Misc/NEWS b/Misc/NEWS
index 299b3af..7f3f628 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -53,6 +53,8 @@
Library
-------
+- Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
+
- Issue #1735: TarFile.extractall() now correctly sets directory permissions
and times.