diff --git a/tests/main.c b/tests/main.c index 3cf5bfbce94459f39263a9bc566258bb21243aee..ed326969164a6f07343e99e49cca13e4e015f7ff 100644 --- a/tests/main.c +++ b/tests/main.c @@ -248,6 +248,8 @@ int main() { test_ngtcp2_conn_recv_version_negotiation) || !CU_add_test(pSuite, "conn_send_initial_token", test_ngtcp2_conn_send_initial_token) || + !CU_add_test(pSuite, "conn_set_remote_transport_params", + test_ngtcp2_conn_set_remote_transport_params) || !CU_add_test(pSuite, "pkt_write_connection_close", test_ngtcp2_pkt_write_connection_close) || !CU_add_test(pSuite, "map", test_ngtcp2_map) || diff --git a/tests/ngtcp2_conn_test.c b/tests/ngtcp2_conn_test.c index 8b64f3853d2bedef23d004c433d2815e075aaa11..39e39c1c42722dfa787d6ee10b6ea8502df13b6a 100644 --- a/tests/ngtcp2_conn_test.c +++ b/tests/ngtcp2_conn_test.c @@ -5128,6 +5128,106 @@ void test_ngtcp2_conn_send_initial_token(void) { ngtcp2_conn_del(conn); } +void test_ngtcp2_conn_set_remote_transport_params(void) { + ngtcp2_conn *conn; + ngtcp2_transport_params params; + int rv; + ngtcp2_cid dcid; + + dcid_init(&dcid); + + /* client: Successful case */ + setup_handshake_client(&conn); + + memset(¶ms, 0, sizeof(params)); + params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT; + params.initial_scid = conn->dcid.current.cid; + params.original_dcid = conn->rcid; + + rv = ngtcp2_conn_set_remote_transport_params(conn, ¶ms); + + CU_ASSERT(0 == rv); + + ngtcp2_conn_del(conn); + + /* client: Wrong original_dcid */ + setup_handshake_client(&conn); + + memset(¶ms, 0, sizeof(params)); + params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT; + params.initial_scid = conn->dcid.current.cid; + + rv = ngtcp2_conn_set_remote_transport_params(conn, ¶ms); + + CU_ASSERT(NGTCP2_ERR_PROTO == rv); + + ngtcp2_conn_del(conn); + + /* client: Wrong initial_scid */ + setup_handshake_client(&conn); + + memset(¶ms, 0, sizeof(params)); + params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT; + params.original_dcid = conn->rcid; + + rv = ngtcp2_conn_set_remote_transport_params(conn, ¶ms); + + CU_ASSERT(NGTCP2_ERR_PROTO == rv); + + ngtcp2_conn_del(conn); + + /* client: Receiving retry_scid when retry is not attempted */ + setup_handshake_client(&conn); + + memset(¶ms, 0, sizeof(params)); + params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT; + params.initial_scid = conn->dcid.current.cid; + params.original_dcid = conn->rcid; + params.retry_scid_present = 1; + + rv = ngtcp2_conn_set_remote_transport_params(conn, ¶ms); + + CU_ASSERT(NGTCP2_ERR_PROTO == rv); + + ngtcp2_conn_del(conn); + + /* client: Receiving retry_scid */ + setup_handshake_client(&conn); + + conn->flags |= NGTCP2_CONN_FLAG_RECV_RETRY; + conn->retry_scid = dcid; + + memset(¶ms, 0, sizeof(params)); + params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT; + params.initial_scid = conn->dcid.current.cid; + params.original_dcid = conn->rcid; + params.retry_scid_present = 1; + params.retry_scid = dcid; + + rv = ngtcp2_conn_set_remote_transport_params(conn, ¶ms); + + CU_ASSERT(0 == rv); + + ngtcp2_conn_del(conn); + + /* client: Not receiving retry_scid when retry is attempted */ + setup_handshake_client(&conn); + + conn->flags |= NGTCP2_CONN_FLAG_RECV_RETRY; + conn->retry_scid = dcid; + + memset(¶ms, 0, sizeof(params)); + params.active_connection_id_limit = NGTCP2_DEFAULT_ACTIVE_CONNECTION_ID_LIMIT; + params.initial_scid = conn->dcid.current.cid; + params.original_dcid = conn->rcid; + + rv = ngtcp2_conn_set_remote_transport_params(conn, ¶ms); + + CU_ASSERT(NGTCP2_ERR_PROTO == rv); + + ngtcp2_conn_del(conn); +} + void test_ngtcp2_pkt_write_connection_close(void) { ngtcp2_ssize spktlen; uint8_t buf[1200]; diff --git a/tests/ngtcp2_conn_test.h b/tests/ngtcp2_conn_test.h index cc992245bcf2ffe74d1a90ff8a262b275750ecbb..cb0d134a31f2a325813fa94b7b7ce39e4c3b6f7d 100644 --- a/tests/ngtcp2_conn_test.h +++ b/tests/ngtcp2_conn_test.h @@ -71,6 +71,7 @@ void test_ngtcp2_conn_recv_client_initial_token(void); void test_ngtcp2_conn_get_active_dcid(void); void test_ngtcp2_conn_recv_version_negotiation(void); void test_ngtcp2_conn_send_initial_token(void); +void test_ngtcp2_conn_set_remote_transport_params(void); void test_ngtcp2_pkt_write_connection_close(void); #endif /* NGTCP2_CONN_TEST_H */