mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-07 19:04:20 +00:00
bug fixes in case of disconnected client
git-svn-id: https://svn.fhem.de/fhem/trunk@2878 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
61a8fc1a93
commit
ba441278d0
@ -36,6 +36,7 @@ use File::Basename;
|
|||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use threads;
|
use threads;
|
||||||
use Thread::Queue;
|
use Thread::Queue;
|
||||||
|
use Time::HiRes;
|
||||||
use Time::HiRes qw(gettimeofday);
|
use Time::HiRes qw(gettimeofday);
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -228,6 +229,7 @@ while(1)
|
|||||||
{
|
{
|
||||||
print timestamp()."cleaning up status values (UUID: $uuid)\n" if($opt_v);
|
print timestamp()."cleaning up status values (UUID: $uuid)\n" if($opt_v);
|
||||||
delete $state{$uuid};
|
delete $state{$uuid};
|
||||||
|
delete $socket_to_handle{$handle_to_socket{$uuid}};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -240,7 +242,7 @@ while(1)
|
|||||||
|
|
||||||
if(not $value =~ /^(absence|present)$/)
|
if(not $value =~ /^(absence|present)$/)
|
||||||
{
|
{
|
||||||
$handle{$uuid}{client}->send("$value;$room\n");
|
$handle{$uuid}{client}->send("$value;$room\n") if(defined($handle{$uuid}{client}));
|
||||||
|
|
||||||
if($value eq "socket_closed")
|
if($value eq "socket_closed")
|
||||||
{
|
{
|
||||||
@ -255,20 +257,26 @@ while(1)
|
|||||||
|
|
||||||
if(defined($result))
|
if(defined($result))
|
||||||
{
|
{
|
||||||
if( ($state{$uuid}{lastresult}{value} eq "present;$result" and ($state{$uuid}{lastresult}{timestamp} + $handle{$uuid}{timeout}) < time()) or $state{$uuid}{lastresult}{value} ne "present;$result")
|
if(not defined($state{$uuid}{lastresult}{value}) or (($state{$uuid}{lastresult}{value} eq "present;$result" and ($state{$uuid}{lastresult}{timestamp} + $handle{$uuid}{timeout}) < time()) or $state{$uuid}{lastresult}{value} ne "present;$result"))
|
||||||
{
|
{
|
||||||
$handle{$uuid}{client}->send("present;$result\n");
|
if(defined($handle{$uuid}{client}))
|
||||||
$state{$uuid}{lastresult}{value} = "present;$result";
|
{
|
||||||
$state{$uuid}{lastresult}{timestamp} = time();
|
$handle{$uuid}{client}->send("present;$result\n");
|
||||||
|
$state{$uuid}{lastresult}{value} = "present;$result";
|
||||||
|
$state{$uuid}{lastresult}{timestamp} = time();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( ($state{$uuid}{lastresult}{value} eq "absence" and ($state{$uuid}{lastresult}{timestamp} + $handle{$uuid}{timeout}) < time()) or $state{$uuid}{lastresult}{value} ne "absence")
|
if(not defined($state{$uuid}{lastresult}{value}) or (($state{$uuid}{lastresult}{value} eq "absence" and ($state{$uuid}{lastresult}{timestamp} + $handle{$uuid}{timeout}) < time()) or $state{$uuid}{lastresult}{value} ne "absence"))
|
||||||
{
|
{
|
||||||
$handle{$uuid}{client}->send("absence\n");
|
if(defined($handle{$uuid}{client}))
|
||||||
$state{$uuid}{lastresult}{value} = "absence";
|
{
|
||||||
$state{$uuid}{lastresult}{timestamp} = time();
|
$handle{$uuid}{client}->send("absence\n");
|
||||||
|
$state{$uuid}{lastresult}{value} = "absence";
|
||||||
|
$state{$uuid}{lastresult}{timestamp} = time();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user