From slive@locus.apache.org Sat Dec 2 21:18:17 2000
Return-Path:
In the server configuration file, use the AddHandler directive to @@ -60,24 +68,117 @@ following line:
- AddHandler isapi-isa dll + AddHandler isapi-isa .dll
ISAPI extensions are governed by the same permissions and restrictions
as CGI scripts. That is, Options ExecCGI must be set for
the directory that contains the ISAPI .dll file.
Now place an ISAPI .dll file into this web directory, with the
+ Options ExecCGI set properly, and it will be loaded and
+ executed when requested by its URL.
Review the Additional Notes and the Programmer's Journal for additional details and clarification of the specific ISAPI support offered by mod_isapi.
-Apache's ISAPI implementation conforms to all of the ISAPI 2.0
+ specification, except for the "Microsoft-specific" extensions dealing
+ with asynchronous I/O. Apache's I/O model does not allow asynchronous
+ reading and writing in a manner that the ISAPI could access. If an ISA
+ tries to access unsupported features, including async I/O, a message is
+ placed in the error log to help with debugging. Since these messages
+ can become a flood, a new directive;
+ ISAPILogNotSupported Off, is introduced in Apache 1.3.13.
Some servers, like Microsoft IIS, load the ISA into the server, and + keep it loaded until memory usage is too high, or specific configuration + options are used. Apache currently loads and unloads the ISA for each + request. This is inefficient, but Apache's request model makes this + method the only method that currently works. Apache 2.0 is expected to + support more effective loading and caching methods, with more precise + control over individual ISAPI modules and directories.
+ +Also, remember that while Apache supports ISAPI Extensions, it + does not support ISAPI Filters. Support for filters may + be added at a later date, but no support is planned at this time.
+ +If you are programming Apache 1.3 mod_isapi modules, you must limit your + calls to ServerSupportFunction to the following directives:
+ +Apache returns FALSE to any unsupported call to ServerSupportFunction, and + sets the GetLastError value to ERROR_INVALID_PARAMETER.
+ +Prior to Apache 1.3.13, ReadClient was a noop, and any request with a request + body greater than 48kb was rejected by mod_isapi. As of Apache 1.3.13, + ReadClient now retrieves the request body exceeding the initial buffer + (defined by ISAPIReadAheadBuffer). Based on the ISAPIReadAheadBuffer + setting (number of bytes to buffer prior to calling the ISAPI handler) + shorter requests are sent complete to the extension when it is invoked. + If the request is longer, the ISAPI extension must use ReadClient to + retrieve the remaining request body.
+ +WriteClient is supported, but only with the HSE_IO_SYNC flag or + no option flag (value of 0). Any other WriteClient request will + be rejected with a return value of FALSE, and a GetLastError + value of ERROR_INVALID_PARAMETER.
+ +GetServerVariable is supported, although extended server variables do not + exist (as defined by other servers.) All the usual Apache CGI environment + variables are available from GetServerVariable. As of Apache 1.3.13, + the ALL_HTTP and ALL_RAW and variables are now available.
+ +Apache 2.0 mod_isapi may support additional features introduced in later + versions of the ISAPI specification, as well as limited emulation of + async I/O and the TransmitFile semantics. Apache 2.0 may also support + caching of ISAPI .dlls for performance. No further enhancements to the + Apache 1.3 mod_isapi features are anticipated.
+-
Apache's ISAPI implementation conforms to all of the ISAPI 2.0
- specification, except for the "Microsoft-specific" extensions dealing
- with asynchronous I/O. Apache's I/O model does not allow asynchronous
- reading and writing in a manner that the ISAPI could access. If an ISA
- tries to access unsupported features, including async I/O, a message is
- placed in the error log to help with debugging. Since these messages
- can become a flood, a new directive;
- ISAPILogNotSupported Off, is introduced in Apache 1.3.13.
Some servers, like Microsoft IIS, load the ISA into the server, and - keep it loaded until memory usage is too high, or specific configuration - options are used. Apache currently loads and unloads the ISA for each - request. This is inefficient, but Apache's request model makes this - method the only method that currently works. Apache 2.0 is expected to - support more effective loading and caching methods, with more precise - control over individual ISAPI modules and directories.
- -Also, remember that while Apache supports ISAPI Extensions, it - does not support ISAPI Filters. Support for filters may - be added at a later date, but no support is planned at this time.
- -If you are programming Apache 1.3 mod_isapi modules, you must limit your - calls to ServerSupportFunction to the following directives:
- -Apache returns FALSE to any unsupported call to ServerSupportFunction, and - sets the GetLastError value to ERROR_INVALID_PARAMETER.
- -Prior to Apache 1.3.13, ReadClient was a noop, and any request with a request - body greater than 48kb was rejected by mod_isapi. As of Apache 1.3.13, - ReadClient now retrieves the request body exceeding the initial buffer - (defined by ISAPIReadAheadBuffer). Based on the ISAPIReadAheadBuffer - setting (number of bytes to buffer prior to calling the ISAPI handler) - shorter requests are sent complete to the extension when it is invoked. - If the request is longer, the ISAPI extension must use ReadClient to - retrieve the remaining request body.
- -WriteClient is supported, but only with the HSE_IO_SYNC flag or - no option flag (value of 0). Any other WriteClient request will - be rejected with a return value of FALSE, and a GetLastError - value of ERROR_INVALID_PARAMETER.
- -GetServerVariable is supported, although extended server variables do not - exist (as defined by other servers.) All the usual Apache CGI environment - variables are available from GetServerVariable. As of Apache 1.3.13, - the ALL_HTTP and ALL_RAW and variables are now available.
- -Apache 2.0 mod_isapi may support additional features introduced in later - versions of the ISAPI specification, as well as limited emulation of - async I/O and the TransmitFile semantics. Apache 2.0 may also support - caching of ISAPI .dlls for performance. No further enhancements to the - Apache 1.3 mod_isapi features are anticipated.