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:
@@ -138,14 +138,14 @@ sub
|
|||||||
FHEM2FHEM_Read($)
|
FHEM2FHEM_Read($)
|
||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
my $buf;
|
||||||
|
my $res = sysread($hash->{TCPDev}, $buf, 256);
|
||||||
|
|
||||||
my $buf = FHEM2FHEM_SimpleRead($hash);
|
if($hash->{SSL} && !defined($res) && $! == EWOULDBLOCK) {
|
||||||
my $name = $hash->{NAME};
|
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);
|
||||||
# Lets' try again: Some drivers return len(0) on the first read...
|
return "";
|
||||||
if(defined($buf) && length($buf) == 0) {
|
|
||||||
$buf = FHEM2FHEM_SimpleRead($hash);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!defined($buf) || length($buf) == 0) {
|
if(!defined($buf) || length($buf) == 0) {
|
||||||
@@ -153,6 +153,7 @@ FHEM2FHEM_Read($)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $name = $hash->{NAME};
|
||||||
return if(IsDisabled($name));
|
return if(IsDisabled($name));
|
||||||
my $excl = AttrVal($name, "excludeEvents", undef);
|
my $excl = AttrVal($name, "excludeEvents", undef);
|
||||||
my $threshold = AttrVal($name, "loopThreshold", 0); # 122300
|
my $threshold = AttrVal($name, "loopThreshold", 0); # 122300
|
||||||
@@ -352,19 +353,6 @@ FHEM2FHEM_Disconnected($)
|
|||||||
DoTrigger($name, "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
|
sub
|
||||||
FHEM2FHEM_Set($@)
|
FHEM2FHEM_Set($@)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user