2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

93_FHEM2FHEM.pm: fix nonblocking SSL accept (FOrum #126253)

git-svn-id: https://svn.fhem.de/fhem/trunk@25694 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2022-02-17 16:44:12 +00:00
parent dc4d075dc8
commit 1574f03c0f

View File

@ -138,14 +138,14 @@ sub
FHEM2FHEM_Read($)
{
my ($hash) = @_;
my $buf;
my $res = sysread($hash->{TCPDev}, $buf, 256);
my $buf = FHEM2FHEM_SimpleRead($hash);
my $name = $hash->{NAME};
###########
# Lets' try again: Some drivers return len(0) on the first read...
if(defined($buf) && length($buf) == 0) {
$buf = FHEM2FHEM_SimpleRead($hash);
if($hash->{SSL} && !defined($res) && $! == EWOULDBLOCK) {
my $es = $hash->{TCPDev}->errstr;
$hash->{wantWrite} = 1 if($es == &IO::Socket::SSL::SSL_WANT_WRITE);
$hash->{wantRead} = 1 if($es == &IO::Socket::SSL::SSL_WANT_READ);
return "";
}
if(!defined($buf) || length($buf) == 0) {
@ -153,6 +153,7 @@ FHEM2FHEM_Read($)
return;
}
my $name = $hash->{NAME};
return if(IsDisabled($name));
my $excl = AttrVal($name, "excludeEvents", undef);
my $threshold = AttrVal($name, "loopThreshold", 0); # 122300
@ -352,19 +353,6 @@ FHEM2FHEM_Disconnected($)
DoTrigger($name, "DISCONNECTED");
}
########################
sub
FHEM2FHEM_SimpleRead($)
{
my ($hash) = @_;
my $buf;
if(!defined(sysread($hash->{TCPDev}, $buf, 256))) {
FHEM2FHEM_Disconnected($hash);
return undef;
}
return $buf;
}
sub
FHEM2FHEM_Set($@)
{