|
@@ -270,36 +270,28 @@ func (msg *CapCommand) HandleRegServer(server *Server) {
|
270
|
270
|
switch msg.subCommand {
|
271
|
271
|
case CAP_LS:
|
272
|
272
|
client.capState = CapNegotiating
|
273
|
|
- client.Reply("CAP LS * :%s", SupportedCapabilities)
|
|
273
|
+ client.Reply(RplCap(client, CAP_LS, SupportedCapabilities))
|
274
|
274
|
|
275
|
275
|
case CAP_LIST:
|
276
|
|
- client.Reply("CAP LIST * :%s", client.capabilities)
|
|
276
|
+ client.Reply(RplCap(client, CAP_LIST, client.capabilities))
|
277
|
277
|
|
278
|
278
|
case CAP_REQ:
|
279
|
279
|
client.capState = CapNegotiating
|
280
|
280
|
for capability := range msg.capabilities {
|
281
|
281
|
if !SupportedCapabilities[capability] {
|
282
|
|
- client.Reply("CAP NAK * :%s", msg.capabilities)
|
|
282
|
+ client.Reply(RplCap(client, CAP_NAK, msg.capabilities))
|
283
|
283
|
return
|
284
|
284
|
}
|
285
|
285
|
}
|
286
|
286
|
for capability := range msg.capabilities {
|
287
|
287
|
client.capabilities[capability] = true
|
288
|
288
|
}
|
289
|
|
- client.Reply("CAP ACK * :%s", msg.capabilities)
|
|
289
|
+ client.Reply(RplCap(client, CAP_ACK, msg.capabilities))
|
290
|
290
|
|
291
|
291
|
case CAP_CLEAR:
|
292
|
|
- format := strings.TrimRight(
|
293
|
|
- strings.Repeat("%s%s ", len(client.capabilities)), " ")
|
294
|
|
- args := make([]interface{}, len(client.capabilities))
|
295
|
|
- index := 0
|
296
|
|
- for capability := range client.capabilities {
|
297
|
|
- args[index] = Disable
|
298
|
|
- args[index+1] = capability
|
299
|
|
- index += 2
|
300
|
|
- delete(client.capabilities, capability)
|
301
|
|
- }
|
302
|
|
- client.Reply("CAP ACK * :"+format, args...)
|
|
292
|
+ reply := RplCap(client, CAP_ACK, client.capabilities.DisableString())
|
|
293
|
+ client.capabilities = make(CapabilitySet)
|
|
294
|
+ client.Reply(reply)
|
303
|
295
|
|
304
|
296
|
case CAP_END:
|
305
|
297
|
client.capState = CapNegotiated
|