Skip to content
This repository has been archived by the owner on Jan 30, 2025. It is now read-only.

Commit

Permalink
Refactor session handling for error msg
Browse files Browse the repository at this point in the history
This makes it simpler to work with the mutex
  • Loading branch information
ankur22 committed Oct 5, 2023
1 parent 0dd486e commit 71cf2dc
Showing 1 changed file with 27 additions and 24 deletions.
51 changes: 27 additions & 24 deletions common/connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,31 +385,34 @@ func (c *Connection) recvLoop() {
"Connection:recvLoop:msg.ID:msg.Error: lost error message",
"msg:%v", msg,
)
c.sessionsMu.RLock()
for _, s := range c.sessions {
select {
case s.readCh <- &msg:
c.logger.Infof(
"Connection:recvLoop:msg.ID:msg.Error: sent to session",
"sid:%v tid:%v msg:%v", s.id, s.targetID, msg,
)
case code := <-c.closeCh:
c.logger.Debugf(
"Connection:recvLoop:msg.ID:msg.Error:<-c.closeCh",
"sid:%v tid:%v crashed:%t",
s.id, s.targetID, s.crashed,
)
_ = c.close(code)
case <-c.done:
c.logger.Debugf(
"Connection:recvLoop:msg.ID:msg.Error:<-c.done",
"sid:%v tid:%v crashed:%t",
s.id, s.targetID, s.crashed,
)
return
func() {
c.sessionsMu.RLock()
defer c.sessionsMu.RUnlock()

for _, s := range c.sessions {
select {
case s.readCh <- &msg:
c.logger.Infof(
"Connection:recvLoop:msg.ID:msg.Error: sent to session",
"sid:%v tid:%v msg:%v", s.id, s.targetID, msg,
)
case code := <-c.closeCh:
c.logger.Debugf(
"Connection:recvLoop:msg.ID:msg.Error:<-c.closeCh",
"sid:%v tid:%v crashed:%t",
s.id, s.targetID, s.crashed,
)
_ = c.close(code)
case <-c.done:
c.logger.Debugf(
"Connection:recvLoop:msg.ID:msg.Error:<-c.done",
"sid:%v tid:%v crashed:%t",
s.id, s.targetID, s.crashed,
)
return
}
}
}
c.sessionsMu.RUnlock()
}()
c.emit("", &msg)
c.logger.Infof(
"Connection:recvLoop:msg.ID:msg.Error: sent to connection",
Expand Down

0 comments on commit 71cf2dc

Please sign in to comment.