|
@@ -6,7 +6,13 @@
|
|
|
#include "strutil.h"
|
|
|
#include "sockutil.h"
|
|
|
|
|
|
+#ifdef _WIN32
|
|
|
#include <MSWSock.h>
|
|
|
+#endif //_WIN32
|
|
|
+#include <winpr/file.h>
|
|
|
+#include <winpr/handle.h>
|
|
|
+#include <winpr/synch.h>
|
|
|
+#include <winpr/pipe.h>
|
|
|
|
|
|
#ifndef SO_UPDATE_CONNECT_CONTEXT
|
|
|
#define SO_UPDATE_CONNECT_CONTEXT 0x7010
|
|
@@ -54,25 +60,25 @@ typedef struct ioqueue_msg {
|
|
|
HANDLE evt; /* for send message */
|
|
|
}ioqueue_msg;
|
|
|
|
|
|
-#define HANDLE_TYPE_ACCEPTOR 0x01
|
|
|
-#define HANDLE_TYPE_TCPSOCK 0x02
|
|
|
+#define HANDLE_TYPE_ACCEPTOR 0x01
|
|
|
+#define HANDLE_TYPE_TCPSOCK 0x02
|
|
|
#define HANDLE_TYPE_UDPSOCK 0x03
|
|
|
-#define HANDLE_TYPE_FILE 0x04
|
|
|
+#define HANDLE_TYPE_FILE 0x04
|
|
|
#define HANDLE_TYPE_PIPEACCEPTOR 0x05
|
|
|
|
|
|
-#define OV_ACCEPT 0x01
|
|
|
-#define OV_CONNECT 0x02
|
|
|
+#define OV_ACCEPT 0x01
|
|
|
+#define OV_CONNECT 0x02
|
|
|
#define OV_SENDSOME 0x03
|
|
|
-#define OV_SENDN 0x04
|
|
|
+#define OV_SENDN 0x04
|
|
|
#define OV_RECVSOME 0x05
|
|
|
-#define OV_RECVN 0x06
|
|
|
-#define OV_SENDTO 0x07
|
|
|
+#define OV_RECVN 0x06
|
|
|
+#define OV_SENDTO 0x07
|
|
|
#define OV_RECVFROM 0x08
|
|
|
#define OV_READFILESOME 0x09
|
|
|
#define OV_WRITEFILESOME 0x0a
|
|
|
-#define OV_READFILEN 0x0b
|
|
|
-#define OV_WRITEFILEN 0x0c
|
|
|
-#define OV_RECVUNTIL 0x0d
|
|
|
+#define OV_READFILEN 0x0b
|
|
|
+#define OV_WRITEFILEN 0x0c
|
|
|
+#define OV_RECVUNTIL 0x0d
|
|
|
#define OV_CONNECTPIPE 0x0e
|
|
|
|
|
|
typedef struct ioqueue_base_overlapped_t {
|
|
@@ -209,6 +215,7 @@ static int nonblock_sock(SOCKET sock)
|
|
|
static int is_os_gte_xp() /* is os version greater and equal than xp */
|
|
|
{
|
|
|
static int yes = -1;
|
|
|
+#ifdef _WIN32
|
|
|
if (yes == -1) {
|
|
|
OSVERSIONINFO ver;
|
|
|
ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
|
@@ -217,6 +224,7 @@ static int is_os_gte_xp() /* is os version greater and equal than xp */
|
|
|
yes = 1;
|
|
|
}
|
|
|
}
|
|
|
+#endif//_WIN32
|
|
|
return yes;
|
|
|
}
|
|
|
|
|
@@ -249,7 +257,9 @@ static __inline void del_handler_list(ioqueue_handle_context *handle_ctx, ioqueu
|
|
|
|
|
|
static void ioqueue_handle_context_free(ioqueue_handle_context *handle_ctx)
|
|
|
{
|
|
|
- if (handle_ctx->type == HANDLE_TYPE_UDPSOCK || handle_ctx->type == HANDLE_TYPE_TCPSOCK || handle_ctx->type == HANDLE_TYPE_ACCEPTOR) {
|
|
|
+ if (handle_ctx->type == HANDLE_TYPE_UDPSOCK
|
|
|
+ || handle_ctx->type == HANDLE_TYPE_TCPSOCK
|
|
|
+ || handle_ctx->type == HANDLE_TYPE_ACCEPTOR) {
|
|
|
if (handle_ctx->u.sock != INVALID_SOCKET) {
|
|
|
closesocket(handle_ctx->u.sock);
|
|
|
handle_ctx->u.sock = INVALID_SOCKET;
|