Skip to content

Commit 1606c86

Browse files
committed
1 parent f3188f5 commit 1606c86

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Request.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export class Request<A> {
5959
* @param bodyStream See {@link Request#bodyStream}.
6060
* @param ip See {@link Request#ip}.
6161
* @param server See {@link Request#server}.
62+
* @throws {@link !URIError} If the request URL path name contains an invalid URI escape sequence.
6263
*/
6364
public constructor(
6465
method: Request<A>["method"],
@@ -123,7 +124,14 @@ export class Request<A> {
123124
if (remoteAddress === undefined)
124125
throw new Request.SocketClosedError();
125126

126-
return new Request<A>(incomingMessage.method as Request.Method, new URL(url), headers, incomingMessage, IPAddress.fromString(remoteAddress), server);
127+
try {
128+
return new Request<A>(incomingMessage.method as Request.Method, new URL(url), headers, incomingMessage, IPAddress.fromString(remoteAddress), server);
129+
}
130+
catch (e) {
131+
if (e instanceof URIError)
132+
throw new Request.BadUrlError(incomingMessage.url);
133+
throw e;
134+
}
127135
}
128136

129137
/**
@@ -251,7 +259,7 @@ export class Request<A> {
251259
export namespace Request {
252260
export class BadUrlError extends Error {
253261
public constructor(public readonly path: string | undefined) {
254-
super(`${path} is not a valid URL.`);
262+
super(`${path} is not a valid URL or contains invalid URI escape sequences.`);
255263
}
256264
}
257265

0 commit comments

Comments
 (0)