@@ -131,6 +131,7 @@ func (p *Protocol) sendLoop() {
131131 newState , err = p .getNewState (msg )
132132 if err != nil {
133133 p .SendError (fmt .Errorf ("%s: error sending message: %s" , p .config .Name , err ))
134+ return
134135 }
135136 setNewState = true
136137 // If there are no queued messages, set the new state now
@@ -159,13 +160,15 @@ func (p *Protocol) sendLoop() {
159160 data , err = utils .CborEncode (msg )
160161 if err != nil {
161162 p .SendError (err )
163+ return
162164 }
163165 }
164166 payloadBuf .Write (data )
165167 if ! setNewState {
166168 newState , err = p .getNewState (msg )
167169 if err != nil {
168170 p .SendError (fmt .Errorf ("%s: error sending message: %s" , p .config .Name , err ))
171+ return
169172 }
170173 setNewState = true
171174 }
@@ -247,21 +250,25 @@ func (p *Protocol) recvLoop() {
247250 p .recvReadyChan <- true
248251 continue
249252 }
250- p .config .ErrorChan <- fmt .Errorf ("%s: decode error: %s" , p .config .Name , err )
253+ p .SendError (fmt .Errorf ("%s: decode error: %s" , p .config .Name , err ))
254+ return
251255 }
252256 // Create Message object from CBOR
253257 msgType := uint (tmpMsg [0 ].(uint64 ))
254258 msgData := p .recvBuffer .Bytes ()[:numBytesRead ]
255259 msg , err := p .config .MessageFromCborFunc (msgType , msgData )
256260 if err != nil {
257- p .config .ErrorChan <- err
261+ p .SendError (err )
262+ return
258263 }
259264 if msg == nil {
260- p .config .ErrorChan <- fmt .Errorf ("%s: received unknown message type: %#v" , p .config .Name , tmpMsg )
265+ p .SendError (fmt .Errorf ("%s: received unknown message type: %#v" , p .config .Name , tmpMsg ))
266+ return
261267 }
262268 // Handle message
263269 if err := p .handleMessage (msg , isResponse ); err != nil {
264- p .config .ErrorChan <- err
270+ p .SendError (err )
271+ return
265272 }
266273 if numBytesRead < p .recvBuffer .Len () {
267274 // There is another message in the same muxer segment, so we reset the buffer with just
0 commit comments