net/inet: move socket error into socket_conn_s

Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
chao.an 2022-02-08 11:04:52 +08:00 committed by Alan Carvalho de Assis
parent 99cde13a11
commit 1659513edb
4 changed files with 13 additions and 7 deletions

View file

@ -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) */

View file

@ -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;

View file

@ -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;

View file

@ -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); \
} \