Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
红岛
rt-thread
提交
0d9b7d60
R
rt-thread
项目概览
红岛
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0d9b7d60
编写于
3月 05, 2019
作者:
Lawlieta
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[net][sal_socket] improve closesocke/shutdown error handling
Signed-off-by:
chenyong
<
1521761801@qq.com
>
上级
aa7166df
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
19 deletion
+43
-19
components/net/sal_socket/socket/net_sockets.c
components/net/sal_socket/socket/net_sockets.c
+43
-19
未找到文件。
components/net/sal_socket/socket/net_sockets.c
浏览文件 @
0d9b7d60
...
...
@@ -78,29 +78,39 @@ RTM_EXPORT(bind);
int
shutdown
(
int
s
,
int
how
)
{
int
socket
;
int
error
=
0
;
int
socket
=
-
1
;
struct
dfs_fd
*
d
;
socket
=
dfs_net_getsocket
(
s
);
if
(
socket
<
0
)
{
rt_set_errno
(
-
ENOTSOCK
);
return
-
1
;
}
d
=
fd_get
(
s
);
if
(
d
==
NULL
)
{
rt_set_errno
(
-
EBADF
);
return
-
1
;
}
socket
=
dfs_net_getsocket
(
s
);
if
(
sal_shutdown
(
socket
,
how
)
==
0
)
{
/* socket has been closed, delete it from file system fd */
fd_put
(
d
);
fd_put
(
d
);
return
0
;
error
=
0
;
}
else
{
rt_set_errno
(
-
ENOTSOCK
);
error
=
-
1
;
}
return
-
1
;
/* socket has been closed, delete it from file system fd */
fd_put
(
d
);
fd_put
(
d
);
return
error
;
}
RTM_EXPORT
(
shutdown
);
...
...
@@ -228,7 +238,7 @@ int socket(int domain, int type, int protocol)
rt_set_errno
(
-
ENOMEM
);
return
-
1
;
return
-
1
;
}
/* release the ref-count of fd */
...
...
@@ -240,25 +250,39 @@ RTM_EXPORT(socket);
int
closesocket
(
int
s
)
{
int
socket
=
dfs_net_getsocket
(
s
);
int
error
=
0
;
int
socket
=
-
1
;
struct
dfs_fd
*
d
;
socket
=
dfs_net_getsocket
(
s
);
if
(
socket
<
0
)
{
rt_set_errno
(
-
ENOTSOCK
);
return
-
1
;
}
d
=
fd_get
(
s
);
if
(
!
d
)
if
(
d
==
RT_NULL
)
{
rt_set_errno
(
-
EBADF
);
return
-
1
;
}
if
(
sal_closesocket
(
socket
)
==
0
)
{
/* socket has been closed, delete it from file system fd */
fd_put
(
d
);
fd_put
(
d
);
return
0
;
error
=
0
;
}
else
{
rt_set_errno
(
-
ENOTSOCK
);
error
=
-
1
;
}
return
-
1
;
/* socket has been closed, delete it from file system fd */
fd_put
(
d
);
fd_put
(
d
);
return
error
;
}
RTM_EXPORT
(
closesocket
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录