HTTP_TIMEOUT_LIMIT_INFO structure (http.h)

The HTTP_TIMEOUT_LIMIT_INFO structure defines the application-specific connection timeout limits.

This structure must be used when setting or querying the HttpServerTimeoutsProperty on a URL Group, server session, or request queue.

Syntax

typedef struct _HTTP_TIMEOUT_LIMIT_INFO {
  HTTP_PROPERTY_FLAGS Flags;
  USHORT              EntityBody;
  USHORT              DrainEntityBody;
  USHORT              RequestQueue;
  USHORT              IdleConnection;
  USHORT              HeaderWait;
  ULONG               MinSendRate;
} HTTP_TIMEOUT_LIMIT_INFO, *PHTTP_TIMEOUT_LIMIT_INFO;

Members

Flags

The HTTP_PROPERTY_FLAGS structure that specifies whether the property is present.

EntityBody

The time, in seconds, allowed for the request entity body to arrive.

The HTTP Server API turns on this timer when the request has an entity body. The timer expiration is initially set to the configured value. When the HTTP Server API receives additional data indications on the request, it resets the timer to give the connection another interval.

DrainEntityBody

The time, in seconds, allowed for the HTTP Server API to drain the entity body on a Keep-Alive connection.

On a Keep-Alive connection, after the application has sent a response for a request and before the request entity body has completely arrived, the HTTP Server API starts draining the remainder of the entity body to reach another potentially pipelined request from the client. If the time to drain the remaining entity body exceeds the allowed period the connection is timed out.

RequestQueue

The time, in seconds, allowed for the request to remain in the request queue before the application picks it up.

IdleConnection

The time, in seconds, allowed for an idle connection.

This timeout is only enforced after the first request on the connection is routed to the application. For more information, see the Remarks section.

HeaderWait

The time, in seconds, allowed for the HTTP Server API to parse the request header.

This timeout is only enforced after the first request on the connection is routed to the application. For more information, see the Remarks section.

MinSendRate

The minimum send rate, in bytes-per-second, for the response. The default response send rate is 150 bytes-per-second.

To disable this timer, set MinSendRate to MAXULONG.

Remarks

This structure is used in the HttpQueryServerSessionProperty, and HttpSetServerSessionProperty functions to set or query the connection timeouts. The following table lists the default timeouts.

Timer HTTP Server API Default HTTP Server API Wide Configuration Application Specific Configuration
EntityBody 2 Minutes No Yes
DrainEntityBody 2 Minutes No Yes
RequestQueue 2 Minutes No Yes
IdleConnection 2 Minutes Yes Limited
HeaderWait 2 Minutes Yes Limited
MinSendRate 150 bytes/second No Yes
 

Calling HttpSetServerSessionProperty or HttpSetUrlGroupProperty to configure a connection timeout affects only the calling application and does not set driver wide timeout limits. The idle connection and header wait timers can be configured for all HTTP applications by calling HttpSetServiceConfiguration. Administrative privileges are required to configure HTTP Server API wide timeouts. HTTP Server API wide configurations affect all HTTP applications on the computer and persist when the computer is shut down.

The application-specific IdleConnection and HeaderWait timers are set on a limited basis. The HTTP Server API cannot determine the request queue or URL group that the request is associated with until the headers have been parsed. Therefore, the HTTP Server API enforces the default IdleConnection and HeaderWait timers for the first request on a connection. Subsequent requests on a Keep-Alive connection will use the application specific timeouts.

Setting a timeout on a server session affects all the URL Groups under the server session. However, if the URL Group has configured a timeout, the setting for the URL Group takes precedence over the server session configuration.

Setting a timeout to zero on a server session causes the HTTP Server API to revert to the default value for that timer. For timers set on a URL Group, the server session timeout is used if present, otherwise the HTTP Server API default is used.

Requirements

Requirement Value
Minimum supported client Windows Vista [desktop apps only]
Minimum supported server Windows Server 2008 [desktop apps only]
Header http.h

See also

HTTP Server API Version 2.0 Structures

HTTP_SERVER_PROPERTY

HttpQueryRequestQueueProperty

HttpQueryServerSessionProperty

HttpQueryUrlGroupProperty

HttpSetRequestQueueProperty

HttpSetServerSessionProperty

HttpSetUrlGroupProperty