Version: SVN (using KDE KDE 3.5.3) Installed from: 000 The meaning of the 320 protocol numerical is ambiguous, which can cause erroneous WHOIS data to be displayed to users. At least one server (Dancer, Freenode network) uses it to indicate whether a user has identified with services, while at least one other server (UnrealIRCD) uses it to indicate a "Secure Connection" (most likely SSL). Example Dancer RAW log: :kornbluth.freenode.net 320 Sho_ Hurga :is identified to services Example UnrealIRCD RAW log: :panther.furnet.org 320 Hurga Hurga :is a Secure Connection It should be noted that UnrealIRCD uses the 307 numerical to indicate whether a user has identified for the nick they're using (note the semantic difference between this and Dancer's 320). Example RAW log: :panther.furnet.org 307 Hurga Hurga :is a registered nick The numerical catalogue website http://www.alien.net.au/irc/irc2numerics.html calls the 307 numerical "RPL_WHOISREGNICK", consistent with the UnrealIRC RAW log. The 320 numerical is known as "RPL_WHOISSPECIAL", with the meaning of special left undefined. We have the following options going forward: (a) Stop trying to make IRC nice for non-English speakers and merely display what the server sends us instead of using our own messages. This appears to be X-Chat's solution. (b) Decide to only support one of the competing meanings. (c) Toggle between two translatable messages based on keywords in the server message, relying on the stability of their strings. (d) Considering our history of special exceptions for UnrealIRCD, attempt to find reliable ways to tell whether we're on UnrealIRCD and switch into a special mode from thereon, to display the appropriate message. All of these options are undesirable, but such is the life of an IRC client developer. (c) would be the quick and ugly fix, (d) the more elaborate and clean one - but (d) would also represent the epic decision to give in and recognize IRC as a fragmented protocol in the source base.
Addendum: We presently implement (b) and display what holds true on Dancer/Freenode, i.e. "[WHOIS] <user> is an identified user.")
SVN commit 690835 by psn: Let's treat 307 and 320 equally until we decide what to do with 320 CCBUG:130588 M +1 -12 inputfilter.cpp M +1 -1 ircview.h --- branches/extragear/kde3/network/konversation/src/inputfilter.cpp #690834:690835 @@ -1210,6 +1210,7 @@ } // From a WHOIS. //[19:11] :zahn.freenode.net 320 PhantomsDad psn :is an identified user + case RPL_WHOISIDENTIFY: case RPL_IDENTIFIED: { NickInfo* nickInfo = server->getNickInfo(parameterList[1]); @@ -1423,18 +1424,6 @@ } break; } - case RPL_WHOISIDENTIFY: - { - // Display message only if this was not an automatic request. - if(getAutomaticRequest("WHOIS",parameterList[1])==0) - { - server->appendMessageToFrontmost(i18n("Whois"), - i18n("%1 has identified for this nick.") - .arg(parameterList[1]) - ); - } - break; - } case RPL_WHOISHELPER: { // Display message only if this was not an automatic request. --- branches/extragear/kde3/network/konversation/src/ircview.h #690834:690835 @@ -73,7 +73,7 @@ void setNickAndChannelContextMenusEnabled(bool enable); - signals: + signals: // Notify container of new text and highlight state void updateTabNotification(Konversation::TabNotifyType type); void gotFocus(); // So we can set focus to input line
commit 7725f9034b0d2f0276ceff8e4ceac24ccdcf66a0 Author: Eike Hein <hein@kde.org> Date: Sat Jul 10 13:02:28 2010 +0200 Add support for UnrealIRCd's 671 numeric. CCBUG:130588 diff --git a/ChangeLog b/ChangeLog index 78d6085..d0baf51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Changes since 1.3.1: +* Added support for UnrealIRCd's 671 numeric. + + Changes from 1.3 to 1.3.1: Konversation 1.3.1 is a maintenance release that improves program behavior and fixes defects, the most serious of which is a regression that unfortu- diff --git a/src/irc/inputfilter.cpp b/src/irc/inputfilter.cpp index ec3ae8a..00e3261 100644 --- a/src/irc/inputfilter.cpp +++ b/src/irc/inputfilter.cpp @@ -1464,6 +1464,15 @@ void InputFilter::parseServerCommand(const QString &prefix, const QString &comma } break; } + case RPL_WHOISSECURE: + { + if (plHas(2)) + { + if (getAutomaticRequest("WHOIS", parameterList.value(1)) == 0) + server->appendMessageToFrontmost(i18n("Whois"), i18n("%1 is using a secure connection.", parameterList.value(1))); + } + break; + } // Sample WHO response //"/WHO #lounge" //[21:39] [352] #lounge jasmine bots.worldforge.org irc.worldforge.org jasmine H 0 jasmine diff --git a/src/irc/replycodes.h b/src/irc/replycodes.h index 9b8fd6c..bd4b63e 100644 --- a/src/irc/replycodes.h +++ b/src/irc/replycodes.h @@ -157,5 +157,7 @@ #define ERR_UMODEUNKNOWNFLAG 501 #define ERR_USERSDONTMATCH 502 +#define RPL_WHOISSECURE 671 // used by UnrealIRCd to denote SSL in WHOIS response + #endif // REPLYCODES_H
See discussion in http://bugs.unrealircd.org/view.php?id=2006 and http://bugs.unrealircd.org/view.php?id=3401
Is this still valid for 1.4 or 1.5 RC1?
Yes; Eli is working on solving this with his ipf2 work.