projects
/
invirt/packages/python-jsonrpclib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow the specification of address_family for JSONRPC servers, and
[invirt/packages/python-jsonrpclib.git]
/
jsonrpclib
/
SimpleJSONRPCServer.py
diff --git
a/jsonrpclib/SimpleJSONRPCServer.py
b/jsonrpclib/SimpleJSONRPCServer.py
index
75193b2
..
854697b
100644
(file)
--- a/
jsonrpclib/SimpleJSONRPCServer.py
+++ b/
jsonrpclib/SimpleJSONRPCServer.py
@@
-2,10
+2,16
@@
import jsonrpclib
from jsonrpclib import Fault
import SimpleXMLRPCServer
import SocketServer
from jsonrpclib import Fault
import SimpleXMLRPCServer
import SocketServer
+import socket
+import os
import types
import traceback
import types
import traceback
-import fcntl
import sys
import sys
+try:
+ import fcntl
+except ImportError:
+ # For Windows
+ fcntl = None
def get_version(request):
# must be a dict
def get_version(request):
# must be a dict
@@
-173,18
+179,27
@@
class SimpleJSONRPCRequestHandler(
self.wfile.flush()
self.connection.shutdown(1)
self.wfile.flush()
self.connection.shutdown(1)
-class SimpleJSONRPCServer(SocketServer.TCPServer,
- SimpleJSONRPCDispatcher):
+class SimpleJSONRPCServer(SocketServer.TCPServer, SimpleJSONRPCDispatcher):
allow_reuse_address = True
def __init__(self, addr, requestHandler=SimpleJSONRPCRequestHandler,
allow_reuse_address = True
def __init__(self, addr, requestHandler=SimpleJSONRPCRequestHandler,
- logRequests=True, encoding=None, bind_and_activate=True):
+ logRequests=True, encoding=None, bind_and_activate=True,
+ address_family=socket.AF_INET):
self.logRequests = logRequests
SimpleJSONRPCDispatcher.__init__(self, encoding)
# TCPServer.__init__ has an extra parameter on 2.6+, so
# check Python version and decide on how to call it
vi = sys.version_info
self.logRequests = logRequests
SimpleJSONRPCDispatcher.__init__(self, encoding)
# TCPServer.__init__ has an extra parameter on 2.6+, so
# check Python version and decide on how to call it
vi = sys.version_info
+ self.address_family = address_family
+ if address_family == socket.AF_UNIX:
+ # Unix sockets can't be bound if they already exist in the
+ # filesystem. The convention of e.g. X11 is to unlink
+ # before binding again.
+ try:
+ os.unlink(addr)
+ except OSError:
+ pass
# if python 2.5 and lower
if vi[0] < 3 and vi[1] < 6:
SocketServer.TCPServer.__init__(self, addr, requestHandler)
# if python 2.5 and lower
if vi[0] < 3 and vi[1] < 6:
SocketServer.TCPServer.__init__(self, addr, requestHandler)
@@
-209,10
+224,3
@@
class CGIJSONRPCRequestHandler(SimpleJSONRPCDispatcher):
sys.stdout.write(response)
handle_xmlrpc = handle_jsonrpc
sys.stdout.write(response)
handle_xmlrpc = handle_jsonrpc
-
-if __name__ == '__main__':
- print 'Running JSON-RPC server on port 8000'
- server = SimpleJSONRPCServer(("localhost", 8000))
- server.register_function(pow)
- server.register_function(lambda x,y: x+y, 'add')
- server.serve_forever()