Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
S
slixmpp-omemo
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 6
    • Issues 6
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 1
    • Merge Requests 1
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • poezio
  • slixmpp-omemo
  • Issues
  • #9

Closed
Open
Opened Dec 25, 2019 by Jonny Tischbein@JonnyTischbein🙂

Error while decryption: TypeError('string indices must be integers')

Hi, I'm receiving an error when I try to decrypt OMEMO messages using the example.py.

  • Ubuntu 19.10 eoan
  • Linux host 5.3.0-24-generic #26-Ubuntu SMP Thu Nov 14 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
  • Python 3.7.5
  • slixmpp-1.4.2 (via pip)
  • slixmpp_omemo-0.2.0 (via pip)
  • example.py c7e54488

Error:

DEBUG    RECV: <message id="a00cedf4-2a1e-4344-b326-f30faa40d541" to="test@xxx.org" type="chat" from="jonny@xxx.org/dino.bb00dc6e"><composing xmlns="http://jabber.org/protocol/chatstates" /><no-store xmlns="urn:xmpp:hints" /></message>
DEBUG    RECV: <message id="2a47b001-faf0-4484-886a-da6f1b37431f" to="test@xxx.org" type="chat" from="jonny@xxx.org/dino.bb00dc6e"><active xmlns="http://jabber.org/protocol/chatstates" /><no-store xmlns="urn:xmpp:hints" /></message>
DEBUG    RECV: <message from="jonny@xxx.org/dino.bb00dc6e" type="chat" to="test@xxx.org" id="53192b7c-f508-4806-bf92-9e8234993a76"><body>[This message is OMEMO encrypted]</body><encrypted xmlns="eu.siacs.conversations.axolotl"><header sid="341353871"><iv>vOyaCAJ29UiD1eqS1W9AsQ==</iv><key rid="1826948132" prekey="true">MwgiEiEF3QpcqnFsqO/epLSyIijT3I+o6fu/EDhJR8gg2+03GCsaIQUMIsZa8zSvyh1lunE2vXrbWjyVGreTX9FtjHJcPg4KGiJiMwohBQ9Ir28+lyUv9XmkAQpZXFa1RXVsWsYEr6G15Ey9sqFvEBwYACIwHRKWjUKvLZ+3+EzfhiXkfSiLUxpLB9Gg7Q9b19iWoxyOmi4B9kdaz75A2AyQ7DXsG2MiAhjGbZsoj8viogEwAQ==</key><key rid="309216034">MwohBaOjGKH/yKNhk3DnInOY3M8WDRY8wY8csnDWRGngcyMeECIYACIwj38Ti+HZnbvQ73U7pVXc+WojV+EKbfo7Z3VN78WpDjc9w58GhJqTzBGzul+ubhmDwRPpJmj8cOE=</key><key rid="2051820258" prekey="true">Mwjo0BMSIQX7xgcZCJAqujc+0Jll4WoV+gwHVhy6RZa0DV9i3a1EDhohBQwixlrzNK/KHWW6cTa9ettaPJUat5Nf0W2Mclw+DgoaImIzCiEFTr/SwHKTXww3XtiuSaEyaZSaUTfmNmZ8fqJVMNjNLD0QdBgAIjCP1PFysrP/Otm6gaYCjLuY2evn68L8m5VnRha8728YPPpyw6+e0iQOKmjWOypsyd4azdEtr0bl7yiPy+KiATDjlgE=</key><key rid="451045906">MwohBfGxxGtNcUwqb23MlaOwoMOwnhq2OxvkznuOaM4tJxlLEB4YACIwDhde8VUNtHCankQ3aLZ2eIzfYymv0o7SQghcKF5n76Ue9t2IXj+4IzCf7UhpotDmXu1XXMEL0l8=</key></header><payload>pjUpYQ==</payload></encrypted><encryption xmlns="urn:xmpp:eme:0" namespace="eu.siacs.conversations.axolotl" name="OMEMO" /><request xmlns="urn:xmpp:receipts" /><active xmlns="http://jabber.org/protocol/chatstates" /><markable xmlns="urn:xmpp:chat-markers:0" /></message>
DEBUG    Event triggered: message
DEBUG    Event triggered: message_encryption
DEBUG    SEND: <message type="chat" to="jonny@xxx.org/dino.bb00dc6e" xml:lang="en"><body>An error occured while attempting decryption.
TypeError(&apos;string indices must be integers&apos;)</body></message>
ERROR    Task exception was never retrieved
future: <Task finished coro=<EchoBot.message() done, defined at echo_client.py:67> exception=TypeError('string indices must be integers')>
Traceback (most recent call last):
File "echo_client.py", line 88, in message
    body = self['xep_0384'].decrypt_message(msg, allow_untrusted)
File "/usr/local/lib/python3.7/dist-packages/slixmpp_omemo/__init__.py", line 424, in decrypt_message
    payload = b64dec(encrypted['payload']['value'])
TypeError: string indices must be integers

After investigating a bit I noticed that the argument msg does not contain the values header or payload as accessed in slikxmpp_omemo/__init__.py in lines 423 and 424:

def decrypt_message(
    self,
    encrypted: Encrypted,
    sender: JID,
    allow_untrusted: bool = False,
) -> Optional[str]:
    header = encrypted['header']      
    payload = b64dec(encrypted['payload']['value'])

Here the call from the example.py in line 88:

        body = self['xep_0384'].decrypt_message(msg, allow_untrusted)  

I inspected the msg object:

Collapse msg object by clicking here

[('Iq', < bound method BaseXMPP.Iq of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('Message', < bound method BaseXMPP.Message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('Presence', < bound method BaseXMPP.Presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_XMLStream__event_handlers', {
    'disconnected': [( < bound method XMLStream._remove_schedules of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_disconnected of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'session_start': [( < bound method XMLStream._start_keepalive of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_session_start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method EchoBot.start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method XEP_0384.session_start of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
    'presence_available': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_dnd': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_xa': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_chat': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_away': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_unavailable': [( < bound method BaseXMPP._handle_unavailable of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_subscribe': [( < bound method BaseXMPP._handle_subscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_subscribed': [( < bound method BaseXMPP._handle_subscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_unsubscribe': [( < bound method BaseXMPP._handle_unsubscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'presence_unsubscribed': [( < bound method BaseXMPP._handle_unsubscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'roster_subscription_request': [( < bound method BaseXMPP._handle_new_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'connected': [( < bound method ClientXMPP._reset_connection_state of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'session_bind': [( < bound method ClientXMPP._handle_session_bind of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , False), ( < bound method XEP_0030.session_bind of < slixmpp.plugins.xep_0030.disco.XEP_0030 object at 0x7f9e9031bdd0 >> , False), ( < bound method XEP_0199.session_bind of < slixmpp.plugins.xep_0199.ping.XEP_0199 object at 0x7f9e902d6ad0 >> , False), ( < bound method XEP_0380.session_bind of < slixmpp.plugins.xep_0380.eme.XEP_0380 object at 0x7f9e902d6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0082.XEP_0082 object at 0x7f9e900d7490 >> , False), ( < bound method XEP_0004.session_bind of < slixmpp.plugins.xep_0004.dataforms.XEP_0004 object at 0x7f9e900d77d0 >> , False), ( < bound method XEP_0131.session_bind of < slixmpp.plugins.xep_0131.headers.XEP_0131 object at 0x7f9e900d7bd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0060.pubsub.XEP_0060 object at 0x7f9e900d7310 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0128.extended_disco.XEP_0128 object at 0x7f9e900e0cd0 >> , False), ( < bound method XEP_0115.session_bind of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0163.XEP_0163 object at 0x7f9e900d7210 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
    'roster_update': [( < bound method ClientXMPP._handle_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'message': [( < bound method EchoBot.message_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
    'entity_caps': [( < bound method XEP_0115._process_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)],
    'omemo_device_list_publish': [( < bound method XEP_0384._receive_device_list of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)]
}), ('_XMLStream__filters', {
    'in': [],
    'out': [ < bound method Roster._save_last_status of {
        'test@xxx.org': {
            'test@xxx.org': {
                'name': '',
                'groups': [],
                'from': False,
                'to': False,
                'pending_in': False,
                'pending_out': False,
                'whitelisted': False,
                'subscription': 'none'
            },
            'bot@xxx.org': {
                'name': '',
                'groups': [],
                'from': False,
                'to': False,
                'pending_in': False,
                'pending_out': True,
                'whitelisted': False,
                'subscription': 'none'
            }
        },
        'bot@xxx.org': {}
    } > , < bound method XEP_0115._filter_add_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> ],
    'out_sync': []
}), ('_XMLStream__handlers', [ < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6610 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6710 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f67d0 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6a90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6b50 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6cd0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6210 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902ede50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902edf50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e91662810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902c54d0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902d6b10 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d1950 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7890 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7d90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0750 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0910 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0a50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0b90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900ef410 > ]), ('_XMLStream__root_stanza', [ < class 'slixmpp.stanza.message.Message' > , < class 'slixmpp.stanza.iq.Iq' > , < class 'slixmpp.stanza.presence.Presence' > , < class 'slixmpp.stanza.stream_error.StreamError' > , < class 'slixmpp.stanza.stream_features.StreamFeatures' > , < class 'slixmpp.features.feature_starttls.stanza.Proceed' > , < class 'slixmpp.features.feature_starttls.stanza.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.success.Success' > , < class 'slixmpp.features.feature_mechanisms.stanza.failure.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.auth.Auth' > , < class 'slixmpp.features.feature_mechanisms.stanza.challenge.Challenge' > , < class 'slixmpp.features.feature_mechanisms.stanza.response.Response' > , < class 'slixmpp.features.feature_mechanisms.stanza.abort.Abort' > ]), ('__class__', < class '__main__.EchoBot' > ), ('__delattr__', < method - wrapper '__delattr__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__dict__', {
        'transport': < asyncio.sslproto._SSLProtocolTransport object at 0x7f9e900fbc10 > ,
        'socket': < ssl.SSLObject object at 0x7f9e900fba10 > ,
        'connect_loop_wait': 0,
        'parser': < xml.etree.ElementTree.XMLPullParser object at 0x7f9e900fbfd0 > ,
        'xml_depth': 1,
        'xml_root': < Element '{http://etherx.jabber.org/streams}stream'
        at 0x7f9e9010bb30 > ,
        'force_starttls': True,
        'disable_starttls': False,
        'scheduled_events': {
            'Whitespace Keepalive': < TimerHandle when = 197769.102328958 XMLStream._execute_and_reschedule('Whitespace Keepalive', functools.par...2 f6490 >> , ' '),
            300) >
    }, 'ssl_context': < ssl.SSLContext object at 0x7f9e902e19f0 > , 'event_when_connected': 'tls_success', 'ciphers': None, 'ca_certs': None, 'certfile': None, 'keyfile': None, '_der_cert': None, '_loop': < _UnixSelectorEventLoop running = True closed = False debug = False > , 'default_port': 5222, 'default_domain': 'xxx.org', '_expected_server_name': 'xxx.org', '_service_name': 'xxx.org', 'address': ('87.106.127.220', 5222), 'use_ssl': False, 'use_proxy': False, 'use_ipv6': True, 'use_aiodns': True, 'use_cdata': False, 'proxy_config': {}, 'default_ns': 'jabber:client', 'default_lang': 'en', 'peer_default_lang': 'en', 'stream_ns': 'http://etherx.jabber.org/streams', 'stream_header': "<stream:stream to='xxx.org' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>", 'stream_footer': '</stream:stream>', 'whitespace_keepalive': True, 'whitespace_keepalive_interval': 300, 'end_session_on_disconnect': True, 'namespace_map': {
        'http://www.w3.org/XML/1998/namespace': 'xml',
        'http://etherx.jabber.org/streams': 'stream'
    }, '_XMLStream__root_stanza': [ < class 'slixmpp.stanza.message.Message' > , < class 'slixmpp.stanza.iq.Iq' > , < class 'slixmpp.stanza.presence.Presence' > , < class 'slixmpp.stanza.stream_error.StreamError' > , < class 'slixmpp.stanza.stream_features.StreamFeatures' > , < class 'slixmpp.features.feature_starttls.stanza.Proceed' > , < class 'slixmpp.features.feature_starttls.stanza.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.success.Success' > , < class 'slixmpp.features.feature_mechanisms.stanza.failure.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.auth.Auth' > , < class 'slixmpp.features.feature_mechanisms.stanza.challenge.Challenge' > , < class 'slixmpp.features.feature_mechanisms.stanza.response.Response' > , < class 'slixmpp.features.feature_mechanisms.stanza.abort.Abort' > ], '_XMLStream__handlers': [ < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6610 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6710 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f67d0 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6a90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6b50 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6cd0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6210 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902ede50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902edf50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e91662810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902c54d0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902d6b10 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d1950 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7890 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7d90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0750 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0910 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0a50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0b90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900ef410 > ], '_XMLStream__event_handlers': {
        'disconnected': [( < bound method XMLStream._remove_schedules of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_disconnected of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'session_start': [( < bound method XMLStream._start_keepalive of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_session_start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method EchoBot.start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method XEP_0384.session_start of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
        'presence_available': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_dnd': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_xa': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_chat': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_away': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_unavailable': [( < bound method BaseXMPP._handle_unavailable of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_subscribe': [( < bound method BaseXMPP._handle_subscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_subscribed': [( < bound method BaseXMPP._handle_subscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_unsubscribe': [( < bound method BaseXMPP._handle_unsubscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'presence_unsubscribed': [( < bound method BaseXMPP._handle_unsubscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'roster_subscription_request': [( < bound method BaseXMPP._handle_new_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'connected': [( < bound method ClientXMPP._reset_connection_state of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'session_bind': [( < bound method ClientXMPP._handle_session_bind of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , False), ( < bound method XEP_0030.session_bind of < slixmpp.plugins.xep_0030.disco.XEP_0030 object at 0x7f9e9031bdd0 >> , False), ( < bound method XEP_0199.session_bind of < slixmpp.plugins.xep_0199.ping.XEP_0199 object at 0x7f9e902d6ad0 >> , False), ( < bound method XEP_0380.session_bind of < slixmpp.plugins.xep_0380.eme.XEP_0380 object at 0x7f9e902d6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0082.XEP_0082 object at 0x7f9e900d7490 >> , False), ( < bound method XEP_0004.session_bind of < slixmpp.plugins.xep_0004.dataforms.XEP_0004 object at 0x7f9e900d77d0 >> , False), ( < bound method XEP_0131.session_bind of < slixmpp.plugins.xep_0131.headers.XEP_0131 object at 0x7f9e900d7bd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0060.pubsub.XEP_0060 object at 0x7f9e900d7310 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0128.extended_disco.XEP_0128 object at 0x7f9e900e0cd0 >> , False), ( < bound method XEP_0115.session_bind of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0163.XEP_0163 object at 0x7f9e900d7210 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
        'roster_update': [( < bound method ClientXMPP._handle_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'message': [( < bound method EchoBot.message_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
        'entity_caps': [( < bound method XEP_0115._process_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)],
        'omemo_device_list_publish': [( < bound method XEP_0384._receive_device_list of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)]
    }, '_XMLStream__filters': {
        'in': [],
        'out': [ < bound method Roster._save_last_status of {
            'test@xxx.org': {
                'test@xxx.org': {
                    'name': '',
                    'groups': [],
                    'from': False,
                    'to': False,
                    'pending_in': False,
                    'pending_out': False,
                    'whitelisted': False,
                    'subscription': 'none'
                },
                'bot@xxx.org': {
                    'name': '',
                    'groups': [],
                    'from': False,
                    'to': False,
                    'pending_in': False,
                    'pending_out': True,
                    'whitelisted': False,
                    'subscription': 'none'
                }
            },
            'bot@xxx.org': {}
        } > , < bound method XEP_0115._filter_add_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> ],
        'out_sync': []
    }, '_id': 8, '_id_prefix': '0f40a631-69e3-494b-97ec-e1a74cc89c67-', '_current_connection_attempt': < Task finished coro = < XMLStream._connect_routine() done, defined at / usr / local / lib / python3.7 / dist - packages / slixmpp / xmlstream / xmlstream.py: 293 > result = None > , 'dns_answers': None, 'dns_service': 'xmpp-client', 'disconnected': < Future pending > , 'stream_id': '837d80d8-dd2f-4b32-a601-c8e8458580ef', 'requested_jid': test@ xxx.org, 'boundjid': test@ xxx.org / FyV3fPn8, '_redirect_attempts': 0, 'max_redirects': 5, 'session_bind_event': < asyncio.locks.Event object at 0x7f9e902f6950[set] > , 'plugin': < slixmpp.plugins.base.PluginManager object at 0x7f9e902f6650 > , 'plugin_config': {}, 'plugin_whitelist': [], 'roster': {
        'test@xxx.org': {
            'test@xxx.org': {
                'name': '',
                'groups': [],
                'from': False,
                'to': False,
                'pending_in': False,
                'pending_out': False,
                'whitelisted': False,
                'subscription': 'none'
            },
            'bot@xxx.org': {
                'name': '',
                'groups': [],
                'from': False,
                'to': False,
                'pending_in': False,
                'pending_out': True,
                'whitelisted': False,
                'subscription': 'none'
            }
        },
        'bot@xxx.org': {}
    }, 'client_roster': {
        'test@xxx.org': {
            'name': '',
            'groups': [],
            'from': False,
            'to': False,
            'pending_in': False,
            'pending_out': False,
            'whitelisted': False,
            'subscription': 'none'
        },
        'bot@xxx.org': {
            'name': '',
            'groups': [],
            'from': False,
            'to': False,
            'pending_in': False,
            'pending_out': True,
            'whitelisted': False,
            'subscription': 'none'
        }
    }, 'is_component': False, 'use_message_ids': False, 'use_presence_ids': False, 'api': < slixmpp.api.APIRegistry object at 0x7f9e908b7490 > , 'sentpresence': True, 'stanza': < module 'slixmpp.stanza'
    from '/usr/local/lib/python3.7/dist-packages/slixmpp/stanza/__init__.py' > , 'escape_quotes': True, 'credentials': {
        'password': 'test'
    }, 'features': {
        'starttls', 'bind', 'caps', 'rosterver', 'mechanisms'
    }, '_stream_feature_handlers': {
        'starttls': ( < bound method FeatureSTARTTLS._handle_starttls of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , True),
        'bind': ( < bound method FeatureBind._handle_bind_resource of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False),
        'session': ( < bound method FeatureSession._handle_start_session of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False),
        'rosterver': ( < bound method FeatureRosterVer._handle_rosterver of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False),
        'preapproval': ( < bound method FeaturePreApproval._handle_preapproval of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False),
        'mechanisms': ( < bound method FeatureMechanisms._handle_sasl_auth of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , True),
        'caps': ( < bound method XEP_0115._handle_caps_feature of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)
    }, '_stream_feature_order': [(0, 'starttls'), (100, 'mechanisms'), (9000, 'rosterver'), (9001, 'preapproval'), (10000, 'bind'), (10001, 'session'), (10010, 'caps')], 'authenticated': True, 'sessionstarted': True, 'bound': True, 'bindfail': False, 'stream_version': '1.0'
}), ('__dir__', < built - in method __dir__ of EchoBot object at 0x7f9e902f6490 > ), ('__doc__', '\n    A simple Slixmpp bot that will echo encrypted messages it receives, along\n    with a short thank you message.\n\n    For details on how to build a client with slixmpp, look at examples in the\n    slixmpp repository.\n    '), ('__eq__', < method - wrapper '__eq__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__format__', < built - in method __format__ of EchoBot object at 0x7f9e902f6490 > ), ('__ge__', < method - wrapper '__ge__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__getattribute__', < method - wrapper '__getattribute__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__getitem__', < bound method BaseXMPP.__getitem__ of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('__gt__', < method - wrapper '__gt__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__hash__', < method - wrapper '__hash__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__init__', < bound method EchoBot.__init__ of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('__init_subclass__', < built - in method __init_subclass__ of type object at 0x1f014e0 > ), ('__le__', < method - wrapper '__le__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__lt__', < method - wrapper '__lt__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__module__', '__main__'), ('__ne__', < method - wrapper '__ne__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__new__', < built - in method __new__ of type object at 0x8583a0 > ), ('__reduce__', < built - in method __reduce__ of EchoBot object at 0x7f9e902f6490 > ), ('__reduce_ex__', < built - in method __reduce_ex__ of EchoBot object at 0x7f9e902f6490 > ), ('__repr__', < method - wrapper '__repr__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__setattr__', < method - wrapper '__setattr__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__sizeof__', < built - in method __sizeof__ of EchoBot object at 0x7f9e902f6490 > ), ('__str__', < method - wrapper '__str__'
    of EchoBot object at 0x7f9e902f6490 > ), ('__subclasshook__', < built - in method __subclasshook__ of type object at 0x1f014e0 > ), ('__weakref__', < weakref at 0x7f9e902f5590; to 'EchoBot'
    at 0x7f9e902f6490 > ), ('_build_stanza', < bound method XMLStream._build_stanza of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_connect_routine', < bound method XMLStream._connect_routine of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_current_connection_attempt', < Task finished coro = < XMLStream._connect_routine() done, defined at / usr / local / lib / python3.7 / dist - packages / slixmpp / xmlstream / xmlstream.py: 293 > result = None > ), ('_der_cert', None), ('_execute_and_reschedule', < bound method XMLStream._execute_and_reschedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_execute_and_unschedule', < bound method XMLStream._execute_and_unschedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_expected_server_name', 'xxx.org'), ('_handle_available', < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_disconnected', < bound method BaseXMPP._handle_disconnected of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_message', < bound method BaseXMPP._handle_message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_message_error', < bound method BaseXMPP._handle_message_error of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_new_subscription', < bound method BaseXMPP._handle_new_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_presence', < bound method BaseXMPP._handle_presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_removed_subscription', < bound method BaseXMPP._handle_removed_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_roster', < bound method ClientXMPP._handle_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_session_bind', < bound method ClientXMPP._handle_session_bind of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_session_start', < bound method BaseXMPP._handle_session_start of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_stream_error', < bound method BaseXMPP._handle_stream_error of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_stream_features', < bound method ClientXMPP._handle_stream_features of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_subscribe', < bound method BaseXMPP._handle_subscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_subscribed', < bound method BaseXMPP._handle_subscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_unavailable', < bound method BaseXMPP._handle_unavailable of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_unsubscribe', < bound method BaseXMPP._handle_unsubscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_unsubscribed', < bound method BaseXMPP._handle_unsubscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_id', 8), ('_id_prefix', '0f40a631-69e3-494b-97ec-e1a74cc89c67-'), ('_loop', < _UnixSelectorEventLoop running = True closed = False debug = False > ), ('_redirect_attempts', 0), ('_remove_schedules', < bound method XMLStream._remove_schedules of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_reset_connection_state', < bound method ClientXMPP._reset_connection_state of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_safe_cb_run', < bound method XMLStream._safe_cb_run of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_service_name', 'xxx.org'), ('_spawn_event', < bound method XMLStream._spawn_event of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_start_keepalive', < bound method XMLStream._start_keepalive of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_stream_feature_handlers', {
    'starttls': ( < bound method FeatureSTARTTLS._handle_starttls of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , True),
    'bind': ( < bound method FeatureBind._handle_bind_resource of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False),
    'session': ( < bound method FeatureSession._handle_start_session of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False),
    'rosterver': ( < bound method FeatureRosterVer._handle_rosterver of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False),
    'preapproval': ( < bound method FeaturePreApproval._handle_preapproval of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False),
    'mechanisms': ( < bound method FeatureMechanisms._handle_sasl_auth of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , True),
    'caps': ( < bound method XEP_0115._handle_caps_feature of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)
}), ('_stream_feature_order', [(0, 'starttls'), (100, 'mechanisms'), (9000, 'rosterver'), (9001, 'preapproval'), (10000, 'bind'), (10001, 'session'), (10010, 'caps')]), ('abort', < bound method XMLStream.abort of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('add_event_handler', < bound method XMLStream.add_event_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('add_filter', < bound method XMLStream.add_filter of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('address', ('87.106.127.220', 5222)), ('api', < slixmpp.api.APIRegistry object at 0x7f9e908b7490 > ), ('authenticated', True), ('auto_authorize', True), ('auto_subscribe', True), ('bindfail', False), ('bound', True), ('boundjid', test@ xxx.org / FyV3fPn8), ('ca_certs', None), ('cancel_connection_attempt', < bound method XMLStream.cancel_connection_attempt of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('cancel_schedule', < bound method XMLStream.cancel_schedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('certfile', None), ('ciphers', None), ('client_roster', {
    'test@xxx.org': {
        'name': '',
        'groups': [],
        'from': False,
        'to': False,
        'pending_in': False,
        'pending_out': False,
        'whitelisted': False,
        'subscription': 'none'
    },
    'bot@xxx.org': {
        'name': '',
        'groups': [],
        'from': False,
        'to': False,
        'pending_in': False,
        'pending_out': True,
        'whitelisted': False,
        'subscription': 'none'
    }
}), ('configure_dns', < bound method XMLStream.configure_dns of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('configure_socket', < bound method XMLStream.configure_socket of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('connect', < bound method ClientXMPP.connect of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('connect_loop_wait', 0), ('connection_lost', < bound method XMLStream.connection_lost of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('connection_made', < bound method XMLStream.connection_made of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('credentials', {
    'password': 'test'
}), ('data_received', < bound method XMLStream.data_received of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('default_domain', 'xxx.org'), ('default_lang', 'en'), ('default_ns', 'jabber:client'), ('default_port', 5222), ('del_event_handler', < bound method XMLStream.del_event_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('del_filter', < bound method XMLStream.del_filter of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('del_roster_item', < bound method ClientXMPP.del_roster_item of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('disable_starttls', False), ('disconnect', < bound method XMLStream.disconnect of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('disconnected', < Future pending > ), ('dns_answers', None), ('dns_service', 'xmpp-client'), ('eme_ns', 'eu.siacs.conversations.axolotl'), ('encrypted_reply', < bound method EchoBot.encrypted_reply of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('end_session_on_disconnect', True), ('eof_received', < bound method XMLStream.eof_received of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('escape_quotes', True), ('event', < bound method XMLStream.event of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('event_handled', < bound method XMLStream.event_handled of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('event_when_connected', 'tls_success'), ('exception', < bound method BaseXMPP.exception of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('features', {
    'starttls', 'bind', 'caps', 'rosterver', 'mechanisms'
}), ('force_starttls', True), ('fulljid', 'test@xxx.org/FyV3fPn8'), ('get', < bound method BaseXMPP.get of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_dns_records', < bound method XMLStream.get_dns_records of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_id', < bound method XMLStream.get_id of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_roster', < bound method ClientXMPP.get_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_ssl_context', < bound method XMLStream.get_ssl_context of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('getjidbare', < bound method BaseXMPP.getjidbare of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('getjidresource', < bound method BaseXMPP.getjidresource of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('incoming_filter', < bound method XMLStream.incoming_filter of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('init_parser', < bound method XMLStream.init_parser of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('init_plugins', < bound method BaseXMPP.init_plugins of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('is_component', False), ('is_connected', < bound method XMLStream.is_connected of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('jid', 'test@xxx.org'), ('keyfile', None), ('loop', < _UnixSelectorEventLoop running = True closed = False debug = False > ), ('make_iq', < bound method BaseXMPP.make_iq of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_error', < bound method BaseXMPP.make_iq_error of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_get', < bound method BaseXMPP.make_iq_get of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_query', < bound method BaseXMPP.make_iq_query of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_result', < bound method BaseXMPP.make_iq_result of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_set', < bound method BaseXMPP.make_iq_set of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_message', < bound method BaseXMPP.make_message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_presence', < bound method BaseXMPP.make_presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_query_roster', < bound method BaseXMPP.make_query_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('max_redirects', 5), ('message', < bound method EchoBot.message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('message_handler', < bound method EchoBot.message_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('namespace_map', {
    'http://www.w3.org/XML/1998/namespace': 'xml',
    'http://etherx.jabber.org/streams': 'stream'
}), ('new_id', < bound method XMLStream.new_id of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('parser', < xml.etree.ElementTree.XMLPullParser object at 0x7f9e900fbfd0 > ), ('password', 'test'), ('pause_writing', < bound method BaseProtocol.pause_writing of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('peer_default_lang', 'en'), ('pick_dns_answer', < bound method XMLStream.pick_dns_answer of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('plain_reply', < bound method EchoBot.plain_reply of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('plugin', < slixmpp.plugins.base.PluginManager object at 0x7f9e902f6650 > ), ('plugin_config', {}), ('plugin_whitelist', []), ('process', < bound method BaseXMPP.process of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('proxy_config', {}), ('reconnect', < bound method XMLStream.reconnect of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_feature', < bound method ClientXMPP.register_feature of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_handler', < bound method XMLStream.register_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_plugin', < bound method BaseXMPP.register_plugin of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_plugins', < bound method BaseXMPP.register_plugins of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_stanza', < bound method XMLStream.register_stanza of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('remove_handler', < bound method XMLStream.remove_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('remove_stanza', < bound method XMLStream.remove_stanza of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('requested_jid', test@ xxx.org), ('resource', 'FyV3fPn8'), ('resume_writing', < bound method BaseProtocol.resume_writing of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('roster', {
    'test@xxx.org': {
        'test@xxx.org': {
            'name': '',
            'groups': [],
            'from': False,
            'to': False,
            'pending_in': False,
            'pending_out': False,
            'whitelisted': False,
            'subscription': 'none'
        },
        'bot@xxx.org': {
            'name': '',
            'groups': [],
            'from': False,
            'to': False,
            'pending_in': False,
            'pending_out': True,
            'whitelisted': False,
            'subscription': 'none'
        }
    },
    'bot@xxx.org': {}
}), ('schedule', < bound method XMLStream.schedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('scheduled_events', {
        'Whitespace Keepalive': < TimerHandle when = 197769.102328958 XMLStream._execute_and_reschedule('Whitespace Keepalive', functools.par...2 f6490 >> , ' '),
        300) >
}), ('send', < bound method XMLStream.send of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_message', < bound method BaseXMPP.send_message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_presence', < bound method BaseXMPP.send_presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_presence_subscription', < bound method BaseXMPP.send_presence_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_raw', < bound method XMLStream.send_raw of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_xml', < bound method XMLStream.send_xml of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('sentpresence', True), ('server', 'xxx.org'), ('session_bind_event', < asyncio.locks.Event object at 0x7f9e902f6950[set] > ), ('sessionstarted', True), ('set_jid', < bound method BaseXMPP.set_jid of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('socket', < ssl.SSLObject object at 0x7f9e900fba10 > ), ('ssl_context', < ssl.SSLContext object at 0x7f9e902e19f0 > ), ('stanza', < module 'slixmpp.stanza'
    from '/usr/local/lib/python3.7/dist-packages/slixmpp/stanza/__init__.py' > ), ('start', < bound method EchoBot.start of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('start_stream_handler', < bound method BaseXMPP.start_stream_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('start_tls', < bound method XMLStream.start_tls of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('stream_footer', '</stream:stream>'), ('stream_
    ', "<stream:stream to='xxx.org' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>"), ('stream_id', '837d80d8-dd2f-4b32-a601-c8e8458580ef'), ('stream_ns', 'http://etherx.jabber.org/streams'), ('stream_version', '1.0'), ('transport', < asyncio.sslproto._SSLProtocolTransport object at 0x7f9e900fbc10 > ), ('unregister_feature', < bound method ClientXMPP.unregister_feature of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('update_roster', < bound method ClientXMPP.update_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('use_aiodns', True), ('use_cdata', False), ('use_ipv6', True), ('use_message_ids', False), ('use_presence_ids', False), ('use_proxy', False), ('use_ssl', False), ('username', 'test'), ('whitespace_keepalive', True), ('whitespace_keepalive_interval', 300), ('xml_depth', 1), ('xml_root', < Element '{http://etherx.jabber.org/streams}stream'

    at 0x7f9e9010bb30 > )]

Is this a bug or might this be a version conflict between the example in this repo and the pip modules ?

Edited Dec 25, 2019 by Jonny Tischbein
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: poezio/slixmpp-omemo#9