Skip to content

Commit d08e99d

Browse files
committed
quic: use getter/setter for stateless reset toggle
PR-URL: #34247 Reviewed-By: Anna Henningsen <anna@addaleax.net>
1 parent f2753c7 commit d08e99d

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

lib/internal/quic/core.js

+14-10
Original file line numberDiff line numberDiff line change
@@ -857,6 +857,7 @@ class QuicSocket extends EventEmitter {
857857
serverSecureContext: undefined,
858858
sessions: new Set(),
859859
state: kSocketUnbound,
860+
statelessResetEnabled: true,
860861
stats: undefined,
861862
};
862863

@@ -1613,16 +1614,19 @@ class QuicSocket extends EventEmitter {
16131614
this[kHandle].setDiagnosticPacketLoss(rx, tx);
16141615
}
16151616

1616-
// Toggles stateless reset on/off. By default, stateless reset tokens
1617-
// are generated when necessary. The disableStatelessReset option may
1618-
// be used when the QuicSocket is created to disable generation of
1619-
// stateless resets. The toggleStatelessReset method allows the setting
1620-
// to be switched on/off dynamically through the lifetime of the
1621-
// socket.
1622-
toggleStatelessReset() {
1623-
if (this[kInternalState].state === kSocketDestroyed)
1624-
throw new ERR_QUICSOCKET_DESTROYED('toggleStatelessReset');
1625-
return this[kHandle].toggleStatelessReset();
1617+
get statelessResetEnabled() {
1618+
return this[kInternalState].statelessResetEnabled;
1619+
}
1620+
1621+
set statelessResetEnabled(on) {
1622+
const state = this[kInternalState];
1623+
if (state.state === kSocketDestroyed)
1624+
throw new ERR_QUICSOCKET_DESTROYED('serverBusy');
1625+
validateBoolean(on, 'on');
1626+
if (state.statelessResetEnabled !== on) {
1627+
this[kHandle].enableStatelessReset(on);
1628+
state.statelessResetEnabled = on;
1629+
}
16261630
}
16271631
}
16281632

src/quic/node_quic_socket-inl.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ void QuicSocket::set_diagnostic_packet_loss(double rx, double tx) {
173173
tx_loss_ = tx;
174174
}
175175

176-
bool QuicSocket::ToggleStatelessReset() {
177-
set_stateless_reset_disabled(!is_stateless_reset_disabled());
176+
bool QuicSocket::EnableStatelessReset(bool on) {
177+
set_stateless_reset_disabled(!on);
178178
return !is_stateless_reset_disabled();
179179
}
180180

src/quic/node_quic_socket.cc

+5-4
Original file line numberDiff line numberDiff line change
@@ -1128,10 +1128,11 @@ void QuicSocketSetServerBusy(const FunctionCallbackInfo<Value>& args) {
11281128
socket->ServerBusy(args[0]->IsTrue());
11291129
}
11301130

1131-
void QuicSocketToggleStatelessReset(const FunctionCallbackInfo<Value>& args) {
1131+
void QuicSocketEnableStatelessReset(const FunctionCallbackInfo<Value>& args) {
11321132
QuicSocket* socket;
11331133
ASSIGN_OR_RETURN_UNWRAP(&socket, args.Holder());
1134-
args.GetReturnValue().Set(socket->ToggleStatelessReset());
1134+
CHECK_EQ(args.Length(), 1);
1135+
args.GetReturnValue().Set(socket->EnableStatelessReset(args[0]->IsTrue()));
11351136
}
11361137

11371138
void QuicEndpointWaitForPendingCallbacks(
@@ -1197,8 +1198,8 @@ void QuicSocket::Initialize(
11971198
"stopListening",
11981199
QuicSocketStopListening);
11991200
env->SetProtoMethod(socket,
1200-
"toggleStatelessReset",
1201-
QuicSocketToggleStatelessReset);
1201+
"enableStatelessReset",
1202+
QuicSocketEnableStatelessReset);
12021203
socket->Inherit(HandleWrap::GetConstructorTemplate(env));
12031204
target->Set(context, class_name,
12041205
socket->GetFunction(env->context()).ToLocalChecked()).FromJust();

src/quic/node_quic_socket.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ class QuicSocket : public AsyncWrap,
384384
// Toggles whether or not stateless reset is enabled or not.
385385
// Returns true if stateless reset is enabled, false if it
386386
// is not.
387-
inline bool ToggleStatelessReset();
387+
inline bool EnableStatelessReset(bool on = true);
388388

389389
BaseObjectPtr<crypto::SecureContext> server_secure_context() const {
390390
return server_secure_context_;

0 commit comments

Comments
 (0)