mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 09:16:53 +00:00
bugfix: 70_Jabber.pm: hardening XML::Stream Process() call and fix of ssl_verify
git-svn-id: https://svn.fhem.de/fhem/trunk@7480 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
e2248578a3
commit
0a4b0acb99
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- bugfix: 70_Jabber.pm: hardening XML::Stream Process() call and fix of ssl_verify
|
||||||
- feature: readingsGroup: allow devspec :FILTER= expressions in device selection
|
- feature: readingsGroup: allow devspec :FILTER= expressions in device selection
|
||||||
- added: 73_km200.pm for the Buderus KM200 heating controller (Sailor)
|
- added: 73_km200.pm for the Buderus KM200 heating controller (Sailor)
|
||||||
- feature: 70_XBMC: added command 'connect' to connect instantly
|
- feature: 70_XBMC: added command 'connect' to connect instantly
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
# Version: 1.1 - 2014-07-28
|
# Version: 1.1 - 2014-07-28
|
||||||
#
|
#
|
||||||
# Changelog:
|
# Changelog:
|
||||||
|
# v1.2 2015-01-09 hardening XML::Stream Process() call and fix of ssl_verify
|
||||||
# v1.1 2014-07-28 Added UTF8 encoding / decoding to Messages
|
# v1.1 2014-07-28 Added UTF8 encoding / decoding to Messages
|
||||||
# v1.0 2014-04-10 Stable Release - Housekeeping & Add to SVN
|
# v1.0 2014-04-10 Stable Release - Housekeeping & Add to SVN
|
||||||
# v0.3 2014-03-19 Fixed SetPresence() & Added extensive debugging capabilities by setting $debug to 1
|
# v0.3 2014-03-19 Fixed SetPresence() & Added extensive debugging capabilities by setting $debug to 1
|
||||||
@ -221,6 +222,7 @@ Jabber_PollMessages($)
|
|||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
my $connectiondied = 0;
|
||||||
RemoveInternalTimer($hash);
|
RemoveInternalTimer($hash);
|
||||||
|
|
||||||
if(!$init_done) {
|
if(!$init_done) {
|
||||||
@ -281,10 +283,33 @@ Jabber_PollMessages($)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#We do Process() and if the connection died we reconnect.
|
#We do Process() - if the connection has died we reconnect.
|
||||||
if ($doProcess == 1) {
|
if ($doProcess == 1) {
|
||||||
Log 0, "$hash->{NAME} DoProcess Call" if $debug;
|
Log 0, "$hash->{NAME} DoProcess Call" if $debug;
|
||||||
if (!defined($hash->{JabberDevice}->Process(1))) {
|
|
||||||
|
#Check for previous errors in process(), before XMPP::Connection will break down FHEM
|
||||||
|
$connectiondied = 0;
|
||||||
|
if (defined($hash->{JabberDevice})) {
|
||||||
|
if (exists($hash->{JabberDevice}->{PROCESSERROR}) && ($hash->{JabberDevice}->{PROCESSERROR} == 1)) {
|
||||||
|
#XMPP::Connection would kill FHEM now.. But we try to handle it.
|
||||||
|
$hash->{STATE} = "Disconnected";
|
||||||
|
$hash->{CONNINFO} = "Jabber connection error (Previous XMPP Process() error!)";
|
||||||
|
Log 0, "$hash->{NAME} Jabber connection error (Previous XMPP Process() error!)" if $debug;
|
||||||
|
$connectiondied = 1;
|
||||||
|
} else {
|
||||||
|
#Do Process(), if it is undef, connection is gone or some other problem...
|
||||||
|
if (!defined($hash->{JabberDevice}->Process(1))) {
|
||||||
|
$hash->{STATE} = "Disconnected";
|
||||||
|
$hash->{CONNINFO} = "Jabber connection died";
|
||||||
|
Log 0, "$hash->{NAME} Jabber connection error (Process() is undef!)" if $debug;
|
||||||
|
$connectiondied = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$connectiondied = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($connectiondied == 1) {
|
||||||
#connection died
|
#connection died
|
||||||
Log 0, "$hash->{NAME} Connection died" if $debug;
|
Log 0, "$hash->{NAME} Connection died" if $debug;
|
||||||
$hash->{JabberDevice} = undef;
|
$hash->{JabberDevice} = undef;
|
||||||
@ -317,7 +342,12 @@ sub Jabber_CheckConnection($)
|
|||||||
$dev = new Net::Jabber::Client();
|
$dev = new Net::Jabber::Client();
|
||||||
}
|
}
|
||||||
$hash->{JabberDevice} = $dev;
|
$hash->{JabberDevice} = $dev;
|
||||||
|
|
||||||
|
#Default to SSL = nonverify (0x00) - this has been changed in XML::Stream 1.23_04 and cause problems because you need a CA verify list.
|
||||||
|
if (defined($hash->{JabberDevice}->{STREAM}->{SIDS}->{default}->{ssl_verify})) {
|
||||||
|
$hash->{JabberDevice}->{STREAM}->{SIDS}->{default}->{ssl_verify} = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
#Needed for Message handling:
|
#Needed for Message handling:
|
||||||
$hash->{JabberDevice}->SetMessageCallBacks(normal => sub { \&Jabber_INC_Message($hash,@_) }, chat => sub { \&Jabber_INC_Message($hash,@_) } );
|
$hash->{JabberDevice}->SetMessageCallBacks(normal => sub { \&Jabber_INC_Message($hash,@_) }, chat => sub { \&Jabber_INC_Message($hash,@_) } );
|
||||||
#Needed if someone wants to subscribe to us and is on the WhiteList
|
#Needed if someone wants to subscribe to us and is on the WhiteList
|
||||||
|
Loading…
x
Reference in New Issue
Block a user