Networking: Start the network monitor for a socket when a TCP socket is dup'ed.
This commit is contained in:
parent
9db65dea78
commit
d40ee8e79d
@ -38,7 +38,6 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#ifdef CONFIG_NET
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <errno.h>
|
||||
@ -48,8 +47,11 @@
|
||||
#include <nuttx/net/net.h>
|
||||
#include <nuttx/net/udp.h>
|
||||
|
||||
#include "tcp/tcp.h"
|
||||
#include "socket/socket.h"
|
||||
|
||||
#ifdef CONFIG_NET
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
@ -101,6 +103,15 @@ int net_clone(FAR struct socket *psock1, FAR struct socket *psock2)
|
||||
DEBUGASSERT(psock2->s_sockif != NULL && psock2->s_sockif->si_addref != NULL);
|
||||
psock2->s_sockif->si_addref(psock2);
|
||||
|
||||
#ifdef NET_TCP_HAVE_STACK
|
||||
/* For connected socket types, it is necessary to also start the network monitor so
|
||||
* that the newly cloned socket can receive a notification if the network connection
|
||||
* is lost.
|
||||
*/
|
||||
|
||||
ret = tcp_start_monitor(psock2);
|
||||
#endif
|
||||
|
||||
net_unlock();
|
||||
return ret;
|
||||
}
|
||||
|
@ -354,5 +354,24 @@ int net_timeo(systime_t start_time, socktimeo_t timeo);
|
||||
ssize_t psock_send(FAR struct socket *psock, FAR const void *buf, size_t len,
|
||||
int flags);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: net_clone
|
||||
*
|
||||
* Description:
|
||||
* Performs the low level, common portion of net_dupsd() and net_dupsd2()
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock1 - The existing socket that is being cloned.
|
||||
* psock2 - A reference to an uninitialized socket structure alloated by
|
||||
* the caller.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int net_clone(FAR struct socket *psock1, FAR struct socket *psock2);
|
||||
|
||||
#endif /* CONFIG_NET */
|
||||
#endif /* _NET_SOCKET_SOCKET_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* net/tcp/tcp_callback.c
|
||||
*
|
||||
* Copyright (C) 2007-2009, 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2007-2009, 2014, 2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -39,8 +39,6 @@
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#if defined(CONFIG_NET) && defined(CONFIG_NET_TCP)
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <debug.h>
|
||||
@ -53,6 +51,8 @@
|
||||
#include "devif/devif.h"
|
||||
#include "tcp/tcp.h"
|
||||
|
||||
#ifdef NET_TCP_HAVE_STACK
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
@ -279,4 +279,4 @@ uint16_t tcp_datahandler(FAR struct tcp_conn_s *conn, FAR uint8_t *buffer,
|
||||
}
|
||||
#endif /* CONFIG_NET_TCP_READAHEAD */
|
||||
|
||||
#endif /* CONFIG_NET && CONFIG_NET_TCP */
|
||||
#endif /* NET_TCP_HAVE_STACK */
|
||||
|
@ -38,7 +38,6 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#if defined(CONFIG_NET) && defined(CONFIG_NET_TCP)
|
||||
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
@ -357,5 +356,3 @@ void tcp_lost_connection(FAR struct socket *psock, uint16_t flags)
|
||||
}
|
||||
|
||||
#endif /* NET_TCP_HAVE_STACK */
|
||||
|
||||
#endif /* CONFIG_NET && CONFIG_NET_TCP */
|
||||
|
Loading…
Reference in New Issue
Block a user