mirror of https://github.com/python/cpython.git
Sjoerd Mullender writes:
If a filename on Windows starts with \\, it is converted to a URL which starts with ////. If this URL is passed to urlparse.urlparse you get a path that starts with // (and an empty netloc). If you pass the result back to urlparse.urlunparse, you get a URL that starts with //, which is parsed differently by urlparse.urlparse. The fix is to add the (empty) netloc with accompanying slashes if the path in urlunparse starts with //. Do this for all schemes that use a netloc.
This commit is contained in:
parent
e3fd1064de
commit
f3963b1269
|
@ -112,9 +112,9 @@ def urlparse(url, scheme = '', allow_fragments = 1):
|
|||
# had redundant delimiters, e.g. a ? with an empty query (the draft
|
||||
# states that these are equivalent).
|
||||
def urlunparse((scheme, netloc, url, params, query, fragment)):
|
||||
if netloc:
|
||||
if netloc or (scheme in uses_netloc and url[:2] == '//'):
|
||||
if url[:1] != '/': url = '/' + url
|
||||
url = '//' + netloc + url
|
||||
url = '//' + (netloc or '') + url
|
||||
if scheme:
|
||||
url = scheme + ':' + url
|
||||
if params:
|
||||
|
|
Loading…
Reference in New Issue