summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-16 22:52:01 -0400
committerJune McEnroe <june@causal.agency>2020-08-16 22:52:01 -0400
commit10e953b8b5f86854a7065987f6fc98f5c2c40db1 (patch)
treed4dfecd1d1effd4b26908c742513d7a1e4e2d8d8
parentSet OPENSSL_BIN to /usr/bin/openssl on FreeBSD (diff)
downloadcatgirl-10e953b8b5f86854a7065987f6fc98f5c2c40db1.tar.gz
catgirl-10e953b8b5f86854a7065987f6fc98f5c2c40db1.zip
Set origin fields to "*" if missing
Also determine if a message is from the server by if the host field has
been copied from the nick field.

EFNet sends NOTICEs with no origin during registration.

RFC 1459 has this to say:

> If the prefix is missing from the message, it is assumed to have
> originated from the connection from which it was received.

I suppose a more correct implementation would be to set the origin to
the hostname of the server, but we don't store that globally, so this
is good enough.
-rw-r--r--handle.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/handle.c b/handle.c
index fcc0c5d..a954824 100644
--- a/handle.c
+++ b/handle.c
@@ -76,7 +76,7 @@ static const char *capList(enum Cap caps) {
 
 static void require(struct Message *msg, bool origin, uint len) {
 	if (origin) {
-		if (!msg->nick) errx(EX_PROTOCOL, "%s missing origin", msg->cmd);
+		if (!msg->nick) msg->nick = "*";
 		if (!msg->user) msg->user = msg->nick;
 		if (!msg->host) msg->host = msg->user;
 	}
@@ -1114,7 +1114,7 @@ static const char *colorMentions(uint id, struct Message *msg) {
 static void handlePrivmsg(struct Message *msg) {
 	require(msg, true, 2);
 	bool query = !strchr(network.chanTypes, msg->params[0][0]);
-	bool server = strchr(msg->nick, '.');
+	bool server = (msg->host == msg->nick);
 	bool mine = !strcmp(msg->nick, self.nick);
 	uint id;
 	if (query && server) {
19ee58321dcb01049ee9f23571d2d1ed2ef2e340&follow=1'>Consume entire bodyJune McEnroe Aborting the request and leaving data around may be causing intermittent errors. Just discard the rest of the data. 2019-09-10Add title -v flagJune McEnroe 2019-09-10Use curl error bufferJune McEnroe 2019-09-10Set Accept-Encoding in titleJune McEnroe Because apparently it's fine for servers to respond with Content-Encoding you didn't ask for, and curl won't decode it if you didn't ask for it. 2019-09-08Set title User-AgentJune McEnroe Some things don't like you if you don't send one. 2019-09-07Add -x flag to titleJune McEnroe 2019-09-07Ignore SIGPIPE in relayJune McEnroe Allows restarting consumers safely. 2019-09-07Add A Memory Called EmpireJune McEnroe 2019-09-05Handle lack of Content-TypeJune McEnroe 2019-09-05Use CURLINFO_CONTENT_TYPEJune McEnroe Oops, didn't see this. 2019-09-05Decode entities in titlesJune McEnroe 2019-09-05Print title as soon as it's availableJune McEnroe 2019-09-05Use CURL_PREFIX to set flagsJune McEnroe 2019-09-05Add titleJune McEnroe 2019-09-04Add Avorter n'est pas tuerJune McEnroe 2019-08-29Unset executable on shell scriptsJune McEnroe 2019-08-29Add long-missing setopt to bin.7June McEnroe 2019-08-29Add editJune McEnroe