From e725dc248c93c2ac538980bf9d5175cec4c42fa1 Mon Sep 17 00:00:00 2001 From: Kane York Date: Fri, 15 Sep 2017 15:55:42 -0700 Subject: [PATCH 1/2] at least pretend to make Statistics thread-safe reduce websocket read buffers --- socketserver/server/handlecore.go | 2 +- socketserver/server/stats.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/socketserver/server/handlecore.go b/socketserver/server/handlecore.go index 9cac001c..905dde04 100644 --- a/socketserver/server/handlecore.go +++ b/socketserver/server/handlecore.go @@ -186,7 +186,7 @@ func HTTPSayOK(w http.ResponseWriter, _ *http.Request) { // SocketUpgrader is the websocket.Upgrader currently in use. var SocketUpgrader = websocket.Upgrader{ - ReadBufferSize: 1024, + ReadBufferSize: 160, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return r.Header.Get("Origin") == "" || OriginRegexp.MatchString(r.Header.Get("Origin")) diff --git a/socketserver/server/stats.go b/socketserver/server/stats.go index b4274997..8455fa8f 100644 --- a/socketserver/server/stats.go +++ b/socketserver/server/stats.go @@ -12,6 +12,8 @@ import ( ) type StatsData struct { + updateMu sync.Mutex + StatsDataVersion int StartTime time.Time @@ -114,6 +116,9 @@ func SetBuildStamp(buildTime, buildHash string) { } func updateStatsIfNeeded() { + Statistics.updateMu.Lock() + defer Statistics.updateMu.Unlock() + if time.Now().Add(-2 * time.Second).After(Statistics.CachedStatsLastUpdate) { updatePeriodicStats() } From ad1296e0edf04ea8617404a7fd06b75cd0a2b278 Mon Sep 17 00:00:00 2001 From: Kane York Date: Fri, 15 Sep 2017 16:02:44 -0700 Subject: [PATCH 2/2] fix errors without a message ID --- socketserver/server/commands.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/socketserver/server/commands.go b/socketserver/server/commands.go index 3c5e55f3..ff8a1582 100644 --- a/socketserver/server/commands.go +++ b/socketserver/server/commands.go @@ -462,12 +462,12 @@ func C2SHandleBunchedCommand(conn *websocket.Conn, client *ClientInfo, msg Clien go func() { result := <-resultCh var reply ClientMessage + reply.MessageID = msg.MessageID if result.Err != nil { reply.Command = ErrorCommand reply.Arguments = result.Err.Error() } else { reply.Command = SuccessCommand - reply.MessageID = msg.MessageID reply.origArguments = result.Val.(string) reply.parseOrigArguments() }