net/tcp: Same change to tcp_send_buffered.c probably also applies to tcp_sendfile.c.

This commit is contained in:
Gregory Nutt 2017-10-19 16:31:28 -06:00
parent 7d62a74915
commit 8c11a73d33

View File

@ -223,11 +223,25 @@ static uint16_t ack_eventhandler(FAR struct net_driver_s *dev,
else if ((flags & TCP_DISCONN_EVENTS) != 0)
{
FAR struct socket *psock = pstate->snd_sock;
nwarn("WARNING: Lost connection\n");
/* We could get here recursively through the callback actions of
* tcp_lost_connection(). So don't repeat that action if we have
* already been disconnected.
*/
DEBUGASSERT(psock != NULL);
if (_SS_ISCONNECTED(psock->s_flags))
{
/* Report not connected */
tcp_lost_connection(psock, pstate->snd_ackcb, flags);
}
/* Report not connected */
tcp_lost_connection(pstate->snd_sock, pstate->snd_ackcb, flags);
pstate->snd_sent = -ENOTCONN;
}