Skip to content

fix: Fix non-proxy host pattern matching to treat dots as literals#6664

Merged
sbuettner merged 6 commits into
mainfrom
copilot/fix-http-client-non-proxy-host-matching
Apr 27, 2026
Merged

fix: Fix non-proxy host pattern matching to treat dots as literals#6664
sbuettner merged 6 commits into
mainfrom
copilot/fix-http-client-non-proxy-host-matching

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 12, 2026

NonProxyHosts.toRegex was naively replacing * with .* without escaping other regex metacharacters, causing . in patterns to match any character. For example, example.de would incorrectly match exampleXde.

Changes

  • NonProxyHosts.toRegex: Split each |-delimited token on *, escape each segment with Pattern.quote, then rejoin with .*. This makes all characters except * literal, matching the documented wildcard-only semantics.

  • NonProxyHosts pattern caching: Replaced string-based regex caching with a ConcurrentHashMap<String, Pattern> that stores precompiled Pattern instances keyed by the raw pattern string. isNonProxyHost now uses toPattern(nonProxyHostsPattern).matcher(hostname).matches() instead of String#matches(), avoiding both per-request regex string recomputation and regex recompilation. Runtime changes to non-proxy host patterns are still handled correctly — a new pattern string produces a new cache entry on first use.

// Before
static String toRegex(String nonProxyHosts) {
    return nonProxyHosts.replace("*", ".*");
    // "example.de" → regex "example.de" → matches "exampleXde" ❌
}

// After — toRegex builds the escaped string; toPattern caches the compiled Pattern
static String toRegex(String nonProxyHosts) {
    return Arrays.stream(nonProxyHosts.split("\\|", -1))
        .map(token -> Arrays.stream(token.split("\\*", -1))
            .map(Pattern::quote)
            .collect(Collectors.joining(".*")))
        .collect(Collectors.joining("|"));
    // "example.de" → regex "\Qexample.de\E" → matches only "example.de" ✓
    // "*.example.de" → regex "\Q\E.*\Q.example.de\E" → matches "api.example.de" ✓
}
  • NonProxyHostsTest: Added edge-case assertions that example.de does not match exampleXde or example-de. Updated getNonProxyHostRegexPatterns test assertions to reflect the new Pattern.quote-escaped regex format.
Original prompt

This section details on the original issue you should resolve

<issue_title>HTTP client non proxy host matching is not aligned with documentation</issue_title>
<issue_description>Describe the Bug

The current implementation if the non-proxy-host matching in the HTTP client support currently treats the whole host as regex pattern, leading to . matching any character instead of only a dot. According to our docs, only * are allowed as wildcards at the beginning and the end of a host (host patterns delimited by |:

Specify as a list of patterns, separated by |.
Patterns can start or end with a * for wildcards.

Steps to Reproduce

Background to find this was this Copilot comment:

toRegex currently only replaces * with .* and leaves other regex metacharacters (notably .) unescaped. This means patterns like example.de will match unintended hosts (e.g. exampleXde) because . is treated as “any char”, which differs from the documented http.nonProxyHosts semantics where . is literal. Consider escaping regex metacharacters (e.g., via Pattern.quote per token) while still supporting * wildcards and | separators, and extend the tests to cover these edge cases.

Expected Behavior

Regex patterns within a host pattern are treated as normal chars as documented. example.de does not match exampleXde.

Environment

  • Library version: 8.9.0</issue_description>

Comments on the Issue (you are @copilot in this section)

@sbuettner @maff Was this now part of the merged PR #6334 ? Can we close this? @maff No #6334 kept the existing behavior, just moved it around.

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: sbuettner <1607241+sbuettner@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix non-proxy host matching in HTTP client Fix non-proxy host pattern matching to treat dots as literals Mar 12, 2026
Copilot AI requested a review from sbuettner March 12, 2026 20:34
Comment on lines +70 to +76
return Arrays.stream(nonProxyHosts.split("\\|", -1))
.map(
token ->
Arrays.stream(token.split("\\*", -1))
.map(Pattern::quote)
.collect(Collectors.joining(".*")))
.collect(Collectors.joining("|"));
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that this is called for every request, so we might want to consider not constantly re-evaluating this logic.

When refactoring into this class I kept the previous behavior of reading the env var/property for every request, but we probably could create and cache the patterns only once if we're ok with not being able to update the non proxy patterns at runtime (which then would be aligned with the proxy host configuration).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could also cache the toRegEx result under the nonProxyHosts key so it would even work when changing the non-proxy hosts no?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a ConcurrentHashMap-based REGEX_CACHE in NonProxyHosts that caches toRegex results keyed by the raw pattern string (commit 1beeb51). This avoids recomputing the regex on every request while still supporting runtime changes to the non-proxy host patterns.

@sbuettner
Copy link
Copy Markdown
Contributor

@maff Can we open this PR?

@ztefanie
Copy link
Copy Markdown
Collaborator

@maff How shall we proceed with this?

@maff
Copy link
Copy Markdown
Member

maff commented Apr 17, 2026

@ztefanie @sbuettner can you take that over in the team? I think the general solution looks good, but it needs to be defined when these patterns need to be evaluated. Historically this is done per request, but probably this can be done once as for the other configurations? Does anybody need to change them at runtime?

@ztefanie
Copy link
Copy Markdown
Collaborator

@maff Can you please create an issue what should be done by the team to follow our workflows so we can review and groom this?

@maff
Copy link
Copy Markdown
Member

maff commented Apr 20, 2026

There is already an issue #6419 which I think @sbuettner assigned to Copilot to create this PR.

@sbuettner sbuettner marked this pull request as ready for review April 23, 2026 12:20
@sbuettner sbuettner requested a review from a team as a code owner April 23, 2026 12:20
Copilot AI review requested due to automatic review settings April 23, 2026 12:20
@sbuettner
Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

@sbuettner
Copy link
Copy Markdown
Contributor

@ztefanie Thanks for the ping. Can you give this a quick review after copilot fixed the conflicts?

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes non-proxy host pattern matching in the shared HTTP client proxy support so that . and other regex metacharacters are treated literally, aligning behavior with the documented “* wildcard only” semantics and preventing unintended host matches.

Changes:

  • Update NonProxyHosts.toRegex to escape non-wildcard characters via Pattern.quote while still supporting * wildcards and |-separated alternatives.
  • Extend NonProxyHostsTest with edge cases proving that example.de does not match exampleXde or example-de.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
connector-commons/http-client/src/main/java/io/camunda/connector/http/client/proxy/NonProxyHosts.java Fixes pattern→regex conversion to avoid treating . as a regex wildcard.
connector-commons/http-client/src/test/java/io/camunda/connector/http/client/proxy/NonProxyHostsTest.java Adds regression assertions for dot-literal behavior.

Comment on lines 69 to +76
static String toRegex(String nonProxyHosts) {
return nonProxyHosts.replace("*", ".*");
return Arrays.stream(nonProxyHosts.split("\\|", -1))
.map(
token ->
Arrays.stream(token.split("\\*", -1))
.map(Pattern::quote)
.collect(Collectors.joining(".*")))
.collect(Collectors.joining("|"));
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

toRegex() now performs multiple split() operations and Pattern.quote() allocations on every isNonProxyHost() call, and String#matches() recompiles the regex each time. Since this runs on every request when proxying, consider caching precompiled Pattern instances keyed by the current system property / env-var value (or precomputing once per request configuration) to avoid repeated regex building/compilation in hot paths.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in commit ee9c977. Changed the ConcurrentHashMap to cache precompiled Pattern instances (keyed by the raw pattern string) and updated isNonProxyHost to use toPattern(nonProxyHostsPattern).matcher(hostname).matches(), avoiding both per-request regex compilation and per-request string-to-regex conversion.

Co-authored-by: sbuettner <1607241+sbuettner@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 23, 2026

@copilot resolve the merge conflicts in this pull request

Merge conflicts resolved in commit 1beeb51. The branch is now up to date with main.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • artifacts.camunda.com
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • build.shibboleth.net
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • packages.confluent.io
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • repository.sonatype.org
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

…egex recompilation per request

Agent-Logs-Url: https://github.com/camunda/connectors/sessions/f812f7be-a429-4bea-9d98-2a6874d85aa9

Co-authored-by: sbuettner <1607241+sbuettner@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 23, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • artifacts.camunda.com
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • build.shibboleth.net
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • packages.confluent.io
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • repository.sonatype.org
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

System.setProperty("http.nonProxyHosts", "localhost|*.example.com");
assertThat(NonProxyHosts.getNonProxyHostRegexPatterns())
.containsExactly("localhost|.*.example.com");
.containsExactly("\\Qlocalhost\\E|\\Q\\E.*\\Q.example.com\\E");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Fix \\Q and \\E strings

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 74a9978. Replaced the raw "\\Qlocalhost\\E" / "\\Q\\E.*\\Q.example.com\\E" string literals with Pattern.quote("localhost") / Pattern.quote("") + ".*" + Pattern.quote(".example.com") expressions.

…stsTest assertions

Agent-Logs-Url: https://github.com/camunda/connectors/sessions/91486d4d-40cd-4954-a536-a1c38898007d

Co-authored-by: sbuettner <1607241+sbuettner@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 23, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • artifacts.camunda.com
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • build.shibboleth.net
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • packages.confluent.io
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)
  • repository.sonatype.org
    • Triggering command: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.9-10.0.LTS/x64/bin/java --enable-native-access=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.14/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.14/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.14 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from sbuettner April 23, 2026 12:44
@sbuettner sbuettner changed the title Fix non-proxy host pattern matching to treat dots as literals fix: Fix non-proxy host pattern matching to treat dots as literals Apr 23, 2026
@sbuettner sbuettner requested a review from maff April 23, 2026 14:59
@sbuettner sbuettner enabled auto-merge April 27, 2026 13:02
@sbuettner sbuettner added this pull request to the merge queue Apr 27, 2026
Merged via the queue into main with commit b18dbbc Apr 27, 2026
27 of 29 checks passed
@sbuettner sbuettner deleted the copilot/fix-http-client-non-proxy-host-matching branch April 27, 2026 13:34
@github-actions
Copy link
Copy Markdown
Contributor

🎉 This pull request has been included in release 8.10.0-alpha1!

Thank you for your contribution! 🚀

@github-actions github-actions Bot added the version:8.10.0-alpha1 Released in version 8.10.0-alpha1 label May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

version:8.10.0-alpha1 Released in version 8.10.0-alpha1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HTTP client non proxy host matching is not aligned with documentation

5 participants