Fix connection close check in quic_client_interop_test_bin
The current connection close check only works if the server sends a
connection close in response to ours. The transport draft doesn't require
that a peer send a connection close in response to a connection close
(though it is the only frame type that can be sent once a connection enters
the closing state). It seems perfectly reasonable to declare the connection
close procedure has completed with a zero error code if we send a
connection close with a zero error code.
gfe-relnote: n/a (test-only tool change)
PiperOrigin-RevId: 293557827
Change-Id: I1fe90fd65703f061e7d920fb7f20380c0ed38162
diff --git a/quic/tools/quic_client_interop_test_bin.cc b/quic/tools/quic_client_interop_test_bin.cc
index 0ea2c7c..e3abbd1 100644
--- a/quic/tools/quic_client_interop_test_bin.cc
+++ b/quic/tools/quic_client_interop_test_bin.cc
@@ -251,26 +251,10 @@
}
if (connection->connected()) {
- test::QuicConnectionPeer::SendConnectionClosePacket(
- connection, QUIC_NO_ERROR, "Graceful close");
- const QuicTime close_start_time = epoll_clock.Now();
- static const auto close_timeout = QuicTime::Delta::FromSeconds(10);
- while (client->connected()) {
- client->epoll_network_helper()->RunEventLoop();
- if (epoll_clock.Now() - close_start_time >= close_timeout) {
- QUIC_LOG(ERROR) << "Timed out waiting for connection close";
- AttemptResumption(client.get());
- return;
- }
- }
- const QuicErrorCode received_error = client->session()->error();
- if (received_error == QUIC_NO_ERROR ||
- received_error == QUIC_PUBLIC_RESET) {
- InsertFeature(Feature::kConnectionClose);
- } else {
- QUIC_LOG(ERROR) << "Received error " << client->session()->error() << " "
- << client->session()->error_details();
- }
+ connection->CloseConnection(
+ QUIC_NO_ERROR, "Graceful close",
+ ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
+ InsertFeature(Feature::kConnectionClose);
}
AttemptResumption(client.get());