quickfixgo / quickfix

The Go FIX Protocol Library :rocket:

Home Page:https://www.quickfixgo.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

deadlock when disconnecting dynamic session

shipa988 opened this issue · comments

this kind of writing in channel makes deadlock possibility!

s.stateTimer = internal.NewEventTimer(func() { s.sessionEvent <- internal.NeedHeartbeat })

Possible deadlock occurs in dynamic session closing because line

case evt := <-s.sessionEvent:

is the only reader from channel s.sessionEvent, and after ending of loop

for !s.Stopped() {
no one can read from channel s.sessionEvent

PR #523

Thanks!