diff --git a/components/net/sal_socket/dfs_net/dfs_net.c b/components/net/sal_socket/dfs_net/dfs_net.c index 0d88674105868a567f571914b23f69f0eea90063..f8c4b4a91f90a1be19b9f4f1ac1f21cafadfd172 100644 --- a/components/net/sal_socket/dfs_net/dfs_net.c +++ b/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) { - 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)