/*****************************************************************************/
/*
                                version.h


VERSION HISTORY
---------------
02-OCT-2004  MGD  v8.5.3,
                  revalidation periods and '?httpd=logout&goto=...'
                  change from self-relative to absolute links in "Index of"
                    anchor generation (broke usage in some SSI documents)
                  bugfix; MetaconClientConcurrent() if IP address not the same!
                  bugfix; auth=revalidate= is minutes not seconds
                  bugfix; even number of bytes on a disk $QIO READVBLK
                  bugfix; HttpTimerSet() after mapping in case of SET timeout
                  bugfix; ServiceFindVirtual() port string comparison
31-JUL-2004  MGD  v8.5.2,
                  bugfix; StringMatchAndRegex() SMATCH_GREEDY_REGEX
                  bugfix; (potential anyway) PutWriteFileClose()/PutEnd()
                  bugfix; TcpIpNetMask() result in AuthRestrictList()
                  bugfix; ProxyFtpPasvData() if PASV response address
                    is 0.0.0.0 then use connect address
30-JUN-2004  MGD  v8.5.1,
                  bugfix; HttpdExit() INHIB_MSG test
07-JUN-2004  MGD  v8.5.0,
                  IPv6 (concurrent with IPv4) support
                  ACME authentication (realm)
                  [AuthSysUafUseACME] config directive
                  config directives [DNSLookupClient] (formerly [DNSLookup]),
                    [DNSLookupLifeTime] and [DNSLookupRetry] 
                  config directive [ProxyHostCachePurgeHours] obsolete
                  SYSUAF user verification now checks pre-expired passwords
                  changes to eliminate RMS from file access and proxy cache
                    (WASD's doing all the content conversion work anyway!)
                    by using ACP/QIOs and massaging record content explicitly
                    (outgrowth of returns from 8.4.3 changes in this area)
                  on-disk structure for each PASS result (ODS-2 or ODS-5)
                    is applied to a path unless otherwise SET with ODS=
                  bugfix; file cache pointer initialization before
                    first call to CacheNext()
                  bugfix; agent script should have non-strict-CGI ignored
                    (stupid problem introduced with script output caching)
04-MAR-2004  MGD  v8.4.3,
                  read variable record format files using block IO and then
                    explicitly process those records to produce a stream-LF
                    block of data in their place!
                    (provides in excess of 400% throughput boost!!! :^)
                  set script process default directory before activation
                  set script process parse extended/traditional if path ODS set
                  CGI 'Script-Control: X-content-handler=SSI' field
                  absorb CGI/NPH header during script CGI processing
                  SET ssi=exec=<string>
                      script=default=<directory>
                  SSI can now be enabled on a per-path basis using 'ssi=exec=#'
                  SSI #exec (#dcl) directives can be allowed on per-path basis
                    using SET ssi=exec=<string> (e.g. 'ssi=exec=say,show')
                  'delete-on-close' file specification extended
                  SSI <!--#dcl script="/cgi-bin/blah" -->
                  metacon add server_process_gt:, change to client_connect_gt:
                    and server_connect_gt: to better reflect functionality
                  service access log report (last 65kB of an access log)
                  add connect processing and keep-alive accounting items
                  DECC 6.2 objected to '$DESCRIPTOR(name,ptr->string)'
                  bugfix; rare RECTOOBIG on variable record length file where
                    longest record exceeded 'OutputBufferSize' so initialize
                    buffer to maximum of 'OutputBufferSize' or file lrl
                  bugfix; RequestExecute() re-set error by redirect
                  bugfix; ErrorGeneral() always get module name and number
                  bugfix; DclAllocateTask() CGIplus with virtual services
                  bugfix; ProxyFtpListProcessUnix() maximum fields handling
08-JAN-2004  MGD  v8.4.1,
                  SET response=header=[no]add[="<string>"]
04-JAN-2004  MGD  v8.4.0,
                  compilation and run-time support for IA64
                  for VMS 7.3-2 and later take advantage of the larger 
                    EDCL CLI line (255->4095) and symbol (1024->8192) sizes
                  'config directory' located authorization databases
                  authorization path keyword 'final' to conclude further
                    rule mapping at that point (as if none matched)
                  rule mapping "set map=root=<path>" allows a set of rules
                    to be rooted to a particular path (CGI document-root)
                  support "Range: bytes=<range>[,<range>..]" request field
                    for non-VAR-record files and cached files
                  provide network mode operation (server and scripts)
                  revise detached process cleanup candidate identification
                    (now requires CMKRNL privilege to use $GRANTID service)
                  modify DCL.C script activation code (allow qualifiers
                    and/or parameters to be supplied from path setting)
                  extensive rework of cache module to allow non-file content
                    (e.g. script) output to be cached
                  [CacheGuardPeriod] <hh:mm:ss> configuration directive
                  optional HTTPD$MSG [language] 'charset=<string>' parameter
                  HTA database now "read [record] regardless of lock"
                  SET cache=[no]cgi, cache=expires=<period>, cache=[no]file,
                      cache=[no]net, cache=maxkbytes=<int>, cache=[no]nph,
                      cache=[no]script, cache=[no]ssi,
                      map=root=<string>,
                      map=set=[no]ignore, map=set=[no]request,
                      proxy=reverse=location=<string>, proxy=reverse=verify,
                      response=header=[append|full|none],
                      script=command=<string>
                  reverse-proxy 302 "Location: ..." response can have the
                     location URL rewritten to reflect the original host
                  reverse-proxy can be locally authorized and then have
                     that verified by the proxied-to server (UMA)
                  metacon "document-root:" ('DR') reflects "set map=root="
                     add "client_current_gt:" and "server_current_gt:"
                  /PERSONA=IDENT=<name> is now available for PERSONA_MACRO
                  mapping now URL-encodes a redirect wildcard path portions
                  rework some report item format and content
                  check Digest authentication against Mozilla 1.4
                  only check SYSUAF secondary password expiry date/time
                    if the secondary password hash is not empty
                  bugfix; error report by redirect, set after virtual host
                  bugfix; GraphActivityPlotBegin() and GraphActivityDataScan()
                    signed/unsigned issue masking out request value
                  bugfix; chained proxy CONNECT processing
                  bugfix; keep track of outstanding body reads
                  bugfix; according to the doco "Index of"s from SSI should
                    not be delimited top or bottom (up to SSI to caption it!)
                  bugfix; DclScriptProcessPurge()
12-OCT-2003  MGD  v8.3.2,
                  bugfix; DECnet allow for outstanding network writes
                  bugfix; "internal" script detection
                  bugfix; MetaConLoad() [IncludeFile]
                  bugfix; ProxyRebuildRequest() rebuild buffer space
                  bugfix; suppress output after "Script-Control: x-error..."
                  bugfix; keyword search exclude file type
                  bugfix; notepad needs to be explicitly NULLed
                  bugfix; MAP-FILE: stripping leading character
                  bugfix; DECnet allow for outstanding body reads
15-AUG-2003  MGD  v8.3.1,
                  allow the database directory location to be specified using
                    authorization rule 'param="/directory=device:[directory]"'
                  allow for and keep track of $HIBER spurious wakes
                  massage SYSUAF-authenticated remote username to comply
                    with VMS requirements
                  suppress digest auth challenge except for HTA and external
                  where CDATA constraints make using &#10; entity impossible
                    use a field name of hidden$lf and &#94; substituted
                    with the BODY.C module doing some sleight-of-hand with it
                    (modern browsers like Mozilla were having issues)
                  BODY_DISCARD_CHUNK_COUNT made *very* large
                  bugfix; ServiceConfigReviseNow() form element names must be
                    unique (technically correct, enforced by modern browsers)
                  bugfix; AuthCacheAddRecord()
                  bugfix; check for NULL pointer 'cnptr->ReuseConnection'
                  bugfix; DECnetCgiDialog() not strict wait for EOF sentinal
                  bugfix; do not allow SET mapping during a callout
                  bugfix; use _BBCCI() to clear the mutex in InstanceExit()!!
                  bugfix; SesolaCacheAddRecord() oldest tick second
28-JUN-2003  MGD  v8.3.0,
                  regular expression support
                  [AuthFailurePeriod], [AuthFailureTimeout],
                     [ProxyUnknownRequestFields], [RegEx] directives
                  SET cache=[no]perm, cache=max=<integer>
                     SET notepad= and if (notepad:<string>)
                  metacon "notepad:", "regex:", "request:" ('RQ'), "restart:"
                  [Match] Server Admin item, report, and WATCH item
                  file cache support for permanent and volatile entries
                  improve efficiency RequestRedirect() & ProxyRebuildRequest()
                  store and provide unrecognised request header fields
                  rework break-in detection and processing
                    (configuration defaults to LGI sysgen parameters and now
                    operates in the same way as described for general VMS)
                  /SYSUAF=(VMS,ID) allows concurrent VMS and ID authorization
                  add proxy cache device error count statistics
                  home pages may now be [Welcome]+[DclScriptRunTime] specified
                    (i.e. provided via scripting environments such as PHP)
                  request heap statistics and VmRequestTune()
                  bugfix; add HTTP protocol to combined/common format URL
                  bugfix; request body to be read needs to be the smaller of
                    remaining body or buffer size (jpp@esme.fr)
                  bugfix; InstanceMutex..() use _BBCCI() to clear the mutex
                  bugfix; FILE.C FileSetCharset() following CacheSearch()
                    moved to CACHE.C module (ACCVIO if entry NULLed)
                  bugfix; ProxyMaintDeviceStats() volume count (set) handling
                  bugfix; ServiceConfigFromString() (jpp@esme.fr)
                  bugfix; DirFormatLayout() static flags (jpp@esme.fr)
                  bugfix; request SET Html.. memory allocation (jpp@esme.fr)
                  bugfix; MetaConParse() decrement index (back) when
                    not currently executing an if()inline directive
                  bugfix; (and refine) DECnetSupervisor()
                  bugfix; DclSysOutputAst() do not rundown script process 
                    if the error generated came from "Script-Control:"
                  bugfix; CGI(plus) allow for '!' from (!$blah) mapping rule
09-APR-2003  MGD  v8.2.0,
                  some minor logging format changes for server entries
                  wildcard and comma-separated list of languages
                    can be specified (e.g. "[Language] es-ES,es,es-*")
                  [ProxyForwarded] supercedes [ProxyAddForwardedBy] with
                     proxy=forwarded[=...] mapping rule
                  [ProxyXForwardedFor] configuration directive with
                     proxy=xforwardedfor[=...] mapping rule to support
                     proxy generation of "X-Forwarded-For:" header field
                  authentication agent '100 REASON any text'
                  script=as=$? to indicate optional use of SYSUAF username
                  SET dir=style[=default|original|anchor|htdir],
                  SET html=[bodytag|header|headertag|footer|footertag]=[..]
                   and incorporation in "Index of", selected other facilities
                  SET cgiplusin=[none|cr|lf|crlf], SET cgiplusin=eof,
                    SET script=query=none, SET script=path=find,
                    SET [no]search=none
                  disable 'NetMultiHomedHost' (should not be required
                   for modern virtual service processing)
                  script=params=+(name=value) concatenates to any existing
                  HTAdminPasswordChange() check for VMS group write
                  processes created using HttpdDetachServerProcess() now have
                    a YYYYMMDDHHMMSS timestamp as part of the process log name
                  with RTEs look first for one that was executing the same
                    script, then if not found fall back to (any) LRU RTE
                  SYSUAF security profile via rule and /PROFILE=BYRULE
                  script as SYSUAF username can be requested with auth rule
                  allow [[service]] to include the [[scheme://service]]
                  relax ServiceParse() so that [[the.host.name]] is accepted
                  enable SYSPRV in HTAdminDatabaseSearch()
                  relax initial CGI response line checking
                  build 'records' from script single byte output streams
                  general (non-RTE) run-time allowed with (!..) syntax
                  both run-time specifications allowed with SCRIPT rule
                  added GATEWAY_EOF/EOT/ESC CGI variables
                  sentinals changed to have only RMS-compliant characters
                  supply more detail from "%DCL-E-OPENIN, blah" responses
                  SesolaParseCertDn() record /email and /emailAddress
                  bugfix; Alpha VMS V7.1 or earlier sys$persona_assume()
                    needs to be used in the same way as for VAX
                  bugfix; RequestRedirect() append remain CGI response header
                  bugfix; body provision for script processing restart
                  bugfix; proxy FTP ResponseHeader() content-length of zero
                  bugfix; StringParseQuery() loop on string overflow
                  bugfix; HTAdminPasswordChange() cache reset realm
                  bugfix; error recovery in Sesola_read() and Sesola_write()
                  bugfix; DECnetFindCgiScript() foreign verb creation
10-JAN-2003  MGD  v8.1.1,
                  SET script=query=relaxed
                  AuthVmsLoadIdentifiers() more flexible
                  bugfix; ControlEnqueueCommand() occasional race condition
07-DEC-2002  MGD  v8.1.0,
                  SET auth=all (path must be subject to authorization or fail)
                  CGI 'Control-Script:' X-error-... fields
                  add 'mp' mapping and 'mapped-path:' metacon conditionals
                  add 'rc' mapping and 'redirected:' metacon conditionals
                  add 'st' mapping and 'script-name:' metacon conditionals
                  add "path-translated:" metacon conditional
                  skeleton-key authentication
                  refine mapping rule processing to ensure that paths with
                    forbidden syntax generate RMS bad syntax
                  check for device and directory (minimum) before parse
                  refine metacon reporting (reporting detected errors to OPCOM)
                  the server now detects the presence of HTTP$NOBODY
                    account and scripts using that
                  if the server is using HTTP$NOBODY or /script=as=
                    DECnet scripting now uses the same account
                  refine VMS security profile usage (no, just coincidence!)
                    to allow VMS profile authorized requests to override
                    directory listing controls (amongst other things)
                  server process log is now accessable via the Admin Menu
                  additional mapping functionality (SET query-string=)
                  no sneaky getting directory contents by downloading files!
                  CGI.C in non-strict CGI mode report anything like
                     "%DCL-E-OPENIN, blah" as a failed script activation
                  PUT.C allow for white-space in multipart file names
                  bugfix; in OdsNameOfDirectoryFile() use SYSPRV
                     around sys$parse() to ensure access to directory
                  bugfix; set path dir=access not ignored
25-SEP-2002  MGD  v8.0.1
                  additional persona counters
                  /script=as= allows a NOBODY scripting environment
                    without enabling PERSONA in general
                  require account SYSPRV for certain command-line activities
                  implement /persona=[authorized|relaxed|relaxed=authorized]
                    to prevent inadvertant scripting using privileged accounts
                  HttpdDetachServerProcess() [STARTUP]STARTUP_SERVER.COM
                  MapUrl_ElementsToVms() excise parent directory syntax
                  only use MapUrl_VmsUserName() path ODS if not already set
                  SET report=4nn=nnn for mapping HTTP status
                  SET map=ellipsis now required to map VMS '...' wildcard
                  SET dir=charset= directory listing charset mapping rule
                  support 'script=as=' functionality, plus DECnet variants
                    NODE"$":: substitutes SYSUAF authenticated username into
                    access string (for proxy access to account) and
                    NODE"~":: substitutes '/~username/' username in same way
                  set path en/decoding for RSI (MultiNet NFS), PATHWORKS (v4),
                    Advanced Server (PATHWORKS v6) / Samba file naming schemas
                    (as well as for ODS-2 and ODS-5)
                  AuthVmsCheckUserAccess() traps SS$_NOCALLPRIV returning
                    SS$_NOPRIV to allow directory listings of DFS volumes
                  introduce fab$b_rfm and fab$b_rat as fields to allow
                    PUT.C to specifically set these attributes as required
                  refine SesolaReport() for obtaining service ciphers 
                    (OpenSSLv0.9.6f/0.9.7-beta break it) 
                  local redirection should have the path re-URL-encoded
                  FAO change function of "!&U" to "!&P", new "!&U"
                  enhance authentication and SSL global section creation
                  allow for 'pass /* 400' (i.e. no trailing message)
                  RFC1413 authorization with DNS lookup use host name to
                    construct remote user string
                  rework path alert notification for greater functionality
                  bugfix; make ServiceConfigLoad() file not found non fatal
                  bugfix; ConfigIconFor() terminate on content-type
                  bugfix; if <CR> restart MIME boundary matching algorithm
                    using that char (allow for <CR><LF><CR><LF>--..boundary)
                  bugfix; 'Xray' broken in v8, repaired and reworked
                  bugfix; always revalidate X509 and RFC1413
                    (for path authorization after script)
                  bugfix; 'script' and 'exec' MetaConParseReset() state
                  bugfix; set AuthCacheRecordSize from HTTPD$CONFIG value
                  bugfix; when discarding via BodyReadBegin() use BodyRead()
                    to queue a network read only if data is outstanding
                  bugfix; template/result wildcard checking for scripting rules
                  bugfix; do not count callout records for CGI header purposes
03-JUL-2002  MGD  v8.0.0
                  "instance" capability (loosely coupled, multiple
                    socket/service-sharing servers on the one system)
                  meta-config (integrated config, mapping, service, auth),
                  provide "module WATCHing" for on-line, ad hoc debug
                  SET script=params=(name=value), proxy=bind=<address> and
                    proxy=chain=<host:port> mapping rules
                  asynchronous block processing of POST and PUT request body
                  some accomodations for Mozilla-HTTP/1.1 "Cache-Control:"
                  improve performance with EFN$C_ENF and use explicitly
                    allocated event flags for avoiding potential interactions
                  client host name lookup now asynchronous
                  FTP proxying processing
                  /DEMO demonstration mode
29-JUN-2002  MGD  v7.2.3
                  some accomodations for Mozilla-HTTP/1.1 "Cache-Control:"
                  bugfix; [ProxyCacheNoReloadSeconds] parsing
                  bugfix; (well sort of) it would appear that after NO_CONCEAL
                    searching and a sys$open() must sys$close() *before* the
                    SYNCHCK sys$parse() release resources otherwise a channel
                  bugfix; ensure when OdsParse() is used successively with
                    the same ODS structure that previous resources are first 
                    released (can present a problem unique to search lists)
                    to the device is left assigned!!
                  bugfix; ensure sys$search() RMS channel is released
                  bugfix; ProxyResolveHostCache() NULL 'rqptr'
                  bugfix; account/password expiry
                  bugfix; DclFindFileEnd() reset result file name
                  bugfix; SsiAccessesClose() now synchronous using SYSPRV
13-APR-2002  MGD  v7.2.2
                  Authorize() allow /NO401 parameter to suppress server
                    challenge to allow external agent to response (e.g. PHP)
                  ProxyHostConnectAst() invalidate host cache entry
                  NetCreateService() checks previously bound address
                  MapUrl_UrlToVms() eliminate chance of device:[.directory]
                  make a proxy reactive purge initially more agressive
                  keep-alive decision logic to RequestFields()
                  bugfix; ensure only one request revalidates a cache entry at
                    a time (multiple could cause eventual channel exhaustion)
                  bugfix; switch return not break with next reactive scan
                  bugfix; AuthConfigProxyMap() wildcard string results
                  bugfix; ODS-5 parent directories with multiple periods
                  bugfix; command-line proxy cache maintenance reporting
                  bugfix; FileNextRecordAst() VAR file into contents buffer
                  bugfix; MAPURL.C throttle report
                  bugfix; AuthCacheAddRecord() and host group without "host="
                  bugfix; reset SSL state to SSL_ST_OK if renegotiation fails
                  bugfix; DclTaskRunDown() reset script task type
                  bugfix; MsgFor() Accept-Lang: comparison
                  bugfix; NetAcceptAst() deassign channel when connect dropped
                  bugfix; wildcard substitution in MapUrl__Map()
                  bugfix; StringMatch() wildcard matching
                  bugfix; close log file for ALL services in LOGGING.C
                  bugfix; !&M formatting directive in PROXYCACHE.C
                  bugfix; /RELAXED should allow all but DISUSERed accounts
                  to authenticate regardless of RESTRICTED or CAPTIVE flags
03-NOV-2001  MGD  v7.2.1
                  PERSONA.C using PERSONA.MAR can now provide persona scripting
                    for pre-VMS 6.2 VAX systems (CAUTION!! - UNSUPPORTED)
                  "TASK=CGI..", "0=CGI.." recognised as DECnet CGI dialog
                  FAB$M_TEF to deallocate unused log file space
                  StringMatch() replaces SearchTextString() for more
                    light-weight text matching (affects six modules)
                  [SsiSizeMax] and [ProxyCacheNoReloadSeconds]
                  FILE.C block I/O complete if _rsz is less than _usz
                  'ProxyCacheNoReloadSeconds' limits immediate (pragma) reload
                  ensure mapping conditional not mistaken for missing template
                  kludge work around spawning authorized privs with $CREPRC
                  bugfix; ensure only one request revalidates a cache entry at
                    a time (multiple could cause eventual channel exhaustion)
                  bugfix; close current log file if period changes
                  bugfix; DECnet user script mapping
                  bugfix; FileNextBlocksAst() 'ContentRemaining'
                  bugfix; wildcard substitution in MapUrl__Map()
                  bugfix; sys$close() in OdsLoadTextFile()
                  bugfix; always generate callout sequences
                  bugfix; a bugfix in VMS V7.2 has broken the previously
                    working usage of IO$_MODIFY in ProxyCacheSetLastAccessed()
                  bugfix; activity graphic
                  bugfix; check ParseQueryField() in WatchBegin() for NULL
                  bugfix; allow agent to provide 'CGIPLUS:' directive
                  bugfix; 'layout=U' upper-casing
01-JUL-2001  MGD  v7.2.0
                  X.509 authentication and authorization
                  RFC1413 (identfication protocol) authorization
                  remote user to vms user (SYSUAF authorization) proxy mapping
                  proxy cache maintainence may now be done from the CLI
                  HTL list maintenance can now be done from the Admin Menu
                  a fatal authorization problem now disables authorization
                  "hh:mm:ss" allows for a more versatile period
                  concurrent processing controls (request "throttling")
                  improved script process run-down conditions and handling
                  HttpdTick() drives XxxSupervisor()s
                  control (/DO= and Admin menu) now via a global section
                  monitor (HTTPDMON) data now supplied via a global section
                  suppress CGI content-type "x-internal..."
                  [IncludeFile] for all configuration files
                  request supervisor refinements
                  .URL file processing
01-JUL-2001  MGD  v7.1.2
                  add selective status codes to error report path
                  refine 'view' and 'list' redirection in UPD.C
                  refine logging RMS characteristics (500% improvement)
                  provide for ODS-5 "hidden" files ('^.')
                  check network status during SSL accept
                  EXEC of file type
                  remove http: check from SesolaAccept()
                  bugfix; parsing of [ServiceProxyChain]
                  bugfix; 'RU' conditional 
                  bugfix; SCRIPT_FILENAME with CGIplus
                  bugfix; NetThisVirtualService() and call conditions
                  bugfix; SesolaFree() BioPtr
                  bugfix; AuthVmsCheckUserAccess() return SS$_NOPRIV
                  bugfix; ParseNetMask() and VSLM mask processing
                  bugfix; sys$create_user_profile() length size from word 
                  (System Services Manual) to unsigned int (startlet.h)!
                  bugfix; authorization network masks
                  bugfix; directory specfication length (sys$check_access())
                  bugfix; HTAdminPasswordChange() call to WriteFaoOpcom()
                  bugfix; AuthGenerateHashPassword() force upper-case
                  bugfix; final status at write group/no read group check
18-JAN-2001  MGD  v7.1.1
                  HTTPD$SCRATCH automatic script scratch file cleanup
                  authentication agent can now '100 SET-COOKIE rfc2109-cookie'
                  bugfix; memory leak in AUTH.C
                  bugfix; FILE.C make a search list DNF appear as a FNF
                  bugfix; /PROFILE empty directory passing incorrect parameter
                  bugfix; general error reporter variable arguments
                  bugfix; final authorization failure should specify 403
                  bugfix; ensure mapping rules exist for authentication agents
                  bugfix; control cache purge arguments
17-OCT-2000  MGD  v7.1.0
                  sys$creprc() scripting
                  sys$persona...() scripting
                  Run Time Environments (RTEs)
                  server-group/cluster-wide directives (via DLM)
                  further refined CGI.C module output handling
                  apply authorization to SSI.C #include'd and #dir'e
                  client socket (BGnnnn:) potentially sharable for scripts
                  proxy cache device directory organization flat256/64x64
                  modify SSL initialization to better indicate "fallback"
                  integration of WATCH peek/one-shot
03-SEP-2000  MGD  v7.0.2
                  limit script output of ENDOFFILE
                  if CGI response "Content-Encoding:" force stream mode
                  bugfix; ProxyResolveHostLookup() can be called multiple
                  during host name resolution - only allocate channel once!!
                  bugfix; include Accept-Encoding when redirecting
                  bugfix; ParseQueryField() string length check
09-JUL-2000  MGD  v7.0.1
                  locking around proxy cache scans
                  add "success=" 303 processing to PUT.C file upload
                  improve CgiOutput() header processing (again!)
                  correct concealed/searchlist parsing
                  allow "302 location" redirection from authentication agent
                  bugfix; proxy CONNECT service
                  bugfix; HEAD requests specifying content-length
                  bugfix; WatchCliSettings() storage
01-JUN-2000  MGD  v7.0.0
                  support extended file specifications
                  (ODS-5 under Alpha VMS V7.2ff)
                  event reporting via OPCOM
                  some "Apache" support for easing CGI script ports
                  access log file naming refinements
18-MAR-2000  MGD  v6.1.3
                  bugfix; authconfig processing
06-JAN-2000  MGD  v6.1.2
                  authorization failure limit evasion period
                  numerous warnings from DECC v6.2 addressed
                  bugfix; user restriction list pass (broken in 6.1)
17-DEC-1999  MGD  v6.1.1
                  bugfix; quote double-up in CgiVariable() (INSVIRMEM exit)
04-DEC-1999  MGD  v6.1.0
                  "agent" authentication/authorization
                  CGI(plus) processing provides callouts
                  SSI module now supports OSU-specific directives
                  /SYSPRV now allows operation with SYSPRV turned on
                  "one-shot" WATCH and "peek" reports
                  output no-progress timer
                  remove NETLIB support
16-OCT-1999  MGD  v6.0.3
                  bugfix; sys$create_user_profile
                  bugfix; mapping storage overflow
                  USER mapping rule for SYSUAF access
12-SEP-1999  MGD  v6.0.2
                  minor changes to authorization processing
                  bugfix; service parsing and SSL
                  virtual services now match using "Host:" field
19-JUN-1999  MGD  v6.0.1
                  refinements to request termination/rundown
                  bugfix; DECnet (CGI and OSU) task handling
                  bugfix; proxy request HTTP/0.9 response processing
30-MAY-1999  MGD  v6.0.0
                  proxy, with HTTP caching
                  OpenSSL 0.9.3 support (also SSLeay support)
                  extended authorization/authentication environment
31-MAR-1999  MGD  v5.3.4
                  bugfix; SesolaReport(), HttpHeaderChallenge()
28-MAR-1999  MGD  v5.3.3
                  SSI variables global (when "#include"ing other SSI)
                  SSI read buffer determined by 'FileXabFhc.xab$w_lrl'
05-FEB-1999  MGD  v5.3.2
                  bugfix; FileNextRecord() zero '_usz'
10-JAN-1999  MGD  v5.3.1
                  greater granularity when WATCHing authorization
                  bugfix; OSU scripting pass *mapped* file spec
14-NOV-1998  MGD  v5.3.0
                  [[host:port]] virtual service syntax
                  [AddType] can now "text/html; charset=ISO-8859-1"
                  [CharsetDefault] sets text and server character set
                  improved AST granularity several significant modules
                  WATCH report and CLI
                  RMS-invalid substitution character in mapping rules
                  bugfix; NameOfDirectoryFile()
29-AUG-1998  MGD  v5.2.0
                  reuse DECnet task connections
                  allow specified hosts exclusion from logging
                  stream-LF conversion only on specified paths
                  bugfix; SYS$TIMEZONE_DIFFERENTIAL processing
                  bugfix; DECnet tasks not aborted at timeout
07-JUL-1998  MGD  v5.1.0
                  add eXtended Server Side Includes processing
                  design-problem; modify CGIplus script rundown
                  SYSUAF authentication by identifier
                  per-service logging
                  rqptr->rqTmr.Terminated (occasional lib$get_vm()
                  %LIB-F-BADLOADR around connection expiry termination)
20-DEC-1997  MGD  v5.0.0
                  optional Secure Sockets Layer (using SSLeay)
                  DECnet-based scripting including OSU emulation
                  miscellaneous revisions and "improvements"
07-JAN-1997  MGD  v4.5.2
                  bugfix; record-mode file transfer
                  bugfix; activity graph
06-DEC-1997  MGD  v4.5.1
                  resolving a suspected inconsistent AST delivery situation
                  by requiring all $QIO()s with AST routines to ensure any
                  queueing errors etc. are reported via the AST routine by
                  an explicit $DCLAST() ... this removes ambiguity about how
                  $QIO() returns should be handled ... drastic but desperate
                  times, etc. (a more consistent and desirable model anyway :^)
02-NOV-1997  MGD  v4.5.0
                  file cache
                  logging periods
                  HttpdSupervisor()
                  configurable script run-time environments
                  additional request header fields
18-OCT-1997  MGD  v4.4.1
                  bugfix; duration
                  bugfix; logging period
01-OCT-1997  MGD  v4.4.0
                  message module
                  conditional rule mapping
                  SYSUAF-authenticated user access control
                  multi-homed/multi-port services
                  (some NETLIB packages now cannot DNS lookup)
                  echo and Xray internal scripts
                  extensions to logging functionality
                  additional command-line server control
                  bugfix; redirection loop detection
01-AUG-1997  MGD  v4.3.0
                  MadGoat NETLIB broadens TCP/IP package support
                  server activity report
16-JUL-1997  MGD  v4.2.2
                  bugfix; WORLD realm and access list
07-JUL-1997  MGD  v4.2.1
                  minimum heap allocation chunk size
                  prevent keep-alive timeout redefining request logical
01-JUL-1997  MGD  v4.2.0
                  change name to WASD (Wide Area Surveillance Division)
                  persistant DCL subprocesses and CGIplus 
                  (see re-written DCL.C module)
                  scripting and client reports
                  potential multi-thread problems in reports fixed
27-MAR-1997  MGD  v4.1.0
                  rationalized HTTP response header generation
                  delete on close for "temporary" files to support
                    UPD module "preview" functionality ... WARNING, any
                  file with a name comprising a leading hyphen
                  sixteen digits and a trailing hyphen will be deleted!
01-FEB-1997  MGD  v4.0.0
                  HTTPd version 4
01-OCT-1996  MGD  v3.4.0
                  extended server reporting  
01-AUG-1996  MGD  v3.3.0
                  realm/path-based authorization
                  BASIC and DIGEST authentication
                  PUT(/POST/DELETE) module
                  StmLf module (variable to stream-LF file conversion)
12-APR-1996  MGD  v3.2.0
                  file record/binary now determined by record format
                  persistent connections ("Keep-Alive" within HTTP/1.0)
                  moved RMS parse structures into thread data
                  improved local redirection detection
                  observed Multinet disconnection/zero-byte behaviour
                  (request now aborts if network read returns zero bytes)
15-FEB-1996  MGD  v3.1.1
                  fixed rediculous :^( bug in 302 HTTP header
                  minor changes to request accounting and server report
                  minor changes for user directory support
                  minor changes to error reporting
03-JAN-1996  MGD  v3.1.0
                  support for both DEC TCP/IP Services and TGV MultiNet
01-DEC-1995  MGD  v3.0.0
                  single heap for each thread's dynamic memory management
                  extensive rework of DCL subprocess functionality
                  HTML pre-processsing module (aka Server Side Includes)
                  NCSA/CERN compliant image-mapping module
                  NetWriteBuffered() for improving network IO
                  miscellaneous reworks/rewrites
27-SEP-1995  MGD  v2.3.0
                  carriage-control on non-header records from <CR><LF> 
                    to single <LF> ('\n' ... newline), some browsers expect
                    only this (e.g. Netscape 1.n was spitting on X-bitmaps)
                  added Greenwich Mean Time time-stamp functionality
                  added 'Referer:', 'If-Modified-Since:', 'User-Agent:'
07-AUG-1995  MGD  v2.2.2
                  optionally include commented VMS file specifications
                  in HTML documents and VMS-style directory listings
16-JUN-1995  MGD  v2.2.1
                  added file type description to "Index of" (directory)
24-MAY-1995  MGD  v2.2.0
                  minor changes to allow compilation on AXP platform
03-APR-1995  MGD  v2.1.0
                  add SYSUAF authentication, POST method handling
20-DEC-1994  MGD  v2.0.0
                  multi-threaded version
20-JUN-1994  MGD  v1.0.0
                  single-threaded version
*/
/*****************************************************************************/

#ifndef VERSION_H_LOADED
#define VERSION_H_LOADED 1

/* five characters or less */
#define HTTPD_NAME "WASD"
#define HTTPD_SOFTWAREID_NAME "HTTPd-WASD"

/* keep HTTPD_GBLSEC_VERSION in step with this version (as necessary) */
#define HTTPD_VERSION "8.5.3"

/* used as part of the the "instance" lock names, allowed range 1..15 */
#define HTTPD_LOCK_VERSION 1

/* used as part of the the global section name */
#define ACTIVITY_GBLSEC_VERSION     "800"
#define AUTH_GBLSEC_VERSION         "800"
#define HTTPD_GBLSEC_VERSION        "800"
#define SESOLA_GBLSEC_VERSION       "800"
#define PROXYVERIFY_GBLSEC_VERSION  "800"

/* used to detect changes in global section data structures  */
#define ACTIVITY_GBLSEC_VERSION_NUMBER     0x0800
#define AUTH_GBLSEC_VERSION_NUMBER         0x0800
#define HTTPD_GBLSEC_VERSION_NUMBER        0x0800
#define SESOLA_GBLSEC_VERSION_NUMBER       0x0800
#define PROXYVERIFY_GBLSEC_VERSION_NUMBER  0x0800

VersionInfo();

#endif /* VERSION_H_LOADED */

/*****************************************************************************/
