summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/main/java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-02-24 18:19:40 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-02-24 18:28:51 +0100
commit1597a5e068ab39f9ff5870d5c13da637f5fe4def (patch)
treeaacc3ad5e6262739c6513c1d1fa70ea53b75bee4 /jdisc_http_service/src/main/java
parent477d3145f0674f5ebe8e69d357e9a31d8c561fb0 (diff)
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.
Diffstat (limited to 'jdisc_http_service/src/main/java')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpServletRequestUtils.java16
1 files changed, 13 insertions, 3 deletions
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;
}
}