Hi,
I've talked with Torsten about the mod_perl and httpd-2.4 compatibility
and he advised me to start discussion about this problem.
Attached patch against httpd24 branch fixes the compilation with
httpd-2.4. I was not able to generate xs using "make source_scan", so
I've changed them manually. Should source_scan.pl work...?
Except the source_scan.pl issue, there is one issue which has to be
addressed too.
conn_rec->remote_ip and conn_rec->remote_addr have been removed and
replaced by request_rec->useragent_ip, request_rec->useragent_addr and
conn_rec->client_ip, conn_rec->client_addr. See [1] to read about the
differences between them.
There are two ways how to address this issue:
1. Break the compatibility with older mod_perl versions. The advantage
is that mod_perl will stay consistent with httpd and mod_perl developers
would not have to maintain the compatibility layer.
The disadvantage is that if there are projects using mod_perl and
remote_ip/remote_addr, they would have to be fixed too. However, it's
the very same situation like with httpd-2.4, where all the modules using
remote_ip/remote_addr have to be fixed too.
2. Introduce the compatibility layer. I'm not Perl expert, but I think
with the way how mod_perl is built currently it's not doable out-of-box
(I can be wrong of course).
Interesting thing is also that most modules I've ported to httpd-2.4 use
remote_ip/remote_addr in the meaning of useragent_ip/useragent_addr. In
http-2.4 these two pairs are members of different structs (conn_rec and
request_rec). I think I can't imagine how would we map
conn_rec->remote_ip to request_rec->useragent_ip...
Personally I would vote for the number 1 and bumping mod_perl version.
I'm not Perl developer, I just co-maintain mod_perl in Fedora and in the
development version httpd has been updated to 2.4, so mod_perl is not
building there anymore.
Regards,
Jan Kaluza
Index: src/modules/perl/modperl_interp.c
===================================================================
--- src/modules/perl/modperl_interp.c (revision 1324590)
+++ src/modules/perl/modperl_interp.c (working copy)
@@ -500,7 +500,7 @@
"set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
(unsigned long)interp, desc, (unsigned long)p,
(r ? (is_subrequest ? "sub" : "main") : "conn"),
- (r ? r->uri : c->remote_ip));
+ (r ? r->uri : c->client_ip));
}
/* set context (THX) for this thread */
Index: xs/tables/current/Apache2/StructureTable.pm
===================================================================
--- xs/tables/current/Apache2/StructureTable.pm (revision 1324590)
+++ xs/tables/current/Apache2/StructureTable.pm (working copy)
@@ -2708,11 +2708,11 @@
},
{
'type' => 'apr_sockaddr_t *',
- 'name' => 'remote_addr'
+ 'name' => 'client_addr'
},
{
'type' => 'char *',
- 'name' => 'remote_ip'
+ 'name' => 'client_ip'
},
{
'type' => 'char *',
@@ -2955,6 +2955,14 @@
},
{
'type' => 'char *',
+ 'name' => 'useragent_ip'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'useragent_addr'
+ },
+ {
+ 'type' => 'char *',
'name' => 'the_request'
},
{
@@ -3245,10 +3253,6 @@
},
{
'type' => 'int',
- 'name' => 'loglevel'
- },
- {
- 'type' => 'int',
'name' => 'is_virtual'
},
{
Index: Apache-Reload/Makefile.PL
===================================================================
--- Apache-Reload/Makefile.PL (revision 1324590)
+++ Apache-Reload/Makefile.PL (working copy)
@@ -11,7 +11,7 @@
# MOD_PERL_2_BUILD is set from building from mod_perl Makefile.PL which should
# also set MP_APXS
if ($ENV{MOD_PERL_2_BUILD}) {
- push @ARGV, "-apxs", $ENV{MP_APXS};
+ push @ARGV, "-apxs $ENV{MP_APXS}";
my $mp_gen = satisfy_mp_generation(2);
}
else {
Index: Apache-SizeLimit/Makefile.PL
===================================================================
--- Apache-SizeLimit/Makefile.PL (revision 1324590)
+++ Apache-SizeLimit/Makefile.PL (working copy)
@@ -11,7 +11,7 @@
# MOD_PERL_2_BUILD is set from building from mod_perl Makefile.PL which should
# also set MP_APXS
if ($ENV{MOD_PERL_2_BUILD}) {
- push @ARGV, "-apxs", $ENV{MP_APXS};
+ push @ARGV, "-apxs $ENV{MP_APXS}";
my $mp_gen = satisfy_mp_generation(2);
}
else {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org