--- /dev/null
+Index: Web.pm
+===================================================================
+RCS file: /home/short/pserver/cvs/MyWeb/Web.pm,v
+retrieving revision 1.15
+diff -u -p -r1.15 Web.pm
+--- Web.pm 10 Nov 2005 06:39:24 -0000 1.15
++++ Web.pm 5 Dec 2005 13:51:46 -0000
+@@ -204,11 +204,44 @@ my($class,%args)=@_;
+
+ $W->{"headers_in"}=$W->{"r"}->headers_in();
+ Wrequire 'My::Hash::Merge';
++ my $headers_in_orig=$W->{"headers_in"};
+ $W->{"headers_in"}=My::Hash::Merge->new(
+- $W->{"headers_in"},
++ # Proper ordering - "Accept" is overriding!
+ My::Hash::Sub->new({
+ "_remote_ip"=>sub { return $W->{"r"}->connection()->remote_ip(); },
++ "Accept"=>sub {
++ return our $r||=do {
++ my $accept_string=$headers_in_orig->{"Accept"};
++ if ($accept_string && (my $gecko_version=$W->{"browser"}->gecko_version())) {
++ # Since Gecko "rv:1.8", that means since Firefox-1.5.
++ if ("001-008" le join("-",map((sprintf("%03d",$_)),split(/[.]/,$gecko_version)))) {
++ my $http_headers=HTTP::Headers->new($accept_string);
++ my $format=HTTP::Negotiate::choose([
++ [
++ "image/catch-missing-svg-type", # ID
++ 0.9, # QS
++ "image/catch-missing-svg-type", # Content-Type
++ ],
++ [
++ "image/svg+xml", # ID
++ 0.8, # QS
++ "image/svg+xml", # Content-Type
++ ],
++ ],$http_headers);
++ if ($format && $format eq "image/catch-missing-svg-type") {
++ # Image requests: "image/png,*/*;q=0.5"
++ # and thus "image/png" is assigned the same priority.
++ # FIXME: RFC 2068 (HTTP/1.1) does not specify the behavior!
++ # HTTP::Negotiate fortunately follows the ordering preferences.
++ $accept_string="image/svg+xml,".$accept_string;
++ }
++ }
++ }
++ $accept_string;
++ };
++ },
+ }),
++ $W->{"headers_in"},
+ );
+ Wrequire 'My::Hash::Readonly';
+ $W->{"headers_in"}=My::Hash::Readonly->new($W->{"headers_in"});
+Index: Hash/Merge.pm
+===================================================================
+RCS file: /home/short/pserver/cvs/MyWeb/Hash/Merge.pm,v
+retrieving revision 1.1
+diff -u -p -r1.1 Merge.pm
+--- Hash/Merge.pm 18 Sep 2005 06:43:14 -0000 1.1
++++ Hash/Merge.pm 5 Dec 2005 13:51:46 -0000
+@@ -40,19 +40,16 @@ my($class,@parents)=@_;
+ return $self;
+ }
+
++# Multiplicity is permitted, first one is chosen.
+ sub key_find($$)
+ {
+ my($self,$key)=@_;
+
+- my $count=0;
+ my $first;
+ for my $parent (@{$self->{"parents"}}) {
+ next if !exists $parent->{$key};
+- $count++;
+ $first||=$parent;
+ }
+- # 0 IS allowed here.
+- cluck "Duplicity ($count-icity) for key: $key" if $count>=2;
+ $first||=$self->{"parents"}[0];
+ return $first;
+ }