|
@@ -285,36 +285,28 @@ func (msg *CapCommand) HandleRegServer(server *Server) {
|
285
|
285
|
switch msg.subCommand {
|
286
|
286
|
case CAP_LS:
|
287
|
287
|
client.capState = CapNegotiating
|
288
|
|
- client.Reply("CAP LS * :%s", SupportedCapabilities)
|
|
288
|
+ client.Reply(RplCap(client, CAP_LS, SupportedCapabilities))
|
289
|
289
|
|
290
|
290
|
case CAP_LIST:
|
291
|
|
- client.Reply("CAP LIST * :%s", client.capabilities)
|
|
291
|
+ client.Reply(RplCap(client, CAP_LIST, client.capabilities))
|
292
|
292
|
|
293
|
293
|
case CAP_REQ:
|
294
|
294
|
client.capState = CapNegotiating
|
295
|
295
|
for capability := range msg.capabilities {
|
296
|
296
|
if !SupportedCapabilities[capability] {
|
297
|
|
- client.Reply("CAP NAK * :%s", msg.capabilities)
|
|
297
|
+ client.Reply(RplCap(client, CAP_NAK, msg.capabilities))
|
298
|
298
|
return
|
299
|
299
|
}
|
300
|
300
|
}
|
301
|
301
|
for capability := range msg.capabilities {
|
302
|
302
|
client.capabilities[capability] = true
|
303
|
303
|
}
|
304
|
|
- client.Reply("CAP ACK * :%s", msg.capabilities)
|
|
304
|
+ client.Reply(RplCap(client, CAP_ACK, msg.capabilities))
|
305
|
305
|
|
306
|
306
|
case CAP_CLEAR:
|
307
|
|
- format := strings.TrimRight(
|
308
|
|
- strings.Repeat("%s%s ", len(client.capabilities)), " ")
|
309
|
|
- args := make([]interface{}, len(client.capabilities))
|
310
|
|
- index := 0
|
311
|
|
- for capability := range client.capabilities {
|
312
|
|
- args[index] = Disable
|
313
|
|
- args[index+1] = capability
|
314
|
|
- index += 2
|
315
|
|
- delete(client.capabilities, capability)
|
316
|
|
- }
|
317
|
|
- client.Reply("CAP ACK * :"+format, args...)
|
|
307
|
+ reply := RplCap(client, CAP_ACK, client.capabilities.DisableString())
|
|
308
|
+ client.capabilities = make(CapabilitySet)
|
|
309
|
+ client.Reply(reply)
|
318
|
310
|
|
319
|
311
|
case CAP_END:
|
320
|
312
|
client.capState = CapNegotiated
|