Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • S slixmpp
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 37
    • Issues 37
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 12
    • Merge requests 12
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • poeziopoezio
  • slixmpp
  • Merge requests
  • !226

Fix connect parameters used for follow-up calls

  • Review changes

  • Download
  • Email patches
  • Plain diff
Open Dunedan requested to merge Dunedan/slixmpp:fix-parameters-on-reconnect into master Jan 08, 2023
  • Overview 2
  • Commits 2
  • Pipelines 2
  • Changes 3

XMLStream.connect() is supposed to persist the parameters it gets called with to allow follow-up calls to call XMLStream.connect() without any parameters to result in a connection with the same properties as the original one. That's for example used by XMLStream.reconnect() when establishing a new connection.

Unfortunately that was broken for some of the parameters and resulted different TLS related settings on reconnections. This commit fixes that.

Here is some sample code to reproduce the bug:

#!/usr/bin/python3

from asyncio import Future

from slixmpp import ClientXMPP

JID = "user@ejabberd"
PASSWORD = "password"


class TestXMPP(ClientXMPP):

    reconnected = False
    finished = Future()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.add_event_handler('session_start', self._session_start)

    def _session_start(self, event):
        print(f"{self.use_ssl=}")
        print(f"{self.force_starttls=}")
        print(f"{self.disable_starttls=}")
        print()

        if self.reconnected:
            self.disconnect()
            self.finished.set_result(True)

        self.reconnected = True
        self.reconnect()


xmpp = TestXMPP(JID, PASSWORD)

# The bug gets also triggered for use_ssl=True
xmpp.connect(None, use_ssl=False, force_starttls=False, disable_starttls=True)

xmpp.loop.run_until_complete(xmpp.finished)
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: fix-parameters-on-reconnect