From 405ad22372003397b86ea9c8285451a523ab8f22 Mon Sep 17 00:00:00 2001 From: Kane York Date: Wed, 16 Dec 2015 11:58:48 -0800 Subject: [PATCH] Fix a data race --- socketserver/server/commands.go | 3 +-- socketserver/server/handlecore.go | 1 + socketserver/server/stats.go | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/socketserver/server/commands.go b/socketserver/server/commands.go index 72fca25a..fe219ccf 100644 --- a/socketserver/server/commands.go +++ b/socketserver/server/commands.go @@ -50,8 +50,7 @@ func DispatchC2SCommand(conn *websocket.Conn, client *ClientInfo, msg ClientMess handler = C2SHandleRemoteCommand } - Statistics.CommandsIssuedTotal++ - Statistics.CommandsIssuedMap[msg.Command]++ + CommandCounter <- msg.Command response, err := callHandler(handler, conn, client, msg) diff --git a/socketserver/server/handlecore.go b/socketserver/server/handlecore.go index 9fbb1af7..8a6ea4b6 100644 --- a/socketserver/server/handlecore.go +++ b/socketserver/server/handlecore.go @@ -104,6 +104,7 @@ func SetupServerAndHandle(config *ConfigFile, serveMux *http.ServeMux) { go bunchCacheJanitor() go pubsubJanitor() go aggregateDataSender() + go commandCounter() go ircConnection() go shutdownHandler() diff --git a/socketserver/server/stats.go b/socketserver/server/stats.go index a64a315b..eecfceab 100644 --- a/socketserver/server/stats.go +++ b/socketserver/server/stats.go @@ -59,6 +59,15 @@ type StatsData struct { // I don't really care. var Statistics = newStatsData() +var CommandCounter = make(chan Command, 10) + +func commandCounter() { + for cmd := range CommandCounter { + Statistics.CommandsIssuedTotal++ + Statistics.CommandsIssuedMap[cmd]++ + } +} + const StatsDataVersion = 5 const pageSize = 4096