@@ -459,46 +459,26 @@ sub handle_http {
459459
460460 (my $k = $_ ) =~ tr / [A-Z]/ [a-z]/ ;
461461
462- my $verify_value = 1;
463- my $verify_less_than = 0;
464- my $key_inverted = 0;
465-
466- if (substr ($k , 0, 1) eq ' +' ) {
467- $k = substr ($k , 1);
468- $verify_value = 0;
469- } elsif (substr ($k , 0, 1) eq ' -' ) {
470- # # the key should NOT exist
471- $k = substr ($k , 1);
472- $key_inverted = 1;
473- $verify_value = 0; # # skip the value check
474- } elsif (substr ($k , 0, 1) eq ' <' ) {
475- # # the value must be less than
476- $k = substr ($k , 1);
477- $verify_less_than = 1;
478- }
462+ # prefix '+' or '-' to require presence (or not) of header
463+ # prefix '<' to require response value < expected value
464+ # no prefix to require response value match expected value
465+ my $tag = $k =~ s / ^([<+-])// ? $1 : ' ' ;
479466
480- if ($key_inverted ) {
481- if (defined $resp_hdr {$k }) {
482- diag(sprintf (" \n header '%s ' MUST not be set" , $k ));
483- return -1;
484- }
485- } else {
486- if (not defined $resp_hdr {$k }) {
487- diag(sprintf (" \n required header '%s ' is missing" , $k ));
488- return -1;
489- }
467+ if (defined ($resp_hdr {$k }) ^ !!($tag ne ' -' )) {
468+ diag(sprintf (" \n header '%s ' %s " , $k , ($tag ne ' -' ? " is missing" : " MUST NOT be set" )));
469+ return -1;
490470 }
491471
492- if ($verify_value ) {
472+ if ($tag ne ' + ' && $tag ne ' - ' ) {
493473 if (ref ($href -> {$_ }) eq " Regexp" ) {
494474 if ($resp_hdr {$k } !~ $href -> {$_ }) {
495475 diag(sprintf (
496476 " \n response-header failed: expected '%s ', got '%s ', regex: %s " ,
497477 $href -> {$_ }, $resp_hdr {$k }, $1 ));
498478 return -1;
499479 }
500- } elsif ($verify_less_than ) {
501- if ($resp_hdr {$k } >= $href -> {$_ }) {
480+ } elsif ($tag eq ' < ' ) {
481+ if (!( $resp_hdr {$k } < $href -> {$_ }) ) {
502482 diag(sprintf (
503483 " \n response-header failed: expected '%s ' > '%s '" ,
504484 $href -> {$_ }, $resp_hdr {$k }));
0 commit comments