From 8ca867df084770f6a78b3f417dafccfea02db9bb Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Wed, 10 Jun 2020 22:19:24 +0900 Subject: [PATCH] Don't send CONNECTION_CLOSE if client has not sent anything --- lib/ngtcp2_conn.c | 1 + tests/ngtcp2_conn_test.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c index ca7123d3..a3716ea1 100644 --- a/lib/ngtcp2_conn.c +++ b/lib/ngtcp2_conn.c @@ -8594,6 +8594,7 @@ ngtcp2_ssize ngtcp2_conn_write_connection_close(ngtcp2_conn *conn, } switch (conn->state) { + case NGTCP2_CS_CLIENT_INITIAL: case NGTCP2_CS_CLOSING: case NGTCP2_CS_DRAINING: return NGTCP2_ERR_INVALID_STATE; diff --git a/tests/ngtcp2_conn_test.c b/tests/ngtcp2_conn_test.c index df149bb1..5218323e 100644 --- a/tests/ngtcp2_conn_test.c +++ b/tests/ngtcp2_conn_test.c @@ -5243,6 +5243,10 @@ void test_ngtcp2_conn_write_connection_close(void) { /* Client only Initial key */ setup_handshake_client(&conn); + spktlen = ngtcp2_conn_write_pkt(conn, NULL, buf, sizeof(buf), 0); + + CU_ASSERT(spktlen > 0); + spktlen = ngtcp2_conn_write_connection_close(conn, NULL, buf, sizeof(buf), NGTCP2_NO_ERROR, 0); @@ -5259,6 +5263,10 @@ void test_ngtcp2_conn_write_connection_close(void) { /* Client has Initial and Handshake keys */ setup_handshake_client(&conn); + spktlen = ngtcp2_conn_write_pkt(conn, NULL, buf, sizeof(buf), 0); + + CU_ASSERT(spktlen > 0); + ngtcp2_conn_install_tx_handshake_key(conn, null_key, null_iv, null_hp_key, sizeof(null_key), sizeof(null_iv)); ngtcp2_conn_set_aead_overhead(conn, NGTCP2_FAKE_AEAD_OVERHEAD); -- GitLab