Fix reference counting errors
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2056 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
65e44828cf
commit
713c8d5965
@ -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.
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user