changeset: 75726:bab9f29c93fd branch: 2.7 parent: 75710:6ce4868861ba user: Senthil Kumaran date: Fri Mar 16 01:07:16 2012 -0700 files: Lib/CGIHTTPServer.py Lib/test/test_httpservers.py Misc/NEWS description: 2.7 - Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem diff -r 6ce4868861ba -r bab9f29c93fd Lib/CGIHTTPServer.py --- a/Lib/CGIHTTPServer.py Thu Mar 15 13:24:40 2012 -0700 +++ b/Lib/CGIHTTPServer.py Fri Mar 16 01:07:16 2012 -0700 @@ -323,7 +323,14 @@ # Filter out blank non trailing parts before consuming the '..'. path_parts = [part for part in path_parts[:-1] if part] + path_parts[-1:] if path_parts: - tail_part = path_parts.pop() + # Special case for CGI's for PATH_INFO + if path.startswith('/cgi-bin') or path.startswith('/htbin'): + tail_part = [] + while path_parts[-1] not in ('cgi-bin','htbin'): + tail_part.insert(0,path_parts.pop()) + tail_part = "/".join(tail_part) + else: + tail_part = path_parts.pop() else: tail_part = '' head_parts = [] diff -r 6ce4868861ba -r bab9f29c93fd Lib/test/test_httpservers.py --- a/Lib/test/test_httpservers.py Thu Mar 15 13:24:40 2012 -0700 +++ b/Lib/test/test_httpservers.py Fri Mar 16 01:07:16 2012 -0700 @@ -429,6 +429,7 @@ '/.//': ('/', ''), 'cgi-bin/file1.py': ('/cgi-bin', 'file1.py'), '/cgi-bin/file1.py': ('/cgi-bin', 'file1.py'), + '/cgi-bin/file1.py/PATH-INFO': ('/cgi-bin', 'file1.py/PATH-INFO'), 'a': ('/', 'a'), '/a': ('/', 'a'), '//a': ('/', 'a'), diff -r 6ce4868861ba -r bab9f29c93fd Misc/NEWS --- a/Misc/NEWS Thu Mar 15 13:24:40 2012 -0700 +++ b/Misc/NEWS Fri Mar 16 01:07:16 2012 -0700 @@ -20,6 +20,8 @@ Library ------- +- Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem. + - Issue #11199: Fix the with urllib which hangs on particular ftp urls. - Issue #5219: Prevent event handler cascade in IDLE.

AltStyle によって変換されたページ (->オリジナル) /