bojan 2002/07/21 15:34:25 Modified: jk/native/apache-2.0 mod_jk.c Log: Instead of mixing URI's with filenames, which was wrong, just use filenames to stat. This will also take care of aliases, but be warned - URI will still be passed to Tomcat unchanged. Revision Changes Path 1.50 +25 -14 jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c Index: mod_jk.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- mod_jk.c 21 Jul 2002 06:50:02 -0000 1.49 +++ mod_jk.c 21 Jul 2002 22:34:25 -0000 1.50 @@ -1618,24 +1618,35 @@ static int jk_map_to_storage(request_rec *r) { if (apr_table_get(r->notes, JK_WORKER_ID)) { - char *uri_p=r->uri; - /* This is old code which doesn't seem to work well with mod_dir - r->filename = (char *)apr_filename_of_pathname(r->uri); */ + /* First find just the name of the file, no directory */ + r->filename = (char *)apr_filename_of_pathname(r->uri); - /* Absolute paths cannot be merged */ - while (*uri_p == '/') ++uri_p; + /* Ony if valid sub-request, most likely from mod_dir */ + if (r->main && r->main->filename && *r->main->filename){ - /* Need absolute path to stat */ - if (apr_filepath_merge(&r->filename, ap_document_root(r), uri_p, - APR_FILEPATH_SECUREROOT | APR_FILEPATH_TRUENAME, - r->pool) - != APR_SUCCESS){ - return DECLINED; - } + /* The filename from the main request will be set to what should + * be picked up, aliases included. Tomcat will need to know about + * those aliases or things won't work for them. Normal files should + * be fine. */ + + /* Need absolute path to stat */ + if (r->main->filename[strlen(r->main->filename)-1] == '/'){ + if (apr_filepath_merge(&r->filename, + r->main->filename, r->filename, + APR_FILEPATH_SECUREROOT | + APR_FILEPATH_TRUENAME, + r->pool) + != APR_SUCCESS){ + return DECLINED; + } + } else { + r->filename = apr_pstrdup(r->pool, r->main->filename); + } - /* Stat the file so that mod_dir knows it's there */ - apr_stat(&r->finfo, r->filename, APR_FINFO_TYPE, r->pool); + /* Stat the file so that mod_dir knows it's there */ + apr_stat(&r->finfo, r->filename, APR_FINFO_TYPE, r->pool); + } return OK; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>