diff options
author | Quentin Smith <quentin@mit.edu> | 2011-01-23 02:59:09 -0500 |
---|---|---|
committer | Quentin Smith <quentin@mit.edu> | 2011-01-23 12:34:27 -0500 |
commit | 58b2e395701c50acb1db488108aadb3a4066eb09 (patch) | |
tree | 89e3acf1b429cde8fef21846a254cd8f908cdef5 /jsonrpclib | |
parent | a0cd6268562129127ef26cf22391d0a41ed2f05f (diff) | |
download | jsonrpclib-58b2e395701c50acb1db488108aadb3a4066eb09.tar.gz |
Allow the specification of address_family for JSONRPC servers, and
unlink UNIX sockets before binding them
Diffstat (limited to 'jsonrpclib')
-rw-r--r-- | jsonrpclib/SimpleJSONRPCServer.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/jsonrpclib/SimpleJSONRPCServer.py b/jsonrpclib/SimpleJSONRPCServer.py index 370ae40..854697b 100644 --- a/jsonrpclib/SimpleJSONRPCServer.py +++ b/jsonrpclib/SimpleJSONRPCServer.py @@ -2,6 +2,8 @@ import jsonrpclib from jsonrpclib import Fault import SimpleXMLRPCServer import SocketServer +import socket +import os import types import traceback import sys @@ -182,12 +184,22 @@ class SimpleJSONRPCServer(SocketServer.TCPServer, SimpleJSONRPCDispatcher): 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.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) |