Author: torsten Date: Tue Feb 7 09:41:53 2012 New Revision: 1241394 URL: http://svn.apache.org/viewvc?rev=1241394&view=rev Log: Merged revisions 1125476,1125479,1145161,1213838,1213841,1213902,1221285,1221359,1222775 via svnmerge from https://svn.eu.apache.org/repos/asf/perl/modperl/trunk
........ r1125476 | torsten | 2011-05-20 19:22:24 +0200 (Fri, 20 May 2011) | 1 line adopt the Perl_sv_dup() changes in Perl 5.14 ........ r1125479 | torsten | 2011-05-20 19:32:03 +0200 (Fri, 20 May 2011) | 1 line again, forgot about Changes in commit 1125476 ........ r1145161 | torsten | 2011-07-11 15:07:46 +0200 (Mon, 11 Jul 2011) | 1 line move <LimitExcept> into a <Directory />. In httpd-2.3 it is not allowed in server config context ........ r1213838 | gozer | 2011-12-13 19:33:18 +0100 (Tue, 13 Dec 2011) | 3 lines Avoid -Wall warning when mg_flags isn't used. ........ r1213841 | gozer | 2011-12-13 19:34:16 +0100 (Tue, 13 Dec 2011) | 5 lines When generating XS code, include var = var; declarations on the arguments, since we don't know if they will be used, and we want to keep -Wall builds succeeding. ........ r1213902 | gozer | 2011-12-13 21:04:15 +0100 (Tue, 13 Dec 2011) | 3 lines Silence a compiler warning when MP_TRACE is not enabled ........ r1221285 | gozer | 2011-12-20 15:40:21 +0100 (Tue, 20 Dec 2011) | 6 lines Adjust for latest ExtUtils::MakeMaker internal change. We must call init_tools when it is available. Reference: https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/f4904b4ce499b7f0c420efae69f44e19fe7dd12f ........ r1221359 | gozer | 2011-12-20 18:22:31 +0100 (Tue, 20 Dec 2011) | 7 lines Apache 2.4 and onwards doesn't require linking the MPM module directly in the httpd binary anymore. APXS lost the MPM_NAME query, so we can't assume a given MPM anymore. Introduce a fake MPM 'dynamic' to represent this. Borrowed from the 2.4 branch ........ r1222775 | gozer | 2011-12-23 19:20:27 +0100 (Fri, 23 Dec 2011) | 3 lines Discover apr-2-config from Apache 2.4 onwards. ........ Modified: perl/modperl/branches/threading/ (props changed) perl/modperl/branches/threading/Changes perl/modperl/branches/threading/lib/Apache2/Build.pm perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm perl/modperl/branches/threading/src/modules/perl/mod_perl.c perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm Propchange: perl/modperl/branches/threading/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Feb 7 09:41:53 2012 @@ -1 +1 @@ -/perl/modperl/trunk:594682-672484,672819-681118,693357,700369,732889-736218,751909-752425,757553-774171,807116,807332-807649,907778-932879,933373-933563,935519,936643,940287,957309-983073,985740,987933-1023553,1029211-1052232,1062311-1062448,1066644-1074122,1076733,1083541,1089349-1096565,1124132 +/perl/modperl/trunk:594682-672484,672819-681118,693357,700369,732889-736218,751909-752425,757553-774171,807116,807332-807649,907778-932879,933373-933563,935519,936643,940287,957309-983073,985740,987933-1023553,1029211-1052232,1062311-1062448,1066644-1074122,1076733,1083541,1089349-1096565,1124132,1125476-1145161,1213838-1222775 Propchange: perl/modperl/branches/threading/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Tue Feb 7 09:41:53 2012 @@ -1 +1 @@ -/perl/modperl/trunk:1-712967,712969-1125405 +/perl/modperl/trunk:1-712967,712969-1241385 Modified: perl/modperl/branches/threading/Changes URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/Changes?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/Changes (original) +++ perl/modperl/branches/threading/Changes Tue Feb 7 09:41:53 2012 @@ -31,6 +31,17 @@ Expose modperl_interp_t via ModPerl::Int =item 2.0.6-dev +Discover apr-2-config from Apache 2.4 onwards. [Gozer] + +Apache 2.4 and onwards doesn't require linking the MPM module directly in +the httpd binary anymore. APXS lost the MPM_NAME query, so we can't assume +a given MPM anymore. Introduce a fake MPM 'dynamic' to represent this. +[Torsten Foertsch, Gozer] + +Perl 5.14 brought a few changes in Perl_sv_dup() that made a threaded apache +segfault while cloning interpreters. +[Torsten Foertsch] + PerlIOApache_flush() and mpxs_Apache2__RequestRec_rflush() now no longer throw exceptions when modperl_wbucket_flush() fails if the failure was just a reset connection or an aborted connection. The failure is simply logged to the error Modified: perl/modperl/branches/threading/lib/Apache2/Build.pm URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/lib/Apache2/Build.pm?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/lib/Apache2/Build.pm (original) +++ perl/modperl/branches/threading/lib/Apache2/Build.pm Tue Feb 7 09:41:53 2012 @@ -277,7 +277,8 @@ sub caller_package { } my %threaded_mpms = map { $_ => 1 } - qw(worker winnt beos mpmt_os2 netware leader perchild threadpool); + qw(worker winnt beos mpmt_os2 netware leader perchild threadpool + dynamic); sub mpm_is_threaded { my $self = shift; my $mpm_name = $self->mpm_name(); @@ -292,7 +293,15 @@ sub mpm_name { # XXX: hopefully apxs will work on win32 one day return $self->{mpm_name} = 'winnt' if WIN32; - my $mpm_name = $self->apxs('-q' => 'MPM_NAME'); + my $mpm_name; + + # httpd >= 2.3 + if ($self->httpd_version_as_int =~ m/^2[3-9]\d+/) { + $mpm_name = 'dynamic'; + } + else { + $mpm_name = $self->apxs('-q' => 'MPM_NAME'); + } # building against the httpd source dir unless (($mpm_name and $self->httpd_is_source_tree)) { @@ -1145,7 +1154,18 @@ sub apr_bindir { sub apr_generation { my ($self) = @_; - return $self->httpd_version_as_int =~ m/2[1-9]\d+/ ? 1 : 0; + + my $httpd_v = $self->httpd_version_as_int; + + if ($httpd_v =~ m/2[4-9]\d+/) { + return 2; + } + elsif ($httpd_v =~ m/2[1-3]\d+/) { + return 1; + } + else { + return; + } } # returns an array of apr/apu linking flags (--link-ld --libs) if found @@ -1205,7 +1225,8 @@ sub apru_config_path { $self->{$key} = $self->{$mp_key}; } - my $config = $self->apr_generation ? "$what-1-config" : "$what-config"; + my $apr_generation = $self->apr_generation; + my $config = $apr_generation ? "$what-${apr_generation}-config" : "$what-config"; if (!$self->{$key}) { my @tries = (); @@ -1573,8 +1594,11 @@ sub make_tools { require ExtUtils::MakeMaker; my $mm = bless { @mm_init_vars }, 'MM'; - $mm->init_main; - $mm->init_others; + + # Fake initialize MakeMaker + foreach my $m (qw(init_main init_others init_tools)) { + $mm->$m() if $mm->can($m); + } for (qw(rm_f mv ld ar cp test_f)) { my $val = $mm->{"\U$_"}; Modified: perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm (original) +++ perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm Tue Feb 7 09:41:53 2012 @@ -156,9 +156,16 @@ EOF my $retval = $return_type eq 'void' ? ["", ""] : ["RETVAL = ", "OUTPUT:\n RETVAL\n"]; - + + my $avoid_warning = ""; + if (@$args and not $passthru) { + $avoid_warning = " /* avoiding -Wall warnings */\n"; + $avoid_warning .= join "\n", + (map " $_->{name} = $_->{name};", @$args), ""; + } $code .= <<EOF; CODE: +$avoid_warning $retval->[0]$dispatch($thx$parms); $retval->[1] Modified: perl/modperl/branches/threading/src/modules/perl/mod_perl.c URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/mod_perl.c?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/src/modules/perl/mod_perl.c (original) +++ perl/modperl/branches/threading/src/modules/perl/mod_perl.c Tue Feb 7 09:41:53 2012 @@ -440,13 +440,13 @@ int modperl_init_vhost(server_rec *s, ap void modperl_init(server_rec *base_server, apr_pool_t *p) { server_rec *s; - modperl_config_srv_t *base_scfg; PerlInterpreter *base_perl; - - base_scfg = modperl_config_srv_get(base_server); +#ifdef MP_TRACE + modperl_config_srv_t *base_scfg = modperl_config_srv_get(base_server); MP_TRACE_d_do(MpSrv_dump_flags(base_scfg, base_server->server_hostname)); +#endif /* MP_TRACE */ #ifndef USE_ITHREADS if (modperl_threaded_mpm()) { Modified: perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c (original) +++ perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c Tue Feb 7 09:41:53 2012 @@ -338,6 +338,9 @@ modperl_perl_global_gvhv_restore(pTHX_ m */ MP_magical_untie(gvhv->tmphv, mg_flags); SvREFCNT_dec(gvhv->tmphv); + + /* avoiding -Wall warning */ + mg_flags = mg_flags; } static void Modified: perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c (original) +++ perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c Tue Feb 7 09:41:53 2012 @@ -30,7 +30,7 @@ #ifdef USE_ITHREADS #if MP_PERL_BRANCH(5, 6) -# define my_sv_dup(s, p) sv_dup(s) +# define my_sv_dup(s, p) SvREFCNT_inc(sv_dup(s)) typedef struct { AV *stashes; @@ -39,7 +39,11 @@ typedef struct { } CLONE_PARAMS; #else -# define my_sv_dup(s, p) sv_dup(s, p) +# ifdef sv_dup_inc +# define my_sv_dup(s, p) sv_dup_inc(s, p) +# else +# define my_sv_dup(s, p) SvREFCNT_inc(sv_dup(s, p)) +# endif #endif /* @@ -89,8 +93,7 @@ PTR_TBL_t *modperl_svptr_table_clone(pTH /* key is just a pointer we do not modify, no need to copy */ dst_ent->oldval = src_ent->oldval; - dst_ent->newval = - SvREFCNT_inc(my_sv_dup((SV*)src_ent->newval, &parms)); + dst_ent->newval = my_sv_dup((SV*)src_ent->newval, &parms); } } Modified: perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm?rev=1241394&r1=1241393&r2=1241394&view=diff ============================================================================== --- perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm (original) +++ perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm Tue Feb 7 09:41:53 2012 @@ -135,6 +135,8 @@ TestCmdParms "Vhost" TestCmdParms "Location" -<LimitExcept GET> - TestCmdParms "Limit" -</LimitExcept> +<Directory /> + <LimitExcept GET> + TestCmdParms "Limit" + </LimitExcept> +</Directory>