aboutsummaryrefslogtreecommitdiff
path: root/hotline
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2022-05-26 16:53:06 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2022-05-26 16:53:06 -0700
commitc7e932c079c1881aed346d4f6f734c3f401bd637 (patch)
treec1762756978be12d5076981b07946985119f63a6 /hotline
parent8f4a41c94206729a13c8d775664cb7310a1a0a1f (diff)
Fix inconsistent sorting of user list
Diffstat (limited to 'hotline')
-rw-r--r--hotline/server.go5
-rw-r--r--hotline/transaction_handlers_test.go10
2 files changed, 12 insertions, 3 deletions
diff --git a/hotline/server.go b/hotline/server.go
index 30121a6..4e2bde2 100644
--- a/hotline/server.go
+++ b/hotline/server.go
@@ -169,7 +169,7 @@ func (s *Server) Serve(ctx context.Context, cancelRoot context.CancelFunc, ln ne
}
const (
- agreementFile = "Agreement.txt"
+ agreementFile = "Agreement.txt"
)
// NewServer constructs a new Server from a config dir
@@ -377,7 +377,7 @@ func (s *Server) connectedUsers() []Field {
defer s.mux.Unlock()
var connectedUsers []Field
- for _, c := range s.Clients {
+ for _, c := range sortedClients(s.Clients) {
user := User{
ID: *c.ID,
Icon: *c.Icon,
@@ -993,7 +993,6 @@ func transferFile(conn net.Conn, dst string) error {
}
}
-
// sortedClients is a utility function that takes a map of *ClientConn and returns a sorted slice of the values.
// The purpose of this is to ensure that the ordering of client connections is deterministic so that test assertions work.
func sortedClients(unsortedClients map[uint16]*ClientConn) (clients []*ClientConn) {
diff --git a/hotline/transaction_handlers_test.go b/hotline/transaction_handlers_test.go
index 21643bf..56968a1 100644
--- a/hotline/transaction_handlers_test.go
+++ b/hotline/transaction_handlers_test.go
@@ -228,6 +228,12 @@ func TestHandleGetUserNameList(t *testing.T) {
Flags: &[]byte{0, 3},
UserName: []byte{0, 4},
},
+ uint16(2): {
+ ID: &[]byte{0, 2},
+ Icon: &[]byte{0, 2},
+ Flags: &[]byte{0, 3},
+ UserName: []byte{0, 4},
+ },
},
},
},
@@ -249,6 +255,10 @@ func TestHandleGetUserNameList(t *testing.T) {
fieldUsernameWithInfo,
[]byte{00, 01, 00, 02, 00, 03, 00, 02, 00, 04},
),
+ NewField(
+ fieldUsernameWithInfo,
+ []byte{00, 02, 00, 02, 00, 03, 00, 02, 00, 04},
+ ),
},
},
},