diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 544078d6a3..36b23b10fa 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -43,7 +43,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Configure pagefile
- uses: al-cheb/configure-pagefile-action@v1.3
+ uses: al-cheb/configure-pagefile-action@v1.4
with:
minimum-size: 8GB
maximum-size: 16GB
diff --git a/pom.xml b/pom.xml
index 8d0ff6336f..ad24fdd29f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,10 +68,10 @@
UTF-8
UTF-8
1.8
- 2.0.10
+ 2.0.12
4.11.0
2.2
- 5.10.1
+ 5.10.2
8
8
@@ -81,7 +81,7 @@
3.3.1
3.12.1
3.3.0
- 3.2.3
+ 3.2.5
3.21.2
3.3.0
3.6.3
@@ -94,7 +94,7 @@
3.5.0
3.4.2
3.0.0
- 3.10.2
+ 3.11.0
3.3.0
1.2
8059
@@ -467,7 +467,7 @@
maven-plugin-plugin
- 3.10.2
+ 3.11.0
maven-install-plugin
diff --git a/quickfixj-codegenerator/pom.xml b/quickfixj-codegenerator/pom.xml
index 0bb96d8ca8..5cbee80d44 100644
--- a/quickfixj-codegenerator/pom.xml
+++ b/quickfixj-codegenerator/pom.xml
@@ -78,7 +78,10 @@
maven-plugin-plugin
- 3.10.2
+ 3.11.0
+
+ quickfixj-codegenerator
+
diff --git a/quickfixj-core/src/test/java/quickfix/JdbcLogTest.java b/quickfixj-core/src/test/java/quickfix/JdbcLogTest.java
index 189f9e1449..7436d7ca74 100644
--- a/quickfixj-core/src/test/java/quickfix/JdbcLogTest.java
+++ b/quickfixj-core/src/test/java/quickfix/JdbcLogTest.java
@@ -133,7 +133,6 @@ private void setUpJdbcLog(boolean filterHeartbeats, DataSource dataSource) throw
if (filterHeartbeats) {
settings.setBool(JdbcSetting.SETTING_JDBC_LOG_HEARTBEATS, false);
}
- settings.setString(sessionID, JdbcSetting.SETTING_JDBC_CONNECTION_TEST_QUERY, "SELECT COUNT(1) FROM INFORMATION_SCHEMA.SYSTEM_USERS WHERE 1 = 0;");
JdbcTestSupport.setHypersonicSettings(settings);
initializeTableDefinitions(connection);
logFactory = new JdbcLogFactory(settings);
diff --git a/quickfixj-core/src/test/java/quickfix/JdbcTestSupport.java b/quickfixj-core/src/test/java/quickfix/JdbcTestSupport.java
index a2f573f472..c29940bbb4 100644
--- a/quickfixj-core/src/test/java/quickfix/JdbcTestSupport.java
+++ b/quickfixj-core/src/test/java/quickfix/JdbcTestSupport.java
@@ -43,6 +43,8 @@ public static void setHypersonicSettings(SessionSettings settings) {
settings.setString(JdbcSetting.SETTING_JDBC_CONNECTION_URL, HSQL_CONNECTION_URL);
settings.setString(JdbcSetting.SETTING_JDBC_USER, HSQL_USER);
settings.setString(JdbcSetting.SETTING_JDBC_PASSWORD, "");
+ // HSQL doesn't support JDBC4 which means that test query has to be supplied to HikariCP
+ settings.setString(JdbcSetting.SETTING_JDBC_CONNECTION_TEST_QUERY, "SELECT COUNT(1) FROM INFORMATION_SCHEMA.SYSTEM_USERS WHERE 1 = 0;");
}
public static Connection getConnection() throws ClassNotFoundException, SQLException {
diff --git a/quickfixj-core/src/test/java/quickfix/mina/ssl/SSLCertificateTest.java b/quickfixj-core/src/test/java/quickfix/mina/ssl/SSLCertificateTest.java
index 6d31b9293f..3a9d8a8d58 100644
--- a/quickfixj-core/src/test/java/quickfix/mina/ssl/SSLCertificateTest.java
+++ b/quickfixj-core/src/test/java/quickfix/mina/ssl/SSLCertificateTest.java
@@ -23,19 +23,21 @@
import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.ssl.SslFilter;
-import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import quickfix.Acceptor;
import quickfix.ApplicationAdapter;
import quickfix.ConfigError;
import quickfix.DefaultMessageFactory;
import quickfix.FixVersions;
+import quickfix.Initiator;
import quickfix.MemoryStoreFactory;
import quickfix.MessageFactory;
import quickfix.MessageStoreFactory;
import quickfix.RuntimeError;
import quickfix.Session;
+import quickfix.SessionFactory;
import quickfix.SessionID;
import quickfix.SessionSettings;
import quickfix.ThreadedSocketAcceptor;
@@ -552,6 +554,51 @@ public void shouldFailWhenUsingBadServerCertificate() throws Exception {
}
}
+ @Test
+ public void shouldConnectDifferentTypesOfSessions() throws Exception {
+ int sslPort = AvailablePortFinder.getNextAvailable();
+ int nonSslPort = AvailablePortFinder.getNextAvailable();
+ TestAcceptor acceptor = new TestAcceptor(createMixedSessionAcceptorSettings(sslPort, nonSslPort, "single-session/server.keystore"));
+
+ try {
+ acceptor.start();
+
+ TestInitiator sslInitiator = new TestInitiator(
+ createInitiatorSettings("single-session/client.keystore", "single-session/client.truststore",
+ CIPHER_SUITES_TLS, "TLSv1.2", "ZULU_SSL", "ALFA_SSL", Integer.toString(sslPort), "JKS", "JKS"));
+
+ TestInitiator nonSslInitiator = new TestInitiator(createInitiatorSettings("ZULU_NON_SSL", "ALFA_NON_SSL", nonSslPort));
+
+ try {
+ sslInitiator.start();
+ nonSslInitiator.start();
+
+ sslInitiator.assertNoSslExceptionThrown();
+ sslInitiator.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_SSL", "ALFA_SSL"));
+ sslInitiator.assertAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_SSL", "ALFA_SSL"),
+ new BigInteger("1448538842"));
+
+ acceptor.assertNoSslExceptionThrown();
+ acceptor.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_SSL", "ZULU_SSL"));
+ acceptor.assertNotAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_SSL", "ZULU_SSL"));
+
+ nonSslInitiator.assertNoSslExceptionThrown();
+ nonSslInitiator.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_NON_SSL", "ALFA_NON_SSL"));
+ nonSslInitiator.assertNotAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ZULU_NON_SSL", "ALFA_NON_SSL"));
+
+ acceptor.assertNoSslExceptionThrown();
+ acceptor.assertLoggedOn(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_NON_SSL", "ZULU_NON_SSL"));
+ acceptor.assertNotAuthenticated(new SessionID(FixVersions.BEGINSTRING_FIX44, "ALFA_NON_SSL", "ZULU_NON_SSL"));
+
+ } finally {
+ sslInitiator.stop();
+ nonSslInitiator.stop();
+ }
+ } finally {
+ acceptor.stop();
+ }
+ }
+
static abstract class TestConnector {
private static final Logger LOGGER = LoggerFactory.getLogger(TestConnector.class);
private static final int TIMEOUT_SECONDS = 5;
@@ -744,24 +791,53 @@ public SessionConnector createConnector(SessionSettings sessionSettings) throws
return new ThreadedSocketInitiator(new ApplicationAdapter(),
messageStoreFactory, sessionSettings, messageFactory);
}
+ }
+ /**
+ * Creates acceptor settings that contains two sessions. One with SSL support, one without.
+ */
+ private SessionSettings createMixedSessionAcceptorSettings(int sslPort, int nonSslPort, String keyStoreName) {
+ HashMap