Start PMTUD just for the current path after path validation
@@ -5919,13 +5919,6 @@ static int conn_recv_path_response(ngtcp2_conn *conn, ngtcp2_path_response *fr,
if (ngtcp2_path_eq(&pv->dcid.ps.path, &conn->dcid.current.ps.path)) {
conn->dcid.current.flags |= NGTCP2_DCID_FLAG_PATH_VALIDATED;
- }
-
- rv = conn_call_path_validation(conn, pv,
- NGTCP2_PATH_VALIDATION_RESULT_SUCCESS);
- if (rv != 0) {
- return rv;
- }
if (!conn->local.settings.no_pmtud) {
ngtcp2_conn_stop_pmtud(conn);
@@ -5939,6 +5932,13 @@ static int conn_recv_path_response(ngtcp2_conn *conn, ngtcp2_path_response *fr,
}
}
+ rv = conn_call_path_validation(conn, pv,
+ NGTCP2_PATH_VALIDATION_RESULT_SUCCESS);
+ if (rv != 0) {
+ return rv;
+ }
+ }
+
if (pv->flags & NGTCP2_PV_FLAG_FALLBACK_ON_FAILURE) {
pto = conn_compute_pto(conn, &conn->pktns);
timeout = 3 * ngtcp2_max(pto, pv->fallback_pto);
