Commit 75861df9 authored by Florent Xicluna's avatar Florent Xicluna

Fix User-Agent for the xmlrpc.client, and catch KeyboardInterrupt for the standalone xmlrpc.server.

parent 2b6403e5
...@@ -128,6 +128,7 @@ Exported functions: ...@@ -128,6 +128,7 @@ Exported functions:
""" """
import base64 import base64
import sys
import time import time
import http.client import http.client
from xml.parsers import expat from xml.parsers import expat
...@@ -152,7 +153,8 @@ def escape(s): ...@@ -152,7 +153,8 @@ def escape(s):
s = s.replace("<", "&lt;") s = s.replace("<", "&lt;")
return s.replace(">", "&gt;",) return s.replace(">", "&gt;",)
__version__ = "1.0.1" # used in User-Agent header sent
__version__ = sys.version[:3]
# xmlrpc integer limits # xmlrpc integer limits
MAXINT = 2**31-1 MAXINT = 2**31-1
...@@ -408,7 +410,6 @@ class Binary: ...@@ -408,7 +410,6 @@ class Binary:
out.write("<value><base64>\n") out.write("<value><base64>\n")
encoded = base64.encodebytes(self.data) encoded = base64.encodebytes(self.data)
out.write(encoded.decode('ascii')) out.write(encoded.decode('ascii'))
out.write('\n')
out.write("</base64></value>\n") out.write("</base64></value>\n")
def _binary(data): def _binary(data):
...@@ -1079,7 +1080,7 @@ class Transport: ...@@ -1079,7 +1080,7 @@ class Transport:
"""Handles an HTTP transaction to an XML-RPC server.""" """Handles an HTTP transaction to an XML-RPC server."""
# client identifier (may be overridden) # client identifier (may be overridden)
user_agent = "xmlrpclib.py/%s (by www.pythonware.com)" % __version__ user_agent = "Python-xmlrpc/%s" % __version__
#if true, we'll request gzip encoding #if true, we'll request gzip encoding
accept_gzip_encoding = True accept_gzip_encoding = True
......
...@@ -956,8 +956,13 @@ class DocCGIXMLRPCRequestHandler( CGIXMLRPCRequestHandler, ...@@ -956,8 +956,13 @@ class DocCGIXMLRPCRequestHandler( CGIXMLRPCRequestHandler,
if __name__ == '__main__': if __name__ == '__main__':
print('Running XML-RPC server on port 8000')
server = SimpleXMLRPCServer(("localhost", 8000)) server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(pow) server.register_function(pow)
server.register_function(lambda x,y: x+y, 'add') server.register_function(lambda x,y: x+y, 'add')
print('Serving XML-RPC on localhost port 8000')
try:
server.serve_forever() server.serve_forever()
except KeyboardInterrupt:
print("\nKeyboard interrupt received, exiting.")
server.server_close()
sys.exit(0)
...@@ -347,6 +347,9 @@ Core and Builtins ...@@ -347,6 +347,9 @@ Core and Builtins
Library Library
------- -------
- Fix the xmlrpc.client user agent to return something similar to
urllib.request user agent: "Python-xmlrpc/3.3".
- Issue #13293: Better error message when trying to marshal bytes using - Issue #13293: Better error message when trying to marshal bytes using
xmlrpc.client. xmlrpc.client.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment