Skip to content

Commit 6094bba

Browse files
committed
account for lowercase xray trace headers during middleware-recursion-detection
1 parent 6b6145d commit 6094bba

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

packages/middleware-recursion-detection/src/index.spec.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,27 @@ describe(recursionDetectionMiddleware.name, () => {
7070
expect(request.headers[TRACE_ID_HEADER_NAME]).toBe("some-real-trace-id");
7171
});
7272

73+
it(`should NOT set ${TRACE_ID_HEADER_NAME} header when the header is already set in all lowercase`, async () => {
74+
process.env = {
75+
AWS_LAMBDA_FUNCTION_NAME: "some-function",
76+
_X_AMZN_TRACE_ID: "some-trace-id",
77+
};
78+
const handler = recursionDetectionMiddleware({ runtime: "node" })(mockNextHandler, {} as any);
79+
await handler({
80+
input: {},
81+
request: new HttpRequest({
82+
headers: {
83+
[TRACE_ID_HEADER_NAME.toLowerCase()]: "some-real-trace-id",
84+
},
85+
}),
86+
});
87+
88+
const { calls } = (mockNextHandler as any).mock;
89+
expect(calls.length).toBe(1);
90+
const { request } = mockNextHandler.mock.calls[0][0];
91+
expect(request.headers[TRACE_ID_HEADER_NAME.toLowerCase()]).toBe("some-real-trace-id");
92+
});
93+
7394
it("has no effect for browser runtime", async () => {
7495
process.env = {
7596
AWS_LAMBDA_FUNCTION_NAME: "some-function",

packages/middleware-recursion-detection/src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ export const recursionDetectionMiddleware =
3030
if (
3131
!HttpRequest.isInstance(request) ||
3232
options.runtime !== "node" ||
33-
request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)
33+
Object.keys(request.headers).some(
34+
(key) => key.toLowerCase() === TRACE_ID_HEADER_NAME.toLowerCase()
35+
)
3436
) {
3537
return next(args);
3638
}

0 commit comments

Comments
 (0)