From e3aa1fa4bc2df6af4222024f183e65b01a520fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Mon, 28 Aug 2017 00:18:10 +0200 Subject: [PATCH] TlsSniServer: Keep socket open after processing a request Integration tests can now use PEBBLE_VA_NOSLEEP. Fixes letsencrypt/pebble#36. --- acme4j-it/pom.xml | 3 +-- .../acme4j/it/server/TlsSniServer.java | 18 +++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/acme4j-it/pom.xml b/acme4j-it/pom.xml index 94b99180..fdd11a05 100644 --- a/acme4j-it/pom.xml +++ b/acme4j-it/pom.xml @@ -133,11 +133,10 @@ bammbamm --> - 1 - --> diff --git a/acme4j-it/src/main/java/org/shredzone/acme4j/it/server/TlsSniServer.java b/acme4j-it/src/main/java/org/shredzone/acme4j/it/server/TlsSniServer.java index bd5fae35..67d8f5b3 100644 --- a/acme4j-it/src/main/java/org/shredzone/acme4j/it/server/TlsSniServer.java +++ b/acme4j-it/src/main/java/org/shredzone/acme4j/it/server/TlsSniServer.java @@ -140,14 +140,14 @@ public class TlsSniServer { SSLContext sslContext = createSSLContext(); SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory(); - while (running) { - try (SSLServerSocket sslServerSocket = (SSLServerSocket) - sslServerSocketFactory.createServerSocket(port)){ - listening = true; + try (SSLServerSocket sslServerSocket = (SSLServerSocket) + sslServerSocketFactory.createServerSocket(port)){ + listening = true; + while (running) { process(sslServerSocket); - } catch (Exception ex) { - LOG.error("Failed to process query", ex); } + } catch (IOException ex) { + LOG.error("Failed to create socket on port {}", port, ex); } listening = false; @@ -159,10 +159,8 @@ public class TlsSniServer { * * @param sslServerSocket * {@link SSLServerSocket} to accept connections from - * @throws IOException - * if the request could not be processed */ - private void process(SSLServerSocket sslServerSocket) throws IOException { + private void process(SSLServerSocket sslServerSocket) { try (SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept()) { sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites()); sslSocket.startHandshake(); @@ -174,6 +172,8 @@ public class TlsSniServer { try (InputStream in = sslSocket.getInputStream()) { while (in.read() >= 0); //NOSONAR: intentional empty statement } + } catch (Exception ex) { + LOG.error("Failed to process request", ex); } }