Index: uspace/srv/net/tcp/sock.c
===================================================================
--- uspace/srv/net/tcp/sock.c	(revision d786dea9d9aaba8b4b3995a8e94f0fc7fa935510)
+++ uspace/srv/net/tcp/sock.c	(revision 9094c0f2b96cb7212fb3fbf06eaeffff70792f26)
@@ -728,5 +728,13 @@
 	rc = async_data_read_finalize(rcallid, socket->recv_buffer, length);
 
-	socket->recv_buffer_used = 0;
+	socket->recv_buffer_used -= length;
+	log_msg(LVL_DEBUG, "tcp_sock_recvfrom: %zu left in buffer",
+	    socket->recv_buffer_used);
+	if (socket->recv_buffer_used > 0) {
+		memmove(socket->recv_buffer, socket->recv_buffer + length,
+		    socket->recv_buffer_used);
+		tcp_sock_notify_data(socket->sock_core);
+	}
+
 	fibril_condvar_broadcast(&socket->recv_buffer_cv);
 
