2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

93_Log2Syslog: contrib 5.8.0

git-svn-id: https://svn.fhem.de/fhem/trunk@19872 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2019-07-20 20:58:46 +00:00
parent e64e4dcf15
commit 4707c65497

View File

@ -555,6 +555,7 @@ sub Log2Syslog_getifdata($$@) {
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $socket = $hash->{SERVERSOCKET}; my $socket = $hash->{SERVERSOCKET};
my $protocol = lc(AttrVal($name, "protocol", "udp")); my $protocol = lc(AttrVal($name, "protocol", "udp"));
my $eof = 0;
if($hash->{TEMPORARY}) { if($hash->{TEMPORARY}) {
# temporäre Instanz abgelegt durch TcpServer_Accept # temporäre Instanz abgelegt durch TcpServer_Accept
@ -593,16 +594,17 @@ sub Log2Syslog_getifdata($$@) {
} }
return ($st,$data,$hash); return ($st,$data,$hash);
} }
# Child, $hash ist Hash der temporären Instanz
my $sname = $hash->{SNAME}; my $sname = $hash->{SNAME};
my $cname = $hash->{NAME}; my $cname = $hash->{NAME};
my $shash = $defs{$sname}; # Hash des Log2Syslog-Devices bei temporärer TCP-Serverinstanz my $shash = $defs{$sname}; # Hash des Log2Syslog-Devices bei temporärer TCP-Serverinstanz
my $waitEOF = AttrVal($sname, "waitForEOF", 0); my $waitEOF = AttrVal($sname, "waitForEOF", 0);
Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - ####################################################### "); Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - ####################################################### ");
Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - ######### new Syslog TCP Receive ######### "); Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - ######### new Syslog TCP Receive ######### ");
Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - ####################################################### "); Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - ####################################################### ");
Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - wait for EOF: $waitEOF"); Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - wait for EOF: $waitEOF, SSL: ".$hash->{SSL} );
Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - childname: $cname"); Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - childname: $cname");
$st = ReadingsVal($sname,"state","active"); $st = ReadingsVal($sname,"state","active");
@ -622,20 +624,25 @@ sub Log2Syslog_getifdata($$@) {
return ($st,undef,$hash); return ($st,undef,$hash);
} elsif (!$ret) { } elsif (!$ret) {
# end of file # EOF or error
Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - Connection closed for $cname: ".(defined($ret) ? 'EOF' : $!)); Log2Syslog_Log3slog ($shash, 4, "Log2Syslog $sname - Connection closed for $cname: ".(defined($ret) ? 'EOF' : $!));
if(defined($ret)) { if(!defined($ret)) {
$data = $hash->{BUF}; # error
chomp $data; CommandDelete(undef, $cname);
CommandDelete(undef, $cname); $hash = $shash;
return ($st,$data,$hash); return ($st,undef,$hash);
} else { } else {
CommandDelete(undef, $cname); # EOF
return ($st,undef,$hash); $eof = 1;
$data = $hash->{BUF};
CommandDelete(undef, $cname);
} }
} }
$hash->{BUF} .= $buf;
if(!$eof) {
$hash->{BUF} .= $buf;
Log2Syslog_Log3slog ($shash, 5, "Log2Syslog $sname - chars $ret length added to buffer:\n$buf") if($waitEOF && !$hash->{SSL});
}
if($hash->{SSL} && $c->can('pending')) { if($hash->{SSL} && $c->can('pending')) {
while($c->pending()) { while($c->pending()) {
@ -644,15 +651,21 @@ sub Log2Syslog_getifdata($$@) {
} }
} }
Log2Syslog_Log3slog ($shash, 5, "Log2Syslog $sname - Buffer $ret chars length:\n$buf"); if(!$waitEOF || $hash->{SSL}) {
if(!$waitEOF) {
$data = $hash->{BUF}; $data = $hash->{BUF};
chomp $data;
delete $hash->{BUF}; delete $hash->{BUF};
$hash = $shash; $hash = $shash;
chomp $data; Log2Syslog_Log3slog ($shash, 5, "Log2Syslog $sname - Buffer $ret chars length:\n$data") if($data);
return ($st,$data,$hash); return ($st,$data,$hash);
} } else {
if($eof) {
$hash = $shash;
chomp $data;
Log2Syslog_Log3slog ($shash, 5, "Log2Syslog $sname - Buffer $ret chars length:\n$data") if($data);
return ($st,$data,$hash);
}
}
} }
} }