From 1597a5e068ab39f9ff5870d5c13da637f5fe4def Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Wed, 24 Feb 2021 18:19:40 +0100 Subject: Determine local port for requests processed after connector is closed Fallback to configured listen port for requests that are unable to complete before connector shutdown is initiated. --- .../jdisc/http/server/jetty/HttpServletRequestUtils.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'jdisc_http_service/src/main/java') diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpServletRequestUtils.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpServletRequestUtils.java index c0903529455..e7b9f459d2e 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpServletRequestUtils.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpServletRequestUtils.java @@ -2,7 +2,6 @@ package com.yahoo.jdisc.http.server.jetty; import org.eclipse.jetty.server.HttpConnection; -import org.eclipse.jetty.server.ServerConnector; import javax.servlet.http.HttpServletRequest; @@ -21,8 +20,19 @@ public class HttpServletRequestUtils { * @return the actual local port of the underlying Jetty connector */ public static int getConnectorLocalPort(HttpServletRequest request) { - ServerConnector jettyConnector = (ServerConnector) getConnection(request).getConnector(); - return jettyConnector.getLocalPort(); + JDiscServerConnector connector = (JDiscServerConnector) getConnection(request).getConnector(); + int actualLocalPort = connector.getLocalPort(); + int localPortIfConnectorUnopened = -1; + int localPortIfConnectorClosed = -2; + if (actualLocalPort == localPortIfConnectorUnopened || actualLocalPort == localPortIfConnectorClosed) { + int configuredLocalPort = connector.listenPort(); + int localPortEphemeralPort = 0; + if (configuredLocalPort == localPortEphemeralPort) { + throw new IllegalStateException("Unable to determine connector's listen port"); + } + return configuredLocalPort; + } + return actualLocalPort; } } -- cgit v1.2.3