summaryrefslogtreecommitdiff
path: root/jsonrpclib
diff options
context:
space:
mode:
authorQuentin Smith <quentin@mit.edu>2011-01-23 02:59:09 -0500
committerQuentin Smith <quentin@mit.edu>2011-01-23 12:34:27 -0500
commit58b2e395701c50acb1db488108aadb3a4066eb09 (patch)
tree89e3acf1b429cde8fef21846a254cd8f908cdef5 /jsonrpclib
parenta0cd6268562129127ef26cf22391d0a41ed2f05f (diff)
downloadjsonrpclib-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.py14
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)