]> Cypherpunks.ru repositories - goircd.git/blobdiff - daemon.go
Force lowercase nicknames
[goircd.git] / daemon.go
index 3afda4fb0a3d8b69897e8e160cf09e4c77af6ab4..b795a0c3410e87d5a9dbb61d0753ce5e9d59fa57 100644 (file)
--- 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")
@@ -308,6 +309,14 @@ func Processor(events chan ClientEvent, finished chan struct{}) {
                                        }
                                }
                        }
+                       for rn, r := range rooms {
+                               if *statedir == "" && len(r.members) == 0 {
+                                       log.Println(rn, "emptied room")
+                                       delete(rooms, rn)
+                                       close(roomSinks[r])
+                                       delete(roomSinks, r)
+                               }
+                       }
                case EventTerm:
                        for _, sink := range roomSinks {
                                sink <- ClientEvent{eventType: EventTerm}