Skip to content

Commit

Permalink
guard against req.url being falsy
Browse files Browse the repository at this point in the history
it's tempting to simply stop looking at req.url.path altogether, since that was introduced for hapi 17 in pinojs@83d58a7#diff-2c4782cb20f7f0d7ca90c7bc04939f4420c4bdb42fdce618984da393ba9202f7R60 .

but since pinojs#29 we look at req.path first, which is safer in hapi, so hapi doesn't care about req.url.path anymore.

but perhaps someone else does depend on req.url.path . so for now, continuing to look at req.url.path , which means a bit more guarding in the req serializer.
  • Loading branch information
rektide committed Feb 23, 2022
1 parent e7d2109 commit 8c8d884
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/req.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ function reqSerializer (req) {
} else {
const path = req.path
// path for safe hapi compat.
_req.url = typeof path === 'string' ? path : (req.url.path || req.url)
_req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)
}
_req.headers = req.headers
_req.remoteAddress = connection && connection.remoteAddress
Expand Down
19 changes: 19 additions & 0 deletions test/req.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,25 @@ test('req.url will be obtained from input request url when req path is a functio
}
})

test('req.url being undefined does not throw an error', function (t) {
t.plan(1)

const server = http.createServer(handler)
server.unref()
server.listen(0, () => {
http.get(server.address(), () => {})
})

t.teardown(() => server.close())

function handler (req, res) {
req.url = undefined
const serialized = serializers.reqSerializer(req)
t.equal(serialized.url, undefined)
res.end()
}
})

test('can wrap request serializers', function (t) {
t.plan(3)

Expand Down

0 comments on commit 8c8d884

Please # to comment.