Remove race condition between read go-routine and stop

This commit is contained in:
Ethan Frey
2017-04-11 13:29:49 +02:00
parent a416c37ebd
commit 9d18cbe74e
2 changed files with 8 additions and 3 deletions

View File

@ -86,7 +86,6 @@ func (wsc *WSClient) dial() error {
func (wsc *WSClient) OnStop() {
wsc.BaseService.OnStop()
wsc.Conn.Close()
wsc.Conn = nil
// ResultsCh/ErrorsCh is closed in receiveEventsRoutine.
}
@ -112,6 +111,9 @@ func (wsc *WSClient) receiveEventsRoutine() {
wsc.ResultsCh <- *response.Result
}
}
// this must be modified in the same go-routine that reads from the
// connection to avoid race conditions
wsc.Conn = nil
// Cleanup
close(wsc.ResultsCh)