HTTP Engine Configuration and Statistics Variables
==================================================
Date:   Feb 13, 1997

        +----------------+
        | Configurations |
        +----------------+


Proxy Schems:
-------------
  Name          :  SchemeEnabled
  Type          :  A bit vector. a bit per scheme.
  Who It Affects:  HTTP Engine
  Comments      :  Current schemes are HTTP / HTTPS

  Name          :  TunnelingEnabled
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  support CONNECT request for SSL tunneling.


Connections and Keep Alive:
---------------------------

  Name          :  MaxOpenConnectionsToServer
  Type          :  int
  Who It Affects:  HTTP Processor
  Comments      :  maximum number of connections the proxy
                   can open to a single origin server

  Name          :  MaxConnectionsIn
  Type          :  int
  Who It Affects:  HTTP Processor
  Comments      :  Limit the number of concurrent open connections
                   to the proxy server.

  Name          :  KeepAliveNoActivityTimeoutIn
  Type          :  int
  Who It Affects:  HTTP Processor
  Comments      :  Minimum number of seconds to wait for a new request
                   from a user agent on a keep-alive connection.
                   Time is counted from the time the last byte of the
                   response to the last request was sent to the user agent.
                   If the time exceeds the timeout value the proxy closes
                   the connection to the user agent.

  Name          :  KeepAliveNoActivityTimeoutOut
  Type          :  int
  Who It Affects:  HTTP Processor
  Comments      :  Minimum number of seconds to wait for a new request
                   on an opened keep-alive connection between the proxy
                   and an origin server. If the time exceeds the timeout
                   value, the proxy closes this keep-alive connection
                   to the origin server.

  Name          :  MaxPendingKeepAliveOut
  Type          :  int
  Who It Affects:  HTTP Processor
  Comments      :  Maximum number of pending keep alive
                   requests on an outgoing keep alive connection.
                   If the outgoing keep-alive queue is full and the number
                   of connections opened to that server is less then
                   'MaxOpenConnectionsToServer', then the proxy opens
                   a new connection. Else it puts it in a standby queue.


  Name          :  ServerPort
  Type          :  integer
  Who It Affects:  HTTP Processor
  Comments      :

  Name          :  HttpVersionIn
  Type          :  integer
  Who It Affects:  HTTP Processor
  Comments      :  http version for this proxy for incoming connections.

  Name          :  HttpVersionOut
  Type          :  integer
  Who It Affects:  HTTP Processor
  Comments      :  http version for this proxy for outgoing connections.

  Name          :  HTTP1_0_KeepAliveEnableIn
  Type          :  boolean
  Who It Affects:  HTTP Processor
  Comments      :  enable keep alive for incoming connections

  Name          :  HTTP1_0_KeepAliveEnableOut
  Type          :  boolean
  Who It Affects:  HTTP Processor
  Comments      :  enable keep alive for outgoing connections




Proxy - Processing a request:
-----------------------------

E:Name          :  ink_api_enable
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  enable or disable calls to user defined ink_api
                   functions.

E:Name          :  AccessControlEnable
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  enable or disable site access control

  Name          :  AccessControlSiteFileName
  Type          :  string
  Who It Affects:  HTTP Engine
  Comments      :  A file with sites for access control

  Name          :  MimeTypeFileName
  Type          :  string
  Who It Affects:  HTTP Engine
  Comments      :  A file with mime types

  Name          :  UserGroups
  Type          :  array of { strings, user_agent_ip, ?? }
  Who It Affects:  HTTP Engine
  Comments      :  Group names of users.

  Name          :  RequestViaStr
  Type          :  string
  Who It Affects:  HTTP Engine
  Comments      :  name to be appended to Via (e.g. "1.1 proxy-name")

  Name          :  Language
  Type          :  string
  Who It Affects:  HTTP Engine
  Comments      :  Language to be used for proxy errors and warnings

  Name          :  RemoveFrom
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  Determines whether "from" field is removed from
                   the request before it is sent out.

  Name          :  RemoveReferer
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  Determines whether "Referer" field is removed from
                   the request before it is sent out.

  Name          :  RemoveUserAgent
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  Determines whether "User Agent" field is removed
                   from the request before it is sent out.

Proxy - Processing a response:
-----------------------------

  Name          :  ResponseViaStr
  Type          :  string
  Who It Affects:  HTTP Engine
  Comments      :  name to be appended to Via (e.g. "1.1 proxy-name")



Caching Policies:
-----------------

  Name          :  CacheOn
  Type          :  boolean
  Who It Affects:  HTTP Engine
  Comments      :  If true caching is on, if false caching is off.

  Name          :  HeuristicAgeFactor
  Type          :  double
  Who It Affects:  HTTP Engine
  Comments      :  Heuristic age of document= doc_date + (doc_date -
                   last_mod_date)*HeuristicAgeFactor

  Name          :  AlwaysRevalidateAfter
  Type          :  int >= 0 (seconds)
  Who It Affects:  HTTP Engine
  Comments      :  Always validate the freshness of a cache copy
                   if the cache has the document for AlwaysValidateAfter
                   seconds or longer (will override client and
                   server specification)

  Name          :  AlwaysFreshBefore
  Type          :  int >= 0 (seconds)
  Who It Affects:  HTTP Engine
  Comments      :  Allow a document to be served from cache as long
                   as its age is less than or equal to
		   AlwaysFreshBefore seconds.
		   Overrides client and server specifications.

  Name          :  CachableSchemes
  Type          :  A bit vector
  Who It Affects:  HTTP Engine
  Comments      :  which schemes to cache. HTTP etc.

  Name          :  CachableMimeTypes
  Type          :  A bit vector
  Who It Affects:  HTTP Engine
  Comments      :  which mime types to cache.

  Name          :  NoCacheDomain
  Type          :  array of strings
  Who It Affects:  HTTP Engine
  Comments      :  A list of domains that should not be cached.
                   For example a small cache may not want to cache
                   local documents.


Per Transaction Statisctics:
----------------------------

  Name     :  TransactionTotalTime
  Type     :  integer
  Internal :  External / Internal
  Comments :  The time elapsed from the time the user agent opened
              a connection to the proxy, or the time the first byte
              of a request was read in a keep alive connection,
              until the time the last byte of response was sent to
              the user agent.

  Name     :  TransactionThinkTime
  Type     :  integer
  Internal :  External / Internal
  Comments :  The time spent inside the HTTP engine. This does not
              include any I/O time.

  Name     :  TransactionBytesIn
  Type     :  integer
  Internal :  External / Internal
  Comments :  The size in bytes of the user agent's request

  Name     :  TransactionBytesOut
  Type     :  integer
  Internal :  External / Internal
  Comments :  The size in bytes of the response to the user agent.

  Name     :  TransactionCacheResult
  Type     :  enum { HIT, MISS, REVALIDATE_HIT, REVALIDATE_MISS }
  Internal :  External / Internal
  Comments :  Cache result.





