Bug 98207 - Joining +k Channels does not work for me
Summary: Joining +k Channels does not work for me
Status: RESOLVED FIXED
Alias: None
Product: konversation
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: argonel
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-01-30 16:46 UTC by Christian Herenz
Modified: 2010-07-01 16:02 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 Christian Herenz 2005-01-30 16:46:00 UTC
Version:           0.15.1 (using KDE KDE 3.3.2)
Installed from:    SuSE RPMs
OS:                Linux

I have added a channel which is protected +k in server settings on the server list. This channel is the last channel (at bottom of the list) which i want to join on that network. The password is definetly correct. However, Konversation does not want to join that channel.

Some Interesting things from RAW Log (i try to keep the private information out, so i will post password here, but not the server, if some dumb people try to join our private chan, we change have to change our pass):

Your host is ***.***.**, running version Unreal3.2.2-iZ 
***.***.** Unreal3.2.2-iZ iowghraAsORTVSxNCWqBzvdHtGpD lvhopsmntikrRcaqOALQbSeKVfMGCuzNTj 
***.***.***CMDS=KNOCK,MAP,DCCALLOW,USERIP SAFELIST HCN MAXCHANNELS=20 CHANLIMIT=#:20 MAXLIST=b:60,e:60 NICKLEN=30 CHANNELLEN=32 TOPICLEN=307 KICKLEN=307 AWAYLEN=307 MAXTARGETS=20 WALLCHOPS :are supported by this server 
***.***.*** WATCH=128 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)*!@%+ CHANMODES=be,kfL,lj,psmntirRcOAQKVGCuzNSMT NETWORK=*** CASEMAPPING=ascii EXTBAN=~,cqnr ELIST=MNUCT STATUSMSG=~&@%+ EXCEPTS :are supported by this server 

JOIN #ec,#elektrofahndung,#bb,#ohren-sm,#ec-linux,#radio.intern ,,,,,rec0t3j1

(then konvi joins all channels, and makes a WHO)

#radio.intern :Cannot join channel (+k)

...joining this channel with /join #radio.intern rec0t3j1 manually works perfect. I also tried to give this command via Commands in the Server Settings to the Network, this does not work either.
Comment 1 Ismail Donmez 2005-01-31 21:31:23 UTC
As discussed on IRC.
Comment 2 argonel 2005-01-31 22:09:13 UTC
No, this is a valid bug.

Comment 3 Ismail Donmez 2005-01-31 22:18:28 UTC
You said this is a server bug. And we don't have to workaround server bugs.
Comment 4 argonel 2005-01-31 22:36:38 UTC
Some servers delete multiple adjacent delimeters, some don't. This is not specified in the RFC, so we must accomodate both.
Comment 5 Christian Herenz 2005-01-31 22:42:15 UTC
its really an ambiguity in the specification.
rfc1459 is probably one of the worst RFCs ever written. (argonel)
the join line at the moment works on some networks but not on the one i am using, so there is need of a join line that works on all networks, i think.
using dummy keys e.g. as you suggested or always putting the key protected channels on top of the list.
Comment 6 Peter Simonsson 2005-04-02 22:58:25 UTC
CVS commit by psn: 

Insert a fake key to make +k channels work on some servers

BUG:98207


  M +1 -1      server.cpp   1.461


--- kdeextragear-2/konversation/konversation/server.cpp  #1.460:1.461
@@ -212,5 +212,5 @@ void Server::init(KonversationMainWindow
 
             channels += (*it).name();
-            keys += (*it).password();
+            keys += ((*it).password().isEmpty() ? "''" : (*it).password());
         }
 
Comment 7 Peter Simonsson 2010-07-01 16:02:25 UTC
commit 791b86edffedf2e7c5b18928a5225da843f1b367
Author: Peter Simonsson <peter.simonsson@gmail.com>
Date:   Sat Apr 2 20:58:20 2005 +0000

    Insert a fake key to make +k channels work on some servers
    
    BUG:98207
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=402715

diff --git a/konversation/server.cpp b/konversation/server.cpp
index 61dd182..b2a946a 100644
--- a/konversation/server.cpp
+++ b/konversation/server.cpp
@@ -211,7 +211,7 @@ void Server::init(KonversationMainWindow* mainWindow, const QString& nick, const
             }
 
             channels += (*it).name();
-            keys += (*it).password();
+            keys += ((*it).password().isEmpty() ? "''" : (*it).password());
         }
 
         setAutoJoinChannel(channels);