diff --git a/lc-lib/receiver/pool.go b/lc-lib/receiver/pool.go index 2c52f637..27fa742f 100644 --- a/lc-lib/receiver/pool.go +++ b/lc-lib/receiver/pool.go @@ -137,7 +137,9 @@ ReceiverLoop: expectedAck := r.connectionStatus[connection].progress[0] expectedEvent := expectedAck.event receiver := expectedEvent.Context().Value(transports.ContextReceiver).(transports.Receiver) - receiver.Acknowledge(expectedEvent.Context(), expectedEvent.Nonce(), expectedAck.sequence) + if err := receiver.Acknowledge(expectedEvent.Context(), expectedEvent.Nonce(), expectedAck.sequence); err != nil { + r.failConnection(expectedEvent.Context(), receiver, connection, err) + } r.scheduler.Set(connection, time.Second*5) r.connectionLock.Unlock() } diff --git a/lc-lib/transports/tcp/connection.go b/lc-lib/transports/tcp/connection.go index 6a16824d..0f04e70d 100644 --- a/lc-lib/transports/tcp/connection.go +++ b/lc-lib/transports/tcp/connection.go @@ -146,6 +146,10 @@ func (t *connection) senderRoutine() { }() t.senderErr = t.sender() + if t.senderErr != nil { + // Sender issue, close connections + t.shutdownFunc() + } } // sender handles socket writes