Index: uspace/srv/net/tcp/service.c
===================================================================
--- uspace/srv/net/tcp/service.c	(revision 1d4b81591a929b53375c465b56682d296889dd8e)
+++ uspace/srv/net/tcp/service.c	(revision 309469de3bd19fbad3fec33c420c02d88b8ba687)
@@ -783,4 +783,39 @@
 
 #include <mem.h>
+
+static void tcp_client_init(tcp_client_t *client)
+{
+	memset(client, 0, sizeof(tcp_client_t));
+	client->sess = NULL;
+	list_initialize(&client->cconn);
+	list_initialize(&client->clst);
+}
+
+static void tcp_client_fini(tcp_client_t *client)
+{
+	tcp_cconn_t *cconn;
+	size_t n;
+
+	n = list_count(&client->cconn);
+	if (n != 0) {
+		log_msg(LOG_DEFAULT, LVL_WARN, "Client with %zu active "
+		    "connections closed session", n);
+
+		while (!list_empty(&client->cconn)) {
+			cconn = list_get_instance(list_first(&client->cconn),
+			    tcp_cconn_t, lclient);
+			tcp_uc_close(cconn->conn);
+			tcp_cconn_destroy(cconn);
+		}
+	}
+
+	n = list_count(&client->clst);
+	if (n != 0) {
+		log_msg(LOG_DEFAULT, LVL_WARN, "Client with %zu active "
+		    "listeners closed session", n);
+		/* XXX Destroy listeners */
+	}
+}
+
 static void tcp_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
 {
@@ -793,9 +828,5 @@
 	    &client);
 
-	memset(&client, 0, sizeof(client));
-	client.sess = NULL;
-	list_initialize(&client.cconn);
-	list_initialize(&client.clst);
-//	list_initialize(&client.crcv_queue);
+	tcp_client_init(&client);
 
 	while (true) {
@@ -810,5 +841,5 @@
 			/* The other side has hung up */
 			async_answer_0(callid, EOK);
-			return;
+			break;
 		}
 
@@ -852,6 +883,7 @@
 		}
 	}
-	log_msg(LOG_DEFAULT, LVL_DEBUG,
-	    "tcp_client_conn TERMINATED ***************************");
+
+	log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_client_conn TERMINATED");
+	tcp_client_fini(&client);
 }
 
Index: uspace/srv/net/udp/service.c
===================================================================
--- uspace/srv/net/udp/service.c	(revision 1d4b81591a929b53375c465b56682d296889dd8e)
+++ uspace/srv/net/udp/service.c	(revision 309469de3bd19fbad3fec33c420c02d88b8ba687)
@@ -493,4 +493,5 @@
 {
 	udp_client_t client;
+	size_t n;
 
 	/* Accept the connection */
@@ -513,5 +514,5 @@
 			/* The other side has hung up */
 			async_answer_0(callid, EOK);
-			return;
+			break;
 		}
 
@@ -543,4 +544,15 @@
 		}
 	}
+
+	log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_client_conn: terminated");
+
+	n = list_count(&client.cassoc);
+	if (n != 0) {
+		log_msg(LOG_DEFAULT, LVL_WARN, "udp_client_conn: "
+		    "Client with %zu active associations closed session.", n);
+		/* XXX Clean up */
+	}
+
+	/* XXX Clean up client receive queue */
 }
 
