Fix goroutine leak when reading the client WebSocket

This commit is contained in:
Maximilian Paß
2021-12-11 21:30:39 +01:00
parent e77024b62c
commit c565ca217e

View File

@ -61,14 +61,20 @@ func newCodeOceanToRawReader(connection webSocketConnection) *codeOceanToRawRead
// CloseHandler. // CloseHandler.
func (cr *codeOceanToRawReader) readInputLoop(ctx context.Context) { func (cr *codeOceanToRawReader) readInputLoop(ctx context.Context) {
readMessage := make(chan bool) readMessage := make(chan bool)
for { readingContext, cancel := context.WithCancel(ctx)
defer cancel()
for ctx.Err() == nil {
var messageType int var messageType int
var reader io.Reader var reader io.Reader
var err error var err error
go func() { go func() {
messageType, reader, err = cr.connection.NextReader() messageType, reader, err = cr.connection.NextReader()
readMessage <- true select {
case <-readingContext.Done():
case readMessage <- true:
}
}() }()
select { select {
case <-ctx.Done(): case <-ctx.Done():