You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/06/20 09:08:40 UTC

[plc4x] 02/03: fix(plc4go/spi): avoid unnecessary read on DefaultCodec shutdown

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit fe996814aebc9d585e35e23c93f9286ce1d9d215
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Jun 20 10:48:13 2023 +0200

    fix(plc4go/spi): avoid unnecessary read on DefaultCodec shutdown
---
 plc4go/spi/default/DefaultCodec.go         | 7 +++++--
 plc4go/spi/transports/TransportInstance.go | 3 ++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/plc4go/spi/default/DefaultCodec.go b/plc4go/spi/default/DefaultCodec.go
index 4c7b99bca2..209dff1cd8 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -327,8 +327,12 @@ mainLoop:
 		{
 			syncer := make(chan struct{})
 			go func() {
+				defer close(syncer)
+				if !m.running.Load() {
+					err = errors.New("not running")
+					return
+				}
 				message, err = m.Receive()
-				close(syncer)
 			}()
 			timeoutTimer := time.NewTimer(m.receiveTimeout)
 			select {
@@ -339,7 +343,6 @@ mainLoop:
 				workerLog.Error().Msgf("receive timeout after %s", m.receiveTimeout)
 				continue mainLoop
 			}
-
 		}
 		if err != nil {
 			workerLog.Error().Err(err).Msg("got an error reading from transport")
diff --git a/plc4go/spi/transports/TransportInstance.go b/plc4go/spi/transports/TransportInstance.go
index ee121c3a87..3c73356848 100644
--- a/plc4go/spi/transports/TransportInstance.go
+++ b/plc4go/spi/transports/TransportInstance.go
@@ -22,13 +22,14 @@ package transports
 import (
 	"context"
 	"fmt"
+	"io"
 )
 
 type TransportInstance interface {
 	fmt.Stringer
+	io.Closer
 	Connect() error
 	ConnectWithContext(ctx context.Context) error
-	Close() error
 
 	IsConnected() bool