Package: pidgin
Version: 2.14.9-2
Severity: normal
Dear Maintainer,
The current pidgin cannot resume interrupted XMPP connection if no srv_rec
available (e.g. when using tor as proxy so no srv_rec will be obtained
from DNS
in the first place).
This is because in jabber_login_callback(), when an error occurs (source
< 0),
if (js->srv_rec != NULL), it will report the error and call
try_srv_connect()
to try another SRV record, and return, but if (js->srv_rec == NULL), it will
return directly without reporting the error, nor any further process.
Since try_srv_connect() can handle the scenario that (js->srv_rec ==
NULL) and
resume the interrupted XMPP connection, I suggest to call try_srv_connect()
when an error occurs, regardless whether (js->srv_rec == NULL), like the
attached patch.
-- System Information:
Debian Release: bookworm/sid
APT prefers testing
APT policy: (900, 'testing'), (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.17.0-1-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND
Locale: LANG=zh_CN.utf8, LC_CTYPE=zh_CN.utf8 (charmap=UTF-8), LANGUAGE
not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages pidgin depends on:
ii libatk1.0-0 2.38.0-1
ii libc6 2.33-7
ii libcairo2 1.16.0-5
ii libdbus-1-3 1.14.0-1
ii libgdk-pixbuf-2.0-0 2.42.8+dfsg-1
ii libglib2.0-0 2.72.1-1
ii libgstreamer-plugins-base1.0-0 1.20.2-2
ii libgstreamer1.0-0 1.20.2-1
ii libgtk2.0-0 2.24.33-2
ii libgtkspell0 2.0.16-1.3
ii libice6 2:1.0.10-1
ii libpango-1.0-0 1.50.7+ds-1
ii libpurple0 2.14.9-2
ii libsm6 2:1.2.3-1
ii libx11-6 2:1.7.5-1
ii libxss1 1:1.2.3-1
ii perl-base [perlapi-5.34.0] 5.34.0-4
ii pidgin-data 2.14.9-2
Versions of packages pidgin recommends:
ii gstreamer1.0-libav 1.20.2-1
ii gstreamer1.0-plugins-base 1.20.2-2
ii gstreamer1.0-plugins-good 1.20.2-1
ii gstreamer1.0-pulseaudio 1.20.2-1
ii sensible-utils 0.0.17
Versions of packages pidgin suggests:
ii libsqlite3-0 3.38.5-1
-- no debconf information
--- a/libpurple/protocols/jabber/jabber.c 2022-05-23 15:50:49.475173171
+0800
+++ b/libpurple/protocols/jabber/jabber.c 2022-05-23 15:51:17.491467914
+0800
@@ -804,10 +804,8 @@ jabber_login_callback(gpointer data, gin
JabberStream *js = purple_connection_get_protocol_data(gc);
if (source < 0) {
- if (js->srv_rec != NULL) {
- purple_debug_error("jabber", "Unable to connect to
server: %s. Trying next SRV record or connecting directly.\n", error);
- try_srv_connect(js);
- }
+ purple_debug_error("jabber", "Unable to connect to server: %s.
Trying next SRV record or connecting directly.\n", error);
+ try_srv_connect(js);
return;
}