[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [konversation] src/irc: Add support for userhost-in-names
From: Peter Simonsson <peter.simonsson () gmail ! com>
Date: 2016-09-17 12:05:38
Message-ID: E1blENG-000593-Py () code ! kde ! org
[Download RAW message or body]
Git commit af4783c21961acd3e17d633abe61ee80087df2b2 by Peter Simonsson.
Committed on 17/09/2016 at 12:05.
Pushed by psn into branch 'master'.
Add support for userhost-in-names
This capability lets the server include the userhost in the name reply
M +18 -0 src/irc/channel.cpp
M +9 -0 src/irc/server.cpp
M +2 -0 src/irc/server.h
http://commits.kde.org/konversation/af4783c21961acd3e17d633abe61ee80087df2b2
diff --git a/src/irc/channel.cpp b/src/irc/channel.cpp
index f2018a0..a431c80 100644
--- a/src/irc/channel.cpp
+++ b/src/irc/channel.cpp
@@ -2507,6 +2507,19 @@ void Channel::processQueuedNicks(bool flush)
while (nickname.isEmpty() && !m_nickQueue.isEmpty())
nickname = m_nickQueue.takeFirst();
+ QString userHost;
+
+ if(m_server->hasUserHostInNames())
+ {
+ int index = nickname.indexOf(QLatin1Char('!'));
+
+ if(index >= 0)
+ {
+ userHost = nickname.mid(index + 1);
+ nickname = nickname.left(index);
+ }
+ }
+
bool admin = false;
bool owner = false;
bool op = false;
@@ -2530,6 +2543,11 @@ void Channel::processQueuedNicks(bool flush)
Q_ASSERT(nick);
nick->setMode(mode);
+ if(!userHost.isEmpty())
+ {
+ nick->getNickInfo()->setHostmask(userHost);
+ }
+
fastAddNickname(nick);
++m_processedNicksCount;
diff --git a/src/irc/server.cpp b/src/irc/server.cpp
index 905d806..750f712 100644
--- a/src/irc/server.cpp
+++ b/src/irc/server.cpp
@@ -91,6 +91,7 @@ Server::Server(QObject* parent, ConnectionSettings& settings) : QObject(parent)
m_hasExtendedJoin = false;
m_hasWHOX = false;
m_hasServerTime = false;
+ m_hasUserHostInNames = false;
m_nickIndices.clear();
m_nickIndices.append(0);
@@ -727,6 +728,10 @@ void Server::capInitiateNegotiation(bool useSASL)
m_capRequested++;
queue(QStringLiteral("CAP REQ :znc.in/server-time-iso"), HighPriority);
m_capRequested++;
+
+ queue(QStringLiteral("CAP REQ :userhost-in-names"), HighPriority);
+ m_hasUserHostInNames = false;
+ m_capRequested++;
}
void Server::capReply()
@@ -770,6 +775,10 @@ void Server::capAcknowledged(const QString& name, Server::CapModifiers modifiers
{
m_hasServerTime = true;
}
+ else if (name == QStringLiteral("userhost-in-names"))
+ {
+ m_hasUserHostInNames = true;
+ }
}
void Server::capDenied(const QString& name)
diff --git a/src/irc/server.h b/src/irc/server.h
index 30524ce..6466871 100644
--- a/src/irc/server.h
+++ b/src/irc/server.h
@@ -393,6 +393,7 @@ class Server : public QObject
void setHasWHOX(bool state) { m_hasWHOX = state; }
bool hasWHOX() const { return m_hasWHOX; }
bool hasServerTime() const { return m_hasServerTime; }
+ bool hasUserHostInNames() const { return m_hasUserHostInNames; }
// IRCQueueManager
bool validQueue(QueuePriority priority); ///< is this queue index valid?
@@ -860,6 +861,7 @@ class Server : public QObject
bool m_hasExtendedJoin;
bool m_hasWHOX;
bool m_hasServerTime;
+ bool m_hasUserHostInNames;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(Server::CapModifiers)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic