[ 
https://issues.apache.org/jira/browse/MODPYTHON-157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Graham Dumpleton closed MODPYTHON-157.
--------------------------------------


> PythonInterpPerDirectory broken for directory request in fixup phase and 
> earlier.
> ---------------------------------------------------------------------------------
>
>                 Key: MODPYTHON-157
>                 URL: https://issues.apache.org/jira/browse/MODPYTHON-157
>             Project: mod_python
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.7.10, 3.1.4, 3.2.8
>            Reporter: Graham Dumpleton
>         Assigned To: Graham Dumpleton
>             Fix For: 3.3
>
>
> The PythonInterpPerDirectory request creates distinct interpreters for each 
> directory in the file system. The name of the directory is derived from 
> req.filename.
> In determining the name of the interpreter from req.filename, it always 
> assumes that if the request is against the directory and not a file in it, 
> that req.filename will always have a trailing slash appended to it. This 
> however is not the case, as trailing slash redirection is only performed by 
> mod_dir at the end of the fixup handler phase. Thus the name of the 
> interpreter will be wrong for handler run in fixup handler pahse or earlier 
> and will actually be that of the parent directory.
> The code in select_interp_name() of src/mod_python.c which determines 
> interpreter name is:
>             /* base interpreter on directory where the file is found */
>             if (req && ap_is_directory(req->pool, req->filename)) {
>                 /** XXX I suppose that if req->filename is a directory, there 
> already
>                     is a trailing slash in req->filename. This is due to the 
> fact
>                     that Apache redirect any request from /directory to 
> /directory/.
>                     That's why the tests below are commented out, they should 
> be useless.
>                 **/
>                 /* if (req->filename[strlen(req->filename)-1]=='/') { */
>                     return ap_make_dirstr_parent(req->pool, req->filename);
>                 /* }
>                 else {
>                     return ap_make_dirstr_parent(req->pool, 
>                                                 apr_pstrcat(req->pool, 
> req->filename, 
>                                                             "/", NULL ));
>                 } */
>             }
> Note that it actually has the code that would be required for this to work 
> properly but it is commented out because of a wrong assumption that the 
> trailing slash would always be there.
> Code simply has to be uncommented.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to