diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-03-06 14:47:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-06 14:47:37 +0100 |
commit | 97774f6f69a5566a526c161411ecdf34a5a90b14 (patch) | |
tree | 822e398f89f1e4e9af9638454d0994d3d5785e68 /thirdparty/libwebsockets/lib/plat/unix/unix-pipe.c | |
parent | 9b5c6f539b0049cbcf12507167eb028013219c45 (diff) | |
parent | 6d64a54d75ca0ad2bfd11a8acc3aeb2444b60cee (diff) | |
download | redot-engine-97774f6f69a5566a526c161411ecdf34a5a90b14.tar.gz |
Merge pull request #26688 from Faless/net/lws_3.1
Update libwebsockets to 3.1, fix IPv6 issues
Diffstat (limited to 'thirdparty/libwebsockets/lib/plat/unix/unix-pipe.c')
-rw-r--r-- | thirdparty/libwebsockets/lib/plat/unix/unix-pipe.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/thirdparty/libwebsockets/lib/plat/unix/unix-pipe.c b/thirdparty/libwebsockets/lib/plat/unix/unix-pipe.c new file mode 100644 index 0000000000..64ce253be6 --- /dev/null +++ b/thirdparty/libwebsockets/lib/plat/unix/unix-pipe.c @@ -0,0 +1,62 @@ +/* + * libwebsockets - small server side websockets and web server implementation + * + * Copyright (C) 2010-2018 Andy Green <andy@warmcat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation: + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#define _GNU_SOURCE +#include "core/private.h" + + +int +lws_plat_pipe_create(struct lws *wsi) +{ + struct lws_context_per_thread *pt = &wsi->context->pt[(int)wsi->tsi]; + +#if defined(LWS_HAVE_PIPE2) + return pipe2(pt->dummy_pipe_fds, O_NONBLOCK); +#else + return pipe(pt->dummy_pipe_fds); +#endif +} + +int +lws_plat_pipe_signal(struct lws *wsi) +{ + struct lws_context_per_thread *pt = &wsi->context->pt[(int)wsi->tsi]; + char buf = 0; + int n; + + n = write(pt->dummy_pipe_fds[1], &buf, 1); + + return n != 1; +} + +void +lws_plat_pipe_close(struct lws *wsi) +{ + struct lws_context_per_thread *pt = &wsi->context->pt[(int)wsi->tsi]; + + if (pt->dummy_pipe_fds[0] && pt->dummy_pipe_fds[0] != -1) + close(pt->dummy_pipe_fds[0]); + if (pt->dummy_pipe_fds[1] && pt->dummy_pipe_fds[1] != -1) + close(pt->dummy_pipe_fds[1]); + + pt->dummy_pipe_fds[0] = pt->dummy_pipe_fds[1] = -1; +} + |