Fix for issue5040. Adding test for Content-Length
diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py
index b304e45..e9bda9a 100644
--- a/Lib/SimpleXMLRPCServer.py
+++ b/Lib/SimpleXMLRPCServer.py
@@ -580,7 +580,7 @@
              'explain' : explain
             }
         print 'Status: %d %s' % (code, message)
-        print 'Content-Type: text/html'
+        print 'Content-Type: %s' % BaseHTTPServer.DEFAULT_ERROR_CONTENT_TYPE
         print 'Content-Length: %d' % len(response)
         print
         sys.stdout.write(response)
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 4f057c7..61c92ef 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -11,6 +11,7 @@
 import socket
 import StringIO
 import os
+import re
 from test import test_support
 
 try:
@@ -385,6 +386,21 @@
                 # protocol error; provide additional information in test output
                 self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
 
+    def test_nonascii(self):
+        start_string = 'P\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}t'
+        end_string = 'h\N{LATIN SMALL LETTER O WITH HORN}n'
+
+        try:
+            p = xmlrpclib.ServerProxy(URL)
+            self.assertEqual(p.add(start_string, end_string),
+                             start_string + end_string)
+        except (xmlrpclib.ProtocolError, socket.error) as e:
+            # ignore failures due to non-blocking socket unavailable errors.
+            if not is_unavailable_exception(e):
+                # protocol error; provide additional information in test output
+                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
+
+
     # [ch] The test 404 is causing lots of false alarms.
     def XXXtest_404(self):
         # send POST with httplib, it should return 404 header and
@@ -646,6 +662,18 @@
         # start with 44th char so as not to get http header, we just need only xml
         self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, handle[44:])
 
+        # Also test the content-length returned  by handle_request
+        # Using the same test method inorder to avoid all the datapassing
+        # boilerplate code.
+        # Test for bug: http://bugs.python.org/issue5040
+
+        content = handle[handle.find("<?xml"):]
+
+        self.assertEquals(
+            int(re.search('Content-Length: (\d+)', handle).group(1)),
+            len(content))
+
+
         os.remove("xmldata.txt")
         os.remove(test_support.TESTFN)