|
@@ -347,20 +347,30 @@ func cmodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
347
|
347
|
case BanMask, ExceptMask, InviteMask:
|
348
|
348
|
if len(msg.Params) > skipArgs {
|
349
|
349
|
change.arg = msg.Params[skipArgs]
|
350
|
|
- skipArgs += 1
|
|
350
|
+ skipArgs++
|
351
|
351
|
} else {
|
352
|
352
|
change.op = List
|
353
|
353
|
}
|
354
|
|
- case Key, UserLimit, ChannelFounder, ChannelAdmin, ChannelOperator, Halfop, Voice:
|
|
354
|
+ case ChannelFounder, ChannelAdmin, ChannelOperator, Halfop, Voice:
|
355
|
355
|
if len(msg.Params) > skipArgs {
|
356
|
356
|
change.arg = msg.Params[skipArgs]
|
357
|
|
- skipArgs += 1
|
|
357
|
+ skipArgs++
|
358
|
358
|
} else {
|
359
|
359
|
continue
|
360
|
360
|
}
|
|
361
|
+ case Key, UserLimit:
|
|
362
|
+ // don't require value when removing
|
|
363
|
+ if change.op == Add {
|
|
364
|
+ if len(msg.Params) > skipArgs {
|
|
365
|
+ change.arg = msg.Params[skipArgs]
|
|
366
|
+ skipArgs++
|
|
367
|
+ } else {
|
|
368
|
+ continue
|
|
369
|
+ }
|
|
370
|
+ }
|
361
|
371
|
}
|
362
|
372
|
|
363
|
|
- applied = append(applied, &change)
|
|
373
|
+ changes = append(changes, &change)
|
364
|
374
|
}
|
365
|
375
|
|
366
|
376
|
for _, change := range changes {
|
|
@@ -389,6 +399,30 @@ func cmodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
|
389
|
399
|
applied = append(applied, change)
|
390
|
400
|
}
|
391
|
401
|
|
|
402
|
+ case UserLimit:
|
|
403
|
+ switch change.op {
|
|
404
|
+ case Add:
|
|
405
|
+ val, err := strconv.ParseUint(change.arg, 10, 64)
|
|
406
|
+ if err == nil {
|
|
407
|
+ channel.userLimit = val
|
|
408
|
+ applied = append(applied, change)
|
|
409
|
+ }
|
|
410
|
+
|
|
411
|
+ case Remove:
|
|
412
|
+ channel.userLimit = 0
|
|
413
|
+ applied = append(applied, change)
|
|
414
|
+ }
|
|
415
|
+
|
|
416
|
+ case Key:
|
|
417
|
+ switch change.op {
|
|
418
|
+ case Add:
|
|
419
|
+ channel.key = change.arg
|
|
420
|
+
|
|
421
|
+ case Remove:
|
|
422
|
+ channel.key = ""
|
|
423
|
+ }
|
|
424
|
+ applied = append(applied, change)
|
|
425
|
+
|
392
|
426
|
case InviteOnly, Moderated, NoOutside, OpOnlyTopic, Persistent, Secret:
|
393
|
427
|
switch change.op {
|
394
|
428
|
case Add:
|