From 74ba508e4afebaee091ccac932a3fe4126058c2f Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Tue, 6 Jan 2015 10:14:57 +0100 Subject: [PATCH] KEYCLOAK-918 Reverse proxy triggers NPE in undertow adapter --- .../adapters/undertow/UndertowHttpFacade.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/integration/undertow/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java b/integration/undertow/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java index 21738f53da..ce1d7baf71 100755 --- a/integration/undertow/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java +++ b/integration/undertow/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java @@ -29,6 +29,8 @@ import javax.security.cert.X509Certificate; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.InetAddress; +import java.net.InetSocketAddress; import java.util.Deque; import java.util.List; import java.util.Map; @@ -102,7 +104,18 @@ public class UndertowHttpFacade implements HttpFacade { @Override public String getRemoteAddr() { - return exchange.getSourceAddress().getAddress().getHostAddress(); + InetSocketAddress sourceAddress = exchange.getSourceAddress(); + if (sourceAddress == null) { + return ""; + } + InetAddress address = sourceAddress.getAddress(); + if (address == null) { + // this is unresolved, so we just return the host name not exactly spec, but if the name should be + // resolved then a PeerNameResolvingHandler should be used and this is probably better than just + // returning null + return sourceAddress.getHostString(); + } + return address.getHostAddress(); } }