Martin Panter added the comment:
I do not believe the change fixes anything on its own. It essentially just
changed the error message to something even worse, and the added test case
already passes without the change.
I am posting a patch which cleans up the code and related tests. It also fixes
three minor theoretical bugs:
>>> urlopen("file://127.0.0.1//dev/null") # Should succeed
urllib.error.URLError: <urlopen error unknown url type: file>
>>> urlopen("file://127.1//dev/null") # 127.1 is localhost; should succeed
urllib.error.URLError: <urlopen error file:// scheme is supported only on
localhost>
>>> urlopen("file://remote/missing") # Should not try to access local file
urllib.error.URLError: <urlopen error [Errno 2] No such file or directory:
'/missing'>
The localhost check in file_open() was added by revision 982c8ec73ae3 for Issue
10063. But notice how all the test cases involve strange URLs like
file://ftp.example.com//foo.txt, with second extra double slash. I removed the
check, because it is redundant with the more thorough and correct check that
has existed since 1994 (revision 020d8c2d9d3c) in open_local_file().
For cases like file://remote/nonlocal-file, I think it is better to raise the
correct error, even if that requires a DNS check, rather than raising a faster
error with a misleading message. So I moved the check before the stat() call
inside open_local_file().
----------
keywords: +patch
stage: -> patch review
type: -> behavior
versions: +Python 3.5, Python 3.6
Added file: http://bugs.python.org/file39513/file-handler.patch
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue21970>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com