insert LoadModule directives only outside of sections.

PR: 9012


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@98721 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
André Malo
2003-02-19 03:01:21 +00:00
parent 49d4fdac6a
commit bb51a76b79
2 changed files with 26 additions and 2 deletions

View File

@ -2,6 +2,9 @@ Changes with Apache 2.1.0-dev
[Remove entries to the current 2.0 section below, when backported]
*) Fix apxs to insert LoadModule directives only outside of sections.
PR 9012. [Andr<64> Malo]
*) Hook mod_proxy's fixup before mod_rewrite's fixup, so that by
mod_rewrite proxied URLs will not be escaped accidentally by
mod_proxy's fixup. PR 16368 [Andr<64> Malo]

View File

@ -577,9 +577,30 @@ if ($opt_i or $opt_e) {
foreach $lmd (@lmd) {
my $what = $opt_A ? "preparing" : "activating";
if ($content !~ m|\n#?\s*$lmd|) {
$content =~ s|^(.*\n#?\s*LoadModule\s+[^\n]+\n)|$1$c$lmd\n|sg;
# check for open <containers>, so that the new LoadModule
# directive always appears *outside* of an <container>.
my $before = ($content =~ m|^(.*\n)#?\s*LoadModule\s+[^\n]+\n|s)[0];
my $cntopen = () = ($before =~ m|^\s*<[^/].*$|mg);
my $cntclose = () = ($before =~ m|^\s*</.*$|mg);
if ($cntopen == $cntclose) {
# fine. Last LoadModule is contextless.
$content =~ s|^(.*\n#?\s*LoadModule\s+[^\n]+\n)|$1$c$lmd\n|s;
}
elsif ($cntopen < $cntclose) {
error('Configuration file is not valid. There are sections'
. ' closed before opened.');
exit(1);
}
else {
# put our cmd after the section containing the last
# LoadModule.
$content =~ s!\A((?:(?:^\s*(?:[^<]|<[^/]).*(?:$)\n)*^\s*</.*(?:$)\n?){$cntopen})!$1$c$lmd\n!m;
}
} else {
$content =~ s|^(.*\n)#?\s*$lmd[^\n]*\n|$1$c$lmd\n|sg;
# replace already existing LoadModule line
$content =~ s|^(.*\n)#?\s*$lmd[^\n]*\n|$1$c$lmd\n|s;
}
$lmd =~ m|LoadModule\s+(.+?)_module.*|;
notice("[$what module `$1' in $CFG_SYSCONFDIR/$CFG_TARGET.conf]");