From 02dc67982ce942e777b7eb6bd2c87e078e9a9da0 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Thu, 21 Aug 2014 16:24:36 +0200 Subject: [PATCH 2/6] use recv() and closesocket() on the cmd_fd on windows Signed-off-by: Nikos Mavrogiannopoulos --- library.c | 8 ++++---- ssl.c | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/library.c b/library.c index 8edf4c2..d4f59b3 100644 --- a/library.c +++ b/library.c @@ -151,8 +151,8 @@ void openconnect_vpninfo_free(struct openconnect_info *vpninfo) openconnect_close_https(vpninfo, 1); dtls_shutdown(vpninfo); if (vpninfo->cmd_fd_write != -1) { - close(vpninfo->cmd_fd); - close(vpninfo->cmd_fd_write); + closesocket(vpninfo->cmd_fd); + closesocket(vpninfo->cmd_fd_write); } #ifdef HAVE_ICONV @@ -451,8 +451,8 @@ SOCKET openconnect_setup_cmd_pipe(struct openconnect_info *vpninfo) #endif if (set_sock_nonblock(pipefd[0]) || set_sock_nonblock(pipefd[1])) { - close(pipefd[0]); - close(pipefd[1]); + closesocket(pipefd[0]); + closesocket(pipefd[1]); return CMD_PIPE_ERR; } vpninfo->cmd_fd = pipefd[0]; diff --git a/ssl.c b/ssl.c index 4b97cc5..ebce5fc 100644 --- a/ssl.c +++ b/ssl.c @@ -628,8 +628,13 @@ void check_cmd_fd(struct openconnect_info *vpninfo, fd_set *fds) return; } +#ifdef _WIN32 + if (recv(vpninfo->cmd_fd, &cmd, 1, 0) != 1) + return; +#else if (read(vpninfo->cmd_fd, &cmd, 1) != 1) return; +#endif switch (cmd) { case OC_CMD_CANCEL: -- 1.9.3