+ r.RUnlock()
+ sort.Strings(nicknames)
+ maxLen := 512 - len(*hostname) - 2 - 2
+
+MoreNicknames:
+ lenAll := 0
+ lenName := 0
+ for i, n := range nicknames {
+ lenName = len(n) + 1
+ if lenAll+lenName >= maxLen {
+ c.ReplyNicknamed("353", "=", r.name, strings.Join(nicknames[:i-1], " "))
+ nicknames = nicknames[i:]
+ goto MoreNicknames
+ }
+ lenAll += lenName
+ }
+ if len(nicknames) > 0 {
+ c.ReplyNicknamed("353", "=", r.name, strings.Join(nicknames, " "))
+ }
+ c.ReplyNicknamed("366", r.name, "End of NAMES list")