Skip to content

Commit bc6aa73

Browse files
committed
quic: cleanup preferred address code
1 parent 0d55c0b commit bc6aa73

4 files changed

Lines changed: 23 additions & 46 deletions

File tree

src/quic/preferredaddress.cc

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,6 @@ bool resolve(const PreferredAddress::AddressInfo& address,
9797
}
9898
} // namespace
9999

100-
Maybe<PreferredAddress::Policy> PreferredAddress::GetPolicy(
101-
Environment* env, Local<Value> value) {
102-
CHECK(value->IsUint32());
103-
uint32_t val = 0;
104-
if (value->Uint32Value(env->context()).To(&val)) {
105-
switch (val) {
106-
case QUIC_PREFERRED_ADDRESS_USE:
107-
return Just(Policy::USE_PREFERRED_ADDRESS);
108-
case QUIC_PREFERRED_ADDRESS_IGNORE:
109-
return Just(Policy::IGNORE_PREFERRED_ADDRESS);
110-
}
111-
}
112-
THROW_ERR_INVALID_ARG_VALUE(
113-
env, "%d is not a valid preferred address policy", val);
114-
return Nothing<Policy>();
115-
}
116-
117100
PreferredAddress::PreferredAddress(ngtcp2_path* dest,
118101
const ngtcp2_preferred_addr* paddr)
119102
: dest_(dest), paddr_(paddr) {
@@ -160,23 +143,22 @@ void PreferredAddress::Set(ngtcp2_transport_params* params,
160143
Maybe<PreferredAddress::Policy> PreferredAddress::tryGetPolicy(
161144
Environment* env, Local<Value> value) {
162145
if (value->IsUndefined()) {
163-
return Just(PreferredAddress::Policy::USE_PREFERRED_ADDRESS);
146+
return Just(PreferredAddress::Policy::USE);
164147
}
165148
if (value->IsUint32()) {
166-
auto val = value.As<Uint32>()->Value();
167-
if (val == static_cast<uint32_t>(Policy::IGNORE_PREFERRED_ADDRESS))
168-
return Just(Policy::IGNORE_PREFERRED_ADDRESS);
169-
if (val == static_cast<uint32_t>(Policy::USE_PREFERRED_ADDRESS))
170-
return Just(Policy::USE_PREFERRED_ADDRESS);
149+
switch(value.As<Uint32>()->Value()) {
150+
case PREFERRED_ADDRESS_IGNORE: return Just(Policy::IGNORE);
151+
case PREFERRED_ADDRESS_USE: return Just(Policy::USE);
152+
}
171153
}
172154
THROW_ERR_INVALID_ARG_VALUE(env, "invalid preferred address policy");
173155
return Nothing<PreferredAddress::Policy>();
174156
}
175157

176158
void PreferredAddress::Initialize(Environment* env,
177159
v8::Local<v8::Object> target) {
178-
NODE_DEFINE_CONSTANT(target, QUIC_PREFERRED_ADDRESS_IGNORE);
179-
NODE_DEFINE_CONSTANT(target, QUIC_PREFERRED_ADDRESS_USE);
160+
NODE_DEFINE_CONSTANT(target, PREFERRED_ADDRESS_IGNORE);
161+
NODE_DEFINE_CONSTANT(target, PREFERRED_ADDRESS_USE);
180162
NODE_DEFINE_CONSTANT(target, DEFAULT_PREFERRED_ADDRESS_POLICY);
181163
}
182164

src/quic/preferredaddress.h

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <node_internals.h>
99
#include <v8.h>
1010
#include <string>
11+
#include "defs.h"
1112

1213
namespace node {
1314
namespace quic {
@@ -18,30 +19,27 @@ namespace quic {
1819
// the preferred address to be selected.
1920
class PreferredAddress final {
2021
public:
21-
enum class Policy {
22+
enum class Policy : uint32_t {
2223
// Ignore the server-advertised preferred address.
23-
IGNORE_PREFERRED_ADDRESS,
24+
IGNORE,
2425
// Use the server-advertised preferred address.
25-
USE_PREFERRED_ADDRESS,
26+
USE,
2627
};
2728

2829
static v8::Maybe<Policy> tryGetPolicy(Environment* env,
2930
v8::Local<v8::Value> value);
3031

3132
// The QUIC_* constants are expected to be exported out to be used on
3233
// the JavaScript side of the API.
33-
static constexpr uint32_t QUIC_PREFERRED_ADDRESS_USE =
34-
static_cast<uint32_t>(Policy::USE_PREFERRED_ADDRESS);
35-
static constexpr uint32_t QUIC_PREFERRED_ADDRESS_IGNORE =
36-
static_cast<uint32_t>(Policy::IGNORE_PREFERRED_ADDRESS);
37-
static constexpr uint32_t DEFAULT_PREFERRED_ADDRESS_POLICY =
38-
static_cast<uint32_t>(Policy::USE_PREFERRED_ADDRESS);
34+
static constexpr auto PREFERRED_ADDRESS_USE =
35+
static_cast<uint32_t>(Policy::USE);
36+
static constexpr auto PREFERRED_ADDRESS_IGNORE =
37+
static_cast<uint32_t>(Policy::IGNORE);
38+
static constexpr auto DEFAULT_PREFERRED_ADDRESS_POLICY =
39+
static_cast<uint32_t>(Policy::USE);
3940

4041
static void Initialize(Environment* env, v8::Local<v8::Object> target);
4142

42-
static v8::Maybe<Policy> GetPolicy(Environment* env,
43-
v8::Local<v8::Value> value);
44-
4543
struct AddressInfo final {
4644
char host[NI_MAXHOST];
4745
int family;
@@ -51,10 +49,7 @@ class PreferredAddress final {
5149

5250
explicit PreferredAddress(ngtcp2_path* dest,
5351
const ngtcp2_preferred_addr* paddr);
54-
PreferredAddress(const PreferredAddress&) = delete;
55-
PreferredAddress(PreferredAddress&&) = delete;
56-
PreferredAddress& operator=(const PreferredAddress&) = delete;
57-
PreferredAddress& operator=(PreferredAddress&&) = delete;
52+
DISALLOW_COPY_AND_MOVE(PreferredAddress)
5853

5954
void Use(const AddressInfo& address);
6055

src/quic/session.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ bool SetOption(Environment* env,
231231
const v8::Local<String>& name) {
232232
Local<Value> value;
233233
PreferredAddress::Policy policy =
234-
PreferredAddress::Policy::USE_PREFERRED_ADDRESS;
234+
PreferredAddress::Policy::USE;
235235
if (!object->Get(env->context(), name).ToLocal(&value) ||
236236
!PreferredAddress::tryGetPolicy(env, value).To(&policy)) {
237237
return false;
@@ -454,9 +454,9 @@ std::string Session::Options::ToString() const {
454454

455455
auto policy = ([&] {
456456
switch (preferred_address_strategy) {
457-
case PreferredAddress::Policy::USE_PREFERRED_ADDRESS:
457+
case PreferredAddress::Policy::USE:
458458
return "use";
459-
case PreferredAddress::Policy::IGNORE_PREFERRED_ADDRESS:
459+
case PreferredAddress::Policy::IGNORE:
460460
return "ignore";
461461
}
462462
return "<unknown>";
@@ -1467,7 +1467,7 @@ void Session::HandshakeConfirmed() {
14671467

14681468
void Session::SelectPreferredAddress(PreferredAddress* preferredAddress) {
14691469
if (config_.options.preferred_address_strategy ==
1470-
PreferredAddress::Policy::IGNORE_PREFERRED_ADDRESS) {
1470+
PreferredAddress::Policy::IGNORE) {
14711471
Debug(this, "Ignoring preferred address");
14721472
return;
14731473
}

src/quic/session.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class Session final : public AsyncWrap, private SessionTicket::AppData::Source {
106106
// By default a client session will use the preferred address advertised by
107107
// the the server. This option is only relevant for client sessions.
108108
PreferredAddress::Policy preferred_address_strategy =
109-
PreferredAddress::Policy::USE_PREFERRED_ADDRESS;
109+
PreferredAddress::Policy::USE;
110110

111111
TransportParams::Options transport_params =
112112
TransportParams::Options::kDefault;

0 commit comments

Comments
 (0)