From cfa86b3e2e462458e76e6944b5f9cbaff6770cca Mon Sep 17 00:00:00 2001 From: Andrey Petrov Date: Fri, 12 Aug 2016 16:34:42 -0400 Subject: [PATCH] /motd: Fixed set message and actual motd coming out of order. Fixes #165 --- host.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/host.go b/host.go index 2ac1719..b75ecdb 100644 --- a/host.go +++ b/host.go @@ -104,7 +104,7 @@ func (h *Host) Connect(term *sshd.Terminal) { // Send MOTD if motd != "" { - go user.Send(message.NewAnnounceMsg(motd)) + user.Send(message.NewAnnounceMsg(motd)) } member, err := h.Join(user) @@ -445,7 +445,10 @@ func (h *Host) InitCommands(c *chat.Commands) { Handler: func(room *chat.Room, msg message.CommandMsg) error { args := msg.Args() user := msg.From() + + h.mu.Lock() motd := h.motd + h.mu.Unlock() if len(args) == 0 { room.Send(message.NewSystemMsg(motd, user)) @@ -455,16 +458,11 @@ func (h *Host) InitCommands(c *chat.Commands) { return errors.New("must be OP to modify the MOTD") } - if len(args) > 0 { - motd = strings.Join(args, " ") - } + motd = strings.Join(args, " ") + h.SetMotd(motd) + fromMsg := fmt.Sprintf("New message of the day set by %s:", msg.From().Name()) + room.Send(message.NewAnnounceMsg(fromMsg + message.Newline + "-> " + motd)) - h.motd = motd - body := fmt.Sprintf("New message of the day set by %s:", msg.From().Name()) - room.Send(message.NewAnnounceMsg(body)) - if motd != "" { - room.Send(message.NewAnnounceMsg(motd)) - } return nil }, })