Skip to content

Commit cdea12c

Browse files
authored
Merge pull request #21 from RaoUsama7/fix/client-ip-followup
fix(fingerprint): use empty string fallback for missing client IP
2 parents 74febe4 + 151af71 commit cdea12c

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

src/lib/client-ip.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ describe('getClientIp', () => {
1212
expect(getClientIp(request)).toBe('192.168.1.1');
1313
});
1414

15-
it('returns socket.remoteAddress when request.ip is undefined', () => {
15+
it('returns raw.socket.remoteAddress when request.ip is undefined', () => {
1616
const request = {
1717
ip: undefined,
18-
socket: { remoteAddress: '10.0.0.2' },
18+
raw: { socket: { remoteAddress: '10.0.0.2' } },
1919
} as unknown as FastifyRequest;
2020
expect(getClientIp(request)).toBe('10.0.0.2');
2121
});
@@ -25,14 +25,14 @@ describe('getClientIp', () => {
2525
expect(getClientIp(request)).toBe('192.168.1.1');
2626
});
2727

28-
it('returns "unknown" when neither ip nor socket.remoteAddress is available', () => {
29-
const request = { ip: undefined, socket: {} } as unknown as FastifyRequest;
30-
expect(getClientIp(request)).toBe('unknown');
28+
it('returns empty string when neither ip nor socket.remoteAddress is available', () => {
29+
const request = { ip: undefined, raw: { socket: {} } } as unknown as FastifyRequest;
30+
expect(getClientIp(request)).toBe('');
3131
});
3232

33-
it('returns "unknown" when request has no socket', () => {
34-
const request = { ip: undefined } as unknown as FastifyRequest;
35-
expect(getClientIp(request)).toBe('unknown');
33+
it('returns empty string when request.raw has no socket', () => {
34+
const request = { ip: undefined, raw: {} } as unknown as FastifyRequest;
35+
expect(getClientIp(request)).toBe('');
3636
});
3737
});
3838

src/lib/client-ip.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import type { FastifyRequest } from 'fastify';
88
* returns that trusted value.
99
*/
1010
export function getClientIp(request: FastifyRequest): string {
11-
const ip = request.ip ?? (request as any).socket?.remoteAddress;
11+
const ip = request.ip ?? request.raw.socket?.remoteAddress;
1212
if (ip && typeof ip === 'string') {
1313
// IPv6-mapped IPv4: ::ffff:192.168.1.1 -> 192.168.1.1
1414
if (ip.startsWith('::ffff:')) return ip.slice(7);
1515
return ip;
1616
}
17-
return 'unknown';
17+
return '';
1818
}

0 commit comments

Comments
 (0)