Explorar o código

dfs_net_close增加多任务支持

shaojinchun %!s(int64=5) %!d(string=hai) anos
pai
achega
c222a6a451
Modificáronse 1 ficheiros con 9 adicións e 3 borrados
  1. 9 3
      components/net/sal_socket/dfs_net/dfs_net.c

+ 9 - 3
components/net/sal_socket/dfs_net/dfs_net.c

@@ -55,9 +55,15 @@ static int dfs_net_write(struct dfs_fd *file, const void *buf, size_t count)
 
 
 static int dfs_net_close(struct dfs_fd* file)
 static int dfs_net_close(struct dfs_fd* file)
 {
 {
-    int socket = (int) file->fnode->data;
-
-    return sal_closesocket(socket);
+    int socket;
+    int ret = 0;
+
+    if (file->fnode->ref_count == 1)
+    {
+        socket = (int) file->fnode->data;
+        ret = sal_closesocket(socket);
+    }
+    return ret;
 }
 }
 
 
 static int dfs_net_poll(struct dfs_fd *file, struct rt_pollreq *req)
 static int dfs_net_poll(struct dfs_fd *file, struct rt_pollreq *req)