fjpanag commented on code in PR #7525:
URL: https://github.com/apache/nuttx/pull/7525#discussion_r1038967034


##########
net/tcp/tcp_conn.c:
##########
@@ -836,10 +863,25 @@ void tcp_free(FAR struct tcp_conn_s *conn)
     }
 #endif
 
-  /* Mark the connection available and put it into the free list */
+  /* Mark the connection available. */
 
   conn->tcpstateflags = TCP_CLOSED;
-  dq_addlast(&conn->sconn.node, &g_free_tcp_connections);
+
+  /* Check if this is a preallocated connection to store it in the free
+   * connections list, else deallocate it.
+   */
+
+#ifdef CONFIG_NET_ALLOC_CONNS
+  if ((conn->flags & TCP_PREALLOC) == 0)
+    {
+      kmm_free(conn);

Review Comment:
   > One simple approach is:
   > 
   > 1. Don't preallocate conn in startup instead
   > 2. Put conn to free list if free list is smaller than 
NET_TCP_PREALLOC_CONNS
   > 3. Call kmm_free if the free list is larger than NET_TCP_PREALLOC_CONNS
   > 
   > So, we don't need flag to distinguish whether conn is preallocate or not.
   
   This is what I thought first, but this is not working.  
   We need to preserve the exact same connections allocated during init. If 
not, heap fragmentation will happen. The preallocated list will serve 
absolutely no purpose.



-- 
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: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to