diff options
author | Runxi Yu <me@runxiyu.org> | 2024-12-09 06:59:55 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2024-12-09 06:59:55 +0800 |
commit | c62a30fdf616bd59d4822b730298180ad67a475a (patch) | |
tree | bbeb43882acc8cd2450f0a488a55ab538dcb70e0 | |
parent | CAP LS: Distinguish 302 (diff) | |
download | meseircd-c62a30fdf616bd59d4822b730298180ad67a475a.tar.gz meseircd-c62a30fdf616bd59d4822b730298180ad67a475a.tar.zst meseircd-c62a30fdf616bd59d4822b730298180ad67a475a.zip |
CAP LS: Take version as integer
-rw-r--r-- | cap.go | 6 | ||||
-rw-r--r-- | cmd_cap.go | 10 |
2 files changed, 12 insertions, 4 deletions
@@ -6,8 +6,10 @@ import ( var Caps = map[string]string{} -var capls string -var capls302 string +var ( + capls string + capls302 string +) // Can't be in init() because Caps will be registered with init in the future // and init()s are executed by filename alphabetical order @@ -1,6 +1,7 @@ package main import ( + "strconv" "strings" ) @@ -25,8 +26,13 @@ func handleClientCap(msg RMsg, client *Client) error { client.State = ClientStateCapabilities } var err error - if len(msg.Params) >= 2 && msg.Params[1] == "302" { - err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls302)) + if len(msg.Params) >= 2 { + capVersion, err := strconv.ParseUint(msg.Params[1], 10, 64) + if err == nil && capVersion >= 302 { + err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls302)) + } else { + err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls)) + } } else { err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls)) } |