diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractor.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractor.java index 14bdf04b63b1..073aea6c11d5 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractor.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractor.java @@ -36,15 +36,15 @@ public void extract(AddressPortSink sink, REQUEST request) { } } - // try Host - for (String host : getter.getHttpRequestHeader(request, "host")) { + // try :authority (HTTP 2.0 pseudo-header) + for (String host : getter.getHttpRequestHeader(request, ":authority")) { if (extractHost(sink, host, 0, host.length())) { return; } } - // try :authority (HTTP 2.0 pseudo-header) - for (String host : getter.getHttpRequestHeader(request, ":authority")) { + // try Host + for (String host : getter.getHttpRequestHeader(request, "host")) { if (extractHost(sink, host, 0, host.length())) { return; } diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractorTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractorTest.java index 51b2d5df8bd9..3a8827beeb13 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractorTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/ForwardedHostAddressAndPortExtractorTest.java @@ -96,11 +96,11 @@ void shouldParseForwardedHost( @ParameterizedTest @ArgumentsSource(HostArgs.class) - void shouldParseHost( + void shouldParsePseudoAuthority( List headers, @Nullable String expectedAddress, @Nullable Integer expectedPort) { doReturn(emptyList()).when(getter).getHttpRequestHeader(REQUEST, "forwarded"); doReturn(emptyList()).when(getter).getHttpRequestHeader(REQUEST, "x-forwarded-host"); - doReturn(headers).when(getter).getHttpRequestHeader(REQUEST, "host"); + doReturn(headers).when(getter).getHttpRequestHeader(REQUEST, ":authority"); AddressAndPort sink = new AddressAndPort(); underTest.extract(sink, REQUEST); @@ -111,12 +111,12 @@ void shouldParseHost( @ParameterizedTest @ArgumentsSource(HostArgs.class) - void shouldParsePseudoAuthority( + void shouldParseHost( List headers, @Nullable String expectedAddress, @Nullable Integer expectedPort) { doReturn(emptyList()).when(getter).getHttpRequestHeader(REQUEST, "forwarded"); doReturn(emptyList()).when(getter).getHttpRequestHeader(REQUEST, "x-forwarded-host"); - doReturn(emptyList()).when(getter).getHttpRequestHeader(REQUEST, "host"); - doReturn(headers).when(getter).getHttpRequestHeader(REQUEST, ":authority"); + doReturn(emptyList()).when(getter).getHttpRequestHeader(REQUEST, ":authority"); + doReturn(headers).when(getter).getHttpRequestHeader(REQUEST, "host"); AddressAndPort sink = new AddressAndPort(); underTest.extract(sink, REQUEST); diff --git a/instrumentation-api-semconv/src/testStableHttpSemconv/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorStableSemconvTest.java b/instrumentation-api-semconv/src/testStableHttpSemconv/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorStableSemconvTest.java index 916f38b9be3a..4cba765d7157 100644 --- a/instrumentation-api-semconv/src/testStableHttpSemconv/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorStableSemconvTest.java +++ b/instrumentation-api-semconv/src/testStableHttpSemconv/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorStableSemconvTest.java @@ -454,10 +454,10 @@ void shouldExtractServerAddressAndPortFromForwardedHostHeader() { } @Test - void shouldExtractServerAddressAndPortFromHostHeader() { + void shouldExtractServerAddressAndPortFromAuthorityPseudoHeader() { Map request = new HashMap<>(); - request.put("header.host", "github.com:123"); request.put("header.:authority", "opentelemetry.io:42"); + request.put("header.host", "github.com:123"); Map response = new HashMap<>(); response.put("statusCode", "200"); @@ -470,8 +470,8 @@ void shouldExtractServerAddressAndPortFromHostHeader() { assertThat(startAttributes.build()) .containsOnly( - entry(SemanticAttributes.SERVER_ADDRESS, "github.com"), - entry(SemanticAttributes.SERVER_PORT, 123L)); + entry(SemanticAttributes.SERVER_ADDRESS, "opentelemetry.io"), + entry(SemanticAttributes.SERVER_PORT, 42L)); AttributesBuilder endAttributes = Attributes.builder(); extractor.onEnd(endAttributes, Context.root(), request, response, null); @@ -480,9 +480,9 @@ void shouldExtractServerAddressAndPortFromHostHeader() { } @Test - void shouldExtractServerAddressAndPortFromAuthorityPseudoHeader() { + void shouldExtractServerAddressAndPortFromHostHeader() { Map request = new HashMap<>(); - request.put("header.:authority", "opentelemetry.io:42"); + request.put("header.host", "github.com:123"); Map response = new HashMap<>(); response.put("statusCode", "200"); @@ -495,8 +495,8 @@ void shouldExtractServerAddressAndPortFromAuthorityPseudoHeader() { assertThat(startAttributes.build()) .containsOnly( - entry(SemanticAttributes.SERVER_ADDRESS, "opentelemetry.io"), - entry(SemanticAttributes.SERVER_PORT, 42L)); + entry(SemanticAttributes.SERVER_ADDRESS, "github.com"), + entry(SemanticAttributes.SERVER_PORT, 123L)); AttributesBuilder endAttributes = Attributes.builder(); extractor.onEnd(endAttributes, Context.root(), request, response, null);