From 0e1e79257445c54dcc91d721657e42c4d949b8c3 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 3 Nov 2023 22:21:44 +0100 Subject: [PATCH] [ticket/14047] Check for stream close handshake before closing stream PHPBB3-14047 --- phpBB/includes/functions_jabber.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index 43df61c396..53f73e4eea 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -51,6 +51,9 @@ class jabber var $features = array(); + /** @var string Stream close handshake */ + private const STREAM_CLOSE_HANDSHAKE = ''; + /** * Constructor * @@ -58,7 +61,7 @@ class jabber * @param int $port Jabber server port * @param string $username Jabber username or JID * @param string $password Jabber password - * @param boold $use_ssl Use ssl + * @param bool $use_ssl Use ssl * @param bool $verify_peer Verify SSL certificate * @param bool $verify_peer_name Verify Jabber peer name * @param bool $allow_self_signed Allow self signed certificates @@ -183,7 +186,15 @@ class jabber $this->send_presence('offline', '', true); } - $this->send(''); + $this->send(self::STREAM_CLOSE_HANDSHAKE); + // Check stream close handshake reply + $stream_close_reply = $this->listen(); + + if ($stream_close_reply != self::STREAM_CLOSE_HANDSHAKE) + { + $this->add_to_log("Error: Unexpected stream close handshake reply ”{$stream_close_reply}”"); + } + $this->session = array(); return fclose($this->connection); }