diff options
| author | 2015-08-23 05:08:06 +0200 | |
|---|---|---|
| committer | 2015-08-23 05:08:06 +0200 | |
| commit | 2dceea8142b18713a91576bab9add5d55a0b496c (patch) | |
| tree | c365ae3c7557435630203af9abc9697d0876141b /src | |
| parent | More Qt5 porting (diff) | |
| download | KVIrc-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.h | 2 | ||||
| -rw-r--r-- | src/kvirc/sparser/KviIrcServerParser.h | 1 | ||||
| -rw-r--r-- | src/kvirc/sparser/KviIrcServerParser_numericHandlers.cpp | 22 | ||||
| -rw-r--r-- | src/kvirc/sparser/KviIrcServerParser_tables.cpp | 2 |
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 |
