Index: uspace/srv/net/tcp/conn.c
===================================================================
--- uspace/srv/net/tcp/conn.c	(revision 9362cc2a593eea1bd76fdfbcaeae07cb694a0809)
+++ uspace/srv/net/tcp/conn.c	(revision 8dc9b72a927498fd8dbd6bb27c6cd28f5b3eb14b)
@@ -322,4 +322,5 @@
 	assert(old_state != st_closed);
 	if (nstate == st_closed) {
+		tcp_conn_remove(conn);
 		/* Drop one reference for now being in closed state */
 		tcp_conn_delref(conn);
@@ -882,5 +883,4 @@
 	if (conn->fin_is_acked) {
 		log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: FIN acked -> Closed", conn->name);
-		tcp_conn_remove(conn);
 		tcp_conn_state_set(conn, st_closed);
 		return cp_done;
@@ -1283,5 +1283,4 @@
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: TW Timeout -> Closed", conn->name);
-	tcp_conn_remove(conn);
 	tcp_conn_state_set(conn, st_closed);
 
Index: uspace/srv/net/tcp/service.c
===================================================================
--- uspace/srv/net/tcp/service.c	(revision 9362cc2a593eea1bd76fdfbcaeae07cb694a0809)
+++ uspace/srv/net/tcp/service.c	(revision 8dc9b72a927498fd8dbd6bb27c6cd28f5b3eb14b)
@@ -875,4 +875,5 @@
 			    tcp_cconn_t, lclient);
 			tcp_uc_close(cconn->conn);
+			tcp_uc_delete(cconn->conn);
 			tcp_cconn_destroy(cconn);
 		}
Index: uspace/srv/net/tcp/ucall.c
===================================================================
--- uspace/srv/net/tcp/ucall.c	(revision 9362cc2a593eea1bd76fdfbcaeae07cb694a0809)
+++ uspace/srv/net/tcp/ucall.c	(revision 8dc9b72a927498fd8dbd6bb27c6cd28f5b3eb14b)
@@ -258,5 +258,4 @@
 		log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - listen/syn_sent");
 		tcp_conn_reset(conn);
-		tcp_conn_remove(conn);
 		tcp_conn_unlock(conn);
 		return TCP_EOK;
