diff options
| author | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-05-26 18:19:24 -0700 |
|---|---|---|
| committer | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-05-26 18:20:05 -0700 |
| commit | bd1ce11306527514218acbe0d12f7bcc23114239 (patch) | |
| tree | 315487896b2e350d2af183d0662b3ccd7487bbdf /hotline/client_conn.go | |
| parent | 301990cbc43d93dddb3ba308c490a55ac03fa915 (diff) | |
Fix multiple issues with v1.8+ login sequence
Squashed bugs:
* A v1.8+ user that has connected but not agreed will show up in chat and the userlist as a blank user name
* Race condition where a v1.8+ user in connected but not agreed state duplicated the ID of the next user to connect
* A v1.8+ user that is connected but not agreed will receive the user list
Diffstat (limited to 'hotline/client_conn.go')
| -rw-r--r-- | hotline/client_conn.go | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/hotline/client_conn.go b/hotline/client_conn.go index 367b70f..8e9a614 100644 --- a/hotline/client_conn.go +++ b/hotline/client_conn.go @@ -37,6 +37,7 @@ type ClientConn struct { Idle bool AutoReply *[]byte Transfers map[int][]*FileTransfer + Agreed bool } func (cc *ClientConn) sendAll(t int, fields ...Field) { @@ -168,7 +169,7 @@ func (cc ClientConn) Disconnect() { // NotifyOthers sends transaction t to other clients connected to the server func (cc ClientConn) NotifyOthers(t Transaction) { for _, c := range sortedClients(cc.Server.Clients) { - if c.ID != cc.ID { + if c.ID != cc.ID && c.Agreed { t.clientID = c.ID cc.Server.outbox <- t } |