diff options
Diffstat (limited to 'rubbos/app/httpd-2.0.64/modules/arch/win32/mod_isapi.h')
-rw-r--r-- | rubbos/app/httpd-2.0.64/modules/arch/win32/mod_isapi.h | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/rubbos/app/httpd-2.0.64/modules/arch/win32/mod_isapi.h b/rubbos/app/httpd-2.0.64/modules/arch/win32/mod_isapi.h deleted file mode 100644 index 33524bcb..00000000 --- a/rubbos/app/httpd-2.0.64/modules/arch/win32/mod_isapi.h +++ /dev/null @@ -1,271 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file mod_isapi.h - * @brief ISAPI module extension to Apache - * - * @defgroup MOD_ISAPI mod_isapi - * @ingroup APACHE_MODS - * @{ - */ - -#ifndef MOD_ISAPI_H -#define MOD_ISAPI_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* The Version Information storage passed to a module on startup - * via the GetExtensionVersion() entry point. - */ -typedef struct HSE_VERSION_INFO { - apr_uint32_t dwExtensionVersion; - char lpszExtensionDesc[256]; -} HSE_VERSION_INFO; - -/* The startup entry point that must be exported by every ISAPI handler - */ -int APR_THREAD_FUNC GetExtensionVersion(HSE_VERSION_INFO *ver_info); -typedef int (APR_THREAD_FUNC *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO *ver_info); - -/* Our internal 'HCONN' representation, always opaque to the user. - */ -typedef struct isapi_cid isapi_cid; -typedef struct isapi_cid *HCONN; - -/* Prototypes of the essential functions exposed by mod_isapi - * for the module to communicate with Apache. - */ -typedef int (APR_THREAD_FUNC - *PFN_GETSERVERVARIABLE)(HCONN cid, - char *variable_name, - void *buf_data, - apr_uint32_t *buf_size); -typedef int (APR_THREAD_FUNC - *PFN_WRITECLIENT)(HCONN cid, - void *buf_data, - apr_uint32_t *buf_size, - apr_uint32_t flags); -typedef int (APR_THREAD_FUNC - *PFN_READCLIENT)(HCONN cid, - void *buf_data, - apr_uint32_t *buf_size); -typedef int (APR_THREAD_FUNC - *PFN_SERVERSUPPORTFUNCTION)(HCONN cid, - apr_uint32_t HSE_code, - void *buf_data, - apr_uint32_t *buf_size, - apr_uint32_t *flags); - -/* The ecb structure is passed on each invocation of the module - */ -typedef struct EXTENSION_CONTROL_BLOCK { - apr_uint32_t cbSize; - apr_uint32_t dwVersion; - HCONN ConnID; - apr_uint32_t dwHttpStatusCode; - char lpszLogData[80]; - char *lpszMethod; - char *lpszQueryString; - char *lpszPathInfo; - char *lpszPathTranslated; - apr_uint32_t cbTotalBytes; - apr_uint32_t cbAvailable; - unsigned char *lpbData; - char *lpszContentType; - - PFN_GETSERVERVARIABLE GetServerVariable; - PFN_WRITECLIENT WriteClient; - PFN_READCLIENT ReadClient; - PFN_SERVERSUPPORTFUNCTION ServerSupportFunction; -} EXTENSION_CONTROL_BLOCK; - -/* Status/Headers structure to pass to HSE_SEND_HEADER_EX, - * an MS extension to ServerSupportFunction - */ -typedef struct HSE_SEND_HEADER_EX_INFO { - const char * pszStatus; /* HTTP status text, such as "200 OK" */ - const char * pszHeader; /* HTTP header lines text, such as - * "Content-type: text/plain\r\n" - * "Content-Language: en\r\n" - * Note that (in spite of cchFoo lengths below) - * NULL characters will interfere in headers. - */ - apr_uint32_t cchStatus; /* length of pszStatus text */ - apr_uint32_t cchHeader; /* length of pszHeader text */ - int fKeepConn; /* Ignored: used to set keep-alive status, - * but Apache follows the client's negotiated - * HTTP contract to decide. - */ -} HSE_SEND_HEADER_EX_INFO; - -/* Our only 'supported' MS extended flag bit for TransmitFile, - * HSE_IO_SEND_HEADERS indicates that Status+Headers are present - * in the pszStatusCode member of the HSE_TF_INFO structure. - */ -#define HSE_IO_SEND_HEADERS 8 - -/* The remaining flags are MS extended flag bits that bear little - * relation to Apache; the rules that the Apache server obeys follow - * its own design and HTTP protocol filter rules. - * - * We do not support async, however, we fake it. If HSE_IO_SYNC is - * not passed, and a completion context was defined, we will invoke the - * completion function immediately following the transfer, and then - * return to the caller. If HSE_IO_SYNC is passed, there is no call - * neccessary to the completion context. - */ -#define HSE_IO_SYNC 1 -#define HSE_IO_ASYNC 2 -#define HSE_IO_DISCONNECT_AFTER_SEND 4 -#define HSE_IO_NODELAY 4096 - -/* The Completion function prototype. This callback may be fixed with - * the HSE_REQ_IO_COMPLETION ServerSupportFunction call, or overriden - * for the HSE_REQ_TRANSMIT_FILE call. - */ -typedef void (APR_THREAD_FUNC *PFN_HSE_IO_COMPLETION) - (EXTENSION_CONTROL_BLOCK *ecb, - void *ctxt, - apr_uint32_t cbIO, - apr_uint32_t dwError); - -/* TransmitFile structure to pass to HSE_REQ_TRANSMIT_FILE, an MS extension - */ -typedef struct HSE_TF_INFO { - PFN_HSE_IO_COMPLETION pfnHseIO; /* Overrides the default setting of - * HSE_REQ_IO_COMPLETION if not NULL - */ - void *pContext; - apr_os_file_t hFile; /* HANDLE/fd to transmit */ - const char *pszStatusCode; /* Ignored if HSE_IO_SEND_HEADERS is - * not set. Includes HTTP status text - * plus header text lines, such as - * "200 OK\r\n" - * "Content-type: text/plain\r\n" - */ - apr_uint32_t BytesToWrite; /* 0 is write-all */ - apr_uint32_t Offset; /* File Offset */ - void *pHead; /* Prefix with *pHead body text */ - apr_uint32_t HeadLength; /* Length of *pHead body text */ - void *pTail; /* Prefix with *pTail body text */ - apr_uint32_t TailLength; /* Length of *pTail body text */ - apr_uint32_t dwFlags; /* bit flags described above */ -} HSE_TF_INFO; - -typedef struct HSE_URL_MAPEX_INFO { - char lpszPath[260]; - apr_uint32_t dwFlags; - apr_uint32_t cchMatchingPath; - apr_uint32_t cchMatchingURL; - apr_uint32_t dwReserved1; - apr_uint32_t dwReserved2; -} HSE_URL_MAPEX_INFO; - -/* Original ISAPI ServerSupportFunction() HSE_code methods */ -#define HSE_REQ_SEND_URL_REDIRECT_RESP 1 -#define HSE_REQ_SEND_URL 2 -#define HSE_REQ_SEND_RESPONSE_HEADER 3 -#define HSE_REQ_DONE_WITH_SESSION 4 - -/* MS Extented methods to ISAPI ServerSupportFunction() HSE_code */ -#define HSE_REQ_MAP_URL_TO_PATH 1001 /* Emulated */ -#define HSE_REQ_GET_SSPI_INFO 1002 /* Not Supported */ -#define HSE_APPEND_LOG_PARAMETER 1003 /* Supported */ -#define HSE_REQ_IO_COMPLETION 1005 /* Emulated */ -#define HSE_REQ_TRANSMIT_FILE 1006 /* Async Emulated */ -#define HSE_REQ_REFRESH_ISAPI_ACL 1007 /* Not Supported */ -#define HSE_REQ_IS_KEEP_CONN 1008 /* Supported */ -#define HSE_REQ_ASYNC_READ_CLIENT 1010 /* Emulated */ -/* Added with ISAPI 4.0 */ -#define HSE_REQ_GET_IMPERSONATION_TOKEN 1011 /* Not Supported */ -#define HSE_REQ_MAP_URL_TO_PATH_EX 1012 /* Emulated */ -#define HSE_REQ_ABORTIVE_CLOSE 1014 /* Ignored */ -/* Added after ISAPI 4.0 in IIS 5.0 */ -#define HSE_REQ_GET_CERT_INFO_EX 1015 /* Not Supported */ -#define HSE_REQ_SEND_RESPONSE_HEADER_EX 1016 /* Supported (no nulls!) */ -#define HSE_REQ_CLOSE_CONNECTION 1017 /* Ignored */ -#define HSE_REQ_IS_CONNECTED 1018 /* Supported */ -#define HSE_REQ_EXTENSION_TRIGGER 1020 /* Not Supported */ - -/* The request entry point that must be exported by every ISAPI handler - */ -apr_uint32_t APR_THREAD_FUNC HttpExtensionProc(EXTENSION_CONTROL_BLOCK *ecb); -typedef apr_uint32_t (APR_THREAD_FUNC - *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK *ecb); - -/* Allowable return values from HttpExtensionProc (apparently 0 is also - * accepted by MS IIS, and we will respect it as Success.) - * If the HttpExtensionProc returns HSE_STATUS_PENDING, we will create - * a wait mutex and lock on it, until HSE_REQ_DONE_WITH_SESSION is called. - */ -#define HSE_STATUS_SUCCESS 1 -#define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2 /* 1 vs 2 Ignored, we choose */ -#define HSE_STATUS_PENDING 3 /* Emulated (thread lock) */ -#define HSE_STATUS_ERROR 4 - -/* Anticipated error code for common faults within mod_isapi itself - */ -#ifndef ERROR_INSUFFICIENT_BUFFER -#define ERROR_INSUFFICIENT_BUFFER ENOBUFS -#endif -#ifndef ERROR_INVALID_INDEX -#define ERROR_INVALID_INDEX EINVAL -#endif -#ifndef ERROR_INVALID_PARAMETER -#define ERROR_INVALID_PARAMETER EINVAL -#endif -#ifndef ERROR_READ_FAULT -#define ERROR_READ_FAULT EIO -#endif -#ifndef ERROR_WRITE_FAULT -#define ERROR_WRITE_FAULT EIO -#endif -#ifndef ERROR_SUCCESS -#define ERROR_SUCCESS 0 -#endif - -/* Valid flags passed with TerminateExtension() - */ -#define HSE_TERM_MUST_UNLOAD 1 -#define HSE_TERM_ADVISORY_UNLOAD 2 - -/* The shutdown entry point óptionally exported by an ISAPI handler, passed - * HSE_TERM_MUST_UNLOAD or HSE_TERM_ADVISORY_UNLOAD. The module may return - * if passed HSE_TERM_ADVISORY_UNLOAD, and the module will remain loaded. - * If the module returns 1 to HSE_TERM_ADVISORY_UNLOAD it is immediately - * unloaded. If the module is passed HSE_TERM_MUST_UNLOAD, its return value - * is ignored. - */ -int APR_THREAD_FUNC TerminateExtension(apr_uint32_t flags); -typedef int (APR_THREAD_FUNC *PFN_TERMINATEEXTENSION)(apr_uint32_t flags); - -/* Module may return 0 if passed HSE_TERM_ADVISORY_UNLOAD, and the module - * will remain loaded, or 1 if it consents to being unloaded. If the module - * is passed HSE_TERM_MUST_UNLOAD, it's return value is ignored. - */ -#define HSE_TERM_MUST_UNLOAD 1 -#define HSE_TERM_ADVISORY_UNLOAD 2 - -#ifdef __cplusplus -} -#endif - -#endif /* !MOD_ISAPI_H */ -/** @} */ - |