Browse Source

[net][sal] Fix fcntl() function not support F_GETFL/F_SETFL operations for socketfd.

Signed-off-by: chenyong <1521761801@qq.com>
chenyong 6 years ago
parent
commit
9abdebbec9
1 changed files with 14 additions and 1 deletions
  1. 14 1
      components/net/sal_socket/impl/af_inet_lwip.c

+ 14 - 1
components/net/sal_socket/impl/af_inet_lwip.c

@@ -217,6 +217,19 @@ static int inet_getsockname(int socket, struct sockaddr *name, socklen_t *namele
     return lwip_getsockname(socket, name, namelen);
 }
 
+int inet_ioctlsocket(int socket, long cmd, void *arg)
+{
+    switch (cmd)
+    {
+    case F_GETFL:
+    case F_SETFL:
+        return lwip_fcntl(socket, cmd, (int) arg); 
+
+    default:
+        return lwip_ioctl(socket, cmd, arg);
+    }
+}
+
 #ifdef SAL_USING_POSIX
 static int inet_poll(struct dfs_fd *file, struct rt_pollreq *req)
 {
@@ -278,7 +291,7 @@ static const struct sal_socket_ops lwip_socket_ops =
     lwip_shutdown,
     lwip_getpeername,
     inet_getsockname,
-    lwip_ioctl,
+    inet_ioctlsocket,
 #ifdef SAL_USING_POSIX
     inet_poll,
 #endif