Patch [ 972332 ] urllib2 FTPHandler bugs / John J. Lee
Modified Files:
	urllib2.py test/test_urllib2.py
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 27b5038..6e9901f 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -314,15 +314,12 @@
             ("ftp://localhost/foo/bar/baz.html",
              "localhost", ftplib.FTP_PORT, "I",
              ["foo", "bar"], "baz.html", "text/html"),
-# XXXX Bug: FTPHandler tries to gethostbyname "localhost:80", with the
-#  port still there.
-##             ("ftp://localhost:80/foo/bar/",
-##              "localhost", 80, "D",
-##              ["foo", "bar"], "", None),
-# XXXX bug: second use of splitattr() in FTPHandler should be splitvalue()
-##             ("ftp://localhost/baz.gif;type=a",
-##              "localhost", ftplib.FTP_PORT, "A",
-##              [], "baz.gif", "image/gif"),
+            ("ftp://localhost:80/foo/bar/",
+             "localhost", 80, "D",
+             ["foo", "bar"], "", None),
+            ("ftp://localhost/baz.gif;type=a",
+             "localhost", ftplib.FTP_PORT, "A",
+             [], "baz.gif", None),  # XXX really this should guess image/gif
             ]:
             r = h.ftp_open(Request(url))
             # ftp authentication not yet implemented by FTPHandler
@@ -333,7 +330,7 @@
             self.assertEqual(h.ftpwrapper.filename, filename)
             self.assertEqual(h.ftpwrapper.filetype, type_)
             headers = r.info()
-            self.assertEqual(headers["Content-type"], mimetype)
+            self.assertEqual(headers.get("Content-type"), mimetype)
             self.assertEqual(int(headers["Content-length"]), len(data))
 
     def test_file(self):
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 84d4c34..8d38749 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -116,7 +116,7 @@
 # not sure how many of these need to be gotten rid of
 from urllib import unwrap, unquote, splittype, splithost, \
      addinfourl, splitport, splitgophertype, splitquery, \
-     splitattr, ftpwrapper, noheaders, splituser, splitpasswd
+     splitattr, ftpwrapper, noheaders, splituser, splitpasswd, splitvalue
 
 # support for FileHandler, proxies via environment variables
 from urllib import localhost, url2pathname, getproxies
@@ -1143,6 +1143,8 @@
         host, port = splitport(host)
         if port is None:
             port = ftplib.FTP_PORT
+        else:
+            port = int(port)
 
         # username/password handling
         user, host = splituser(host)
@@ -1168,7 +1170,7 @@
             fw = self.connect_ftp(user, passwd, host, port, dirs)
             type = file and 'I' or 'D'
             for attr in attrs:
-                attr, value = splitattr(attr)
+                attr, value = splitvalue(attr)
                 if attr.lower() == 'type' and \
                    value in ('a', 'A', 'i', 'I', 'd', 'D'):
                     type = value.upper()