From 0b1dd77d48c4cd36a573bfc45e42528c87f4616d Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sat, 4 Jun 2016 14:12:42 +0000 Subject: [PATCH] HttpUtils.pm: avoid Deep recursion when the DNS-Server timed out (Forum #53309) git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@11612 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/HttpUtils.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/FHEM/HttpUtils.pm b/FHEM/HttpUtils.pm index 66e3b0100..eded9f98f 100644 --- a/FHEM/HttpUtils.pm +++ b/FHEM/HttpUtils.pm @@ -152,7 +152,7 @@ HttpUtils_gethostbyname($$$) my $c = IO::Socket::INET->new(Proto=>'udp', PeerAddr=>"$dnsServer:53"); return $fn->($hash, "Cant create UDP socket:$!", undef) if(!$c); - my %dh = ( conn=>$c, FD=>$c->fileno(), NAME=>"DNS", + my %dh = ( conn=>$c, FD=>$c->fileno(), NAME=>"DNS", origHash=>$hash, addr=>$dnsServer, callback=>$fn ); my %timerHash = ( hash => \%dh ); my $bhost = join("", map { pack("CA*",length($_),$_) } split(/\./, $host)); @@ -233,6 +233,7 @@ HttpUtils_Connect($) if($hash->{conn}) { HttpUtils_gethostbyname($hash, $host, sub($$$) { my ($hash, $err, $iaddr) = @_; + $hash = $hash->{origHash} if($hash->{origHash}); return $hash->{callback}($hash, $err, "") if($err); my $ret = connect($hash->{conn}, sockaddr_in($port, $iaddr)); if(!$ret) {