Microsoft Internet Security and Acceleration Server 2000

SF_REQ_SEND_RESPONSE_HEADER

You can use this support function to ask the ISA Web proxy service to send a complete HTTP response header to the client browser, including the HTTP status, server version, message time, and MIME version. Your filter can also, optionally, append other header information to the end of a header generated by the ISA Web proxy service, such as a Content-Type or Content-Length header.

BOOL WINAPI * ServerSupportFunction(
  PHTTP_FILTER_CONTEXT pfc,
  enum SF_REQ_TYPE SF_REQ_SEND_RESPONSE_HEADER,
  PVOID pData,
  DWORD ul1,
  DWORD ul2
);

Parameters

pfc
Points to the HTTP_FILTER_CONTEXT data structure that is associated with the current active HTTP transaction.
pData
Points to a null-terminated string that contains an HTTP status string, such as "401 Access Denied." If pData is set to NULL, then the default response, "200 OK," will be sent in the response header.
ul1
Points to a null-terminated string that contains the optional HTTP headers that you want to be appended to the response header.
ul2
Unused in this support function.

Note  If you append your own headers to the server-generated headers, you must terminate the header string with an extra carriage return and linefeed.

This support function can be called only once for each HTTP request.

Remarks

An ISAPI Filter may cause a recursive call of itself or a simple call of another ISAPI Filter inside itself. This may occur if an ISAPI filter sends a response by using either the ServerSupportFunction (SF_REQ_SEND_RESPONSE_HEADERS) or WriteClient.

We will consider two cases:

In both cases, all filters subscribe to the SEND_RESPONSE notification, which will be called if the ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADERS) was used.

If the call was from a RAW_DATA notification, then only filters with higher order than the filter that sent the response will be called in the SEND_RAW_DATA notification.

If the call was from any other notification, then the filter that sent the response and the filters with higher order will be called in the SEND_RAW_DATA notification.

For example, suppose you have 3 filters: Filter_Low with low priority, Filter_Medium with medium priority, and Filter_High with high priority. Filter_Low and Filter_High subscribed to SEND_RESPONSE and SEND_RAW_DATA. Filter_Medium subscribed to SEND_RESPONSE and SEND_RAW_DATA as well, but has also subscribed to another notification.

From its extra notification, Filter_Medium sends either ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER) or WriteClient.

The way ISA will call the filters before the ServerSupportFunction(SF_REQ_SEND_RESPONSE_HEADER) or WriteClient return will be as follows: