Bug 128786 - Konversation does not respond to other clients' "/leave" on Undernet servers
Summary: Konversation does not respond to other clients' "/leave" on Undernet servers
Status: RESOLVED FIXED
Alias: None
Product: konversation
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Debian testing Linux
: NOR normal
Target Milestone: ---
Assignee: Konversation Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-06-07 20:49 UTC by Dave Ewart
Modified: 2006-06-08 14:51 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dave Ewart 2006-06-07 20:49:47 UTC
Version:           0.19 #3100 (using KDE KDE 3.5.2)
Installed from:    Debian testing/unstable Packages
OS:                Linux

When connected to any undernet IRC server (either irc.undernet.org and derivatives, or a locally-running ircd-ircu instance), the effects of other clients' "/leave" are apparently ignored by Konversation.  Example:

In Konversation:

  /server irc.undernet.org
  /join #randomircchannel

In $OTHER_CLIENT connected from elsewhere

  /server irc.undernet.org
  /join #randomircchannel

At this point, Konversation shows:

"--> otheruser has joined this channel"

as expected.

In $OTHER_CLIENT

  /leave

which causes NO OUTPUT in Konversation at all, rather than the expected "otheruser has left this channel".  Konversation keeps the nick corresponding to the user who has actually left in the nick list, too.

As a further example, if $OTHER_CLIENT repeatedly joins and leaves the channel, output like this is produced in Konversation:

"--> otheruser has joined this channel"
"--> otheruser has joined this channel"
"--> otheruser has joined this channel"
"--> otheruser has joined this channel"
etc.

with all the expected "... has left this channel" entries missing.

This bug appears to be completely reproducible, but confined to happening to Konversation on undernet-style servers: it doesn't happen on freenode, for example.  It also doesn't affect other clients I've tried, running on undernet-style servers (e.g. irssi, X-Chat, Chatzilla etc.): these non-Konversation clients show the "... has left this channel" response correctly.

Further, if $OTHER_CLIENT issues a "/quit" or a "/disconnect", rather than a "/leave", then this *is* noticed by Konversation:

"<-- otheruser has left this server ..."
Comment 1 Eike Hein 2006-06-07 23:37:41 UTC
We've had problems with Undernets servers in the past - their message format is somewhat unusual.

Please open the raw log for your Undernet connection (/raw) and provide us with some RAW for users leaving, both with the optional part message and without. Based on that we should be able to amend our parsing to cope with Undernets syntax.
Comment 2 Dave Ewart 2006-06-08 10:08:40 UTC
Hope this is what you're looking for.  Not sure what you meant by "both with the optional part message and without", I assumed you meant to show both the results of a (working) "/quit" and a (non-working) "/leave"

User someuser joining channel #randomircchannel, saying Hello and then "/leave"ing again:


[08:58] >> :someuser!davee@host1.ourdomain JOIN :#randomircchannel 
[08:58] << WHO #randomircchannel
[08:58] >> :ourircserver.ourdomain 352 davee #randomircchannel someuser host1.ourdomain ourircserver.ourdomain someuser H :3 Some User
[08:58] >> :ourircserver.ourdomain 352 davee #randomircchannel ~davee host2.ourdomain ourircserver.ourdomain davee H :0 Dave Ewart 
[08:58] >> :ourircserver.ourdomain 352 davee #randomircchannel ~anon host3.ourdomain ourircserver.ourdomain anon H :3 Anonymous Stranger 
[08:58] >> :ourircserver.ourdomain 315 davee #randomircchannel :End of /WHO list. 
[08:58] >> :someuser!someuser@host1.ourdomain PRIVMSG #randomircchannel :Hello 
[08:58] << WHO #sysadmin
[08:58] >> :ourircserver.ourdomain 352 davee #sysadmin ~davee host2.ourdomain ourircserver.ourdomain davee H@ :0 Dave Ewart 
[08:58] >> :ourircserver.ourdomain 315 davee #sysadmin :End of /WHO list. 
[08:58] >> :someuser!someuser@host1.ourdomain PART :#randomircchannel 
[08:58] << PING LAG :ourircserver.ourdomain

User someuser joining channel #randomircchannel, saying Hello and then "/quit"ing directly:

[09:00] >> :someuser!someuser@host1.ourdomain JOIN :#randomircchannel 
[09:00] << PING LAG :ourircserver.ourdomain
[09:00] >> :ourircserver.ourdomain PONG ourircserver.ourdomain :LAG 
[09:00] >> :someuser!someuser@host1.ourdomain PRIVMSG #randomircchannel :Hello 
[09:00] << WHO #randomircchannel
[09:00] >> :ourircserver.ourdomain 352 davee #randomircchannel someuser host1.ourdomain ourircserver.ourdomain someuser H :3 Some User
[09:00] >> :ourircserver.ourdomain 352 davee #randomircchannel ~davee host2.ourdomain ourircserver.ourdomain davee H :0 Dave Ewart 
[09:00] >> :ourircserver.ourdomain 352 davee #randomircchannel ~anon host3.ourdomain ourircserver.ourdomain anon H :3 Anonymous Stranger 
[09:00] >> :ourircserver.ourdomain 315 davee #randomircchannel :End of /WHO list. 
[09:00] >> :someuser!someuser@host1.ourdomain QUIT :Quit: leaving

The channel content during the above session was as follows:

[08:58] --> someuser has joined this channel (someuser@host1.ourdomain).
[08:58] <someuser> Hello
[09:00] --> someuser has joined this channel (someuser@host1.ourdomain).
[09:00] <someuser> Hello
[09:00] <-- someuser has left this server (Quit: leaving).

Hope this helps.
Comment 3 Dave Ewart 2006-06-08 10:10:43 UTC
Just noticed: I 'sanitized' the above log by using various search/replace to hide our real server names and so on: looks like I screwed that up on the first line.  I believe it should read:

[08:58] >> :someuser!someuser@host1.ourdomain JOIN :#randomircchannel

and not

[08:58] >> :someuser!davee@host1.ourdomain JOIN :#randomircchannel

Sorry ...
Comment 4 Eike Hein 2006-06-08 13:36:03 UTC
Alright, when I got home in the middle of the night yesterday (tired) and hastily went through my bug mail, I did in fact forget that we fixed this problem a couple of weeks back in SVN rev 531718 (on the other hand, without your RAW lag I couldn't have been certain). Quoting my commit message:

"* Add tentative fix for slighly peculiar message-less PART on ircu and
  potentially others. Argument handling in InputFilter may require re-
  factoring as per the information submitted to the mailing list. Thanks
  to Nimrod Gutman and the ircu team for aiding the debugging effort."

IRC users can specifiy an optional "message" for their PART/QUIT events that is displayed in other users' clients as reason for their going away (often used for a funny tagline, though). That's what I meant with "with and without message". This problem occurs on PARTs without a message, as ircu's message format in those cases deviates from most other IRC server applications, notably those we commonly test with. Subtle differences between IRC server implementation like that is what accounts for a significant part of the complexity in an IRC client.


The fix will be included in the next release of Konversation. Alternatively, you can get yourself a checkout of the development version from the SVN repository. Instructions can be found here: http://konversation.kde.org/wiki/SVN

SVN is presently stable; it may destabilize towards the end of the months when new feature work for 0.20 lands. So the time is now.
Comment 5 Dave Ewart 2006-06-08 14:42:10 UTC
I'll go check out the SVN build - thanks Elke.

Apologies if I missed out any other bug report and made a duplicate: I did have what I thought was a fairly thorough search, but perhaps not!
Comment 6 Eike Hein 2006-06-08 14:45:26 UTC
(My name is in fact "Eike", FWIW.)
Comment 7 Dave Ewart 2006-06-08 14:51:08 UTC
Ah, yes: small font on screen ... sorry about that.

Many thanks for the speedy response to my report, anyway, Eike.