As far as I can tell, Gajim does very little in the way of error handling. If I get errors back from transports saying "you can't sign in right now, the transport is down" Gajim doesn't tell me anything. Also, it seems as if it doesn't even have a handler for stream errors (debug always says 'unknown stanza').
Example, trying to register to dead icq gateway :
\<iq to="icq" type="get" id="42" from="email@example.com/Gajim"> \<query xmlns="jabber:iq:register" /> \</iq> \<iq firstname.lastname@example.org/Gajim' type='error' id='42' from='icq'> \<query xmlns='jabber:iq:register'/> \<error type='wait' code='502'> \<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> \<text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Component 'icqlinker' is not connected to server\</text> \</error> \</iq>
=>> UI popup :
*Invalid answer* Transport icq answered wrongly to register request.
See ticket #2520 also.