Skip to content

Commit e5a1ce7

Browse files
authored
Merge pull request #165 from bhaan/session-msg-handling
Session event loop follow up
2 parents b0412bc + 737654f commit e5a1ce7

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

registry.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ func SendToTarget(m Messagable, sessionID SessionID) error {
3939
session, err := lookupSession(sessionID)
4040
if err != nil {
4141
return err
42+
} else if session.toSend == nil {
43+
return fmt.Errorf("Not logged on")
4244
}
4345

4446
request := sendRequest{msg, make(chan error)}

session.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func (s *session) resend(msg Message) {
187187
}
188188

189189
//send should NOT be called outside of the run loop
190-
func (s *session) send(msg Message) error {
190+
func (s *session) send(msg Message) (err error) {
191191
s.fillDefaultHeader(msg)
192192

193193
seqNum := s.store.NextSenderMsgSeqNum()
@@ -199,14 +199,18 @@ func (s *session) send(msg Message) error {
199199
} else {
200200
s.application.ToApp(msg, s.sessionID)
201201
}
202-
if msgBytes, err := msg.Build(); err != nil {
203-
return err
204-
} else {
205-
s.store.SaveMessage(seqNum, msgBytes)
202+
203+
var msgBytes []byte
204+
if msgBytes, err = msg.Build(); err != nil {
205+
return
206+
}
207+
208+
if err = s.store.SaveMessage(seqNum, msgBytes); err == nil {
206209
s.sendBytes(msgBytes)
207-
s.store.IncrNextSenderMsgSeqNum()
210+
err = s.store.IncrNextSenderMsgSeqNum()
208211
}
209-
return nil
212+
213+
return
210214
}
211215

212216
func (s *session) sendBytes(msg []byte) {
@@ -507,6 +511,7 @@ func (s *session) run(msgIn chan fixIn, msgOut chan []byte, quit chan bool) {
507511
defer func() {
508512
close(s.messageOut)
509513
close(s.toSend)
514+
s.toSend = nil
510515
s.onDisconnect()
511516
}()
512517

0 commit comments

Comments
 (0)