Index: ldirectord =================================================================== RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/ldirectord,v retrieving revision 1.62.2.1 diff -u -r1.62.2.1 ldirectord --- ldirectord 24 Mar 2003 09:10:23 -0000 1.62.2.1 +++ ldirectord 18 Apr 2003 03:00:03 -0000 @@ -1058,43 +1058,34 @@ my $ref; my $realsrv=0; - my $request; - my $receive; my $new_rsrv; + my $rsrv; + + $new_rsrv = {"server"=>$ip, "port"=>$port}; $flags =~ /(\w+)(.*)/ && ($1 eq "gate" || $1 eq "masq" || $1 eq "ipip") or &config_error($line, "forward method must be gate, masq or ipip"); - my $rsrv=$vsrv->{"real"}; + $new_rsrv->{"fwd"} =$1; + $flags = $2; + + $rsrv=$vsrv->{"real"}; + + if(defined($flags) and $flags =~ /\s+(\d+)(.*)/) { + $new_rsrv->{"weight"} = $1; + $flags = $2; + } + + if(defined($flags) and $flags =~ /\s+\"(.*)\"[, ]\s*\"(.*)\"(.*)/) { + $new_rsrv->{"request"} = $1; + $new_rsrv->{"receive"} = $2; + $flags = $3; + } - my $fwd = $1; - if ($2 =~ /\s+(\d+)(\s+(.*))?/) { - my $weight = $1; - if ($3 =~ /\"(.*)\",\s*\"(.*)\"/) { - $request = $1; - $receive = $2; - unless($request=~/^\//){ - $request = "/" . $request; - } - $new_rsrv = {"server"=>$ip, "port"=>$port, - "forward"=>$fwd, "weight"=>$weight, - "request"=>$request, "receive"=>$receive}; - } else { - $new_rsrv = {"server"=>$ip, "port"=>$port, - "forward"=>$fwd, "weight"=>$weight}; - } - } elsif ($2 =~ /\s+\"(.*)\",\s*\"(.*)\"/) { - $request = $1; - $receive = $2; - unless($request=~/^\//){ - $request = "/" . $request; - } - $new_rsrv = {"server"=>$ip, "port"=>$port, - "forward"=>$fwd, "request"=>$request, - "receive"=>$receive}; - } else { - $new_rsrv = {"server"=>$ip, "port"=>$port, "forward"=>$fwd}; + if (defined($flags) and $flags =~/\S/) { + &config_error($line, "Invalid real server line, around " + . "\"$flags\""); } push(@$rsrv, $new_rsrv);