summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-06 04:01:11 -0500
committerJune McEnroe <june@causal.agency>2020-02-06 04:01:11 -0500
commit30b3780e57e532e928d445b882b218decb88af55 (patch)
tree074d334cd1d5a9a544b8382c37a4b731e70d8a7a /handle.c
parentSend CAP END if CAP LS doesn't list anything good (diff)
downloadcatgirl-30b3780e57e532e928d445b882b218decb88af55.tar.gz
catgirl-30b3780e57e532e928d445b882b218decb88af55.zip
Route own query messages correctly
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/handle.c b/handle.c
index cb080e9..9244e66 100644
--- a/handle.c
+++ b/handle.c
@@ -263,11 +263,20 @@ static bool isAction(struct Message *msg) {
 static void handlePrivmsg(struct Message *msg) {
 	require(msg, true, 2);
 	bool query = !strchr(self.chanTypes, msg->params[0][0]);
-	bool network = query && strchr(msg->nick, '.');
+	bool network = strchr(msg->nick, '.');
+	bool mine = self.nick && !strcmp(msg->nick, self.nick);
+	size_t id;
+	if (query && network) {
+		id = Network;
+	} else if (query && !mine) {
+		id = idFor(msg->nick);
+		idColors[id] = hash(msg->user);
+	} else {
+		id = idFor(msg->params[0]);
+	}
+
 	bool notice = (msg->cmd[0] == 'N');
 	bool action = isAction(msg);
-	size_t id = (network ? Network : idFor(query ? msg->nick : msg->params[0]));
-	if (query && !network) idColors[id] = hash(msg->user);
 	uiFormat(
 		id, Warm, tagTime(msg),
 		"\3%d%s%s%s\3\t%s",