Fix request header capture corrupting tomcat request (#11469)
This commit is contained in:
parent
6c7afce137
commit
300ad5ebb3
|
@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.tomcat.common;
|
|||
import static io.opentelemetry.javaagent.instrumentation.tomcat.common.TomcatHelper.messageBytesToString;
|
||||
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesGetter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
|
@ -15,6 +16,7 @@ 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> {
|
||||
|
||||
|
@ -44,7 +46,17 @@ public class TomcatHttpAttributesGetter implements HttpServerAttributesGetter<Re
|
|||
|
||||
@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
|
||||
|
|
Loading…
Reference in New Issue