Index: uspace/srv/net/tcp/sock.c
===================================================================
--- uspace/srv/net/tcp/sock.c	(revision f4a27304e844833aa9099ff8d5c0dc1dacb26f19)
+++ uspace/srv/net/tcp/sock.c	(revision 8b863a629c2a1c274eeb1ea973a7ac4fead954cd)
@@ -882,4 +882,5 @@
 	tcp_sockdata_t *socket;
 	tcp_error_t trc;
+	int i;
 	int rc;
 
@@ -897,4 +898,5 @@
 
 	if (socket->conn != NULL) {
+		/* Close connection */
 		trc = tcp_uc_close(socket->conn);
 		if (trc != TCP_EOK && trc != TCP_ENOTEXIST) {
@@ -905,4 +907,20 @@
 	}
 
+	if (socket->lconn != NULL) {
+		/* Close listening connections */
+		for (i = 0; i < socket->backlog; i++) {
+			tcp_uc_set_cstate_cb(socket->lconn[i]->conn, NULL, NULL);
+			trc = tcp_uc_close(socket->lconn[i]->conn);
+			if (trc != TCP_EOK && trc != TCP_ENOTEXIST) {
+				fibril_mutex_unlock(&socket->lock);
+				async_answer_0(callid, EBADF);
+				return;
+			}
+
+			free(socket->lconn[i]);
+			socket->lconn[i] = NULL;
+		}
+	}
+
 	/* Grab recv_buffer_lock because of CV wait in tcp_sock_recv_fibril() */
 	fibril_mutex_lock(&socket->recv_buffer_lock);
