Bug #1469163: SimpleXMLRPCServer unconditionally attempted to import fcntl.

Wrapped in a try/except.
This commit is contained in:
Anthony Baxter 2006-04-12 12:07:31 +00:00
parent 2db15505be
commit e29002ccb0
2 changed files with 9 additions and 2 deletions

View File

@ -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)

View File

@ -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.