X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fgosa-si-server;h=3dbb629bb0194f490551ba614c21797a03a57c1c;hb=54fa8908ca0eb97e5437371c5f33d1b58524889d;hp=8ce80bc1a4d7c6944b58f3ddb47bd9eeaae0089d;hpb=df565952f22a39758d0d7d1f56be652352445e60;p=gosa.git diff --git a/gosa-si/gosa-si-server b/gosa-si/gosa-si-server index 8ce80bc1a..3dbb629bb 100755 --- a/gosa-si/gosa-si-server +++ b/gosa-si/gosa-si-server @@ -744,31 +744,33 @@ sub client_input { # for each answer in answer list foreach my $answer ( @{$answer_l} ) { - my $error = 0; - # check answer if gosa-si envelope conform - my $answer_hash = $xml->XMLin($answer, ForceArray=>1); - $answer_header = @{$answer_hash->{'header'}}[0]; - @answer_target_l = @{$answer_hash->{'target'}}; - $answer_source = @{$answer_hash->{'source'}}[0]; - if( !$answer_header ) { - daemon_log('ERROR: module answer is not gosa-si envelope conform: no header', 1); - daemon_log("\n$answer", 8); - $error++; - } - if( 0 == length @answer_target_l ) { - daemon_log('ERROR: module answer is not gosa-si envelope conform: no targets', 1); - daemon_log("\n$answer", 8); - $error++; - } - if( !$answer_source ) { - daemon_log('ERROR: module answer is not gosa-si envelope conform: no source', 1); - daemon_log("\n$answer", 8); - $error++; - } - - if( $error != 0 ) { - next; - } + my $error = 0; + # check answer if gosa-si envelope conform + if(defined($answer)) { + my $answer_hash = $xml->XMLin($answer, ForceArray=>1); + $answer_header = @{$answer_hash->{'header'}}[0]; + @answer_target_l = @{$answer_hash->{'target'}}; + $answer_source = @{$answer_hash->{'source'}}[0]; + if( !$answer_header ) { + daemon_log('ERROR: module answer is not gosa-si envelope conform: no header', 1); + daemon_log("\n$answer", 8); + $error++; + } + if( 0 == length @answer_target_l ) { + daemon_log('ERROR: module answer is not gosa-si envelope conform: no targets', 1); + daemon_log("\n$answer", 8); + $error++; + } + if( !$answer_source ) { + daemon_log('ERROR: module answer is not gosa-si envelope conform: no source', 1); + daemon_log("\n$answer", 8); + $error++; + } + + if( $error != 0 ) { + next; + } + } # deliver msg to all targets foreach my $answer_target ( @answer_target_l ) { @@ -812,7 +814,16 @@ sub client_input { $found_ip_flag++ ; } if( $found_ip_flag == 0) { - daemon_log("ERROR: no host found in known_clients with mac address '$answer_target', answer could not be send", 1); + daemon_log("WARNING: no host found in known_clients with mac address '$answer_target', forward msg to bus", 1); + my $sql_statement = "SELECT * FROM known_server WHERE status='bus'"; + my $query_res = $known_server_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $bus_address = $hit->{hostname}; + my $bus_key = $hit->{hostkey}; + &send_msg_to_target($answer, $bus_address, $bus_key, $answer_header); + last; + } + } } else {