[ http://issues.apache.org/jira/browse/MODPYTHON-157?page=all ]

Graham Dumpleton reassigned MODPYTHON-157:
------------------------------------------

    Assign To: Graham Dumpleton

> PythonInterpPerDirectory broken for directory request in fixup phase and 
> earlier.
> ---------------------------------------------------------------------------------
>
>          Key: MODPYTHON-157
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-157
>      Project: mod_python
>         Type: Bug

>   Components: core
>     Versions: 3.2.8, 3.1.4, 2.7.10
>     Reporter: Graham Dumpleton
>     Assignee: Graham Dumpleton

>
> 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.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to