--- core/src/main/java/quickfix/mina/acceptor/AbstractSocketAcceptor.java (original) +++ core/src/main/java/quickfix/mina/acceptor/AbstractSocketAcceptor.java @@ -128,7 +128,7 @@ AcceptorSessionProvider sessionProvider = sessionProviders .get(socketDescriptor.getAddress()); if (sessionProvider == null) { - sessionProvider = new StaticAcceptorSessionProvider(socketDescriptor + sessionProvider = new DefaultAcceptorSessionProvider(socketDescriptor .getAcceptedSessions()); } @@ -334,6 +334,8 @@ sessionProviders.put(address, provider); } + + // Leaving this here as it used by a unit test. static class StaticAcceptorSessionProvider implements AcceptorSessionProvider { private final Map acceptorSessions; @@ -345,4 +347,31 @@ return acceptorSessions.get(sessionID); } } + + + private class DefaultAcceptorSessionProvider + implements AcceptorSessionProvider + { + private final Map acceptorSessions; + public DefaultAcceptorSessionProvider(Map acceptorSessions) + { + this.acceptorSessions = acceptorSessions; + } + public Session getSession(SessionID sessionID) + { + Session session = acceptorSessions.get(sessionID); + if(session == null) + session = acceptorSessions.get(reduceSessionID(sessionID)); + return session; + } + /** + * Remove the extra fields added to the session ID in QF-272. + */ + private SessionID reduceSessionID(SessionID sessionID) + { + // Acceptors don't use qualifiers. + return new SessionID(sessionID.getBeginString(), sessionID.getSenderCompID(), sessionID.getTargetCompID()); + } + } + } \ No newline at end of file