X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=room.go;h=276397fd44f6e823671f94824225289dfafc48ec;hb=b640107b1fd5f1013d59e26ff0102aeb0b3f5f99;hp=3da5a3de2cbafc592ba3faf9f9d141aa593ed232;hpb=e657ffd2ab2cd5fae8c1d19e39b2268fa758153e;p=goircd.git diff --git a/room.go b/room.go index 3da5a3d..276397f 100644 --- 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" }