Skip to content

Commit

Permalink
Fix request header capture corrupting tomcat request (open-telemetry#…
Browse files Browse the repository at this point in the history
  • Loading branch information
laurit committed Jun 17, 2024
1 parent bfc5ec3 commit 885e7e1
Showing 1 changed file with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
import static io.opentelemetry.javaagent.instrumentation.tomcat.common.TomcatHelper.messageBytesToString;

import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;
import org.apache.coyote.ActionCode;
import org.apache.coyote.Request;
import org.apache.coyote.Response;
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.MimeHeaders;

public class TomcatHttpAttributesGetter implements HttpServerAttributesGetter<Request, Response> {

Expand Down Expand Up @@ -44,7 +46,17 @@ public String getUrlQuery(Request request) {

@Override
public List<String> getHttpRequestHeader(Request request, String name) {
return Collections.list(request.getMimeHeaders().values(name));
List<String> result = null;
MimeHeaders headers = request.getMimeHeaders();
int i = headers.findHeader(name, 0);
while (i != -1) {
if (result == null) {
result = new ArrayList<>();
}
result.add(messageBytesToString(headers.getValue(i)));
i = headers.findHeader(name, i + 1);
}
return result != null ? result : Collections.emptyList();
}

@Override
Expand Down

0 comments on commit 885e7e1

Please sign in to comment.