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 */ 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 */ /* Connection-specific content may follow */
}; };
@ -251,7 +257,6 @@ struct socket
/* Socket options */ /* Socket options */
#ifdef CONFIG_NET_SOCKOPTS #ifdef CONFIG_NET_SOCKOPTS
int16_t s_error; /* Last error that occurred on this socket */
sockopt_t s_options; /* Selected socket options */ sockopt_t s_options; /* Selected socket options */
socktimeo_t s_rcvtimeo; /* Receive timeout value (in deciseconds) */ socktimeo_t s_rcvtimeo; /* Receive timeout value (in deciseconds) */
socktimeo_t s_sndtimeo; /* Send 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; return -EINVAL;
} }
*(FAR int *)value = (int)psock->s_error; *(FAR int *)value = (int)conn->s_error;
psock->s_error = 0; conn->s_error = 0;
} }
break; 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) if (psock == NULL || psock->s_conn == NULL)
{ {
nerr("ERROR: Invalid socket\n"); nerr("ERROR: Invalid socket\n");
psock->s_error = EBADF;
return -EBADF; return -EBADF;
} }
@ -134,7 +133,8 @@ ssize_t psock_sendfile(FAR struct socket *psock, FAR struct file *infile,
if (ret < 0) if (ret < 0)
{ {
psock->s_error = -ret; FAR struct socket_conn_s *conn = psock->s_conn;
conn->s_error = -ret;
} }
return ret; return ret;

View File

@ -95,9 +95,10 @@
# define _SO_SETERRNO(s,e) \ # define _SO_SETERRNO(s,e) \
do \ 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); \ set_errno(e); \
} \ } \