diff options
Diffstat (limited to 'src/os')
-rw-r--r-- | src/os/unix/ngx_errno.h | 1 | ||||
-rw-r--r-- | src/os/unix/ngx_time.h | 2 | ||||
-rw-r--r-- | src/os/win32/ngx_errno.h | 22 | ||||
-rw-r--r-- | src/os/win32/ngx_files.c | 16 | ||||
-rw-r--r-- | src/os/win32/ngx_files.h | 14 | ||||
-rw-r--r-- | src/os/win32/ngx_init.c | 64 | ||||
-rw-r--r-- | src/os/win32/ngx_os_init.h | 2 | ||||
-rw-r--r-- | src/os/win32/ngx_socket.c | 70 | ||||
-rw-r--r-- | src/os/win32/ngx_socket.h | 4 | ||||
-rw-r--r-- | src/os/win32/ngx_time.h | 6 | ||||
-rw-r--r-- | src/os/win32/ngx_types.h | 1 |
11 files changed, 107 insertions, 95 deletions
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h index 91ac3ba69..feb9e4a08 100644 --- a/src/os/unix/ngx_errno.h +++ b/src/os/unix/ngx_errno.h @@ -5,6 +5,7 @@ #include <errno.h> #include <string.h> + typedef int ngx_err_t; #define NGX_ENOENT ENOENT diff --git a/src/os/unix/ngx_time.h b/src/os/unix/ngx_time.h index 5cd791d0e..4b5fa5949 100644 --- a/src/os/unix/ngx_time.h +++ b/src/os/unix/ngx_time.h @@ -24,7 +24,7 @@ void ngx_localtime(ngx_tm_t *tm); ngx_msec_t ngx_msec(void); /* STUB */ -#define ngx_time() time(NULL) +#define ngx_time() time(NULL) #endif /* _NGX_TIME_H_INCLUDED_ */ diff --git a/src/os/win32/ngx_errno.h b/src/os/win32/ngx_errno.h index 2378811fe..e94dbe066 100644 --- a/src/os/win32/ngx_errno.h +++ b/src/os/win32/ngx_errno.h @@ -3,22 +3,24 @@ #include <ngx_config.h> +#include <ngx_core.h> -typedef DWORD ngx_err_t; + +typedef DWORD ngx_err_t; #define ngx_errno GetLastError() #define ngx_socket_errno WSAGetLastError() #define ngx_set_socket_errno(err) WSASetLastError(err) -#define NGX_ENOENT ERROR_FILE_NOT_FOUND -#define NGX_EACCES ERROR_ACCESS_DENIED -#define NGX_EEXIST ERROR_FILE_EXISTS -#define NGX_ENOTDIR ERROR_PATH_NOT_FOUND -#define NGX_EAGAIN WSAEWOULDBLOCK -#define NGX_EINPROGRESS WSAEINPROGRESS -#define NGX_EADDRINUSE WSAEADDRINUSE -#define NGX_ECONNRESET ECONNRESET -#define NGX_ETIMEDOUT WSAETIMEDOUT +#define NGX_ENOENT ERROR_FILE_NOT_FOUND +#define NGX_EACCES ERROR_ACCESS_DENIED +#define NGX_EEXIST ERROR_FILE_EXISTS +#define NGX_ENOTDIR ERROR_PATH_NOT_FOUND +#define NGX_EAGAIN WSAEWOULDBLOCK +#define NGX_EINPROGRESS WSAEINPROGRESS +#define NGX_EADDRINUSE WSAEADDRINUSE +#define NGX_ECONNRESET ECONNRESET +#define NGX_ETIMEDOUT WSAETIMEDOUT int ngx_strerror_r(ngx_err_t err, char *errstr, size_t size); diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c index 60e132b2a..3734bdc83 100644 --- a/src/os/win32/ngx_files.c +++ b/src/os/win32/ngx_files.c @@ -1,9 +1,7 @@ #include <ngx_config.h> - #include <ngx_core.h> -#include <ngx_types.h> -#include <ngx_file.h> + ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) { @@ -18,3 +16,15 @@ ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) return n; } + + +int ngx_file_append_mode(ngx_fd_t *fd) +{ + if (SetFilePointer(fd, 0, NULL, FILE_END) == 0xFFFFFFFF) { + if (GetLastError() != NO_ERROR) { + return NGX_ERROR; + } + } + + return NGX_OK; +} diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h index 08525b992..a23c0e2a0 100644 --- a/src/os/win32/ngx_files.h +++ b/src/os/win32/ngx_files.h @@ -3,14 +3,12 @@ #include <ngx_config.h> - -#include <ngx_types.h> -#include <ngx_file.h> +#include <ngx_core.h> /* INVALID_FILE_ATTRIBUTES specified but never defined at least in VC6SP2 */ #ifndef INVALID_FILE_ATTRIBUTES -#define INVALID_FILE_ATTRIBUTES 0xFFFFFFFF +#define INVALID_FILE_ATTRIBUTES 0xFFFFFFFF #endif #define NGX_INVALID_FILE INVALID_HANDLE_VALUE @@ -19,7 +17,7 @@ #define ngx_open_file(name, access, create) \ - CreateFile(name, flags, \ + CreateFile(name, access, \ FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, \ NULL, create, FILE_FLAG_BACKUP_SEMANTICS, NULL) /* @@ -31,6 +29,11 @@ #define NGX_FILE_RDWR GENERIC_READ|GENERIC_WRITE #define NGX_FILE_CREATE_OR_OPEN OPEN_ALWAYS #define NGX_FILE_OPEN OPEN_EXISTING +#define NGX_FILE_APPEND 0 + + +int ngx_file_append_mode(ngx_fd_t fd); +#define ngx_file_append_mode_n "SetFilePointer()" #define ngx_open_tempfile(name, persistent) \ @@ -46,7 +49,6 @@ #define ngx_open_tempfile_n "CreateFile()" - #define ngx_close_file CloseHandle #define ngx_close_file_n "CloseHandle()" diff --git a/src/os/win32/ngx_init.c b/src/os/win32/ngx_init.c index 4f356a1c2..529233046 100644 --- a/src/os/win32/ngx_init.c +++ b/src/os/win32/ngx_init.c @@ -14,11 +14,73 @@ ngx_os_io_t ngx_os_io = { }; +/* Should these pointers be per protocol ? */ +LPFN_ACCEPTEX acceptex; +LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs; +LPFN_TRANSMITFILE transmitfile; + +static GUID ae_guid = WSAID_ACCEPTEX; +static GUID as_guid = WSAID_GETACCEPTEXSOCKADDRS; +static GUID tf_guid = WSAID_TRANSMITFILE; + + int ngx_os_init(ngx_log_t *log) { - if (ngx_init_sockets(log) == NGX_ERROR) { + DWORD bytes; + SOCKET s; + WSADATA wsd; + + /* init Winsock */ + + if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + "WSAStartup failed"); + return NGX_ERROR; + } + + ngx_log_error(NGX_LOG_INFO, log, 0, "max sockets: %d", wsd.iMaxSockets); + + /* get AcceptEx(), GetAcceptExSockAddrs() and TransmitFile() addresses */ + + s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0); + if (s == -1) { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + ngx_socket_n " %s falied"); return NGX_ERROR; } + if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &ae_guid, sizeof(GUID), + &acceptex, sizeof(LPFN_ACCEPTEX), &bytes, NULL, NULL) == -1) { + + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " + "WSAID_ACCEPTEX) failed"); + return NGX_ERROR; + } + + if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &as_guid, sizeof(GUID), + &getacceptexsockaddrs, sizeof(LPFN_GETACCEPTEXSOCKADDRS), + &bytes, NULL, NULL) == -1) { + + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " + "WSAID_ACCEPTEX) failed"); + return NGX_ERROR; + } + + if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &tf_guid, sizeof(GUID), + &transmitfile, sizeof(LPFN_TRANSMITFILE), &bytes, + NULL, NULL) == -1) { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " + "WSAID_TRANSMITFILE) failed"); + return NGX_ERROR; + } + + if (ngx_close_socket(s) == -1) { + ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno, + ngx_close_socket_n " failed"); + } + return NGX_OK; } diff --git a/src/os/win32/ngx_os_init.h b/src/os/win32/ngx_os_init.h index 5c445ace6..4a00a3a05 100644 --- a/src/os/win32/ngx_os_init.h +++ b/src/os/win32/ngx_os_init.h @@ -3,7 +3,7 @@ #include <ngx_config.h> -#include <ngx_log.h> +#include <ngx_core.h> int ngx_os_init(ngx_log_t *log); diff --git a/src/os/win32/ngx_socket.c b/src/os/win32/ngx_socket.c index f289a33e7..e3f6f5c96 100644 --- a/src/os/win32/ngx_socket.c +++ b/src/os/win32/ngx_socket.c @@ -1,76 +1,7 @@ #include <ngx_config.h> - #include <ngx_core.h> -#include <ngx_log.h> -#include <ngx_errno.h> -#include <ngx_socket.h> - - -/* These pointers should be per protocol ? */ -LPFN_ACCEPTEX acceptex; -LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs; -LPFN_TRANSMITFILE transmitfile; - -static GUID ae_guid = WSAID_ACCEPTEX; -static GUID as_guid = WSAID_GETACCEPTEXSOCKADDRS; -static GUID tf_guid = WSAID_TRANSMITFILE; - - -int ngx_init_sockets(ngx_log_t *log) -{ - DWORD bytes; - SOCKET s; - WSADATA wsd; - - if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { - ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, - "WSAStartup failed"); - return NGX_ERROR; - } - - s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0); - if (s == -1) { - ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, - ngx_socket_n " %s falied"); - return NGX_ERROR; - } - if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &ae_guid, sizeof(GUID), - &acceptex, sizeof(LPFN_ACCEPTEX), &bytes, NULL, NULL) == -1) { - - ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, - "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " - "WSAID_ACCEPTEX) failed"); - return NGX_ERROR; - } - - if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &as_guid, sizeof(GUID), - &getacceptexsockaddrs, sizeof(LPFN_GETACCEPTEXSOCKADDRS), - &bytes, NULL, NULL) == -1) { - - ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, - "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " - "WSAID_ACCEPTEX) failed"); - return NGX_ERROR; - } - - if (WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &tf_guid, sizeof(GUID), - &transmitfile, sizeof(LPFN_TRANSMITFILE), &bytes, - NULL, NULL) == -1) { - ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, - "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, " - "WSAID_TRANSMITFILE) failed"); - return NGX_ERROR; - } - - if (ngx_close_socket(s) == -1) { - ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno, - ngx_close_socket_n " failed"); - } - - return NGX_OK; -} int ngx_nonblocking(ngx_socket_t s) { @@ -79,6 +10,7 @@ int ngx_nonblocking(ngx_socket_t s) return ioctlsocket(s, FIONBIO, &nb); } + int ngx_blocking(ngx_socket_t s) { unsigned long nb = 0; diff --git a/src/os/win32/ngx_socket.h b/src/os/win32/ngx_socket.h index f94d45c31..f86a39aff 100644 --- a/src/os/win32/ngx_socket.h +++ b/src/os/win32/ngx_socket.h @@ -3,7 +3,8 @@ #include <ngx_config.h> -#include <ngx_log.h> +#include <ngx_core.h> + #define NGX_WRITE_SHUTDOWN SD_SEND @@ -12,7 +13,6 @@ typedef SOCKET ngx_socket_t; typedef int socklen_t; -int ngx_init_sockets(ngx_log_t *log); #define ngx_socket(af, type, proto, flags) \ WSASocket(af, type, proto, NULL, 0, flags) diff --git a/src/os/win32/ngx_time.h b/src/os/win32/ngx_time.h index 25eef9556..4cd84e564 100644 --- a/src/os/win32/ngx_time.h +++ b/src/os/win32/ngx_time.h @@ -2,7 +2,9 @@ #define _NGX_TIME_H_INCLUDED_ -#include <windows.h> +#include <ngx_config.h> +#include <ngx_core.h> + typedef unsigned int ngx_msec_t; #define NGX_MAX_MSEC ~0 @@ -24,7 +26,7 @@ typedef FILETIME ngx_mtime_t; #define ngx_msec GetTickCount /* STUB */ -#define ngx_time() time(NULL) +#define ngx_time() time(NULL) #endif /* _NGX_TIME_H_INCLUDED_ */ diff --git a/src/os/win32/ngx_types.h b/src/os/win32/ngx_types.h index d5f0d927d..cf8db97b3 100644 --- a/src/os/win32/ngx_types.h +++ b/src/os/win32/ngx_types.h @@ -3,6 +3,7 @@ #include <ngx_config.h> +#include <ngx_core.h> typedef unsigned __int32 u_int32_t; |