From 0ebde2d4e548de31bc198a9e8765eaa7bf1857f5 Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
Date: Thu, 11 Jun 2020 18:09:32 +0900
Subject: [PATCH] Use NGTCP2_ERR_TRANSPORT_PARAM if cid validation in TP fails

---
 lib/ngtcp2_conn.c        | 16 +++++-----------
 tests/ngtcp2_conn_test.c |  8 ++++----
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c
index d70d4dcf..c7c5f30a 100644
--- a/lib/ngtcp2_conn.c
+++ b/lib/ngtcp2_conn.c
@@ -8188,24 +8188,18 @@ static int
 conn_client_validate_transport_params(ngtcp2_conn *conn,
                                       const ngtcp2_transport_params *params) {
   if (!ngtcp2_cid_eq(&conn->rcid, &params->original_dcid)) {
-    return NGTCP2_ERR_PROTO;
+    return NGTCP2_ERR_TRANSPORT_PARAM;
   }
 
   if (conn->flags & NGTCP2_CONN_FLAG_RECV_RETRY) {
     if (!params->retry_scid_present) {
-      /* draft explicitly specifies that this is
-         PROTOCOL_VIOLATION. */
-      return NGTCP2_ERR_PROTO;
+      return NGTCP2_ERR_TRANSPORT_PARAM;
     }
     if (!ngtcp2_cid_eq(&conn->retry_scid, &params->retry_scid)) {
-      /* draft explicitly specifies that this is
-         PROTOCOL_VIOLATION. */
-      return NGTCP2_ERR_PROTO;
+      return NGTCP2_ERR_TRANSPORT_PARAM;
     }
   } else if (params->retry_scid_present) {
-    /* draft explicitly specifies that this is
-       PROTOCOL_VIOLATION. */
-    return NGTCP2_ERR_PROTO;
+    return NGTCP2_ERR_TRANSPORT_PARAM;
   }
 
   if (params->preferred_address_present &&
@@ -8233,7 +8227,7 @@ int ngtcp2_conn_set_remote_transport_params(
      This requires that transport parameter must be fed into
      ngtcp2_conn as early as possible. */
   if (!ngtcp2_cid_eq(&conn->dcid.current.cid, &params->initial_scid)) {
-    return NGTCP2_ERR_PROTO;
+    return NGTCP2_ERR_TRANSPORT_PARAM;
   }
 
   if (!conn->server) {
diff --git a/tests/ngtcp2_conn_test.c b/tests/ngtcp2_conn_test.c
index 5218323e..b501cd1b 100644
--- a/tests/ngtcp2_conn_test.c
+++ b/tests/ngtcp2_conn_test.c
@@ -5164,7 +5164,7 @@ void test_ngtcp2_conn_set_remote_transport_params(void) {
 
   rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
 
-  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+  CU_ASSERT(NGTCP2_ERR_TRANSPORT_PARAM == rv);
 
   ngtcp2_conn_del(conn);
 
@@ -5177,7 +5177,7 @@ void test_ngtcp2_conn_set_remote_transport_params(void) {
 
   rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
 
-  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+  CU_ASSERT(NGTCP2_ERR_TRANSPORT_PARAM == rv);
 
   ngtcp2_conn_del(conn);
 
@@ -5192,7 +5192,7 @@ void test_ngtcp2_conn_set_remote_transport_params(void) {
 
   rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
 
-  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+  CU_ASSERT(NGTCP2_ERR_TRANSPORT_PARAM == rv);
 
   ngtcp2_conn_del(conn);
 
@@ -5228,7 +5228,7 @@ void test_ngtcp2_conn_set_remote_transport_params(void) {
 
   rv = ngtcp2_conn_set_remote_transport_params(conn, &params);
 
-  CU_ASSERT(NGTCP2_ERR_PROTO == rv);
+  CU_ASSERT(NGTCP2_ERR_TRANSPORT_PARAM == rv);
 
   ngtcp2_conn_del(conn);
 }
-- 
GitLab