From be31d33dc4a81abbf4c7f7fe976ebca3ce894e55 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Tue, 15 Dec 2020 04:11:30 -0500 Subject: [PATCH] shorten the cached batch ID for multilines --- irc/message_cache.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/irc/message_cache.go b/irc/message_cache.go index 64b08431..55efde81 100644 --- a/irc/message_cache.go +++ b/irc/message_cache.go @@ -154,8 +154,11 @@ func (m *MessageCache) InitializeSplitMessage(server *Server, nickmask, accountN } // we need to send the same batch ID to all recipient sessions; - // use a uuidv4-alike to ensure that it won't collide - batch := composeMultilineBatch(utils.GenerateSecretToken(), nickmask, accountName, tags, command, target, message) + // ensure it doesn't collide. a half-sized token has 64 bits of entropy, + // so a collision isn't expected until there are on the order of 2**32 + // concurrent batches being relayed: + batchID := utils.GenerateSecretToken()[:utils.SecretTokenLength/2] + batch := composeMultilineBatch(batchID, nickmask, accountName, tags, command, target, message) m.fullTagsMultiline = make([][]byte, len(batch)) for i, msg := range batch { if forceTrailing {