From 7bf65950c49c2d79a5536b67c5a49bb464193ae1 Mon Sep 17 00:00:00 2001 From: Martin Heck Date: Wed, 6 Apr 2022 12:23:53 +0200 Subject: [PATCH] Add mutex to FIFOResponseHandler Fix possible data race in FIFOResponseHandler.ServeHTTP by adding a mutex. --- src/mock/server.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mock/server.go b/src/mock/server.go index 98442d2..fcc6a4f 100644 --- a/src/mock/server.go +++ b/src/mock/server.go @@ -7,6 +7,7 @@ import ( "net/http/httptest" "strconv" "strings" + "sync" "github.com/gorilla/mux" ) @@ -26,12 +27,15 @@ type MockBackendOption func(*mux.Router) // // Once all available `Responses` have been used, this handler will panic()! type FIFOReponseHandler struct { + lock sync.Mutex Responses [][]byte CurrentIndex int } // ServeHTTP implementation of `http.Handler` func (srh *FIFOReponseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + srh.lock.Lock() + defer srh.lock.Unlock() if srh.CurrentIndex > len(srh.Responses) { panic(fmt.Sprintf( "go-github-mock: no more mocks available for %s",