Skip to content

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.