aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2015-08-23 05:08:06 +0200
committerGravatar Szymon Tomasz Stefanek2015-08-23 05:08:06 +0200
commit2dceea8142b18713a91576bab9add5d55a0b496c (patch)
treec365ae3c7557435630203af9abc9697d0876141b /src
parentMore Qt5 porting (diff)
downloadKVIrc-2dceea8142b18713a91576bab9add5d55a0b496c.tar.gz
KVIrc-2dceea8142b18713a91576bab9add5d55a0b496c.tar.bz2
KVIrc-2dceea8142b18713a91576bab9add5d55a0b496c.zip
Properly handle RPL_WHOISREGNICK. Needs testing on a server that actually sends this message. Fixes #1463
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/sparser/KviIrcNumericCodes.h2
-rw-r--r--src/kvirc/sparser/KviIrcServerParser.h1
-rw-r--r--src/kvirc/sparser/KviIrcServerParser_numericHandlers.cpp22
-rw-r--r--src/kvirc/sparser/KviIrcServerParser_tables.cpp2
4 files changed, 23 insertions, 4 deletions
diff --git a/src/kvirc/sparser/KviIrcNumericCodes.h b/src/kvirc/sparser/KviIrcNumericCodes.h
index c25f6df28..3df70b38b 100644
--- a/src/kvirc/sparser/KviIrcNumericCodes.h
+++ b/src/kvirc/sparser/KviIrcNumericCodes.h
@@ -177,7 +177,7 @@
#define RPL_UNAWAY 305 /* [I,E,U,D] # */
#define RPL_NOWAWAY 306 /* [I,E,U,D] # */
//#define RPL_USERIP 307 /* [U] */
-#define RPL_WHOISREGNICK 307 /* "???" [D] # */
+#define RPL_WHOISREGNICK 307 /* "%s :is a registered nick" [D] # */
#define RPL_WHOISADMIN 308 /* "???" [d] # */
#define RPL_WHOISSADMIN 309 /* "???" [d] # */
#define RPL_WHOISHELPOP 310 /* "???" [D] # */
diff --git a/src/kvirc/sparser/KviIrcServerParser.h b/src/kvirc/sparser/KviIrcServerParser.h
index ad9c6dcfb..86bfb534a 100644
--- a/src/kvirc/sparser/KviIrcServerParser.h
+++ b/src/kvirc/sparser/KviIrcServerParser.h
@@ -171,6 +171,7 @@ private:
void parseNumericWhoisActually(KviIrcMessage *msg);
void parseNumericWhoisOther(KviIrcMessage *msg);
void parseNumericWhoisAuth(KviIrcMessage *msg);
+ void parseNumericWhoisRegistered(KviIrcMessage *msg);
void parseNumericWhowasUser(KviIrcMessage *msg);
void parseNumericEndOfWhois(KviIrcMessage *msg);
void parseNumericEndOfWhowas(KviIrcMessage *msg);
diff --git a/src/kvirc/sparser/KviIrcServerParser_numericHandlers.cpp b/src/kvirc/sparser/KviIrcServerParser_numericHandlers.cpp
index f48a38771..1de3229aa 100644
--- a/src/kvirc/sparser/KviIrcServerParser_numericHandlers.cpp
+++ b/src/kvirc/sparser/KviIrcServerParser_numericHandlers.cpp
@@ -1471,8 +1471,6 @@ void KviIrcServerParser::parseNumericWhoisAuth(KviIrcMessage *msg)
{
// 330 RPL_WHOISAUTH
// :prefix RPL_WHOISAUTH <target> <nick> <nick>:is authed as
- // 307 RPL_WHOISREGNICK
- // :prefix RPL_WHOISREGNICK <target> <nick> :is a registered nick
msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
@@ -1496,6 +1494,26 @@ void KviIrcServerParser::parseNumericWhoisAuth(KviIrcMessage *msg)
}
}
+void KviIrcServerParser::parseNumericWhoisRegistered(KviIrcMessage *msg)
+{
+ // 307 RPL_WHOISREGNICK
+ // :prefix RPL_WHOISREGNICK <target> <nick> :is a registered nick
+
+ msg->connection()->stateData()->setLastReceivedWhoisReply(kvi_unixTime());
+
+ QString szNick = msg->connection()->decodeText(msg->safeParam(1));
+
+ if(!msg->haltOutput())
+ {
+ KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolWhoisRepliesToActiveWindow) ?
+ msg->console()->activeWindow() : (KviWindow *)(msg->console());
+ pOut->output(
+ KVI_OUT_WHOISOTHER,__tr2qs("%c\r!n\r%Q\r%c is a registered nickname"),KviControlCodes::Bold,
+ &szNick,KviControlCodes::Bold);
+ }
+}
+
+
void KviIrcServerParser::parseNumericWhoisActually(KviIrcMessage *msg)
{
// 338: RPL_WHOISACTUALLY
diff --git a/src/kvirc/sparser/KviIrcServerParser_tables.cpp b/src/kvirc/sparser/KviIrcServerParser_tables.cpp
index bec5805de..f01d21689 100644
--- a/src/kvirc/sparser/KviIrcServerParser_tables.cpp
+++ b/src/kvirc/sparser/KviIrcServerParser_tables.cpp
@@ -396,7 +396,7 @@ messageParseProc KviIrcServerParser::m_numericParseProcTable[1000]=
0, // 304 RPL_TEXT, RPL_SYNTAX
PTM(parseNumericBackFromAway) , // 305 RPL_UNAWAY
PTM(parseNumericAway) , // 306 RPL_NOWAWAY
- PTM(parseNumericWhoisAuth) , // 307 RPL_WHOISREGNICK
+ PTM(parseNumericWhoisRegistered) , // 307 RPL_WHOISREGNICK
PTM(parseNumericWhoisOther) , // 308 RPL_WHOISADMIN, RPL_RULESTART
PTM(parseNumericWhoisOther) , // 309 RPL_WHOISSADMIN, RPL_RULESEND
PTM(parseNumericWhoisOther) , // 310 RPL_WHOISHELPOP