Fix User-Agent for the xmlrpc.client, and catch KeyboardInterrupt for the standalone xmlrpc.server.
This commit is contained in:
parent
2b6403e5d1
commit
75861df9ab
@ -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):
|
|||||||
s = s.replace("<", "<")
|
s = s.replace("<", "<")
|
||||||
return s.replace(">", ">",)
|
return s.replace(">", ">",)
|
||||||
|
|
||||||
__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:
|
|||||||
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:
|
|||||||
"""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,
|
|||||||
|
|
||||||
|
|
||||||
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')
|
||||||
server.serve_forever()
|
print('Serving XML-RPC on localhost port 8000')
|
||||||
|
try:
|
||||||
|
server.serve_forever()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\nKeyboard interrupt received, exiting.")
|
||||||
|
server.server_close()
|
||||||
|
sys.exit(0)
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user