From 31c4d6d1339f4397b2e097744f3a2df931738b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Wed, 27 Jul 2016 22:52:36 +0200 Subject: [PATCH] NPE when no Retry-After header is set. Fixes issue #20. --- .../acme4j/connector/DefaultConnection.java | 3 +++ .../acme4j/connector/DefaultConnectionTest.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/connector/DefaultConnection.java b/acme4j-client/src/main/java/org/shredzone/acme4j/connector/DefaultConnection.java index 88e563a4..3f3a4c8f 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/connector/DefaultConnection.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/connector/DefaultConnection.java @@ -271,6 +271,9 @@ public class DefaultConnection implements Connection { // See RFC 2616 section 14.37 String header = conn.getHeaderField("Retry-After"); + if (header == null) { + return null; + } try { // delta-seconds diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java index 8263544d..fe21b14d 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java @@ -245,6 +245,22 @@ public class DefaultConnectionTest { verify(mockUrlConnection, atLeastOnce()).getHeaderField("Retry-After"); } + /** + * Test if no Retry-After header is correctly handled. + */ + @Test + public void testGetRetryAfterHeaderNull() { + when(mockUrlConnection.getHeaderField("Retry-After")) + .thenReturn(null); + + try (DefaultConnection conn = new DefaultConnection(mockHttpConnection)) { + conn.conn = mockUrlConnection; + assertThat(conn.getRetryAfterHeader(), is(nullValue())); + } + + verify(mockUrlConnection, atLeastOnce()).getHeaderField("Retry-After"); + } + /** * Test if an {@link AcmeServerException} is thrown on an acme problem. */