Skip to content

Commit 4b96be1

Browse files
committed
Fix apachehttpclients so that they accept multiple headers
1 parent 03363d0 commit 4b96be1

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientDecorator.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
44
import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator;
55
import java.net.URI;
6+
import java.util.ArrayList;
7+
import java.util.List;
68
import org.apache.http.Header;
79
import org.apache.http.HttpResponse;
810
import org.apache.http.client.methods.HttpUriRequest;
@@ -46,18 +48,26 @@ protected int status(final HttpResponse httpResponse) {
4648

4749
@Override
4850
protected String getRequestHeader(HttpUriRequest request, String headerName) {
49-
Header header = request.getFirstHeader(headerName);
50-
if (null != header) {
51-
return header.getValue();
51+
Header[] headers = request.getHeaders(headerName);
52+
List<String> values = new ArrayList<>();
53+
if (headers.length > 0) {
54+
for (Header header : headers) {
55+
values.add(header.getValue());
56+
}
57+
return String.join(",", values);
5258
}
5359
return null;
5460
}
5561

5662
@Override
5763
protected String getResponseHeader(HttpResponse response, String headerName) {
58-
Header header = response.getFirstHeader(headerName);
59-
if (null != header) {
60-
return header.getValue();
64+
Header[] headers = response.getHeaders(headerName);
65+
List<String> values = new ArrayList<>();
66+
if (headers.length > 0) {
67+
for (Header header : headers) {
68+
values.add(header.getValue());
69+
}
70+
return String.join(",", values);
6171
}
6272
return null;
6373
}

dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/ApacheHttpClientDecorator.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator;
55
import java.net.URI;
66
import java.net.URISyntaxException;
7+
import java.util.ArrayList;
8+
import java.util.List;
79
import org.apache.hc.core5.http.Header;
810
import org.apache.hc.core5.http.HttpRequest;
911
import org.apache.hc.core5.http.HttpResponse;
@@ -49,18 +51,26 @@ protected int status(final HttpResponse httpResponse) {
4951

5052
@Override
5153
protected String getRequestHeader(HttpRequest request, String headerName) {
52-
Header header = request.getFirstHeader(headerName);
53-
if (null != header) {
54-
return header.getValue();
54+
Header[] headers = request.getHeaders(headerName);
55+
List<String> values = new ArrayList<>();
56+
if (headers.length > 0) {
57+
for (Header header : headers) {
58+
values.add(header.getValue());
59+
}
60+
return String.join(",", values);
5561
}
5662
return null;
5763
}
5864

5965
@Override
6066
protected String getResponseHeader(HttpResponse response, String headerName) {
61-
Header header = response.getFirstHeader(headerName);
62-
if (null != header) {
63-
return header.getValue();
67+
Header[] headers = response.getHeaders(headerName);
68+
List<String> values = new ArrayList<>();
69+
if (headers.length > 0) {
70+
for (Header header : headers) {
71+
values.add(header.getValue());
72+
}
73+
return String.join(",", values);
6474
}
6575
return null;
6676
}

0 commit comments

Comments
 (0)