Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 75861df

Browse files
committed
Fix User-Agent for the xmlrpc.client, and catch KeyboardInterrupt for the standalone xmlrpc.server.
1 parent 2b6403e commit 75861df

3 files changed

Lines changed: 14 additions & 5 deletions

File tree

Lib/xmlrpc/client.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
"""
129129

130130
import base64
131+
import sys
131132
import time
132133
import http.client
133134
from xml.parsers import expat
@@ -152,7 +153,8 @@ def escape(s):
152153
s = s.replace("<", "&lt;")
153154
return s.replace(">", "&gt;",)
154155

155-
__version__ = "1.0.1"
156+
# used in User-Agent header sent
157+
__version__ = sys.version[:3]
156158

157159
# xmlrpc integer limits
158160
MAXINT = 2**31-1
@@ -408,7 +410,6 @@ def encode(self, out):
408410
out.write("<value><base64>\n")
409411
encoded = base64.encodebytes(self.data)
410412
out.write(encoded.decode('ascii'))
411-
out.write('\n')
412413
out.write("</base64></value>\n")
413414

414415
def _binary(data):
@@ -1079,7 +1080,7 @@ class Transport:
10791080
"""Handles an HTTP transaction to an XML-RPC server."""
10801081

10811082
# client identifier (may be overridden)
1082-
user_agent = "xmlrpclib.py/%s (by www.pythonware.com)" % __version__
1083+
user_agent = "Python-xmlrpc/%s" % __version__
10831084

10841085
#if true, we'll request gzip encoding
10851086
accept_gzip_encoding = True

Lib/xmlrpc/server.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -956,8 +956,13 @@ def __init__(self):
956956

957957

958958
if __name__ == '__main__':
959-
print('Running XML-RPC server on port 8000')
960959
server = SimpleXMLRPCServer(("localhost", 8000))
961960
server.register_function(pow)
962961
server.register_function(lambda x,y: x+y, 'add')
963-
server.serve_forever()
962+
print('Serving XML-RPC on localhost port 8000')
963+
try:
964+
server.serve_forever()
965+
except KeyboardInterrupt:
966+
print("\nKeyboard interrupt received, exiting.")
967+
server.server_close()
968+
sys.exit(0)

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,9 @@ Core and Builtins
347347
Library
348348
-------
349349

350+
- Fix the xmlrpc.client user agent to return something similar to
351+
urllib.request user agent: "Python-xmlrpc/3.3".
352+
350353
- Issue #13293: Better error message when trying to marshal bytes using
351354
xmlrpc.client.
352355

0 commit comments

Comments
 (0)