From e9801e6ca3c1d3dec1274451ff3ac3f8480cc7de Mon Sep 17 00:00:00 2001 From: Kane York Date: Tue, 27 Oct 2015 18:47:27 -0700 Subject: [PATCH] FindFirstNewMessage can return -1 --- socketserver/internal/server/backlog.go | 41 +++++++++++++------------ 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/socketserver/internal/server/backlog.go b/socketserver/internal/server/backlog.go index 66f09e93..c08565fb 100644 --- a/socketserver/internal/server/backlog.go +++ b/socketserver/internal/server/backlog.go @@ -124,7 +124,6 @@ func DumpCache() { PersistentLSMLock.Lock() PersistentLastMessages = make(map[Command]map[string]LastSavedMessage) - // TODO delete file? PersistentLSMLock.Unlock() CacheListsLock.Lock() @@ -177,34 +176,38 @@ func SendTimedBacklogMessages(client *ClientInfo, disconnectTime time.Time) { globIdx := FindFirstNewMessage(tgmarray(CachedGlobalMessages), disconnectTime) - for i := globIdx; i < len(CachedGlobalMessages); i++ { - item := CachedGlobalMessages[i] - msg := ClientMessage{MessageID: -1, Command: item.Command, origArguments: item.Data} - msg.parseOrigArguments() - client.MessageChannel <- msg + if globIdx != -1 { + for i := globIdx; i < len(CachedGlobalMessages); i++ { + item := CachedGlobalMessages[i] + msg := ClientMessage{MessageID: -1, Command: item.Command, origArguments: item.Data} + msg.parseOrigArguments() + client.MessageChannel <- msg + } } chanIdx := FindFirstNewMessage(tmmarray(CachedChannelMessages), disconnectTime) - for i := chanIdx; i < len(CachedChannelMessages); i++ { - item := CachedChannelMessages[i] - var send bool - for _, channel := range item.Channels { - for _, matchChannel := range client.CurrentChannels { - if channel == matchChannel { - send = true + if chanIdx != -1 { + for i := chanIdx; i < len(CachedChannelMessages); i++ { + item := CachedChannelMessages[i] + var send bool + for _, channel := range item.Channels { + for _, matchChannel := range client.CurrentChannels { + if channel == matchChannel { + send = true + break + } + } + if send { break } } if send { - break + msg := ClientMessage{MessageID: -1, Command: item.Command, origArguments: item.Data} + msg.parseOrigArguments() + client.MessageChannel <- msg } } - if send { - msg := ClientMessage{MessageID: -1, Command: item.Command, origArguments: item.Data} - msg.parseOrigArguments() - client.MessageChannel <- msg - } } CacheListsLock.RUnlock()