Skip to content

Commit 41798d6

Browse files
authored
Merge pull request #714 from quickfixgo/revert-713-resend_request_active
Revert "Block messages when a Resend Request is active"
2 parents e9e2c05 + 91e6d76 commit 41798d6

File tree

5 files changed

+7
-52
lines changed

5 files changed

+7
-52
lines changed

in_session.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,8 @@ func (state inSession) handleResendRequest(session *session, msg *Message) (next
208208
}
209209

210210
if err := state.resendMessages(session, int(beginSeqNo), endSeqNo, *msg); err != nil {
211-
session.isResendRequestActive = false
212211
return handleStateError(session, err)
213212
}
214-
session.isResendRequestActive = false
215213

216214
if err := session.checkTargetTooLow(msg); err != nil {
217215
return state
@@ -293,7 +291,7 @@ func (state inSession) processReject(session *session, msg *Message, rej Message
293291
nextState = currentState
294292
default:
295293
var err error
296-
if nextState, err = session.doTargetTooHigh(TypedError, true); err != nil {
294+
if nextState, err = session.doTargetTooHigh(TypedError); err != nil {
297295
return handleStateError(session, err)
298296
}
299297
}

in_session_test.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -373,26 +373,6 @@ func (s *InSessionTestSuite) TestFIXMsgInResendRequestDoNotSendApp() {
373373
s.State(inSession{})
374374
}
375375

376-
func (s *InSessionTestSuite) TestIsResendRequestActive() {
377-
s.MockApp.On("FromAdmin").Return(nil)
378-
s.MockApp.On("ToApp").Return(nil)
379-
s.MockApp.On("ToAdmin")
380-
s.sendResendRequest(5, 10, false)
381-
s.True(s.isResendRequestActive)
382-
383-
nos := s.NewOrderSingle()
384-
err := s.session.send(nos)
385-
386-
s.Error(err)
387-
s.EqualError(err, "cannot send message while resend request is active")
388-
s.fixMsgIn(s.session, s.ResendRequest(5))
389-
s.False(s.isResendRequestActive)
390-
391-
err = s.session.send(nos)
392-
393-
s.NoError(err)
394-
}
395-
396376
func (s *InSessionTestSuite) TestFIXMsgInTargetTooLow() {
397377
s.IncrNextTargetMsgSeqNum()
398378

logon_state.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (s logonState) FixMsgIn(session *session, msg *Message) (nextState sessionS
4646

4747
case targetTooHigh:
4848
var tooHighErr error
49-
if nextState, tooHighErr = session.doTargetTooHigh(err, false); tooHighErr != nil {
49+
if nextState, tooHighErr = session.doTargetTooHigh(err); tooHighErr != nil {
5050
return shutdownWithReason(session, msg, false, tooHighErr.Error())
5151
}
5252

resend_state.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (s resendState) FixMsgIn(session *session, msg *Message) (nextState session
4848
}
4949

5050
if s.currentResendRangeEnd != 0 && s.currentResendRangeEnd < session.store.NextTargetMsgSeqNum() {
51-
nextResendState, err := session.sendResendRequest(session.store.NextTargetMsgSeqNum(), s.resendRangeEnd, false)
51+
nextResendState, err := session.sendResendRequest(session.store.NextTargetMsgSeqNum(), s.resendRangeEnd)
5252
if err != nil {
5353
return handleStateError(session, err)
5454
}
@@ -64,7 +64,7 @@ func (s resendState) FixMsgIn(session *session, msg *Message) (nextState session
6464
}
6565

6666
if bool(gapFillFlag) && s.currentResendRangeEnd != 0 && s.currentResendRangeEnd == session.store.NextTargetMsgSeqNum() {
67-
nextResendState, err := session.sendResendRequest(session.store.NextTargetMsgSeqNum(), s.resendRangeEnd, false)
67+
nextResendState, err := session.sendResendRequest(session.store.NextTargetMsgSeqNum(), s.resendRangeEnd)
6868
if err != nil {
6969
return handleStateError(session, err)
7070
}

session.go

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ type session struct {
5252
sentReset bool
5353
stopOnce sync.Once
5454

55-
isResendRequestActive bool
56-
5755
targetDefaultApplVerID string
5856

5957
admin chan interface{}
@@ -297,10 +295,6 @@ func (s *session) notifyMessageOut() {
297295

298296
// send will validate, persist, queue the message. If the session is logged on, send all messages in the queue.
299297
func (s *session) send(msg *Message) error {
300-
if err := s.isResendRequestBlocking(msg); err != nil {
301-
return err
302-
}
303-
304298
return s.sendInReplyTo(msg, nil)
305299
}
306300
func (s *session) sendInReplyTo(msg *Message, inReplyTo *Message) error {
@@ -322,20 +316,6 @@ func (s *session) sendInReplyTo(msg *Message, inReplyTo *Message) error {
322316
return nil
323317
}
324318

325-
func (s *session) isResendRequestBlocking(msg *Message) error {
326-
msgType, err := msg.Header.GetBytes(tagMsgType)
327-
if err != nil {
328-
return err
329-
}
330-
331-
if s.isResendRequestActive && !bytes.Equal(msgType, msgTypeResendRequest) {
332-
s.log.OnEvent("Message blocked: resend request in progress")
333-
return errors.New("cannot send message while resend request is active")
334-
}
335-
336-
return nil
337-
}
338-
339319
// dropAndReset will drop the send queue and reset the message store.
340320
func (s *session) dropAndReset() error {
341321
s.sendMutex.Lock()
@@ -463,12 +443,12 @@ func (s *session) sendBytes(msg []byte, blockUntilSent bool) bool {
463443
}
464444
}
465445

466-
func (s *session) doTargetTooHigh(reject targetTooHigh, isReject bool) (nextState resendState, err error) {
446+
func (s *session) doTargetTooHigh(reject targetTooHigh) (nextState resendState, err error) {
467447
s.log.OnEventf("MsgSeqNum too high, expecting %v but received %v", reject.ExpectedTarget, reject.ReceivedTarget)
468-
return s.sendResendRequest(reject.ExpectedTarget, reject.ReceivedTarget-1, isReject)
448+
return s.sendResendRequest(reject.ExpectedTarget, reject.ReceivedTarget-1)
469449
}
470450

471-
func (s *session) sendResendRequest(beginSeq, endSeq int, isReject bool) (nextState resendState, err error) {
451+
func (s *session) sendResendRequest(beginSeq, endSeq int) (nextState resendState, err error) {
472452
nextState.resendRangeEnd = endSeq
473453

474454
resend := NewMessage()
@@ -497,9 +477,6 @@ func (s *session) sendResendRequest(beginSeq, endSeq int, isReject bool) (nextSt
497477
return
498478
}
499479
s.log.OnEventf("Sent ResendRequest FROM: %v TO: %v", beginSeq, endSeqNo)
500-
if !isReject {
501-
s.isResendRequestActive = true
502-
}
503480

504481
return
505482
}

0 commit comments

Comments
 (0)