Bug in MAXLAN lastet Fhem aus und blockiert Fhem (gelöst)

Begonnen von marty29ak, 14 März 2017, 18:53:13

Vorheriges Thema - Nächstes Thema

marty29ak

Wie in diesem Thema nach zu lesen hatte ich ein Problem mit MAXLAN.

Zu erst lief bei mir MAXLAN alleine lange Zeit ohne Probleme.
Nachdem ich jedoch einen zusätzlichen CUN im RFMode Max nur zum mithören installiert habe, um schneller auf Ereignisse reagieren zu können, wurde in unbestimmten Zeitabständen der Raspberry zu 99% ausgelastet und Fhem reagierte nur noch extrem verzögert.

Rudolfkoenig (vielen Dank nochmal) hat sich der Sache angenommen und konnte einen Bug in 00_MAXLAN.pm feststellen.

Man muss in der Zeile 344 folgendes einfügen:

if($res == 0) {
      Log3 $hash, 1, "MAXLAN_ReadSingleResponse: peer closed the connection";
      MAXLAN_Disconnect($hash);
      return undef;
    }


Hier nochmal wie es bei mir aussieht:

#Blocking read
    my $buf;
    my $res = sysread($hash->{TCPDev}, $buf, 256);
    if(!defined($res)){
      Log3 $hash, 1, "MAXLAN_ReadSingleResponse: error during read";
      return undef; #error occured
    }

    #Append data to partial data we got before
if($res == 0) {
      Log3 $hash, 1, "MAXLAN_ReadSingleResponse: peer closed the connection";
      MAXLAN_Disconnect($hash);
      return undef;
    }
    $hash->{PARTIAL} .= $buf;
  }

  my $rmsg;
  ($rmsg,$hash->{PARTIAL}) = split("\n", $hash->{PARTIAL}, 2);
  $rmsg =~ s/\r//; #re


Danach ist das Problem verschwunden.

Evtl. kann man das beim nächsten Update mit einbauen.




Gruß Martin