irc window only showing me as participant

Bug #432076 reported by buzzdee
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Coccinella
Fix Released
Medium
buzzdee

Bug Description

I tried to login to irc service via irc transport on my ejabberd server, so I joined an irc server like this:

chatroom: irc%irc.efnet.net
nick: fsdsdf

and pressed login
after a while the groupchat window appeared, but in the list of participants, only I was listed.
In the chat window I can see and talk to the others. Tested with coccinella from SVN on Windows and OpenBSD
Below the debug output when I logged in, as it can be seen, the server correctly sends the list of participants to coccinella, but they are not shown in the list of participants.

May be the same problem as here in the forum:
http://thecoccinella.org/node/56

Revision history for this message
buzzdee (sebastia) wrote :
Revision history for this message
buzzdee (sebastia) wrote :

I got some rooms created on my ejabberd server, and connected to those with Coccinella. With the jabber MUC rooms there, everything is fine, so it seems only IRC channels are affected from this problem.

I try to figure out since two days why that happens, but I have nothing found so far, any hint where I should have a look?

Revision history for this message
buzzdee (sebastia) wrote :

I guess a duplicate of bug report: #140381
Is there a way to join them?

buzzdee (sebastia)
Changed in coccinella:
assignee: nobody → buzzdee (sebastia)
milestone: none → 0.96.16
importance: Undecided → Medium
buzzdee (sebastia)
Changed in coccinella:
milestone: 0.96.16 → 0.96.18
Revision history for this message
buzzdee (sebastia) wrote :

After hours of debugging, and trying to find out, where the problem is I found the problem, and a very very ugly solution:

When entering an XMPP MUC room, then the presence stanza contains an id= attribute, which is missing when there are presence stanzas sent from the IRC transport. Therefore in jabberlib.tcl jlib::presence_handler, coccinella is unable to find the callback function based on an ID.

My solution (as said, very very ugly), is to check the namespace, when it matches http://jabber.org/protocol/muc#user, then I hardcode the usage of : [list ::jlib::muc::parse_enter {::Enter::MUCCallback ::Enter::HardCoded}]

Revision history for this message
buzzdee (sebastia) wrote :

updated the patch a bit, now using disco information to distinguish between muc and gc-1.0 protocol.

The only thing not so looking nice is the Enter::HardCoded token I use as parameter to the callback function, however, I did not ran into issues with it. any comments?

Revision history for this message
buzzdee (sebastia) wrote :

I figured out that I can use the uid and also increment it in the Enter::[incr uid] instead of using the Enter::HardCoded token. So now it is using disco to figure out whether to use muc or old gc-1.0 protocol, and the token is not hardcoded anymore.

Tested to join different IRC networks without problem. XMPP chatrooms still work as before ;)
Also I haven't seen any drawbacks yet regarding presence from servers/components or other contacts.

SVN revision 2775 contains the fix.

I did not removed the usage of the id= field in presence stanzas, this may be done in a separate update/bug if necessary.

Some feedback from testers would be great.

Changed in coccinella:
status: New → Fix Committed
Revision history for this message
sander (s-devrieze) wrote :

When I try to login on ubuntu%<email address hidden>, I see the following message to appear constantly and Coccinella hangs until I click the log off button:
.jgc1.frall.room.mid.pv.l.text

Also, this bug appears when I tried to close the groupchat window:

invalid command name ".jgc1.frall.room.mid.pv"
invalid command name ".jgc1.frall.room.mid.pv"
    while executing
"$w sashpos 0"
    (procedure "::UI::SaveSashPos" line 6)
    invoked from within
"::UI::SaveSashPos groupchatDlgVert $chatstate(wpanev)"
    (procedure "::GroupChat::CloseCmd" line 18)
    invoked from within
"::GroupChat::CloseCmd .jgc1"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 $topcache($w,-closecommand) $w"
    (procedure "::UI::DoCloseWindow" line 24)
    invoked from within
"::UI::DoCloseWindow .jgc1 wm"
    (command for "WM_DELETE_WINDOW" window manager protocol)

Revision history for this message
buzzdee (sebastia) wrote :

I also tried to login to ubuntu channel there, and after 20 minutes, I got a tcl error message, unable to allocate memory.

I think the problem is that there are about 1300 people in the channel, and coccinella gets a presence information for every participant and is trying to handle those and to keep them in memory.

try a different channels, with fewer people, e.g. about 100. it takes a while after coccinella received all presence infos, but then coccinella handles that well.

IIRC, in the presence chapter or in the muc chapter in XMPP, the definitive guide, there are some XEP's mentioned, on how to tell the server to only send the presence infos for "important people" in a channel to the client.
Need to check which of them are these, and whether coccinella supports those, I guess not (yet)

I think the exception you got was a follow-up error on the initial problem.

Revision history for this message
sander (s-devrieze) wrote :

Ok, it works using the Scribus IRC channel. I opened Bug #502709.

buzzdee (sebastia)
Changed in coccinella:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.