Skip to content

Connector doesn't drop closed connections that are ready to decode #123

Open
@drewdzzz

Description

@drewdzzz

Consider the following patch:

diff --git a/test/ClientTest.cpp b/test/ClientTest.cpp
index e606010..410b624 100644
--- a/test/ClientTest.cpp
+++ b/test/ClientTest.cpp
@@ -293,6 +293,10 @@ many_conn_ping(Connector<BUFFER, NetProvider> &client)
 	client.close(conn1);
 	client.close(conn2);
 	client.close(conn3);
+
+	/** All the connections are closed - we shouldn't get any here. */
+	conn_opt = client.waitAny(WAIT_TIMEOUT);
+	fail_if(conn_opt.has_value());
 }
 
 /** Single connection, errors in response. */

The test fails (with EpollNetProvider, at least) - it happens because ready to decode connections are still referenced by Connector. The fix is quite trivial, but we should investigate the state machine - I'm sure there are more places holding closed connections.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions