-diff -ur mod_fastcgi-2.4.2-o/mod_fastcgi.c mod_fastcgi-2.4.2/mod_fastcgi.c
---- mod_fastcgi-2.4.2-o/mod_fastcgi.c 2005-12-25 02:45:12.000000000 -0700
-+++ mod_fastcgi-2.4.2/mod_fastcgi.c 2005-12-25 12:14:31.000000000 -0700
-@@ -2657,10 +2657,15 @@
+diff -Nur mod_fastcgi-2.4.6.orig/mod_fastcgi.c mod_fastcgi-2.4.6.apache22/mod_fastcgi.c
+--- mod_fastcgi-2.4.6.orig/mod_fastcgi.c 2007-12-28 21:00:46.000000000 -0700
++++ mod_fastcgi-2.4.6.apache22/mod_fastcgi.c 2007-12-28 21:00:58.000000000 -0700
+@@ -82,6 +82,10 @@
+
+ #include "unixd.h"
+
++#ifdef APACHE22
++#include "mod_auth.h"
++#endif
++
+ #endif
+ #endif
+
+@@ -2697,10 +2701,15 @@
r->status_line = NULL;
}
fcgi_request *fr;
const fcgi_dir_config * const dir_config =
(const fcgi_dir_config *)ap_get_module_config(r->per_dir_config, &fastcgi_module);
-@@ -2668,9 +2673,11 @@
+@@ -2708,9 +2717,11 @@
if (dir_config->authenticator == NULL)
return DECLINED;
res = create_fcgi_request(r, dir_config->authenticator, &fr);
if (res)
-@@ -2704,6 +2711,23 @@
+@@ -2744,6 +2755,20 @@
goto AuthenticationFailed;
}
+#ifdef APACHE22
+ if (authenticated)
-+ return OK;
++ return AUTH_GRANTED;
+
+AuthenticationFailed:
-+ if (!(dir_config->authenticator_options & FCGI_AUTHORITATIVE))
-+ return AUTH_DENIED; // FIXME -- should be decline?
-+
+ /* @@@ Probably should support custom_responses */
+ ap_note_basic_auth_failure(r);
+ ap_log_rerror(FCGI_LOG_ERR_NOERRNO, r,
if (authenticated)
return OK;
-@@ -2722,6 +2746,7 @@
+@@ -2762,6 +2787,7 @@
#endif
return (res == OK) ? HTTP_UNAUTHORIZED : res;
}
static int check_user_authorization(request_rec *r)
-@@ -2913,6 +2938,15 @@
+@@ -2955,16 +2981,31 @@
#ifdef APACHE2
+#ifdef APACHE22
+static const authn_provider authn_fastcgi_provider =
+{
-+ &check_password,
++ &check_user_authentication,
+ NULL,
+};
+#endif /* APACHE22 */
static void register_hooks(apr_pool_t * p)
{
/* ap_hook_pre_config(x_pre_config, NULL, NULL, APR_HOOK_MIDDLE); */
-@@ -2923,6 +2957,11 @@
+ ap_hook_post_config(init_module, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_child_init(fcgi_child_init, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_handler(content_handler, NULL, NULL, APR_HOOK_MIDDLE);
+- ap_hook_check_user_id(check_user_authentication, NULL, NULL, APR_HOOK_MIDDLE);
ap_hook_access_checker(check_access, NULL, NULL, APR_HOOK_MIDDLE);
ap_hook_auth_checker(check_user_authorization, NULL, NULL, APR_HOOK_MIDDLE);
ap_hook_fixups(fixups, NULL, NULL, APR_HOOK_MIDDLE);
+#ifdef APACHE22
+ ap_register_provider(p, AUTHN_PROVIDER_GROUP, "fastcgi", "0",
+ &authn_fastcgi_provider);
-+#endif /* APACHE22 */
++#else
++ ap_hook_check_user_id(check_user_authentication, NULL, NULL, APR_HOOK_MIDDLE);
++#endif
+
}