Describe the bug
When QFJ receives a Logon message for an incoming session, it:
- calls
generateLogon(),
- (which) generates a Logon message,
- calls
sendRaw()
- (finally) calls
state.setLogonSent(true) on the Session object.
Here the return value of sendRaw() is not checked. and QFJ assumes a Logon message has been sent to the counterparty (even in cases where it has not). From this point on, the Application will be able to send messages to the counterparty.
if however, the call to MessageStore.persist() fails and the outgoing message cannot be persisted (due to an IOException for example), Session.send() is never invoked and message is not sent to the counterparty. But still QFJ calls state.setLogonSent(true). Any further outgoing messages to the counterparty will be rejected as they will be waiting for a Logon message
Expected behavior
in Session.generateLogon(), the return value of sendRaw() call should be checked, and state.setLogonSent(true) should be called only if sendRaw() has returned true
system information:
environment/version independent. But is still present as of the latest commit on 18.5.2026 and 3.0.2
Describe the bug
When QFJ receives a Logon message for an incoming session, it:
generateLogon(),sendRaw()state.setLogonSent(true)on the Session object.Here the return value of
sendRaw()is not checked. and QFJ assumes a Logon message has been sent to the counterparty (even in cases where it has not). From this point on, the Application will be able to send messages to the counterparty.if however, the call to
MessageStore.persist()fails and the outgoing message cannot be persisted (due to an IOException for example),Session.send()is never invoked and message is not sent to the counterparty. But still QFJ callsstate.setLogonSent(true). Any further outgoing messages to the counterparty will be rejected as they will be waiting for a Logon messageExpected behavior
in
Session.generateLogon(), the return value ofsendRaw()call should be checked, andstate.setLogonSent(true)should be called only ifsendRaw()has returned truesystem information:
environment/version independent. But is still present as of the latest commit on 18.5.2026 and 3.0.2