mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
bugfix: avoid duplicate messages
change: use FUUID if no client-id provided git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@24958 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c7d9aa899a
commit
70dc1a114a
@ -515,8 +515,13 @@ sub Read {
|
|||||||
GP_ForallClients($hash,\¬ify_client_connected);
|
GP_ForallClients($hash,\¬ify_client_connected);
|
||||||
foreach my $message_id (keys %{$hash->{messages}}) {
|
foreach my $message_id (keys %{$hash->{messages}}) {
|
||||||
my $msg = $hash->{messages}->{$message_id}->{message};
|
my $msg = $hash->{messages}->{$message_id}->{message};
|
||||||
|
if($msg->message_type != MQTT_SUBSCRIBE) {
|
||||||
|
# alle subscrube messages werden bei client_start bereits neu gesendet
|
||||||
$msg->{dup} = $msg->message_type == MQTT_PUBLISH;
|
$msg->{dup} = $msg->message_type == MQTT_PUBLISH;
|
||||||
DevIo_SimpleWrite($hash,$msg->bytes,undef);
|
DevIo_SimpleWrite($hash,$msg->bytes,undef);
|
||||||
|
} else {
|
||||||
|
delete($hash->{messages}->{$message_id});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
last;
|
last;
|
||||||
};
|
};
|
||||||
@ -648,7 +653,7 @@ sub send_connect($) {
|
|||||||
my $pass = getKeyValue($name."_pass");
|
my $pass = getKeyValue($name."_pass");
|
||||||
|
|
||||||
my $lw = AttrVal($name,"last-will",undef);
|
my $lw = AttrVal($name,"last-will",undef);
|
||||||
my $clientId = AttrVal($name,"client-id",undef);
|
my $clientId = AttrVal($name,'client-id', $hash->{FUUID});
|
||||||
my ($willqos, $willretain,$willtopic, $willmessage) = parsePublishCmdStr($lw);
|
my ($willqos, $willretain,$willtopic, $willmessage) = parsePublishCmdStr($lw);
|
||||||
|
|
||||||
return send_message($hash, message_type => MQTT_CONNECT, keep_alive_timer => $hash->{timeout}, user_name => $user, password => $pass, client_id=>$clientId, will_topic => $willtopic, will_message => $willmessage, will_retain => $willretain, will_qos => $willqos);
|
return send_message($hash, message_type => MQTT_CONNECT, keep_alive_timer => $hash->{timeout}, user_name => $user, password => $pass, client_id=>$clientId, will_topic => $willtopic, will_message => $willmessage, will_retain => $willretain, will_qos => $willqos);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user