From 20851a57a4489f0af5d6132af514f6126ef18a73 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Wed, 2 Dec 2020 14:54:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=20=E5=A2=9E=E5=8A=A0socket=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E7=9A=84type=E8=BD=AC=E6=8D=A2=202.=20=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3recvfrom=E5=87=BD=E6=95=B0=E7=9A=84from=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=A4=8D=E5=88=B6=E6=96=B9=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp_syscall.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index fb89fce9ce..8a764598ac 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1046,9 +1046,9 @@ int sys_recvfrom(int socket, void *mem, size_t len, int flags, if (from) { struct sockaddr sa; - sockaddr_tolwip(from, &sa); ret = recvfrom(socket, kmem, len, flgs, &sa, fromlen); + sockaddr_tomusl(&sa, from); } else ret = recvfrom(socket, kmem, len, flgs, NULL, NULL); @@ -1060,10 +1060,12 @@ int sys_recvfrom(int socket, void *mem, size_t len, int flags, #else if (from) { + int ret; struct sockaddr sa; - sockaddr_tolwip(from, &sa); - return recvfrom(socket, mem, len, flgs, &sa, fromlen); + ret = recvfrom(socket, mem, len, flgs, &sa, fromlen); + sockaddr_tomusl(&sa, from); + return ret; } return recvfrom(socket, mem, len, flags, NULL, NULL); @@ -1135,10 +1137,28 @@ int sys_send(int socket, const void *dataptr, size_t size, int flags) int sys_socket(int domain, int type, int protocol) { + int fd; + int nonblock = 0; /* not support SOCK_CLOEXEC type */ if (type & SOCK_CLOEXEC) type &= ~SOCK_CLOEXEC; + if (type & SOCK_NONBLOCK) + { + nonblock = 1; + type &= ~SOCK_NONBLOCK; + } + + fd = socket(domain, type, protocol); + if (fd < 0) + { + goto out; + } + if (nonblock) + { + fcntl(fd, F_SETFL, O_NONBLOCK); + } - return socket(domain, type, protocol); +out: + return fd; } int sys_closesocket(int socket) -- Gitee From d9cc7482ddc3fc2da56db87851402622cda574f7 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Wed, 2 Dec 2020 15:16:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/lwp/lwp_syscall.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index 8a764598ac..bd7ddb5cbb 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1060,8 +1060,8 @@ int sys_recvfrom(int socket, void *mem, size_t len, int flags, #else if (from) { - int ret; - struct sockaddr sa; + int ret = -1; + struct sockaddr sa = {0}; ret = recvfrom(socket, mem, len, flgs, &sa, fromlen); sockaddr_tomusl(&sa, from); -- Gitee