Reverted revision 1.83, which introduced a bug and subtle incompatibility
issues.  See bug #1112856.
diff --git a/Lib/cgi.py b/Lib/cgi.py
index eb96303..41dc433 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -38,7 +38,8 @@
 import sys
 import os
 import urllib
-import email.Parser
+import mimetools
+import rfc822
 import UserDict
 try:
     from cStringIO import StringIO
@@ -107,8 +108,6 @@
 # Parsing functions
 # =================
 
-_header_parser = email.Parser.HeaderParser()
-
 # Maximum input we will accept when REQUEST_METHOD is POST
 # 0 ==> unlimited input
 maxlen = 0
@@ -271,7 +270,7 @@
         data = None
         if terminator:
             # At start of next part.  Read headers first.
-            headers = _header_parser.parse(fp)
+            headers = mimetools.Message(fp)
             clength = headers.getheader('content-length')
             if clength:
                 try:
@@ -408,9 +407,8 @@
 
     disposition_options: dictionary of corresponding options
 
-    headers: a dictionary(-like) object (sometimes
-        email.Message.Message or a subclass thereof) containing *all*
-        headers
+    headers: a dictionary(-like) object (sometimes rfc822.Message or a
+        subclass thereof) containing *all* headers
 
     The class is subclassable, mostly for the purpose of overriding
     the make_file() method, which is called internally to come up with
@@ -652,7 +650,7 @@
                      environ, keep_blank_values, strict_parsing)
         # Throw first part away
         while not part.done:
-            headers = _header_parser.parse(self.fp)
+            headers = rfc822.Message(self.fp)
             part = klass(self.fp, headers, ib,
                          environ, keep_blank_values, strict_parsing)
             self.list.append(part)