Jan Kaluza 91619ea
diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm
Jan Kaluza 91619ea
index 8027548..0664af1 100644
Jan Kaluza 91619ea
--- a/lib/Apache2/ParseSource.pm
Jan Kaluza 91619ea
+++ b/lib/Apache2/ParseSource.pm
Jan Kaluza 91619ea
@@ -73,6 +73,9 @@ my @c_scan_defines = (
Jan Kaluza 91619ea
     'CORE_PRIVATE',   #so we get all of apache
Jan Kaluza 91619ea
     'MP_SOURCE_SCAN', #so we can avoid some c-scan barfing
Jan Kaluza 91619ea
     '_NETINET_TCP_H', #c-scan chokes on netinet/tcp.h
Jan Kaluza 91619ea
+    '_BYTESWAP_H', #c-scan chokes on byteswap.h
Jan Kaluza 91619ea
+    '_BITS_BYTESWAP_H', #c-scan chokes on byteswap.h
Jan Kaluza 91619ea
+    'Expat_INCLUDED', #c-scan chokes on expath.h
Jan Kaluza 91619ea
  #   'APR_OPTIONAL_H', #c-scan chokes on apr_optional.h
Jan Kaluza 91619ea
     'apr_table_do_callback_fn_t=void', #c-scan chokes on function pointers
Jan Kaluza 91619ea
 );
Jan Kaluza 91619ea
@@ -116,6 +119,7 @@ sub scan {
Jan Kaluza 91619ea
 sub include_dirs {
Jan Kaluza 91619ea
     my $self = shift;
Jan Kaluza 91619ea
     ($self->config->apxs('-q' => 'INCLUDEDIR'),
Jan Kaluza 91619ea
+     $self->config->apxs('-q' => 'APR_INCLUDEDIR'),
Jan Kaluza 91619ea
      $self->config->mp_include_dir);
Jan Kaluza 91619ea
 }
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
@@ -139,7 +143,8 @@ sub find_includes {
Jan Kaluza 91619ea
                                     apr_optional mod_include mod_cgi
Jan Kaluza 91619ea
                                     mod_proxy mod_ssl ssl_ apr_anylock
Jan Kaluza 91619ea
                                     apr_rmm ap_config mod_log_config
Jan Kaluza 91619ea
-                                    mod_perl modperl_ apreq);
Jan Kaluza 91619ea
+                                    mod_perl modperl_ apreq mod_cache
Jan Kaluza 91619ea
+                                    mod_serf mod_dav);
Jan Kaluza 91619ea
         $unwanted = qr|^$unwanted|;
Jan Kaluza 91619ea
         my $wanted = '';
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
@@ -229,7 +234,7 @@ sub generate_cscan_file {
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 my %defines_wanted = (
Jan Kaluza 91619ea
     'Apache2::Const' => {
Jan Kaluza 91619ea
-        common     => [qw{OK DECLINED DONE}],
Jan Kaluza 91619ea
+        common     => [qw{OK DECLINED DONE PROXYREQ PROXYREQ_REVERSE}],
Jan Kaluza 91619ea
         config     => [qw{DECLINE_CMD}],
Jan Kaluza 91619ea
         context    => [qw(NOT_IN_ GLOBAL_ONLY)],
Jan Kaluza 91619ea
         http       => [qw{HTTP_}],
Jan Kaluza 91619ea
@@ -280,6 +285,9 @@ my %enums_wanted = (
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 my $defines_unwanted = join '|', qw{
Jan Kaluza 91619ea
 HTTP_VERSION APR_EOL_STR APLOG_MARK APLOG_NOERRNO APR_SO_TIMEOUT
Jan Kaluza 91619ea
+APR_HOOK_PROBES_ENABLED APR_HOOK_INT_DCL_UD
Jan Kaluza 91619ea
+APLOG_MAX_LOGLEVEL
Jan Kaluza 91619ea
+APR_BEGIN_DECLS APR_END_DECLS
Jan Kaluza 91619ea
 };
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 sub get_constants {
Jan Kaluza 91619ea
@@ -398,6 +406,8 @@ sub get_functions {
Jan Kaluza 91619ea
     my $c = $self->{c};
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     my $fdecls = $c->get($key);
Jan Kaluza 91619ea
+    my $inlines = $c->get('parsed_inlines');
Jan Kaluza 91619ea
+    push @{$fdecls}, @{$inlines};
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     my %seen;
Jan Kaluza 91619ea
     my $wanted = $self->wanted_functions;
Jan Kaluza 91619ea
diff --git a/lib/ModPerl/CScan.pm b/lib/ModPerl/CScan.pm
Jan Kaluza 91619ea
index 6789af3..a57acf3 100644
Jan Kaluza 91619ea
--- a/lib/ModPerl/CScan.pm
Jan Kaluza 91619ea
+++ b/lib/ModPerl/CScan.pm
Jan Kaluza 91619ea
@@ -136,6 +136,8 @@ my $recipes
Jan Kaluza 91619ea
       vdecl_hash => { filter => [ \&vdecl_hash, 'vdecls', 'mdecls' ], },
Jan Kaluza 91619ea
       parsed_fdecls => { filter => [ \&do_declarations, 'fdecls',
Jan Kaluza 91619ea
                                      'typedef_hash', 'keywords'], },
Jan Kaluza 91619ea
+      parsed_inlines => { filter => [ \&do_declarations, 'inlines',
Jan Kaluza 91619ea
+                                     'typedef_hash', 'keywords'], },
Jan Kaluza 91619ea
       keywords_rex => { filter => [ sub { my @k = keys %{ shift() };
Jan Kaluza 91619ea
                                           local $" = '|';
Jan Kaluza 91619ea
                                           my $r = "(?:@k)";
Jan Kaluza 91619ea
@@ -943,7 +945,7 @@ sub new {
Jan Kaluza 91619ea
     my ($sym) = gensym;
Jan Kaluza 91619ea
     my $cmd = WIN32 ?
Jan Kaluza 91619ea
         "$Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $filename |" :
Jan Kaluza 91619ea
-        "echo '\#include \"$filename\"' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} |";
Jan Kaluza 91619ea
+        "echo '\#include \"$filename\"' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} | grep -v '^#' |";
Jan Kaluza 91619ea
     #my $cmd = "echo '\#include <$filename>' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} |";
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     (open($sym, $cmd) or die "Cannot open pipe from `$cmd': $!")
Jan Kaluza 91619ea
diff --git a/lib/ModPerl/Code.pm b/lib/ModPerl/Code.pm
Jan Kaluza 91619ea
index e43f77c..98b037d 100644
Jan Kaluza 91619ea
--- a/lib/ModPerl/Code.pm
Jan Kaluza 91619ea
+++ b/lib/ModPerl/Code.pm
Jan Kaluza 91619ea
@@ -889,7 +889,8 @@ EOF
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
             if ($name eq 'DECLINE_CMD' ||
Jan Kaluza 91619ea
                 $name eq 'DIR_MAGIC_TYPE' ||
Jan Kaluza 91619ea
-                $name eq 'CRLF') {
Jan Kaluza 91619ea
+                $name eq 'CRLF' ||
Jan Kaluza 91619ea
+                $name eq 'CRLF_ASCII') {
Jan Kaluza 91619ea
                 print $c_fh <
Jan Kaluza 91619ea
               return newSVpv($alias{$name}, 0);
Jan Kaluza 91619ea
 EOF
Jan Kaluza 91619ea
diff --git a/src/modules/perl/mod_perl.c b/src/modules/perl/mod_perl.c
Jan Kaluza 91619ea
index d3245bf..b18e0fd 100644
Jan Kaluza 91619ea
--- a/src/modules/perl/mod_perl.c
Jan Kaluza 91619ea
+++ b/src/modules/perl/mod_perl.c
Jan Kaluza 91619ea
@@ -658,6 +658,10 @@ int modperl_hook_pre_config(apr_pool_t *p, apr_pool_t *plog,
Jan Kaluza 91619ea
     /* perl 5.8.1+ */
Jan Kaluza 91619ea
     modperl_hash_seed_init(p);
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 91619ea
+    ap_reserve_module_slots_directive("PerlModule");
Jan Kaluza 91619ea
+#endif
Jan Kaluza 91619ea
+
Jan Kaluza 91619ea
     return OK;
Jan Kaluza 91619ea
 }
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
diff --git a/src/modules/perl/modperl_apache_compat.h b/src/modules/perl/modperl_apache_compat.h
Jan Kaluza 91619ea
index 78a9cb3..072ae79 100644
Jan Kaluza 91619ea
--- a/src/modules/perl/modperl_apache_compat.h
Jan Kaluza 91619ea
+++ b/src/modules/perl/modperl_apache_compat.h
Jan Kaluza 91619ea
@@ -68,7 +68,6 @@ AP_DECLARE(const char *) ap_get_server_version(void);
Jan Kaluza 91619ea
 #define MP_HTTPD_OVERRIDE_OPTS_UNSET (-1)
Jan Kaluza 91619ea
 #define MP_HTTPD_OVERRIDE_OPTS_DEFAULT (OPT_UNSET | \
Jan Kaluza 91619ea
                                         OPT_ALL | \
Jan Kaluza 91619ea
-                                        OPT_INCNOEXEC | \
Jan Kaluza 91619ea
                                         OPT_SYM_OWNER | \
Jan Kaluza 91619ea
                                         OPT_MULTI)
Jan Kaluza 91619ea
 
Jan Kaluza 9d99d71
diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h
Jan Kaluza 91619ea
index c93decc..6f7bd8b 100644
Jan Kaluza 9d99d71
--- a/src/modules/perl/modperl_apache_includes.h
Jan Kaluza 9d99d71
+++ b/src/modules/perl/modperl_apache_includes.h
Jan Kaluza 9d99d71
@@ -23,6 +23,10 @@
Jan Kaluza 9d99d71
 #define CORE_PRIVATE
Jan Kaluza 9d99d71
 #endif
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
+#ifdef MP_IN_XS
Jan Kaluza 9d99d71
+#define AP_DEBUG_NO_ALLOC_POISON
Jan Kaluza 9d99d71
+#endif
Jan Kaluza 7bbff0e
+
Jan Kaluza 9d99d71
 #include "ap_mmn.h"
Jan Kaluza 9d99d71
 #include "httpd.h"
Jan Kaluza 9d99d71
 #include "http_config.h"
Jan Kaluza 91619ea
@@ -34,9 +38,16 @@
Jan Kaluza 91619ea
 #include "http_core.h"
Jan Kaluza 91619ea
 #include "http_vhost.h"
Jan Kaluza 91619ea
 #include "ap_mpm.h"
Jan Kaluza 91619ea
+#if !(AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4)
Jan Kaluza 91619ea
+#include "apu_errno.h"
Jan Kaluza 91619ea
+#endif
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 #include "util_filter.h"
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
 #include "util_script.h"
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
+#ifndef MP_IN_XS
Jan Kaluza 9d99d71
+APLOG_USE_MODULE(perl);
Jan Kaluza 9d99d71
+#endif
Jan Kaluza 7bbff0e
+
Jan Kaluza 9d99d71
 #endif /* MODPERL_APACHE_INCLUDES_H */
Jan Kaluza 91619ea
diff --git a/src/modules/perl/modperl_apr_includes.h b/src/modules/perl/modperl_apr_includes.h
Jan Kaluza 91619ea
index f5ae341..8e69776 100644
Jan Kaluza 91619ea
--- a/src/modules/perl/modperl_apr_includes.h
Jan Kaluza 91619ea
+++ b/src/modules/perl/modperl_apr_includes.h
Jan Kaluza 91619ea
@@ -35,5 +35,6 @@
Jan Kaluza 91619ea
 #include "apr_general.h"
Jan Kaluza 91619ea
 #include "apr_uuid.h"
Jan Kaluza 91619ea
 #include "apr_env.h"
Jan Kaluza 91619ea
+#include "apu_errno.h"
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 #endif /* MODPERL_APR_INCLUDES_H */
Jan Kaluza 91619ea
diff --git a/src/modules/perl/modperl_config.c b/src/modules/perl/modperl_config.c
Jan Kaluza 91619ea
index c4ef81f..e182f2d 100644
Jan Kaluza 91619ea
--- a/src/modules/perl/modperl_config.c
Jan Kaluza 91619ea
+++ b/src/modules/perl/modperl_config.c
Jan Kaluza 91619ea
@@ -479,7 +479,7 @@ typedef struct {
Jan Kaluza 91619ea
     PerlInterpreter *perl;
Jan Kaluza 91619ea
 } svav_param_t;
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
-static void *svav_getstr(void *buf, size_t bufsiz, void *param)
Jan Kaluza 91619ea
+static apr_status_t svav_getstr(void *buf, size_t bufsiz, void *param)
Jan Kaluza 91619ea
 {
Jan Kaluza 91619ea
     svav_param_t *svav_param = (svav_param_t *)param;
Jan Kaluza 91619ea
     dTHXa(svav_param->perl);
Jan Kaluza 91619ea
@@ -488,7 +488,7 @@ static void *svav_getstr(void *buf, size_t bufsiz, void *param)
Jan Kaluza 91619ea
     STRLEN n_a;
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     if (svav_param->ix > AvFILL(av)) {
Jan Kaluza 91619ea
-        return NULL;
Jan Kaluza 91619ea
+        return APR_EOF;
Jan Kaluza 91619ea
     }
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     sv = AvARRAY(av)[svav_param->ix++];
Jan Kaluza 91619ea
@@ -496,7 +496,7 @@ static void *svav_getstr(void *buf, size_t bufsiz, void *param)
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     apr_cpystrn(buf, SvPVX(sv), bufsiz);
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
-    return buf;
Jan Kaluza 91619ea
+    return APR_SUCCESS;
Jan Kaluza 91619ea
 }
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 const char *modperl_config_insert(pTHX_ server_rec *s,
Jan Kaluza 91619ea
diff --git a/src/modules/perl/modperl_interp.c b/src/modules/perl/modperl_interp.c
Jan Kaluza 91619ea
index dfff32e..6ec9b56 100644
Jan Kaluza 91619ea
--- a/src/modules/perl/modperl_interp.c
Jan Kaluza 91619ea
+++ b/src/modules/perl/modperl_interp.c
Jan Kaluza 91619ea
@@ -496,11 +496,19 @@ modperl_interp_t *modperl_interp_select(request_rec *r, conn_rec *c,
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
         set_interp(p);
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 91619ea
+        MP_TRACE_i(MP_FUNC,
Jan Kaluza 91619ea
+                   "set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
Jan Kaluza 91619ea
+                   (unsigned long)interp, desc, (unsigned long)p,
Jan Kaluza 91619ea
+                   (r ? (is_subrequest ? "sub" : "main") : "conn"),
Jan Kaluza 91619ea
+                   (r ? r->uri : c->client_ip));
Jan Kaluza 91619ea
+#else
Jan Kaluza 91619ea
         MP_TRACE_i(MP_FUNC,
Jan Kaluza 91619ea
                    "set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
Jan Kaluza 91619ea
                    (unsigned long)interp, desc, (unsigned long)p,
Jan Kaluza 91619ea
                    (r ? (is_subrequest ? "sub" : "main") : "conn"),
Jan Kaluza 91619ea
                    (r ? r->uri : c->remote_ip));
Jan Kaluza 91619ea
+#endif
Jan Kaluza 91619ea
     }
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     /* set context (THX) for this thread */
Jan Kaluza 91619ea
diff --git a/src/modules/perl/modperl_module.c b/src/modules/perl/modperl_module.c
Jan Kaluza 91619ea
index da148ca..aa1a851 100644
Jan Kaluza 91619ea
--- a/src/modules/perl/modperl_module.c
Jan Kaluza 91619ea
+++ b/src/modules/perl/modperl_module.c
Jan Kaluza 91619ea
@@ -832,7 +832,11 @@ const char *modperl_module_add(apr_pool_t *p, server_rec *s,
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     modperl_module_insert(modp);
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 91619ea
+    ap_add_loaded_module(modp, p, modp->name);
Jan Kaluza 91619ea
+#else
Jan Kaluza 91619ea
     ap_add_loaded_module(modp, p);
Jan Kaluza 91619ea
+#endif
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     apr_pool_cleanup_register(p, modp, modperl_module_remove,
Jan Kaluza 91619ea
                               apr_pool_cleanup_null);
Jan Kaluza 91619ea
diff --git a/t/apache/constants.t b/t/apache/constants.t
Jan Kaluza 91619ea
index 97a3e6a..74e2fe5 100644
Jan Kaluza 91619ea
--- a/t/apache/constants.t
Jan Kaluza 91619ea
+++ b/t/apache/constants.t
Jan Kaluza 91619ea
@@ -6,7 +6,7 @@ use Apache::Test;
Jan Kaluza 91619ea
 use Apache::TestUtil;
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 # -compile puts constants into the Apache2:: namespace
Jan Kaluza 91619ea
-use Apache2::Const -compile => qw(:http :common :mpmq :proxy
Jan Kaluza 91619ea
+use Apache2::Const -compile => qw(:http :common :mpmq
Jan Kaluza 91619ea
                                   TAKE23 &OPT_EXECCGI
Jan Kaluza 91619ea
                                   DECLINE_CMD DIR_MAGIC_TYPE
Jan Kaluza 91619ea
                                   CRLF);
Jan Kaluza 91619ea
diff --git a/t/conf/post_config_startup.pl b/t/conf/post_config_startup.pl
Jan Kaluza 91619ea
index 391a0e2..5ab1bfc 100644
Jan Kaluza 91619ea
--- a/t/conf/post_config_startup.pl
Jan Kaluza 91619ea
+++ b/t/conf/post_config_startup.pl
Jan Kaluza 91619ea
@@ -31,7 +31,9 @@ test_apache_resource();
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 test_apache_status();
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
-test_loglevel();
Jan Kaluza 91619ea
+# FIXME: httpd-2.4 does not have loglevel setting in ServerRec
Jan Kaluza 91619ea
+# This test has to be fixed.
Jan Kaluza 91619ea
+#test_loglevel();
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 test_perl_ithreads();
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
diff --git a/t/response/TestAPI/add_config.pm b/t/response/TestAPI/add_config.pm
Jan Kaluza 91619ea
index ff52cbc..c5f2d37 100644
Jan Kaluza 91619ea
--- a/t/response/TestAPI/add_config.pm
Jan Kaluza 91619ea
+++ b/t/response/TestAPI/add_config.pm
Jan Kaluza 91619ea
@@ -100,7 +100,6 @@ sub handler : method {
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
     my $expect =  Apache2::Const::OPT_ALL |
Jan Kaluza 91619ea
                   Apache2::Const::OPT_UNSET |
Jan Kaluza 91619ea
-                  Apache2::Const::OPT_INCNOEXEC |
Jan Kaluza 91619ea
                   Apache2::Const::OPT_MULTI |
Jan Kaluza 91619ea
                   Apache2::Const::OPT_SYM_OWNER;
Jan Kaluza 91619ea
 
Jan Kaluza 9d99d71
diff --git a/t/response/TestAPI/aplog.pm b/t/response/TestAPI/aplog.pm
Jan Kaluza 9d99d71
index f2a4e19..1357311 100644
Jan Kaluza 9d99d71
--- a/t/response/TestAPI/aplog.pm
Jan Kaluza 9d99d71
+++ b/t/response/TestAPI/aplog.pm
Jan Kaluza 9d99d71
@@ -93,7 +93,7 @@ sub handler {
Jan Kaluza 9d99d71
                    APR::Const::ENOTIME, "log_rerror test");
Jan Kaluza 9d99d71
     # can't match against the error string, since a locale may kick in
Jan Kaluza 9d99d71
     ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-        qr/\[crit\] .*?: log_rerror test/,
Jan Kaluza 9d99d71
+        qr/\[\w*:crit\] \[pid[^]]+\] .*?: \[[^]]+\] log_rerror test/,
Jan Kaluza 9d99d71
         '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::Const::ENOTIME...)';
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
     # log_error
Jan Kaluza 9d99d71
@@ -101,13 +101,13 @@ sub handler {
Jan Kaluza 9d99d71
         t_server_log_error_is_expected();
Jan Kaluza 9d99d71
         $r->log_error('$r->log_error test');
Jan Kaluza 9d99d71
         ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-            qr/\[error\] \$r->log_error test/,
Jan Kaluza 9d99d71
+            qr/\[\w*:error\] \[pid[^]]+\] \$r->log_error test/,
Jan Kaluza 9d99d71
             '$r->log_error(...)';
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
         t_server_log_error_is_expected();
Jan Kaluza 9d99d71
         $s->log_error('$s->log_error test');
Jan Kaluza 9d99d71
         ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-            qr/\[error\] \$s->log_error test/,
Jan Kaluza 9d99d71
+            qr/\[\w*:error\] \[pid[^]]+\] \$s->log_error test/,
Jan Kaluza 9d99d71
             '$s->log_error(...)';
Jan Kaluza 7bbff0e
     }
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
@@ -116,13 +116,13 @@ sub handler {
Jan Kaluza 9d99d71
         t_server_log_error_is_expected();
Jan Kaluza 9d99d71
         $r->log_reason('$r->log_reason test');
Jan Kaluza 9d99d71
         ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-            qr/\[error\] access to.*failed.*reason: \$r->log_reason test/,
Jan Kaluza 9d99d71
+            qr/\[\w*:error\] \[pid[^]]+\] access to.*failed.*reason: \$r->log_reason test/,
Jan Kaluza 9d99d71
             '$r->log_reason(msg)';
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
         t_server_log_error_is_expected();
Jan Kaluza 9d99d71
         $r->log_reason('$r->log_reason filename test','filename');
Jan Kaluza 9d99d71
         ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-            qr/\[error\] access to filename failed.*\$r->log_reason filename test/,
Jan Kaluza 9d99d71
+            qr/\[\w*:error\] \[pid[^]]+\] access to filename failed.*\$r->log_reason filename test/,
Jan Kaluza 9d99d71
             '$r->log_reason(msg, filename)';
Jan Kaluza 7bbff0e
     }
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
@@ -177,7 +177,7 @@ sub handler {
Jan Kaluza 9d99d71
     t_server_log_warn_is_expected();
Jan Kaluza 9d99d71
     $s->warn('$s->warn test');
Jan Kaluza 9d99d71
     ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-        qr/\[warn\] \$s->warn test/,
Jan Kaluza 9d99d71
+        qr/\[\w*:warn\] \[pid[^]]+\] \$s->warn test/,
Jan Kaluza 9d99d71
         '$s->warn()';
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
     {
Jan Kaluza 9d99d71
@@ -185,7 +185,7 @@ sub handler {
Jan Kaluza 9d99d71
         # this uses global server to get $s internally
Jan Kaluza 9d99d71
         Apache2::ServerRec::warn("Apache2::ServerRec::warn test");
Jan Kaluza 9d99d71
         ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-            qr/\[warn\] Apache2::ServerRec::warn test/,
Jan Kaluza 9d99d71
+            qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/,
Jan Kaluza 9d99d71
             'Apache2::ServerRec::warn() w/o Apache2::RequestUtil->request ';
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
         Apache2::RequestUtil->request($r);
Jan Kaluza 9d99d71
@@ -193,14 +193,14 @@ sub handler {
Jan Kaluza 9d99d71
         # this uses the global $r to get $s internally
Jan Kaluza 9d99d71
         Apache2::ServerRec::warn("Apache2::ServerRec::warn test");
Jan Kaluza 9d99d71
         ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-            qr/\[warn\] Apache2::ServerRec::warn test/,
Jan Kaluza 9d99d71
+            qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/,
Jan Kaluza 9d99d71
             'Apache2::ServerRec::warn() w/ Apache2::RequestUtil->request ';
Jan Kaluza 7bbff0e
     }
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
     t_server_log_warn_is_expected();
Jan Kaluza 9d99d71
     warn "warn test";
Jan Kaluza 9d99d71
     ok t_cmp $logdiff->diff,
Jan Kaluza 9d99d71
-        qr/\[warn\] warn test/,
Jan Kaluza 9d99d71
+        qr/\[\w*:warn\] \[pid[^]]+\] warn test/,
Jan Kaluza 9d99d71
         'overriden via export warn()';
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
     Apache2::Const::OK;
Jan Kaluza 91619ea
diff --git a/t/response/TestDirective/cmdparms.pm b/t/response/TestDirective/cmdparms.pm
Jan Kaluza 91619ea
index 72e0d33..8dc0e73 100644
Jan Kaluza 91619ea
--- a/t/response/TestDirective/cmdparms.pm
Jan Kaluza 91619ea
+++ b/t/response/TestDirective/cmdparms.pm
Jan Kaluza 91619ea
@@ -134,6 +134,7 @@ TestCmdParms "Vhost"
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
 TestCmdParms "Location"
Jan Kaluza 91619ea
 
Jan Kaluza 91619ea
-<LimitExcept GET>
Jan Kaluza 91619ea
-    TestCmdParms "Limit"
Jan Kaluza 91619ea
-</LimitExcept>
Jan Kaluza 91619ea
+#FIXME! httpd 2.4 does not allow LimitExcept here
Jan Kaluza 91619ea
+# <LimitExcept GET>
Jan Kaluza 91619ea
+#     TestCmdParms "Limit"
Jan Kaluza 91619ea
+# </LimitExcept>
Jan Kaluza 91619ea
diff --git a/xs/APR/APR/Makefile.PL b/xs/APR/APR/Makefile.PL
Jan Kaluza 91619ea
index 99ac3d4..79a0a0e 100644
Jan Kaluza 91619ea
--- a/xs/APR/APR/Makefile.PL
Jan Kaluza 91619ea
+++ b/xs/APR/APR/Makefile.PL
Jan Kaluza 91619ea
@@ -66,6 +66,8 @@ if (SOLARIS && $libs) {
Jan Kaluza 91619ea
     $libs =~ s{-R\S+}{}g;
Jan Kaluza 91619ea
 }
Jan Kaluza 7bbff0e
 
Jan Kaluza 91619ea
+# FIXME: This should be done automatically somewhere in Apache2::Build
Jan Kaluza 91619ea
+$libs .= qq{ -laprutil-1 };
Jan Kaluza 91619ea
 $args{LIBS} = [$libs] if $libs;
Jan Kaluza 7bbff0e
 
Jan Kaluza 91619ea
 my $srcdir = '../../../src/modules/perl';
Jan Kaluza 91619ea
diff --git a/xs/APR/Socket/APR__Socket.h b/xs/APR/Socket/APR__Socket.h
Jan Kaluza 91619ea
index dfc681c..d59fce6 100644
Jan Kaluza 91619ea
--- a/xs/APR/Socket/APR__Socket.h
Jan Kaluza 91619ea
+++ b/xs/APR/Socket/APR__Socket.h
Jan Kaluza 91619ea
@@ -118,10 +118,10 @@ apr_status_t mpxs_APR__Socket_poll(apr_socket_t *socket,
Jan Kaluza 91619ea
 }
Jan Kaluza 7bbff0e
 
Jan Kaluza 91619ea
 #ifndef WIN32
Jan Kaluza 91619ea
-static MP_INLINE int mpxs_APR__Socket_fileno(pTHX_ apr_socket_t *sock)
Jan Kaluza 91619ea
+static MP_INLINE int mpxs_APR__Socket_fileno(pTHX_ apr_socket_t *socket)
Jan Kaluza 91619ea
 {
Jan Kaluza 91619ea
     apr_os_sock_t s;
Jan Kaluza 91619ea
-    apr_os_sock_get(&s, sock);
Jan Kaluza 91619ea
+    apr_os_sock_get(&s, socket);
Jan Kaluza 91619ea
     return s;
Jan Kaluza 91619ea
 }
Jan Kaluza 91619ea
 #endif
Jan Kaluza 9d99d71
diff --git a/xs/Apache2/Log/Apache2__Log.h b/xs/Apache2/Log/Apache2__Log.h
Jan Kaluza 91619ea
index 1866315..8281e8e 100644
Jan Kaluza 9d99d71
--- a/xs/Apache2/Log/Apache2__Log.h
Jan Kaluza 9d99d71
+++ b/xs/Apache2/Log/Apache2__Log.h
Jan Kaluza 9d99d71
@@ -36,6 +36,7 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg)
Jan Kaluza 9d99d71
     int lmask = level & APLOG_LEVELMASK;
Jan Kaluza 9d99d71
     server_rec *s;
Jan Kaluza 9d99d71
     request_rec *r = NULL;
Jan Kaluza 9d99d71
+    int loglevel = 0;
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
     if (SvROK(sv) && sv_isa(sv, "Apache2::Log::Request")) {
Jan Kaluza 9d99d71
         r = INT2PTR(request_rec *, SvObjIV(sv));
Jan Kaluza 9d99d71
@@ -48,13 +49,19 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg)
Jan Kaluza 9d99d71
         s = modperl_global_get_server_rec();
Jan Kaluza 9d99d71
     }
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
-    if ((lmask == APLOG_DEBUG) && (s->loglevel >= APLOG_DEBUG)) {
Jan Kaluza 9d99d71
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 9d99d71
+	loglevel = s->log.level;
Jan Kaluza 7bbff0e
+#else
Jan Kaluza 9d99d71
+	loglevel = s->loglevel;
Jan Kaluza 7bbff0e
+#endif
Jan Kaluza 9d99d71
+
Jan Kaluza 9d99d71
+    if ((lmask == APLOG_DEBUG) && (loglevel >= APLOG_DEBUG)) {
Jan Kaluza 9d99d71
         COP *cop = PL_curcop;
Jan Kaluza 9d99d71
         file = CopFILE(cop); /* (caller)[1] */
Jan Kaluza 9d99d71
         line = CopLINE(cop); /* (caller)[2] */
Jan Kaluza 7bbff0e
     }
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
-    if ((s->loglevel >= lmask) &&
Jan Kaluza 9d99d71
+    if ((loglevel >= lmask) &&
Jan Kaluza 9d99d71
         SvROK(msg) && (SvTYPE(SvRV(msg)) == SVt_PVCV)) {
Jan Kaluza 9d99d71
         dSP;
Jan Kaluza 9d99d71
         ENTER;SAVETMPS;
Jan Kaluza 91619ea
@@ -71,12 +78,21 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg)
Jan Kaluza 9d99d71
         str = SvPV(msg,n_a);
Jan Kaluza 7bbff0e
     }
Jan Kaluza 91619ea
 
Jan Kaluza 9d99d71
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 9d99d71
+    if (r) {
Jan Kaluza 9d99d71
+        ap_log_rerror(file, line, APLOG_MODULE_INDEX, level, 0, r, "%s", str);
Jan Kaluza 9d99d71
+    }
Jan Kaluza 9d99d71
+    else {
Jan Kaluza 9d99d71
+        ap_log_error(file, line, APLOG_MODULE_INDEX, level, 0, s, "%s", str);
Jan Kaluza 9d99d71
+    }
Jan Kaluza 9d99d71
+#else
Jan Kaluza 7bbff0e
     if (r) {
Jan Kaluza 9d99d71
         ap_log_rerror(file, line, level, 0, r, "%s", str);
Jan Kaluza 7bbff0e
     }
Jan Kaluza 7bbff0e
     else {
Jan Kaluza 9d99d71
         ap_log_error(file, line, level, 0, s, "%s", str);
Jan Kaluza 7bbff0e
     }
Jan Kaluza 9d99d71
+#endif
Jan Kaluza 7bbff0e
 
Jan Kaluza 7bbff0e
     if (svstr) {
Jan Kaluza 9d99d71
         SvREFCNT_dec(svstr);
Jan Kaluza 91619ea
@@ -257,12 +273,21 @@ MP_STATIC XS(MPXS_Apache2__Log_log_xerror)
Jan Kaluza 9d99d71
 
Jan Kaluza 7bbff0e
     msgstr = SvPV(msgsv, n_a);
Jan Kaluza 7bbff0e
 
Jan Kaluza 9d99d71
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 9d99d71
+    if (r) {
Jan Kaluza 9d99d71
+        ap_log_rerror(file, line, APLOG_MODULE_INDEX, level, status, r, "%s", msgstr);
Jan Kaluza 9d99d71
+    }
Jan Kaluza 9d99d71
+    else {
Jan Kaluza 9d99d71
+        ap_log_error(file, line, APLOG_MODULE_INDEX, level, status, s, "%s", msgstr);
Jan Kaluza 9d99d71
+    }
Jan Kaluza 9d99d71
+#else
Jan Kaluza 7bbff0e
     if (r) {
Jan Kaluza 9d99d71
         ap_log_rerror(file, line, level, status, r, "%s", msgstr);
Jan Kaluza 7bbff0e
     }
Jan Kaluza 7bbff0e
     else {
Jan Kaluza 9d99d71
         ap_log_error(file, line, level, status, s, "%s", msgstr);
Jan Kaluza 7bbff0e
     }
Jan Kaluza 9d99d71
+#endif
Jan Kaluza 7bbff0e
 
Jan Kaluza 7bbff0e
     SvREFCNT_dec(msgsv);
Jan Kaluza 7bbff0e
 
Jan Kaluza 91619ea
diff --git a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Jan Kaluza 91619ea
index e222c1b..f000502 100644
Jan Kaluza 91619ea
--- a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Jan Kaluza 91619ea
+++ b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Jan Kaluza 91619ea
@@ -162,8 +162,13 @@ SV *mpxs_Apache2__ServerRec_get_handlers(pTHX_ server_rec *s,
Jan Kaluza 91619ea
 #define mpxs_Apache2__ServerUtil_server(classname) modperl_global_get_server_rec()
Jan Kaluza 7bbff0e
 
Jan Kaluza 91619ea
 #if !defined(OS2) && !defined(WIN32) && !defined(BEOS)  && !defined(NETWARE)
Jan Kaluza 91619ea
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
Jan Kaluza 91619ea
+#define mpxs_Apache2__ServerUtil_user_id(classname)  ap_unixd_config.user_id
Jan Kaluza 91619ea
+#define mpxs_Apache2__ServerUtil_group_id(classname) ap_unixd_config.group_id
Jan Kaluza 91619ea
+#else
Jan Kaluza 91619ea
 #define mpxs_Apache2__ServerUtil_user_id(classname)  unixd_config.user_id
Jan Kaluza 91619ea
 #define mpxs_Apache2__ServerUtil_group_id(classname) unixd_config.group_id
Jan Kaluza 91619ea
+#endif
Jan Kaluza 91619ea
 #else
Jan Kaluza 91619ea
 #define mpxs_Apache2__ServerUtil_user_id(classname)  0
Jan Kaluza 91619ea
 #define mpxs_Apache2__ServerUtil_group_id(classname) 0
Jan Kaluza 9d99d71
diff --git a/xs/ModPerl/Const/Const.xs b/xs/ModPerl/Const/Const.xs
Jan Kaluza 9d99d71
index 33a4c0c..15fa36d 100644
Jan Kaluza 9d99d71
--- a/xs/ModPerl/Const/Const.xs
Jan Kaluza 9d99d71
+++ b/xs/ModPerl/Const/Const.xs
Jan Kaluza 9d99d71
@@ -17,6 +17,17 @@
Jan Kaluza 9d99d71
 #include "mod_perl.h"
Jan Kaluza 9d99d71
 #include "modperl_const.h"
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
+/* To define extern perl_module to something so Const.so can be loaded later */
Jan Kaluza 9d99d71
+module AP_MODULE_DECLARE_DATA perl_module = {
Jan Kaluza 9d99d71
+    STANDARD20_MODULE_STUFF,
Jan Kaluza 9d99d71
+    NULL, /* dir config creater */
Jan Kaluza 9d99d71
+    NULL,  /* dir merger --- default is to override */
Jan Kaluza 9d99d71
+    NULL, /* server config */
Jan Kaluza 9d99d71
+    NULL,  /* merge server config */
Jan Kaluza 9d99d71
+    NULL,              /* table of config file commands       */
Jan Kaluza 9d99d71
+    NULL,    /* register hooks */
Jan Kaluza 9d99d71
+};
Jan Kaluza 9d99d71
+
Jan Kaluza 9d99d71
 MODULE = ModPerl::Const    PACKAGE = ModPerl::Const
Jan Kaluza 9d99d71
 
Jan Kaluza 9d99d71
 PROTOTYPES: disable
Jan Kaluza 91619ea
diff --git a/xs/maps/modperl_types.map b/xs/maps/modperl_types.map
Jan Kaluza 91619ea
index 3b02f02..8c6d541 100644
Jan Kaluza 91619ea
--- a/xs/maps/modperl_types.map
Jan Kaluza 91619ea
+++ b/xs/maps/modperl_types.map
Jan Kaluza 91619ea
@@ -7,6 +7,8 @@ struct modperl_filter_t | Apache2::OutputFilter
Jan Kaluza 91619ea
 SV *  | SV
Jan Kaluza 91619ea
 I32   | IV
Jan Kaluza 91619ea
 I32 * | IV
Jan Kaluza 91619ea
+U16   | UV
Jan Kaluza 91619ea
+U16 * | UV
Jan Kaluza 91619ea
 U32   | UV
Jan Kaluza 91619ea
 U32 * | UV
Jan Kaluza 9d99d71