You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/03/28 15:26:44 UTC
[incubator-nuttx] 02/02: local_socket: default set block mode if accept() a new socket
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit ad9ba8f454419d04d365bc0784968cebfe7e5dd8
Author: ligd <li...@xiaomi.com>
AuthorDate: Wed Dec 8 23:27:39 2021 +0800
local_socket: default set block mode if accept() a new socket
reference:
https: //man7.org/linux/man-pages/man2/accept.2.html
1. default set block mode if accept() a new socket
2. local_socket support FIONBIO
Signed-off-by: ligd <li...@xiaomi.com>
---
net/local/local_accept.c | 6 ++----
net/local/local_sockif.c | 11 +++++++++++
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/net/local/local_accept.c b/net/local/local_accept.c
index 47551ed..5a2bed2 100644
--- a/net/local/local_accept.c
+++ b/net/local/local_accept.c
@@ -181,8 +181,7 @@ int local_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
* block.
*/
- ret = local_open_server_tx(
- conn, _SS_ISNONBLOCK(server->lc_conn.s_flags));
+ ret = local_open_server_tx(conn, false);
if (ret < 0)
{
nerr("ERROR: Failed to open write-only FIFOs for %s: %d\n",
@@ -201,8 +200,7 @@ int local_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
* for writing.
*/
- ret = local_open_server_rx(
- conn, _SS_ISNONBLOCK(server->lc_conn.s_flags));
+ ret = local_open_server_rx(conn, false);
if (ret < 0)
{
nerr("ERROR: Failed to open read-only FIFOs for %s: %d\n",
diff --git a/net/local/local_sockif.c b/net/local/local_sockif.c
index 776b6f9..547f029 100644
--- a/net/local/local_sockif.c
+++ b/net/local/local_sockif.c
@@ -718,6 +718,17 @@ static int local_ioctl(FAR struct socket *psock, int cmd,
switch (cmd)
{
+ case FIONBIO:
+ if (conn->lc_infile.f_inode != NULL)
+ {
+ ret = file_ioctl(&conn->lc_infile, cmd, arg);
+ }
+
+ if (ret >= 0 && conn->lc_outfile.f_inode != NULL)
+ {
+ ret = file_ioctl(&conn->lc_outfile, cmd, arg);
+ }
+ break;
case FIONREAD:
if (conn->lc_infile.f_inode != NULL)
{