[Pidgin] #4144: Empty nicklist on jabber chat rejoin

Pidgin trac at pidgin.im
Wed Nov 28 18:39:53 EST 2007


#4144: Empty nicklist on jabber chat rejoin
---------------------+------------------------------------------------------
Reporter:  latinsud  |       Owner:  nwalp
    Type:  defect    |      Status:  new  
Priority:  minor     |   Component:  XMPP 
 Version:  2.3.0     |    Keywords:       
 Pending:  0         |  
---------------------+------------------------------------------------------
 When i am in a jabber muc room, and my internet gets disconnected and
 connected again (so pidgin has to log in again), when pidgin rejoins the
 muc room i see an empty nick list (i can only see myself).
 It happens at least almost always for jabberes at conf.jabberes.org room
 (powered by ejabberd).
 I've been seeing this behaviour in pidgin (win & linux) for years.

 The problem seems to be that muc server sends a disconnection notification
 of the old connection to the new one:
 {{{
 <presence from='jabberes at conf.jabberes.org/SuD'
 to='SuD at jabberes.org/Tatil' type='unavailable'><status>Replaced by new
 connection</status><x xmlns='http://jabber.org/protocol/muc#user'><item
 affiliation='member' role='none'/></x></presence>
 }}}
 Pidgin then calls jabber_chat_destroy (maybe thinks that the notification
 is an order to part?), and since then it will ignore nick list "presence"
 messages.
 I've been discussing this with some people and we're still not sure if
 it's pidgin's or ejabberd's fault.

 A patch that worked (but i'm not sure if what i'm doing is correct) is
 removing lines 595-596 presence.c:
 {{{
 if(jid->resource && chat->handle && !strcmp(jid->resource, chat->handle))
                                         jabber_chat_destroy(chat);
 }}}


 To reproduce it i can hold a connection with iptables and let a new one be
 established. Eg:
 {{{
 # Target current connection source port so a new connection will work
 # netstat -n | grep 5222
 tcp        0      0 192.168.1.3:43162       83.149.104.137:5222
 ESTABLISHED
 PU=43161 ; iptables -A OUTPUT -p tcp --sport $PU -j DROP  ; iptables -A
 INPUT -p tcp --dport $PU -j DROP
 }}}

-- 
Ticket URL: <http://developer.pidgin.im/ticket/4144>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list