Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function forwarded (req) {
// simple header parsing
var proxyAddrs = parse(req.headers['x-forwarded-for'] || '')
var socketAddr = getSocketAddr(req)
var addrs = [socketAddr].concat(proxyAddrs)
var addrs = (socketAddr ? [socketAddr] : []).concat(proxyAddrs)

// return all addresses
return addrs
Expand All @@ -44,9 +44,8 @@ function forwarded (req) {
*/

function getSocketAddr (req) {
return req.socket
? req.socket.remoteAddress
: req.connection.remoteAddress
var socket = req.socket || req.connection
return socket ? socket.remoteAddress : undefined
}

/**
Expand Down
12 changes: 12 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@ describe('forwarded(req)', function () {
var req = createReq('connection', '10.0.0.1')
assert.strictEqual(forwarded(req)[0], '10.0.0.1')
})

it('should omit socket address when socket is disconnected', function () {
var req = { headers: {}, socket: { remoteAddress: undefined } }
var addrs = forwarded(req)
assert.strictEqual(addrs.indexOf(undefined), -1)
})

it('should omit socket address when both socket and connection are absent', function () {
var req = { headers: {} }
var addrs = forwarded(req)
assert.strictEqual(addrs.indexOf(undefined), -1)
})
})
})

Expand Down