]> sjero.net Git - wget/blobdiff - tests/HTTPServer.pm
Fix build when libpsl is not available
[wget] / tests / HTTPServer.pm
index 58b1a363b4fc0570ad45858f5fde20c80cb6d747..065ea1ed87250c0c6769132ad53f721c4f58ddca 100644 (file)
@@ -123,7 +123,7 @@ sub send_response {
             next;
         }
         # fill in content
-        $content = $self->_substitute_port($content);
+        $content = $self->_substitute_port($content) if defined $content;
         $resp->content($content);
         print STDERR "HTTP::Response with content: \n", $resp->as_string if $log;
     }
@@ -218,11 +218,24 @@ sub verify_request_headers {
 
     return 1 unless exists $url_rec->{'request_headers'};
     for my $hdrname (keys %{$url_rec->{'request_headers'}}) {
-        my $rhdr = $req->header ($hdrname);
+        my $must_not_match;
         my $ehdr = $url_rec->{'request_headers'}{$hdrname};
-        unless (defined $rhdr && $rhdr =~ $ehdr) {
-            print STDERR "\n*** Mismatch on $hdrname: $rhdr =~ $ehdr\n";
-            return undef;
+        if ($must_not_match = ($hdrname =~ /^!(\w+)/)) {
+            $hdrname = $1;
+        }
+        my $rhdr = $req->header ($hdrname);
+        if ($must_not_match) {
+            if (defined $rhdr && $rhdr =~ $ehdr) {
+                $rhdr = '' unless defined $rhdr;
+                print STDERR "\n*** Match forbidden $hdrname: $rhdr =~ $ehdr\n";
+                return undef;
+            }
+        } else {
+            unless (defined $rhdr && $rhdr =~ $ehdr) {
+                $rhdr = '' unless defined $rhdr;
+                print STDERR "\n*** Mismatch on $hdrname: $rhdr =~ $ehdr\n";
+                return undef;
+            }
         }
     }