From 6796cabbaf45c03e4f88dfdc266d1d7d5ec34cfb Mon Sep 17 00:00:00 2001 From: psychon Date: Sat, 6 Mar 2010 15:34:48 +0000 Subject: [PATCH] Optimize our ISUPPORT token parsing CString::Split() is nice and beautiful and way better than what we did before. git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1807 726aef4b-f618-498e-8847-2d620e286838 --- IRCSock.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/IRCSock.cpp b/IRCSock.cpp index bbaa1428..5d55d3a3 100644 --- a/IRCSock.cpp +++ b/IRCSock.cpp @@ -934,12 +934,14 @@ void CIRCSock::ReachedMaxBuffer() { } void CIRCSock::ParseISupport(const CString& sLine) { - unsigned int i = 0; - CString sArg = sLine.Token(i++); + VCString vsTokens; + VCString::iterator it; - while (!sArg.empty()) { - CString sName = sArg.Token(0, false, "="); - CString sValue = sArg.Token(1, true, "="); + sLine.Split(" ", vsTokens, false); + + for (it = vsTokens.begin(); it != vsTokens.end(); ++it) { + CString sName = it->Token(0, false, "="); + CString sValue = it->Token(1, true, "="); if (sName.Equals("PREFIX")) { CString sPrefixes = sValue.Token(1, false, ")"); @@ -971,14 +973,16 @@ void CIRCSock::ParseISupport(const CString& sLine) { } } } else if (sName.Equals("NAMESX")) { + if (m_bNamesx) + continue; m_bNamesx = true; PutIRC("PROTOCTL NAMESX"); } else if (sName.Equals("UHNAMES")) { + if (m_bUHNames) + continue; m_bUHNames = true; PutIRC("PROTOCTL UHNAMES"); } - - sArg = sLine.Token(i++); } }