Created attachment 33183 [details] httpd-2.4.17-autoindex-revert.patch There seems to be an issue with Phusion Passenger (5.0.20) caused by: http://svn.apache.org/viewvc?view=revision&revision=r1701436 which has been reported here: https://groups.google.com/forum/#!topic/phusion-passenger/jiOpv9Isua4 By reverting the offending commit Phusion Passenger works fine with 2.4.17.
Can someone familiar with the passenger impl elaborate on what's going on? If it's broken by this change -- I am assuming it operates as a handler at APR_HOOK_MIDDLE (or later), wants to operate on requests mapped to directories , but doesn't do anything to set a r->handler or run before mod_autoindex? (I'd rather not just revert the fix that allows mod_autoindex to work without mod_mime)
I'm not an expert on passenger, but one can see the hook registration at https://github.com/phusion/passenger/blob/stable-5.0/src/apache2_module/Hooks.cpp scrolling down to the end of the file. The code in the file contains some handler juggling and also rules for ordering relative to mod_autoindex. Especially ap_hook_handler(start_blocking_mod_autoindex, NULL, autoindex_module, APR_HOOK_LAST); ap_hook_handler(end_blocking_mod_autoindex, autoindex_module, NULL, APR_HOOK_FIRST); points to DEFINE_REQUEST_HOOK(start_blocking_mod_autoindex, startBlockingModAutoIndex) DEFINE_REQUEST_HOOK(end_blocking_mod_autoindex, endBlockingModAutoIndex) which brings the following functions into the game: int startBlockingModAutoIndex(request_rec *r) { RequestNote *note = getRequestNote(r); if (note != 0 && hasModAutoIndex()) { note->handlerBeforeModAutoIndex = r->handler; r->handler = ""; } return DECLINED; } int endBlockingModAutoIndex(request_rec *r) { RequestNote *note = getRequestNote(r); if (note != 0 && hasModAutoIndex()) { r->handler = note->handlerBeforeModAutoIndex; } return DECLINED; } In front of them is a comment: * mod_autoindex will try to display a directory index for URIs that map to a directory. * This is undesired because of page caching semantics. Suppose that a Rails application * has an ImagesController which has page caching enabled, and thus also a 'public/images' * directory. When the visitor visits /images we'll want the request to be forwarded to * the Rails application, instead of displaying a directory index. * * So in this hook method, we temporarily change some fields in the request structure * in order to block mod_autoindex. In endBlockingModAutoIndex(), we restore the request * structure to its former state. Not sure whether this is related. Rainer
(moved to dev@)
I proposed on github that they set r->handler to a passenger-skip-autoindex string rather than "" which is what 2.4 uses as DEAULT_HANDLER_NAME