X-Git-Url: http://www.git.cypherpunks.ru/?p=goircd.git;a=blobdiff_plain;f=daemon.go;h=1af9712616a383ad1a3b869bf3143e85756dd037;hp=0896add8c5b00539b6a4d454c5d1664a8dde773e;hb=7770e09e68f8dd0991ecd5a32383a89ac3e50857;hpb=a06713ebfdbd58c7ffbbcdfa95e9761e0861590b diff --git a/daemon.go b/daemon.go index 0896add..1af9712 100644 --- a/daemon.go +++ b/daemon.go @@ -162,6 +162,7 @@ func ClientRegister(client *Client, cmd string, cols []string) { nickname := cols[1] // Compatibility with some clients prepending colons to nickname nickname = strings.TrimPrefix(nickname, ":") + nickname = strings.ToLower(nickname) for existingClient := range clients { if *existingClient.nickname == nickname { client.ReplyParts("433", "*", nickname, "Nickname is already in use") @@ -485,6 +486,22 @@ func Processor(events chan ClientEvent, finished chan struct{}) { cols := strings.Split(cols[1], " ") nicknames := strings.Split(cols[len(cols)-1], ",") SendWhois(client, nicknames) + case "ISON": + if len(cols) == 1 || len(cols[1]) < 1 { + client.ReplyNotEnoughParameters("ISON") + continue + } + nicksKnown := make(map[string]struct{}) + for c := range clients { + nicksKnown[*c.nickname] = struct{}{} + } + var nicksExists []string + for _, nickname := range strings.Split(cols[1], " ") { + if _, exists := nicksKnown[nickname]; exists { + nicksExists = append(nicksExists, nickname) + } + } + client.ReplyNicknamed("303", strings.Join(nicksExists, " ")) case "VERSION": var debug string if *verbose {