Sarthak-Pandey commented on code in PR #20627:
URL: https://github.com/apache/nuttx/pull/20627#discussion_r4412222078
##########
net/tcp/tcp_input.c:
##########
@@ -1649,15 +1853,34 @@ static void tcp_input(FAR struct net_driver_s *dev,
uint8_t domain,
* send, d_len must be set to 0.
*/
+#ifdef CONFIG_NET_TCPURGDATA
+ if ((flags & (TCP_NEWDATA | TCP_ACKDATA | TCP_URGDATA)) != 0)
+#else
if ((flags & (TCP_NEWDATA | TCP_ACKDATA)) != 0)
+#endif
{
dev->d_sndlen = 0;
/* Provide the packet to the application */
result = tcp_callback(dev, conn, flags);
- /* Send the response, ACKing the data or not, as appropriate */
+ /* Send the response, ACKing the data or not, as appropriate.
+ * If urgent data was received, ensure an ACK is sent even if
+ * d_len was 0.
+ */
+
+#ifdef CONFIG_NET_TCPURGDATA
+ if (urg_removed && dev->d_len == 0)
Review Comment:
Fixed. Updated `tcp_urg_input()` to advance `conn->rcvseq` by 1 immediately
whenever an urgent byte is stripped (for both pure urgent and mixed segments),
aligning `rcvseq` before `tcp_callback()` processes the out-of-order queue.
Removed the post-callback increment and the `urg_removed` parameter.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]