Attempted resolving of non-matching headers.
[MyWeb.git] / Web.pm
diff --git a/Web.pm b/Web.pm
index ae77471..2a9406d 100644 (file)
--- a/Web.pm
+++ b/Web.pm
@@ -144,7 +144,9 @@ my($class,%args)=@_;
        Wrequire 'My::Hash';
 
        # $W={} can get somehow created very easily.
-       cluck "W not empty:\n".Dumper($W) if keys(%$W);
+       # Do not: cluck "W not empty:\n".Dumper($W) if keys(%$W);
+       # to prevent (of $W->{"headers_in"}): TODO: Enumeration may not be expected.
+       cluck "W not empty; __PACKAGE__ was: ".$W->{"__PACKAGE__"} if keys(%$W);
        $W=My::Hash->new({},"My::Hash::Sub","My::Hash::Push");
        bless $W,$class;
        %$W=(
@@ -304,7 +306,7 @@ sub exit_hook
 }
 sub exit_hook_start
 {
-       cluck "exit_hook_start() twice?" if defined $exit_orig;
+       do { cluck "exit_hook_start() twice?"; return; } if defined $exit_orig;
        $exit_orig=\&CORE::GLOBAL::exit;
        # Prevent: Subroutine CORE::GLOBAL::exit redefined
        no warnings 'redefine';
@@ -314,7 +316,8 @@ sub exit_hook_stop
 {
        do { cluck "exit_hook_stop() without exit_hook_start()?"; return; }
                        if \&exit_hook ne \&CORE::GLOBAL::exit;
-       cluck "INTERNAL: exit_orig uninitialized" if !$exit_orig;
+       do { cluck "INTERNAL: exit_orig uninitialized"; return; }
+                       if !$exit_orig;
        # Prevent: Subroutine CORE::GLOBAL::exit redefined
        no warnings 'redefine';
        *CORE::GLOBAL::exit=$exit_orig;
@@ -1044,6 +1047,9 @@ sub cache_finish()
        # as we may have just gave 304 and 'exit;' without starting the caching.
        return if !$W->{"cache_active"};
 
+       # Headers may not be complete in this case; not sure, just trying.
+       return if $W->{"r"}->connection()->aborted();
+
        # Fill-in/check: %uri_args_frozen_to_headers_in_keys
        my $headers_in_keys_stored_arrayref_ref=\$uri_args_frozen_to_headers_in_keys{$W->{"uri_args_frozen"}};
        my @headers_in_keys=tied(%{$W->{"headers_in_RecordKeys"}})->accessed();