Networking: Correct return value from psock_tcp_accept(). From SaeHie Park

This commit is contained in:
SaeHie Park 2015-08-25 07:15:21 -06:00 committed by Gregory Nutt
parent 79aa3d40b0
commit e983e547e1
2 changed files with 10 additions and 12 deletions

View File

@ -10879,3 +10879,6 @@
for the local loopback device (2015-08-24).
* drivers/net/loopback.c: Add basic prototype of a local loopback
device (2015-08-24).
* networking: Correct return value from psock_tcp_accept(). From
SaeHie Park (2015-08-25).

View File

@ -238,7 +238,6 @@ int psock_tcp_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
{
FAR struct tcp_conn_s *conn;
struct accept_s state;
int err = OK;
int ret;
DEBUGASSERT(psock && newconn);
@ -267,8 +266,7 @@ int psock_tcp_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
else if (_SS_ISNONBLOCK(psock->s_flags))
{
err = EAGAIN;
goto errout;
return -EAGAIN;
}
else
#endif
@ -314,7 +312,8 @@ int psock_tcp_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
* altered by intervening operations.
*/
err = get_errno();
ret = -get_errno();
DEBUGASSERT(ret < 0);
}
/* Make sure that no further interrupts are processed */
@ -334,27 +333,23 @@ int psock_tcp_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
if (state.acpt_result != 0)
{
err = state.acpt_result;
goto errout;
DEBUGASSERT(state.acpt_result > 0);
return -state.acpt_result;
}
/* If net_lockedwait failed, then we were probably reawakened by a
* signal. In this case, logic above will have set 'err' to the
* signal. In this case, logic above will have set 'ret' to the
* errno value returned by net_lockedwait().
*/
if (ret < 0)
{
goto errout;
return ret;
}
}
*newconn = (FAR void *)state.acpt_newconn;
return OK;
errout:
set_errno(err);
return ERROR;
}
#endif /* CONFIG_NET && CONFIG_NSOCKET_DESCRIPTORS && CONFIG_NET_TCP */