Account wizard stuck on spinner when connected to broken server
xmpp:http.badxmpp.eu is a test case with the _xmpp-client
SRV record pointed at port 80 of a http server. This triggers an XML parser error, which ought to be caught and reported so the user can bother their admin about fixing it.
Versions
- OS: Debian 11
- Gajim version: master b3a88167
- GTK version: 3.24.24
- Python-nbxmpp version: 01b4b9c8a306
Steps to reproduce the problem
- Go to Account manager
- Click Add Account
- Fill in anything@http.badxmpp.eu as address
- Fill in anything as password
- Click 'Log In'
Expected behavior
Some sort of error.
Actual behavior
Spinner, forever. An error is show in the console XML parsing error: not well-formed
(see below).
launch.py -v
gives the following output around the error:
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Set state: StreamState.CONNECTED
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Execute state machine
2021-10-15 17:26:51 (I) nbxmpp.dispatcher (Account Wizard) Set dispatch callback: <bound method Client._xmpp_state_machine of <nbxmpp.client.Client object at 0x7f16c837abe0>>
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Start stream
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Set state: StreamState.WAIT_FOR_STREAM_START
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) ::::: DATA SENT ::::
<?xml version='1.0'?><stream:stream xmlns="jabber:client" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" to="http.badxmpp.eu" xml:lang="en">
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Signal: data-sent
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Signal: stanza-sent
2021-10-15 17:26:51 (D) gajim.c.ged Raise event: stanza-sent
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Add keepalive timer
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) ::::: DATA RECEIVED ::::
HTTP/1.1 400 Bad Request
Server: nginx
Date: Fri, 15 Oct 2021 15:26:52 GMT
Content-Type: text/html; charset=utf-8
Connection: close
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Signal: data-received
2021-10-15 17:26:51 (E) nbxmpp.dispatcher (Account Wizard) XML parsing error: not well-formed (invalid token): line 1, column 4
2021-10-15 17:26:51 (I) nbxmpp.dispatcher (Account Wizard) Signal: parsing-error
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Set error: StreamError.PARSING, parsing-error, not well-formed (invalid token): line 1, column 4
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Set state: StreamState.DISCONNECTING
2021-10-15 17:26:51 (I) nbxmpp.smacks (Account Wizard) Close session
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Remove keepalive timer
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Set Connection State: TCPState.DISCONNECTING
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Shutdown output
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) ::::: DATA SENT ::::
</stream:stream>
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Signal: data-sent
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Signal: stanza-sent
2021-10-15 17:26:51 (D) gajim.c.ged Raise event: stanza-sent
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Reveived zero data on _read_async()
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Set Connection State: TCPState.DISCONNECTED
2021-10-15 17:26:51 (I) nbxmpp.connection (Account Wizard) Signal: disconnected
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Set state: StreamState.DISCONNECTED
2021-10-15 17:26:51 (I) nbxmpp.stream (Account Wizard) Signal: disconnected
2021-10-15 17:26:51 (I) nbxmpp.dispatcher (Account Wizard) Clear IQ callbacks