MYNEWT-745 Make native sockets nonblocking.

This prevents deadlock in the "no-signals" sim implementation.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/71811d43
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/71811d43
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/71811d43

Branch: refs/heads/bluetooth5
Commit: 71811d438c1c4722c09419646c4e6f198da1d1b2
Parents: cc1acfe
Author: Christopher Collins <[email protected]>
Authored: Tue May 9 18:05:53 2017 -0700
Committer: Christopher Collins <[email protected]>
Committed: Tue May 9 18:05:53 2017 -0700

----------------------------------------------------------------------
 net/ip/native_sockets/src/native_sock.c | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/71811d43/net/ip/native_sockets/src/native_sock.c
----------------------------------------------------------------------
diff --git a/net/ip/native_sockets/src/native_sock.c 
b/net/ip/native_sockets/src/native_sock.c
index 9e2d3d6..e0ecd79 100644
--- a/net/ip/native_sockets/src/native_sock.c
+++ b/net/ip/native_sockets/src/native_sock.c
@@ -250,6 +250,7 @@ native_sock_create(struct mn_socket **sp, uint8_t domain,
     struct native_sock_state *nss = &native_sock_state;
     struct native_sock *ns;
     int idx;
+    int rc;
 
     switch (domain) {
     case MN_PF_INET:
@@ -283,6 +284,11 @@ native_sock_create(struct mn_socket **sp, uint8_t domain,
     }
     os_sem_init(&ns->ns_sem, 0);
     idx = socket(domain, type, proto);
+
+    /* Make the socket nonblocking. */
+    rc = fcntl(idx, F_SETFL, fcntl(idx, F_GETFL, 0) | O_NONBLOCK);
+    assert(rc == 0);
+
     ns->ns_fd = idx;
     ns->ns_pf = domain;
     ns->ns_type = type;

Reply via email to