Fixed some packages listing stability.
[MyWeb.git] / Web.pm
diff --git a/Web.pm b/Web.pm
index 02b94bc..48ad926 100644 (file)
--- a/Web.pm
+++ b/Web.pm
@@ -67,7 +67,6 @@ BEGIN
                $callers{$selfpkg}=1;
                for my $target ($class,__PACKAGE__) {
                        for my $caller (keys(%callers)) {
-                               next if $caller eq $target;
                                next if $packages_used_hash{$caller}{$target}++;
                                cluck "Appending to the '_done' package list: caller=$caller,target=$target"
                                                if $packages_used_hash{$caller}{"_done"};
@@ -131,6 +130,7 @@ require MIME::Types;
 require MIME::Parser;
 use Apache2::RequestRec;
 use Apache2::RequestIO;
+use Apache2::Response;
 
 
 #our $W;
@@ -221,8 +221,10 @@ my($class,%args)=@_;
                        $$_=0 if !defined $$_;
                        }
                }
+       # Used only if: $W->{"http_safe"}
+       # but we would cause on different method(): Appending to the '_done' package list
+       Wrequire 'My::Hash::RecordKeys';
        if ($W->{"http_safe"}) {
-               Wrequire 'My::Hash::RecordKeys';
                $W->{"headers_in_RecordKeys"}=My::Hash::RecordKeys->new($W->{"headers_in"});
                $W->{"headers_in"}=$W->{"headers_in_RecordKeys"};
                }
@@ -276,9 +278,11 @@ my($class,%args)=@_;
                $W->{"head"}.='<script type="application/javascript" src="'.uri_escaped(path_web('/My/HaveJS.pm')).'"></script>'."\n";
                }
 
-       do { _args_check(%$_) if $_; } for ($W->{"args_check"});
-
+       # Required by &_args_check below.
        $W->{"_init_done"}=1;
+
+       do { _args_check(%$_) if $_; } for $W->{"args_check"};
+
        return $W;
 }
 
@@ -647,6 +651,7 @@ my($msg)=@_;
        if (!$W->{"heading_done"}) {
                $W->{"indexme"}=0;      # For the case no heading was sent yet.
                $W->{"header_only"}=0;  # assurance for &heading
+               $W->{"content_type"}="text/html";       # Force HTML and avoid strictly checked XHTML.
                My::Web->heading();
                }
        Wprint "\n".vskip("3ex")."<hr /><h1 class=\"error\">FATAL ERROR: $msg!</h1>\n"
@@ -1113,14 +1118,16 @@ my($f)=@_;
 
 sub cache_start()
 {
+       # Used only if: !$W->{"http_safe"}
+       # but we would cause on different method(): Appending to the '_done' package list
+       # &Wrequire it here even if it will not be later used; to be stable!
+       Wrequire 'My::Hash::RestrictTo';
        if (!$W->{"http_safe"}) {
                __PACKAGE__->_no_cache();
                return;
                }
 
        {
-               # &Wrequire it here even if it will not be later used; to be stable!
-               Wrequire 'My::Hash::RestrictTo';
                my %uri_args_hash=(
                        "method"=>$W->{"r"}->method(),
                        "uri"=>"http://".$W->{"web_hostname"}."/".$W->{"r"}->uri(),