Skip to content

Commit f82779d

Browse files
authored
Merge pull request #130 from traggatt/session-logout-fix
Fix for dropped logout message issue
2 parents 06c312e + 7a0bd5b commit f82779d

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

quickfixj-core/src/main/java/quickfix/mina/SessionConnector.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,25 @@ public boolean isLoggedOn() {
195195
return true;
196196
}
197197

198+
/**
199+
* Check if we have at least one session and that at least one session is logged on.
200+
*
201+
* @return false if no sessions exist or all sessions are logged off, true otherwise
202+
*/
203+
//visible for testing only
204+
boolean anyLoggedOn() {
205+
// if no session, not logged on
206+
if (sessions.isEmpty())
207+
return false;
208+
for (Session session : sessions.values()) {
209+
// at least one session logged on
210+
if (session.isLoggedOn())
211+
return true;
212+
}
213+
// no sessions are logged on
214+
return false;
215+
}
216+
198217
private Set<quickfix.Session> getLoggedOnSessions() {
199218
Set<quickfix.Session> loggedOnSessions = new HashSet<>(sessions.size());
200219
for (Session session : sessions.values()) {
@@ -219,7 +238,7 @@ protected void logoutAllSessions(boolean forceDisconnect) {
219238
}
220239
}
221240

222-
if (isLoggedOn()) {
241+
if (anyLoggedOn()) {
223242
if (forceDisconnect) {
224243
for (Session session : sessions.values()) {
225244
try {

quickfixj-core/src/test/java/quickfix/mina/SessionConnectorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ public void testOneSessionLoggedOnOneSessionNotLoggedOne() throws Exception {
129129
assertNotNull(session2);
130130
sessions.put(session2.getSessionID(), session2);
131131
assertFalse(connector.isLoggedOn());
132+
assertTrue(connector.anyLoggedOn());
132133
}
133134

134135
/**

0 commit comments

Comments
 (0)