diff --git a/internal/handlers/api.go b/internal/handlers/api.go index 0924d7a..3ad7068 100644 --- a/internal/handlers/api.go +++ b/internal/handlers/api.go @@ -3238,7 +3238,7 @@ func (hdlr *Handlers) handleWho( // 315 RPL_ENDOFWHO (empty result) hdlr.enqueueNumeric( ctx, clientID, irc.RplEndOfWho, nick, - []string{target}, + []string{channel}, "End of /WHO list", ) hdlr.broker.Notify(sessionID) diff --git a/internal/handlers/api_test.go b/internal/handlers/api_test.go index 728f8c9..7ed1aac 100644 --- a/internal/handlers/api_test.go +++ b/internal/handlers/api_test.go @@ -4039,6 +4039,31 @@ func assertWhoReplyUsername( ) } +func TestWhoUnknownChannelEndReplyAddsHash(t *testing.T) { + t.Parallel() + + tserver := newTestServer(t) + + token := tserver.createSession("whoasker") + + _, lastID := tserver.pollMessages(token, 0) + + msgs, _ := sendAndPoll(tserver, token, lastID, map[string]any{ + commandKey: irc.CmdWho, + toKey: "nosuch", + }) + + endOfWho := findNumericWithParams(msgs, "315") + if endOfWho == nil { + t.Fatalf("expected RPL_ENDOFWHO (315), got %v", msgs) + } + + params := getNumericParams(endOfWho) + if !slices.Equal(params, []string{"#nosuch"}) { + t.Fatalf("expected params [#nosuch], got %v", params) + } +} + func TestSessionUsernameDefault(t *testing.T) { t.Parallel()