From ea09b7daa8cc13d2678d79f995b9be7b6874e089 Mon Sep 17 00:00:00 2001 From: mgehre Date: Sun, 25 Nov 2012 14:11:15 +0000 Subject: [PATCH] MAX: fix a bug where we would loose received bytes (thanks Joachim for the help) git-svn-id: https://svn.fhem.de/fhem/trunk@2191 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_MAXLAN.pm | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/fhem/FHEM/00_MAXLAN.pm b/fhem/FHEM/00_MAXLAN.pm index a4cf63dd0..d514405bc 100755 --- a/fhem/FHEM/00_MAXLAN.pm +++ b/fhem/FHEM/00_MAXLAN.pm @@ -217,23 +217,19 @@ MAXLAN_ReadAnswer($) { my ($hash) = @_; - my $data = $hash->{PARTIAL}; - #Read until we have a complete line - until($data =~ m/\n/) { + until($hash->{PARTIAL} =~ m/\n/) { my $buf = DevIo_SimpleRead($hash); if(!defined($buf)){ Log 1, "MAXLAN_ReadAnswer: error during read"; return undef; #error occured } - $data .= $buf; + $hash->{PARTIAL} .= $buf; } my $rmsg; - ($rmsg,$data) = split("\n", $data, 2); + ($rmsg,$hash->{PARTIAL}) = split("\n", $hash->{PARTIAL}, 2); $rmsg =~ s/\r//; #remove \r - #save partial data for next read - $hash->{PARTIAL} = $data; return $rmsg; } @@ -259,14 +255,13 @@ MAXLAN_Read($) return "" if(!defined($buf)); my $name = $hash->{NAME}; - my $data = $hash->{PARTIAL}; - $data .= $buf; + $hash->{PARTIAL} .= $buf; - while($data =~ m/\n/) { + #while we have a complete line + while($hash->{PARTIAL} =~ m/\n/) { my $rmsg; - ($rmsg,$data) = split("\n", $data, 2); - $hash->{PARTIAL} = $data; - $rmsg =~ s/\r//; + ($rmsg,$hash->{PARTIAL}) = split("\n", $hash->{PARTIAL}, 2); + $rmsg =~ s/\r//;#remove \r MAXLAN_Parse($hash, $rmsg) if($rmsg); } }