Bug #1469163: SimpleXMLRPCServer unconditionally attempted to import fcntl.
Wrapped in a try/except.
This commit is contained in:
parent
2db15505be
commit
e29002ccb0
|
@ -104,7 +104,11 @@ from xmlrpclib import Fault
|
||||||
import SocketServer
|
import SocketServer
|
||||||
import BaseHTTPServer
|
import BaseHTTPServer
|
||||||
import sys
|
import sys
|
||||||
import os, fcntl
|
import os
|
||||||
|
try:
|
||||||
|
import fcntl
|
||||||
|
except ImportError:
|
||||||
|
fcntl = None
|
||||||
|
|
||||||
def resolve_dotted_attribute(obj, attr, allow_dotted_names=True):
|
def resolve_dotted_attribute(obj, attr, allow_dotted_names=True):
|
||||||
"""resolve_dotted_attribute(a, 'b.c.d') => a.b.c.d
|
"""resolve_dotted_attribute(a, 'b.c.d') => a.b.c.d
|
||||||
|
@ -493,7 +497,7 @@ class SimpleXMLRPCServer(SocketServer.TCPServer,
|
||||||
# [Bug #1222790] If possible, set close-on-exec flag; if a
|
# [Bug #1222790] If possible, set close-on-exec flag; if a
|
||||||
# method spawns a subprocess, the subprocess shouldn't have
|
# method spawns a subprocess, the subprocess shouldn't have
|
||||||
# the listening socket open.
|
# the listening socket open.
|
||||||
if hasattr(fcntl, 'FD_CLOEXEC'):
|
if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'):
|
||||||
flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)
|
flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)
|
||||||
flags |= fcntl.FD_CLOEXEC
|
flags |= fcntl.FD_CLOEXEC
|
||||||
fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
|
fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
|
||||||
|
|
|
@ -49,6 +49,9 @@ Extension Modules
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on
|
||||||
|
Windows. Bug #1469163.
|
||||||
|
|
||||||
- The warnings, linecache, inspect, traceback, site, and doctest modules
|
- The warnings, linecache, inspect, traceback, site, and doctest modules
|
||||||
were updated to work correctly with modules imported from zipfiles or
|
were updated to work correctly with modules imported from zipfiles or
|
||||||
via other PEP 302 __loader__ objects.
|
via other PEP 302 __loader__ objects.
|
||||||
|
|
Loading…
Reference in New Issue