@@ -216,7 +216,7 @@ void ngtcp2_debug_log(void* user_data, const char* fmt, ...) {
216216 va_end (ap);
217217}
218218
219- template <typename Opt, PreferredAddress::Policy Opt::* member>
219+ template <typename Opt, PreferredAddress::Policy Opt::*member>
220220bool SetOption (Environment* env,
221221 Opt* options,
222222 const Local<Object>& object,
@@ -231,7 +231,7 @@ bool SetOption(Environment* env,
231231 return true ;
232232}
233233
234- template <typename Opt, TLSContext::Options Opt::* member>
234+ template <typename Opt, TLSContext::Options Opt::*member>
235235bool SetOption (Environment* env,
236236 Opt* options,
237237 const Local<Object>& object,
@@ -246,7 +246,7 @@ bool SetOption(Environment* env,
246246 return true ;
247247}
248248
249- template <typename Opt, TransportParams::Options Opt::* member>
249+ template <typename Opt, TransportParams::Options Opt::*member>
250250bool SetOption (Environment* env,
251251 Opt* options,
252252 const Local<Object>& object,
@@ -261,7 +261,7 @@ bool SetOption(Environment* env,
261261 return true ;
262262}
263263
264- template <typename Opt, ngtcp2_cc_algo Opt::* member>
264+ template <typename Opt, ngtcp2_cc_algo Opt::*member>
265265bool SetOption (Environment* env,
266266 Opt* options,
267267 const Local<Object>& object,
@@ -327,6 +327,20 @@ Session::Config::Config(Environment* env,
327327 ngtcp2_settings_default (&settings);
328328 settings.initial_ts = uv_hrtime ();
329329
330+ // Advertise all versions ngtcp2 supports for compatible version
331+ // negotiation (RFC 9368). The preferred list orders the newest
332+ // version first so that negotiation upgrades when possible. The
333+ // initial packet version (options.version) defaults to V1 for
334+ // maximum compatibility with peers that don't support version
335+ // negotiation.
336+ static const uint32_t kSupportedVersions [] = {NGTCP2_PROTO_VER_V2,
337+ NGTCP2_PROTO_VER_V1};
338+
339+ settings.preferred_versions = kSupportedVersions ;
340+ settings.preferred_versionslen = std::size (kSupportedVersions );
341+ settings.available_versions = kSupportedVersions ;
342+ settings.available_versionslen = std::size (kSupportedVersions );
343+
330344 // TODO(@jasnell): Path MTU Discovery is disabled because libuv does not
331345 // currently expose the IP_DONTFRAG / IP_MTU_DISCOVER socket options
332346 // needed for PMTUD probes to work correctly. Revisit when libuv adds
0 commit comments