9
0
Fork 0

Fix reference counting errors

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@2056 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo 2009-09-15 17:17:51 +00:00
parent b458482f26
commit 0d8f56e197
4 changed files with 16 additions and 0 deletions

View File

@ -872,3 +872,10 @@
stdout to output debug data. That works fine unless (1) the dbg() macro
is interrupt logic and the interrupted task has redirected stdout! Most
changes were in uIP.
* net/uip/uip_tcpinput.c. Connection reference count was not being set correctly
when a socket is created by accepting a new connection. Since the reference
count is bad, such sockets are not successfully duplicated when being passed
to new tasks.
* net/net_clone.c. Similarly, after a socket is cloned, its reference count
was not being initialized.

View File

@ -1532,6 +1532,12 @@ nuttx-0.4.11 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
* Changed lots of occurrents of debug macro dbg() to lldbg(). dbg() uses
stdout to output debug data. That works fine unless (1) the dbg() macro
is interrupt logic and the interrupted task has redirected stdout! Most
* net/uip/uip_tcpinput.c. Connection reference count was not being set correctly
when a socket is created by accepting a new connection. Since the reference
count is bad, such sockets are not successfully duplicated when being passed
to new tasks.
* net/net_clone.c. Similarly, after a socket is cloned, its reference count
was not being initialized.
pascal-0.1.3 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>

View File

@ -86,6 +86,7 @@ int net_clone(FAR struct socket *psock1, FAR struct socket *psock2)
/* Increment the reference count on the connection */
DEBUGASSERT(psock2->s_conn);
psock2->s_crefs = 1; /* One reference on the new socket itself */
#ifdef CONFIG_NET_TCP
if (psock2->s_type == SOCK_STREAM)

View File

@ -167,6 +167,8 @@ void uip_tcpinput(struct uip_driver_s *dev)
*/
conn->tcpstateflags = UIP_ESTABLISHED;
conn->crefs = 1;
if (uip_accept(dev, conn, tmp16) != OK)
{
/* No, then we have to give the connection back */