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


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