README.TXT

This sample demonstrates how to maintain a Keep-Alive connection while using worker 
threads in an ISAPI dll. Please note the following points:

1. The way that this dll maintains the connection is in the following
line from WorkerFunction:

dwState = HSE_STATUS_SUCCESS_AND_KEEP_CONN;
pECB->ServerSupportFunction(pECB->ConnID, HSE_REQ_DONE_WITH_SESSION, &dwState, NULL, 0);

The passing of dwState is what tells IIS to keep the connection open.

2. A thread pool is used because if the thread that makes the above call
to server support function exits or is terminated, the connection will
be closed by IIS. Using a thread pool avoids this.

3. This dll creates a number of system objects, which are not
deallocated. The presumption is that this dll will remain loaded until
the INETINFO.EXE process terminates; at which point these objects will
be released by the operating system. However, if the WWW service is
stopped and restarted without the INETINFO.EXE process ending, these
objects will remain allocated, and new ones will be created when the dll
is reloaded. If it is desired to implement this sample code in a
production environment, code to deallocate these objects should be added
in DllMain or TerminateExtension.