]> Cypherpunks.ru repositories - goircd.git/blobdiff - room.go
ISON command support
[goircd.git] / room.go
diff --git a/room.go b/room.go
index 3da5a3de2cbafc592ba3faf9f9d141aa593ed232..276397fd44f6e823671f94824225289dfafc48ec 100644 (file)
--- a/room.go
+++ b/room.go
@@ -53,9 +53,11 @@ func (room Room) String() string {
 
 func NewRoom(name string) *Room {
        topic := ""
+       key := ""
        return &Room{
                name:    &name,
                topic:   &topic,
+               key:     &key,
                members: make(map[*Client]struct{}),
        }
 }
@@ -79,11 +81,7 @@ func (room *Room) Broadcast(msg string, clientToIgnore ...*Client) {
 }
 
 func (room *Room) StateSave() {
-       var key string
-       if room.key != nil {
-               key = *room.key
-       }
-       stateSink <- StateEvent{*room.name, *room.topic, key}
+       stateSink <- StateEvent{*room.name, *room.topic, *room.key}
 }
 
 func (room *Room) Processor(events <-chan ClientEvent) {
@@ -144,7 +142,7 @@ func (room *Room) Processor(events <-chan ClientEvent) {
                                        "352",
                                        *room.name,
                                        *m.username,
-                                       m.conn.RemoteAddr().String(),
+                                       m.Host(),
                                        *hostname,
                                        *m.nickname,
                                        "H",
@@ -155,7 +153,7 @@ func (room *Room) Processor(events <-chan ClientEvent) {
                case EventMode:
                        if event.text == "" {
                                mode := "+"
-                               if room.key != nil {
+                               if *room.key != "" {
                                        mode = mode + "k"
                                }
                                client.Msg(fmt.Sprintf("324 %s %s %s", *client.nickname, *room.name, mode))
@@ -186,7 +184,8 @@ func (room *Room) Processor(events <-chan ClientEvent) {
                                msg = fmt.Sprintf(":%s MODE %s +k %s", client, *room.name, *room.key)
                                msgLog = "set channel key to " + *room.key
                        } else {
-                               room.key = nil
+                               key := ""
+                               room.key = &key
                                msg = fmt.Sprintf(":%s MODE %s -k", client, *room.name)
                                msgLog = "removed channel key"
                        }