Hi,

I'm trying to get the current mod_perl trunk to build on Debian unstable
(with Apache 2.4.10 and Perl 5.18.2), and I'm seeing a failure in
t/compat/conn_rec.t. It's getting an internal server error at test 3,
with this in t/logs/error_log:

 [Thu Aug 07 14:15:39.916269 2014] [perl:error] [pid 19060:tid 140108267251456] 
[client 127.0.0.1:36626] overriding Apache2::Connection::remote_addr didn't 
return a CODE ref at 
/home/niko/tmp/libapache2-mod-perl2/blib/lib/Apache2/compat.pm line 252.\n

So it's the remote_addr vs. client_addr thing again.

The test used to work with the httpd24 branch at r1449661, and it
looks like it broke with r1497279, which restored 2.2 compatibility
in lib/Apache2/compat.pm

 http://svn.apache.org/viewvc?view=revision&revision=1497279

If I understand this correctly, Apache2::compat is supposed to provide
mod_perl 1.0 backward compatibility, so we want to offer remote_addr()
there even with Apache 2.4. Does the attached patch make sense? It works
for me on 2.4 and I'd expect it to work with 2.2 too (but I haven't
verified that.)
-- 
Niko Tyni   nt...@debian.org
>From 84a28e4c1a673742673a80fb8eb64bde2e8ff54c Mon Sep 17 00:00:00 2001
From: Niko Tyni <nt...@debian.org>
Date: Thu, 7 Aug 2014 00:18:23 +0300
Subject: [PATCH] Restore httpd-2.4 compatibility in lib/Apache2/compat.pm

This fixes t/compat/conn_rec.t. failures with Apache 2.4,
broken with r1497279.

Apache2::compat is supposed to provide mod_perl 1.0 backward
compatibility, so we want to offer remote_addr() there even with
Apache 2.4.
---
 lib/Apache2/compat.pm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/Apache2/compat.pm b/lib/Apache2/compat.pm
index e7e2c0f..9c3eccd 100644
--- a/lib/Apache2/compat.pm
+++ b/lib/Apache2/compat.pm
@@ -150,7 +150,12 @@ EOI
     require Apache2::Connection;
     require APR::SockAddr;
     require Socket;
-    my $orig_sub = *Apache2::Connection::remote_addr{CODE};
+    my $orig_sub;
+    if (defined *Apache2::Connection::client_addr{CODE}) { # httpd-2.4
+        $orig_sub = *Apache2::Connection::client_addr{CODE};
+    } else { # httpd-2.2
+        $orig_sub = *Apache2::Connection::remote_addr{CODE};
+    }
     *Apache2::Connection::remote_addr = sub {
         my $c = shift;
         if (@_) {
-- 
2.0.1


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to