OSDN Git Service

Fixed bug: Evaluated the header section with the body section in HTTP negotiate check.
[ultramonkey-l7/ultramonkey-l7-v2.git] / l7directord / l7directord
index f628f24..f986823 100755 (executable)
@@ -2124,12 +2124,21 @@ sub check_http {
     my $status_line = $res->status_line;
     $status_line =~ s/[\r\n]//g;
 
+    my $response = "";
+    my ($res_head, $res_body) = split /\n\n/, $res->as_string, 2;
+    if ($v->{httpmethod} eq "HEAD") {
+       $response = $res_head;
+    }
+    else {
+       $response = $res_body;
+    }
+
     my $recstr = $r->{receive};
     if (!$res->is_success) {
         ld_log( _message( 'WRN1102', $status_line, $r->{server}{ip}, $port ) ) if (!defined $status || $status eq $SERVICE_UP);
         return $SERVICE_DOWN;
     }
-    elsif (defined $recstr && $res->content !~ /$recstr/) {
+    elsif (defined $recstr && $response !~ /$recstr/) {
         ld_log( _message( 'WRN1103', $recstr, $r->{server}{ip}, $port ) ) if (!defined $status || $status eq $SERVICE_UP);
         ld_debug(3, "HTTP Response " . $res->headers->as_string);
         ld_debug(2, "check_http: $r->{url} is down\n");