Skip to content

Commit 6e5cafd

Browse files
authored
Merge pull request #939 from charlesedeh021-cell/fix/error-handler-headers-sent-819
Guard error handler after headers are sent
2 parents d9d4f00 + 16ab901 commit 6e5cafd

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

backend/src/middleware/error.middleware.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ export const errorHandler = (
1414
) => {
1515
logger.error('Unhandled error:', err);
1616

17+
if (res.headersSent) {
18+
return next(err);
19+
}
20+
1721
// Handle Zod Validation Errors
1822
if (err instanceof ZodError) {
1923
return res.status(400).json({

backend/tests/error.middleware.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,15 @@ describe('Error Middleware', () => {
4444
errorHandler(error, req as Request, res as Response, next);
4545
expect(res.status).toHaveBeenCalledWith(500);
4646
});
47+
48+
it('should delegate to next when headers were already sent', () => {
49+
const error = new Error('Stream failed after headers');
50+
res.headersSent = true;
51+
52+
errorHandler(error, req as Request, res as Response, next);
53+
54+
expect(next).toHaveBeenCalledWith(error);
55+
expect(res.status).not.toHaveBeenCalled();
56+
expect(res.json).not.toHaveBeenCalled();
57+
});
4758
});

0 commit comments

Comments
 (0)