You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ma...@apache.org on 2022/11/23 12:27:23 UTC
[incubator-nuttx] branch master updated: net/usrsock: fix get/setsockopt issue about usrsock protocol
This is an automated email from the ASF dual-hosted git repository.
masayuki pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new d5b08a7ef1 net/usrsock: fix get/setsockopt issue about usrsock protocol
d5b08a7ef1 is described below
commit d5b08a7ef1797466ae79bd9845c5ba41c471e539
Author: dongjiuzhu1 <do...@xiaomi.com>
AuthorDate: Wed Nov 23 18:11:11 2022 +0800
net/usrsock: fix get/setsockopt issue about usrsock protocol
Signed-off-by: dongjiuzhu1 <do...@xiaomi.com>
---
net/socket/getsockopt.c | 13 ++++++++++++-
net/socket/setsockopt.c | 14 +++++++++++++-
net/usrsock/usrsock_getsockopt.c | 2 +-
net/usrsock/usrsock_setsockopt.c | 4 ----
4 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/net/socket/getsockopt.c b/net/socket/getsockopt.c
index f2f45e73e2..e2f815b55c 100644
--- a/net/socket/getsockopt.c
+++ b/net/socket/getsockopt.c
@@ -33,6 +33,7 @@
#include <errno.h>
#include "socket/socket.h"
+#include "usrsock/usrsock.h"
#include "utils/utils.h"
/****************************************************************************
@@ -123,9 +124,19 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option,
net_dsec2timeval(timeo, (struct timeval *)value);
*value_len = sizeof(struct timeval);
+ return OK;
}
- break;
+ }
+#ifdef CONFIG_NET_USRSOCK
+ if (psock->s_type == SOCK_USRSOCK_TYPE)
+ {
+ return -ENOPROTOOPT;
+ }
+#endif
+
+ switch (option)
+ {
case SO_ACCEPTCONN: /* Reports whether socket listening is enabled */
{
if (*value_len < sizeof(int))
diff --git a/net/socket/setsockopt.c b/net/socket/setsockopt.c
index a7ede25744..e2a13af450 100644
--- a/net/socket/setsockopt.c
+++ b/net/socket/setsockopt.c
@@ -38,6 +38,7 @@
#include <netdev/netdev.h>
#include "socket/socket.h"
+#include "usrsock/usrsock.h"
#include "utils/utils.h"
/****************************************************************************
@@ -130,9 +131,20 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option,
{
_SO_SETOPT(conn->s_options, option);
}
+
+ return OK;
}
- break;
+ }
+#ifdef CONFIG_NET_USRSOCK
+ if (psock->s_type == SOCK_USRSOCK_TYPE)
+ {
+ return -ENOPROTOOPT;
+ }
+#endif
+
+ switch (option)
+ {
case SO_BROADCAST: /* Permits sending of broadcast messages */
case SO_DEBUG: /* Enables recording of debugging information */
case SO_DONTROUTE: /* Requests outgoing messages bypass standard routing */
diff --git a/net/usrsock/usrsock_getsockopt.c b/net/usrsock/usrsock_getsockopt.c
index 07f57a26e8..393f79dd20 100644
--- a/net/usrsock/usrsock_getsockopt.c
+++ b/net/usrsock/usrsock_getsockopt.c
@@ -189,7 +189,7 @@ int usrsock_getsockopt(FAR struct socket *psock, int level, int option,
*value_len = sizeof(int);
return OK;
}
- else
+ else if (option == SO_RCVTIMEO || option == SO_SNDTIMEO)
{
return -ENOPROTOOPT;
}
diff --git a/net/usrsock/usrsock_setsockopt.c b/net/usrsock/usrsock_setsockopt.c
index 922da98e27..3fc2c16c13 100644
--- a/net/usrsock/usrsock_setsockopt.c
+++ b/net/usrsock/usrsock_setsockopt.c
@@ -174,10 +174,6 @@ int usrsock_setsockopt(FAR struct socket *psock, int level, int option,
{
return -ENOPROTOOPT;
}
- else
- {
- return -EINVAL;
- }
}
net_lock();