Skip to content

Commit 40eebfd

Browse files
committed
From review: use QuicError class for thrown QUIC transport/app errors
Signed-off-by: Tim Perry <pimterry@gmail.com>
1 parent e63f574 commit 40eebfd

3 files changed

Lines changed: 11 additions & 16 deletions

File tree

lib/eslint.config_partial.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const noRestrictedSyntax = [
2323
message: "`btoa` supports only latin-1 charset, use Buffer.from(str).toString('base64') instead",
2424
},
2525
{
26-
selector: 'NewExpression[callee.name=/Error$/]:not([callee.name=/^(AssertionError|NghttpError|AbortError|NodeAggregateError|QuotaExceededError)$/])',
26+
selector: 'NewExpression[callee.name=/Error$/]:not([callee.name=/^(AssertionError|NghttpError|AbortError|NodeAggregateError|QuicError|QuotaExceededError)$/])',
2727
message: "Use an error exported by 'internal/errors' instead.",
2828
},
2929
{

lib/internal/errors.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,14 +1687,12 @@ E('ERR_PERFORMANCE_INVALID_TIMESTAMP',
16871687
E('ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS', '%s', TypeError);
16881688
E('ERR_PROXY_INVALID_CONFIG', '%s', Error);
16891689
E('ERR_PROXY_TUNNEL', '%s', Error);
1690-
E('ERR_QUIC_APPLICATION_ERROR', '%s', Error);
16911690
E('ERR_QUIC_CONNECTION_FAILED', 'QUIC connection failed', Error);
16921691
E('ERR_QUIC_ENDPOINT_CLOSED', 'QUIC endpoint closed: %s (%d)', Error);
16931692
E('ERR_QUIC_OPEN_STREAM_FAILED', 'Failed to open QUIC stream', Error);
16941693
E('ERR_QUIC_STREAM_ABORTED', '%s', Error);
16951694
E('ERR_QUIC_STREAM_RESET',
16961695
'The QUIC stream was reset by the peer with error code %d', Error);
1697-
E('ERR_QUIC_TRANSPORT_ERROR', '%s', Error);
16981696
E('ERR_QUIC_VERSION_NEGOTIATION_ERROR', 'The QUIC session requires version negotiation', Error);
16991697
E('ERR_REQUIRE_ASYNC_MODULE', function(filename, parentFilename) {
17001698
let message = 'require() cannot be used on an ESM ' +

lib/internal/quic/quic.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,11 @@ const {
104104
ERR_INVALID_THIS,
105105
ERR_MISSING_ARGS,
106106
ERR_OUT_OF_RANGE,
107-
ERR_QUIC_APPLICATION_ERROR,
108107
ERR_QUIC_CONNECTION_FAILED,
109108
ERR_QUIC_ENDPOINT_CLOSED,
110109
ERR_QUIC_OPEN_STREAM_FAILED,
111110
ERR_QUIC_STREAM_ABORTED,
112111
ERR_QUIC_STREAM_RESET,
113-
ERR_QUIC_TRANSPORT_ERROR,
114112
ERR_QUIC_VERSION_NEGOTIATION_ERROR,
115113
},
116114
} = require('internal/errors');
@@ -984,11 +982,10 @@ function quicErrorMessage(prefix, errorCode, reason, errorName) {
984982
return msg;
985983
}
986984

987-
function makeQuicError(ErrorClass, prefix, type, errorCode, reason, errorName) {
988-
const err = new ErrorClass(
989-
quicErrorMessage(prefix, errorCode, reason, errorName));
990-
err.errorCode = errorCode;
991-
err.type = type;
985+
function makeQuicError(code, prefix, type, errorCode, reason, errorName) {
986+
const err = new QuicError(
987+
quicErrorMessage(prefix, errorCode, reason, errorName),
988+
{ errorCode, code, type });
992989
if (reason) err.reason = reason;
993990
if (errorName) err.errorName = errorName;
994991
return err;
@@ -1001,17 +998,17 @@ function convertQuicError(error) {
1001998
const errorName = error[3];
1002999
switch (type) {
10031000
case 'transport':
1004-
return makeQuicError(ERR_QUIC_TRANSPORT_ERROR,
1001+
return makeQuicError('ERR_QUIC_TRANSPORT_ERROR',
10051002
'QUIC transport error',
10061003
'transport', code, reason, errorName);
10071004
case 'application':
1008-
return makeQuicError(ERR_QUIC_APPLICATION_ERROR,
1005+
return makeQuicError('ERR_QUIC_APPLICATION_ERROR',
10091006
'QUIC application error',
10101007
'application', code, reason, errorName);
10111008
case 'version_negotiation':
10121009
return new ERR_QUIC_VERSION_NEGOTIATION_ERROR();
10131010
default:
1014-
return makeQuicError(ERR_QUIC_TRANSPORT_ERROR,
1011+
return makeQuicError('ERR_QUIC_TRANSPORT_ERROR',
10151012
'QUIC transport error',
10161013
'transport', code, reason, errorName);
10171014
}
@@ -3531,12 +3528,12 @@ class QuicSession {
35313528
// session would leak with `closed` hanging forever.
35323529
switch (errorType) {
35333530
case 0: /* Transport Error */
3534-
this.destroy(makeQuicError(ERR_QUIC_TRANSPORT_ERROR,
3531+
this.destroy(makeQuicError('ERR_QUIC_TRANSPORT_ERROR',
35353532
'QUIC transport error',
35363533
'transport', code, reason, errorName));
35373534
break;
35383535
case 1: /* Application Error */
3539-
this.destroy(makeQuicError(ERR_QUIC_APPLICATION_ERROR,
3536+
this.destroy(makeQuicError('ERR_QUIC_APPLICATION_ERROR',
35403537
'QUIC application error',
35413538
'application', code, reason, errorName));
35423539
break;
@@ -3547,7 +3544,7 @@ class QuicSession {
35473544
this.destroy();
35483545
break;
35493546
default:
3550-
this.destroy(makeQuicError(ERR_QUIC_TRANSPORT_ERROR,
3547+
this.destroy(makeQuicError('ERR_QUIC_TRANSPORT_ERROR',
35513548
'QUIC transport error',
35523549
'transport', code, reason, errorName));
35533550
break;

0 commit comments

Comments
 (0)