mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Patch [ 972332 ] urllib2 FTPHandler bugs / John J. Lee
Modified Files: urllib2.py test/test_urllib2.py
This commit is contained in:
parent
e246508779
commit
3f7cb5d9f5
2 changed files with 11 additions and 12 deletions
|
|
@ -314,15 +314,12 @@ class HandlerTests(unittest.TestCase):
|
||||||
("ftp://localhost/foo/bar/baz.html",
|
("ftp://localhost/foo/bar/baz.html",
|
||||||
"localhost", ftplib.FTP_PORT, "I",
|
"localhost", ftplib.FTP_PORT, "I",
|
||||||
["foo", "bar"], "baz.html", "text/html"),
|
["foo", "bar"], "baz.html", "text/html"),
|
||||||
# XXXX Bug: FTPHandler tries to gethostbyname "localhost:80", with the
|
("ftp://localhost:80/foo/bar/",
|
||||||
# port still there.
|
"localhost", 80, "D",
|
||||||
## ("ftp://localhost:80/foo/bar/",
|
["foo", "bar"], "", None),
|
||||||
## "localhost", 80, "D",
|
("ftp://localhost/baz.gif;type=a",
|
||||||
## ["foo", "bar"], "", None),
|
"localhost", ftplib.FTP_PORT, "A",
|
||||||
# XXXX bug: second use of splitattr() in FTPHandler should be splitvalue()
|
[], "baz.gif", None), # XXX really this should guess image/gif
|
||||||
## ("ftp://localhost/baz.gif;type=a",
|
|
||||||
## "localhost", ftplib.FTP_PORT, "A",
|
|
||||||
## [], "baz.gif", "image/gif"),
|
|
||||||
]:
|
]:
|
||||||
r = h.ftp_open(Request(url))
|
r = h.ftp_open(Request(url))
|
||||||
# ftp authentication not yet implemented by FTPHandler
|
# ftp authentication not yet implemented by FTPHandler
|
||||||
|
|
@ -333,7 +330,7 @@ class HandlerTests(unittest.TestCase):
|
||||||
self.assertEqual(h.ftpwrapper.filename, filename)
|
self.assertEqual(h.ftpwrapper.filename, filename)
|
||||||
self.assertEqual(h.ftpwrapper.filetype, type_)
|
self.assertEqual(h.ftpwrapper.filetype, type_)
|
||||||
headers = r.info()
|
headers = r.info()
|
||||||
self.assertEqual(headers["Content-type"], mimetype)
|
self.assertEqual(headers.get("Content-type"), mimetype)
|
||||||
self.assertEqual(int(headers["Content-length"]), len(data))
|
self.assertEqual(int(headers["Content-length"]), len(data))
|
||||||
|
|
||||||
def test_file(self):
|
def test_file(self):
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ except ImportError:
|
||||||
# not sure how many of these need to be gotten rid of
|
# not sure how many of these need to be gotten rid of
|
||||||
from urllib import unwrap, unquote, splittype, splithost, \
|
from urllib import unwrap, unquote, splittype, splithost, \
|
||||||
addinfourl, splitport, splitgophertype, splitquery, \
|
addinfourl, splitport, splitgophertype, splitquery, \
|
||||||
splitattr, ftpwrapper, noheaders, splituser, splitpasswd
|
splitattr, ftpwrapper, noheaders, splituser, splitpasswd, splitvalue
|
||||||
|
|
||||||
# support for FileHandler, proxies via environment variables
|
# support for FileHandler, proxies via environment variables
|
||||||
from urllib import localhost, url2pathname, getproxies
|
from urllib import localhost, url2pathname, getproxies
|
||||||
|
|
@ -1143,6 +1143,8 @@ class FTPHandler(BaseHandler):
|
||||||
host, port = splitport(host)
|
host, port = splitport(host)
|
||||||
if port is None:
|
if port is None:
|
||||||
port = ftplib.FTP_PORT
|
port = ftplib.FTP_PORT
|
||||||
|
else:
|
||||||
|
port = int(port)
|
||||||
|
|
||||||
# username/password handling
|
# username/password handling
|
||||||
user, host = splituser(host)
|
user, host = splituser(host)
|
||||||
|
|
@ -1168,7 +1170,7 @@ class FTPHandler(BaseHandler):
|
||||||
fw = self.connect_ftp(user, passwd, host, port, dirs)
|
fw = self.connect_ftp(user, passwd, host, port, dirs)
|
||||||
type = file and 'I' or 'D'
|
type = file and 'I' or 'D'
|
||||||
for attr in attrs:
|
for attr in attrs:
|
||||||
attr, value = splitattr(attr)
|
attr, value = splitvalue(attr)
|
||||||
if attr.lower() == 'type' and \
|
if attr.lower() == 'type' and \
|
||||||
value in ('a', 'A', 'i', 'I', 'd', 'D'):
|
value in ('a', 'A', 'i', 'I', 'd', 'D'):
|
||||||
type = value.upper()
|
type = value.upper()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue