[Bug #737202; fix from Titus Brown] Make CGIHTTPServer work for scripts in sub-directories

This commit is contained in:
Andrew M. Kuchling 2006-12-22 13:28:43 +00:00
parent 28cfe299be
commit bbad84b41a
2 changed files with 22 additions and 0 deletions

View File

@ -105,17 +105,36 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def run_cgi(self):
"""Execute a CGI script."""
path = self.path
dir, rest = self.cgi_info
i = path.find('/', len(dir) + 1)
while i >= 0:
nextdir = path[:i]
nextrest = path[i+1:]
scriptdir = self.translate_path(nextdir)
if os.path.isdir(scriptdir):
dir, rest = nextdir, nextrest
i = path.find('/', len(dir) + 1)
else:
break
# find an explicit query string, if present.
i = rest.rfind('?')
if i >= 0:
rest, query = rest[:i], rest[i+1:]
else:
query = ''
# dissect the part after the directory name into a script name &
# a possible additional path, to be stored in PATH_INFO.
i = rest.find('/')
if i >= 0:
script, rest = rest[:i], rest[i:]
else:
script, rest = rest, ''
scriptname = dir + '/' + script
scriptfile = self.translate_path(scriptname)
if not os.path.exists(scriptfile):

View File

@ -122,6 +122,9 @@ Extension Modules
Library
-------
- Bug #737202: Make CGIHTTPServer work for scripts in subdirectories.
Fix by Titus Brown.
- Patch #1608267: fix a race condition in os.makedirs() is the directory
to be created is already there.