TlsSniServer: Keep socket open after processing a request

Integration tests can now use PEBBLE_VA_NOSLEEP.
Fixes letsencrypt/pebble#36.
pull/55/head
Richard Körber 2017-08-28 00:18:10 +02:00
parent accc4107eb
commit e3aa1fa4bc
2 changed files with 10 additions and 11 deletions

View File

@ -133,11 +133,10 @@
<host>bammbamm</host> <host>bammbamm</host>
</dns> </dns>
--> -->
<!-- See https://github.com/letsencrypt/pebble/issues/36 <!-- Comment out to perform tests with validation delays. -->
<env> <env>
<PEBBLE_VA_NOSLEEP>1</PEBBLE_VA_NOSLEEP> <PEBBLE_VA_NOSLEEP>1</PEBBLE_VA_NOSLEEP>
</env> </env>
-->
</run> </run>
</image> </image>
<image> <image>

View File

@ -140,14 +140,14 @@ public class TlsSniServer {
SSLContext sslContext = createSSLContext(); SSLContext sslContext = createSSLContext();
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory(); SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
while (running) {
try (SSLServerSocket sslServerSocket = (SSLServerSocket) try (SSLServerSocket sslServerSocket = (SSLServerSocket)
sslServerSocketFactory.createServerSocket(port)){ sslServerSocketFactory.createServerSocket(port)){
listening = true; listening = true;
while (running) {
process(sslServerSocket); 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; listening = false;
@ -159,10 +159,8 @@ public class TlsSniServer {
* *
* @param sslServerSocket * @param sslServerSocket
* {@link SSLServerSocket} to accept connections from * {@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()) { try (SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept()) {
sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites()); sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites());
sslSocket.startHandshake(); sslSocket.startHandshake();
@ -174,6 +172,8 @@ public class TlsSniServer {
try (InputStream in = sslSocket.getInputStream()) { try (InputStream in = sslSocket.getInputStream()) {
while (in.read() >= 0); //NOSONAR: intentional empty statement while (in.read() >= 0); //NOSONAR: intentional empty statement
} }
} catch (Exception ex) {
LOG.error("Failed to process request", ex);
} }
} }