Fixed message buffer timeout
authorAndrey Petrov <andrey.petrov@shazow.net>
Sun, 24 Jul 2016 20:16:12 +0000 (16:16 -0400)
committerAndrey Petrov <andrey.petrov@shazow.net>
Sun, 24 Jul 2016 20:17:02 +0000 (16:17 -0400)
chat/message/user.go
cmd/ssh-chat/cmd.go
host.go
sshd/terminal.go

index a4f1adc498b0c518a74e880bf961a072ddf500b1..d4d1fcb7d47fb63cdd2fe93ad1bf9001842e8f0f 100644 (file)
@@ -11,6 +11,7 @@ import (
 )
 
 const messageBuffer = 5
+const messageTimeout = 5 * time.Second
 const reHighlight = `\b(%s)\b`
 
 var ErrUserClosed = errors.New("user closed")
@@ -152,8 +153,8 @@ func (u *User) Send(m Message) error {
        case u.msg <- m:
        case <-u.done:
                return ErrUserClosed
-       default:
-               logger.Printf("Msg buffer full, closing: %s", u.Name())
+       case <-time.After(messageTimeout):
+               logger.Printf("Message buffer full, closing: %s", u.Name())
                u.Close()
                return ErrUserClosed
        }
index 42891e910a2bbcd82602cd71c4f19dc6be0353f6..055f28143cd003b132c2c6c85c3b998897ad4415 100644 (file)
@@ -85,6 +85,7 @@ func main() {
                // Enable logging from submodules
                chat.SetLogger(os.Stderr)
                sshd.SetLogger(os.Stderr)
+               message.SetLogger(os.Stderr)
        }
 
        privateKeyPath := options.Identity
diff --git a/host.go b/host.go
index dfe096dba1c63e9fd0b7c0afa4c33f8c56868480..50178581972a8afaeaf476f780115577f8dc6ee2 100644 (file)
--- a/host.go
+++ b/host.go
@@ -129,6 +129,8 @@ func (h *Host) Connect(term *sshd.Terminal) {
        }
        ratelimit := rateio.NewSimpleLimiter(3, time.Second*3)
 
+       logger.Debugf("Joined: %s", user.Name())
+
        for {
                line, err := term.ReadLine()
                if err == io.EOF {
@@ -175,6 +177,7 @@ func (h *Host) Connect(term *sshd.Terminal) {
                logger.Errorf("Failed to leave: %s", err)
                return
        }
+       logger.Debugf("Leaving: %s", user.Name())
 }
 
 // Serve our chat room onto the listener
index 6a92bf95e1a79dcd02a7a491ff503b2d6c81883d..e71749becbbd09b68481e12de4df5f1fb5c52fc4 100644 (file)
@@ -78,6 +78,7 @@ func NewTerminal(conn *ssh.ServerConn, ch ssh.NewChannel) (*Terminal, error) {
 
        go func() {
                for range time.Tick(keepaliveInterval) {
+                       // TODO: Could break out earlier with a select if we want, rather than waiting for an error.
                        _, err := channel.SendRequest(keepaliveRequest, true, nil)
                        if err != nil {
                                // Connection is gone