net/inet: move socket error into socket_conn_s
Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
parent
99cde13a11
commit
1659513edb
4 changed files with 13 additions and 7 deletions
|
@ -233,6 +233,12 @@ struct socket_conn_s
|
|||
|
||||
uint8_t s_flags; /* See _SF_* definitions */
|
||||
|
||||
/* Socket options */
|
||||
|
||||
#ifdef CONFIG_NET_SOCKOPTS
|
||||
int16_t s_error; /* Last error that occurred on this socket */
|
||||
#endif
|
||||
|
||||
/* Connection-specific content may follow */
|
||||
};
|
||||
|
||||
|
@ -251,7 +257,6 @@ struct socket
|
|||
/* Socket options */
|
||||
|
||||
#ifdef CONFIG_NET_SOCKOPTS
|
||||
int16_t s_error; /* Last error that occurred on this socket */
|
||||
sockopt_t s_options; /* Selected socket options */
|
||||
socktimeo_t s_rcvtimeo; /* Receive timeout value (in deciseconds) */
|
||||
socktimeo_t s_sndtimeo; /* Send timeout value (in deciseconds) */
|
||||
|
|
|
@ -242,8 +242,8 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
*(FAR int *)value = (int)psock->s_error;
|
||||
psock->s_error = 0;
|
||||
*(FAR int *)value = (int)conn->s_error;
|
||||
conn->s_error = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -113,7 +113,6 @@ ssize_t psock_sendfile(FAR struct socket *psock, FAR struct file *infile,
|
|||
if (psock == NULL || psock->s_conn == NULL)
|
||||
{
|
||||
nerr("ERROR: Invalid socket\n");
|
||||
psock->s_error = EBADF;
|
||||
return -EBADF;
|
||||
}
|
||||
|
||||
|
@ -134,7 +133,8 @@ ssize_t psock_sendfile(FAR struct socket *psock, FAR struct file *infile,
|
|||
|
||||
if (ret < 0)
|
||||
{
|
||||
psock->s_error = -ret;
|
||||
FAR struct socket_conn_s *conn = psock->s_conn;
|
||||
conn->s_error = -ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
@ -95,9 +95,10 @@
|
|||
# define _SO_SETERRNO(s,e) \
|
||||
do \
|
||||
{ \
|
||||
if (s != NULL) \
|
||||
if (s != NULL && (s)->s_conn != NULL) \
|
||||
{ \
|
||||
s->s_error = (int16_t)e; \
|
||||
FAR struct socket_conn_s *_conn = (s)->s_conn; \
|
||||
_conn->s_error = (int16_t)e; \
|
||||
} \
|
||||
set_errno(e); \
|
||||
} \
|
||||
|
|
Loading…
Reference in a new issue