From dc21a52b8743983b55e2782fea09d718c0366a57 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sat, 25 Aug 2018 14:37:35 +0000 Subject: [PATCH] 00_MQTT2_SERVER.pm: no LWT if there is another connection with same ip+cid (Forum #90145) git-svn-id: https://svn.fhem.de/fhem/trunk@17205 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_MQTT2_SERVER.pm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/fhem/FHEM/00_MQTT2_SERVER.pm b/fhem/FHEM/00_MQTT2_SERVER.pm index 7eb5c7a4a..f7fc6669e 100644 --- a/fhem/FHEM/00_MQTT2_SERVER.pm +++ b/fhem/FHEM/00_MQTT2_SERVER.pm @@ -102,6 +102,19 @@ MQTT2_SERVER_Undef($@) ReadingsVal($sname, "nrclients", 1)-1, 1); if($hash->{lwt}) { # Last will + + # skip lwt if there is another connection with the same ip+cid (tasmota??) + for my $dev (keys %defs) { + my $h = $defs{$dev}; + next if($h->{TYPE} ne $hash->{TYPE} || + $h->{NR} == $hash->{NR} || + !$h->{cid} || $h->{cid} ne $hash->{cid} || + !$h->{PEER} || $h->{PEER} ne $hash->{PEER}); + Log3 $shash, 4, + "Closing second connection for $h->{cid}/$h->{PEER} without lwt"; + return $ret; + } + my ($tp, $val) = split(':', $hash->{lwt}, 2); MQTT2_SERVER_doPublish($hash, $shash, $tp, $val, $hash->{cflags} & 0x20); }