Add support for userhost-in-names capability
authorShane Synan <digitalcircuit36939@gmail.com>
Wed, 17 Feb 2016 19:51:23 +0000 (13:51 -0600)
committerShane Synan <digitalcircuit36939@gmail.com>
Wed, 17 Feb 2016 20:10:38 +0000 (14:10 -0600)
Add support for userhost-in-names, which, if enabled, allows getting
the user/hostname information of a channel without using WHO polling.

See http://ircv3.net/specs/extensions/userhost-in-names-3.2.html

src/core/corenetwork.h
src/core/coresessioneventprocessor.cpp

index cc41309..e3ef945 100644 (file)
@@ -168,6 +168,15 @@ public:
      */
     inline bool useCapExtendedJoin() const { return capEnabled("extended-join"); }
 
+    /**
+     * Gets the status of the userhost-in-names capability.
+     *
+     * http://ircv3.net/specs/extensions/userhost-in-names-3.2.html
+     *
+     * @returns True if userhost-in-names is enabled, otherwise false
+     */
+    inline bool useCapUserhostInNames() const { return capEnabled("userhost-in-names"); }
+
 public slots:
     virtual void setMyNick(const QString &mynick);
 
index 0cee244..ca9b92d 100644 (file)
@@ -193,7 +193,8 @@ void CoreSessionEventProcessor::processIrcEventCap(IrcEvent *e)
                         queueCurrentCap = true;
                 } else if (availableCapPair.at(0).startsWith("away-notify") ||
                            availableCapPair.at(0).startsWith("account-notify") ||
-                           availableCapPair.at(0).startsWith("extended-join")) {
+                           availableCapPair.at(0).startsWith("extended-join") ||
+                           availableCapPair.at(0).startsWith("userhost-in-names")) {
                     // Always request these capabilities if available
                     queueCurrentCap = true;
                 }
@@ -959,6 +960,11 @@ void CoreSessionEventProcessor::processIrcEvent353(IrcEvent *e)
             nick = nick.mid(1);
         }
 
+        // If userhost-in-names capability is enabled, the following will be
+        // in the form "nick!user@host" rather than "nick".  This works without
+        // special handling as the following use nickFromHost() as needed.
+        // See: http://ircv3.net/specs/extensions/userhost-in-names-3.2.html
+
         nicks << nick;
         modes << mode;
     }