From 5381562843b77aa5aeae503ceda2b58bd2591840 Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
Date: Thu, 16 Jul 2020 20:42:37 +0900
Subject: [PATCH] Preferred address selection should be done after handshake
 confirmation

---
 lib/ngtcp2_conn.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c
index 6226fc32..c571ff10 100644
--- a/lib/ngtcp2_conn.c
+++ b/lib/ngtcp2_conn.c
@@ -6279,6 +6279,13 @@ static int conn_recv_handshake_done(ngtcp2_conn *conn, ngtcp2_tstamp ts) {
 
   conn_discard_handshake_state(conn, ts);
 
+  if (conn->remote.transport_params.preferred_address_present) {
+    rv = conn_select_preferred_addr(conn);
+    if (rv != 0) {
+      return rv;
+    }
+  }
+
   if (conn->callbacks.handshake_confirmed) {
     rv = conn->callbacks.handshake_confirmed(conn, conn->user_data);
     if (rv != 0) {
@@ -7826,13 +7833,6 @@ static ngtcp2_ssize conn_write_handshake(ngtcp2_conn *conn, uint8_t *dest,
       return (ngtcp2_ssize)rv;
     }
 
-    if (conn->remote.transport_params.preferred_address_present) {
-      rv = conn_select_preferred_addr(conn);
-      if (rv != 0) {
-        return rv;
-      }
-    }
-
     cstat->bytes_sent += (size_t)res;
 
     return res;
-- 
GitLab