Raw sockets: Various fixes for closing, free connections, TX from Daniel Lazo Sitzer

This commit is contained in:
Gregory Nutt 2014-06-18 09:47:08 -06:00
parent 04e564c9c3
commit 28c4cf6d5a
2 changed files with 18 additions and 5 deletions

View File

@ -164,13 +164,26 @@ int psock_socket(int domain, int type, int protocol, FAR struct socket *psock)
#ifdef CONFIG_NET_PKT #ifdef CONFIG_NET_PKT
case SOCK_RAW: case SOCK_RAW:
{ {
/* Allocate the packet socket connection structure and save
* in the new socket instance.
*/
struct uip_pkt_conn *conn = uip_pktalloc(); struct uip_pkt_conn *conn = uip_pktalloc();
if (conn) if (!conn)
{ {
DEBUGASSERT(conn->crefs == 0); /* Failed to reserve a connection structure */
psock->s_conn = conn;
conn->crefs = 1; goto errout;
} }
/* Set the reference count on the connection structure. This
* reference count will be increment only if the socket is
* dup'ed
*/
DEBUGASSERT(conn->crefs == 0);
psock->s_conn = conn;
conn->crefs = 1;
} }
break; break;
#endif #endif

View File

@ -85,7 +85,7 @@ static int uip_pollpktconnections(struct uip_driver_s *dev,
/* Call back into the driver */ /* Call back into the driver */
callback(dev); bstop = callback(dev);
} }
return bstop; return bstop;