diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-07-08 14:34:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-08 14:34:53 +0200 |
commit | e37a3a286064cb050a9ef36600c978bf39348a98 (patch) | |
tree | 62835fb4173c96e420413941f2ded62f85acea84 | |
parent | ac0e69ad1f86c7452c921dc3e19de09b296d2d5e (diff) | |
parent | 0089efd575d71c115553b8b5a4259623ce6eef3f (diff) |
Merge pull request #13834 from vespa-engine/bjorncs/jdisc-access-logging
Don't assume remote port header contains a valid port number
-rw-r--r-- | jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java index d8b649c9db8..53d775d4349 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java @@ -132,7 +132,15 @@ public class AccessLogRequestLog extends AbstractLifeCycle implements RequestLog private static int getRemotePort(final HttpServletRequest request) { return Optional.ofNullable(request.getHeader(HEADER_NAME_X_FORWARDED_PORT)) .or(() -> Optional.ofNullable(request.getHeader(HEADER_NAME_Y_RP))) - .map(Integer::valueOf) + .flatMap(AccessLogRequestLog::parsePort) .orElseGet(request::getRemotePort); } + + private static Optional<Integer> parsePort(String port) { + try { + return Optional.of(Integer.valueOf(port)); + } catch (IllegalArgumentException e) { + return Optional.empty(); + } + } } |