From 6ef7435082c8eec29ed603895a8626d23ecea5f2 Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Thu, 11 Mar 2021 12:26:20 +0800 Subject: [PATCH] net/tcp: correct the cache output Change-Id: I30e9352ca9c032e707a86f327c902a976f0cb375 Signed-off-by: chao.an --- net/tcp/tcp_input.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/net/tcp/tcp_input.c b/net/tcp/tcp_input.c index 330c21ca643..caa15542a35 100644 --- a/net/tcp/tcp_input.c +++ b/net/tcp/tcp_input.c @@ -521,6 +521,7 @@ found: dev->d_len += hdrlen; tcp_input_cache(dev, conn, iplen); + dev->d_len -= hdrlen; tcp_send(dev, conn, TCP_ACK, tcpiplen); return; @@ -1165,6 +1166,12 @@ static void tcp_process_cache(FAR struct net_driver_s *dev, uint8_t domain, tcp_input(dev, domain, iplen, NULL); + if (dev->d_len > 0) + { + d_len = dev->d_len; + memcpy(d_buf, dev->d_buf, d_len); + } + iob_free_queue(iob, &conn->pendingahead, IOBUSER_NET_TCP_PENDINGAHEAD);