aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cap.go7
-rw-r--r--cmd_cap.go7
2 files changed, 12 insertions, 2 deletions
diff --git a/cap.go b/cap.go
index e06a5fc..06e1f00 100644
--- a/cap.go
+++ b/cap.go
@@ -7,17 +7,22 @@ import (
var Caps = map[string]string{}
var capls string
+var 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
func setupCapls() {
capls = ""
+ capls302 = ""
for k, v := range Caps {
capls += k
+ capls302 += k
if v != "" {
- capls += "=" + v
+ capls302 += "=" + v
}
capls += " "
+ capls302 += " "
}
capls = strings.TrimSuffix(capls, " ")
+ capls302 = strings.TrimSuffix(capls302, " ")
}
diff --git a/cmd_cap.go b/cmd_cap.go
index 65313a4..c76bd57 100644
--- a/cmd_cap.go
+++ b/cmd_cap.go
@@ -24,7 +24,12 @@ func handleClientCap(msg RMsg, client *Client) error {
if client.State == ClientStatePreRegistration {
client.State = ClientStateCapabilities
}
- err := client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls))
+ var err error
+ if len(msg.Params) >= 2 && msg.Params[1] == "302" {
+ err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls302))
+ } else {
+ err = client.Send(MakeMsg(self, "CAP", client.Nick, "LS", capls))
+ }
// TODO: Split when too long
if err != nil {
return err