Changes from 2.0.7 to 2.0.8
===========================
- BUGFIX(gkacct.cxx) rotation per number of lines works correctly now
- (h323util.cxx) removed possibly unaligned memory access
- RIP (Request In Progress) message is now understood by the gatekeeper
- (gkacct.cxx) parametrized FileAcct CDR output
- BUGFIX(gkauth.cxx) do not declare H.235 Auth Procedure I support as it is
  not fully implemented
- (RasSrv.cxx) do not copy nonStandardData field from RAS requests to RAS replies,
  as it does not make any sense and cause interoperability problems with some
  Cisco IOSes
- (gktimer.cxx) adjustment of timer expiration time if it is in the past
- BUGFIX(ProxyChannel.cxx) fixed vulerability to an invalid destCallSignalAddress field
- BUGFIX(RasSrv.cxx) fixed vulerability to an invalid destCallSignalAddress field
- (gk.initd.gentoo) added init script for Gentoo Linux from Cesar Bermudez
- (ProxyThread.cxx) fixed a critical bug with queueing proxied packets
- new ParseEmailAliases config option that allows processing of email/DNS-like
  aliases for a destination address
- (ANSI.h) removed
- BUGFIX(gkacct.cxx) fixed processing of short day names in FileAcct config
- new flexible CDR file rotation for FileAcct module
- (gktimer.cxx) new generic support for time-based events
- new direct SQL accounting module (SQLAcct)
- BUGFIX(yasocket.cxx) fixed another bug in YaSelectList::Select and some
  peformance tests done for STL/non-STL implementations (comments in the code)
- BUGFIX(radproto.cxx) default auth/acct ports are now set to fixed values
  1812 and 1813, due to problems with getservbyname and multithreading
- now Acct-Session-Id is generated automatically for each new call and has
  the same format as in 2.2 version (32-bit timestamp + 32-bit counter -
  both form together string of 16 characters - hex digits)
- BUGFIX(gksql.cxx) better routine for query parameter replacement, ability
  to use named parameters in addition to numeric ones
- BUGFIX(yasocket.cxx) fixed bug in YaSelectList::Select introduced by recent
  changes
- removed descendancy check in radproto to allow compilation with the latest
  RTTI enabled PWLib
- improved performance of the socket code (especially when LARGE_FDSET 
  is enabled). Faster select for a single socket and an unnecessary 
  write lock for UDP sockets removed
- BUGFIX(ProxyChannel.cxx) fixed bugs in ForwardCall, thanks to Daniel Liu
- BUGFIX(radauth.cxx) referencing RRQ terminalAlias field without checking
  for its presence first
- added sample MySQL database schemas for SQLConfig, SQLAliasAuth 
  and SQLPasswordAuth modules. Thanks to Ap Muthu
- BUGFIX(Toolkit.cxx) smarter SQLConfig query results handling, 
  check for empty fields in the result set
- new CheckSetupUnregisteredOnly option for RadAliasAuth module
- ability to read config settings from SQL database. [RasSrv::RewriteE164],
  [RasSrv::Neighbors], [RasSrv::PermanentEndpoints] and [RasSrv::GWPrefixes]
  can be read this way. New [SQLConfig] config section introduced. 
  Funded by Doxum Technologies Inc.
- SQL engine rewritten completelly to use a concept of SQL driver.
  New modules SQLPasswordAuth and SQLAliasAuth added. MySQL and PostgreSQL
  drivers implemented. Funded by Doxum Technologies Inc.
  Backward compatibility (MySQLAliasAuth and MySQLPasswordAuth) maintained.
- finally got rid of MySQL C++ API and replaced it with C API backported 
  from 2.2 branch. Now cache timeout can be set separatelly for MySQLAliasAuth
  and MySQLPasswordAuth using CacheTimeout config variable
- (RasTbl.cxx) permanent endpoints are correctly reloaded now, with removal
  of permanent endpoints for which config entries have been deleted
- (RasTbl.cxx) fixed compilation warning and compilation error on FreeBSD
- (ProxyChannel.cxx) applied patch to force Calling-Party-Number usage
  as Calling-Station-Id for accounting modules. Introduced a new config 
  section "Accounting" and a new config variable "AlwaysUseCLID"
- (ProxyChannel.cxx) removed unnecessary locks
- make possible to call unregistered endpoints from unregistered endpoints
  (direct IP-IP calls)
- Windows LDAP patches and removed duplicated UnregisterAllEndpoints() call
  on gatekeeper shutdown, thanks to Franz J Ehrengruber!
- WinSvc: the new version 1.1 from Franz J Ehrengruber, thanks!
- (Toolkit.cxx) use in-place constructors and destructors inside RewriteData
  to prevent Windows exceptions on rewrite rules reload in debug mode
- (Toolkit.cxx) toggle displaying large_fdset in the list of extensions
  in the gatekeeper version message
- (RasTbl.cxx) treat MCUs as gateways and allow them to register prefixes
- (ProxyChannel.cxx) bugfix for handling multiple Setup messages on a single
  tcp connection
- (ProxyChannel.cxx) fixed bug with trying to process parallerH245Control
  element when there is no H.245 handler
- added processing of parallel H.245 control element from Setup-UUIE
  for H.323 V4 endpoints
- changed prototype for GkAuthenticator::Check ARQ virtual method
  so it will be possible to modify ARQ message during processing
  (NOTE: This change breaks compatibility with custom derived authenticator classes)
- (ProxyChannel.cxx) added new config parameter ScreenSourceAddress
  to screen calling party aliases from UUIE Setup element
- (RasTbl.cxx) fix to remember CRV for both calling and called party
  as it can differ (in RAS messages)
- (ProxyChannel.cxx) fixed referencing deleted remote socket in case of 
  tcp signalling connection establishment failure
- (RasTbl.cxx) rewrite mechanism now should work in direct signaling mode:
  rewritten aliases are included in ACF (if ARQ has canMapAlias set to TRUE)
- (RasTbl.cxx) fixed a missing lock in InternalFind
- (RasTbl.cxx) fixed bug in handling of signalling address objects that caused
  gk to crash on certain circumstances. Thanks to Stelios V. Vaiopoulos!
- fixed Unix LDAP implementation to compile with OpenLDAP
- modified addpasswd utility to require a section name where the username/password
  pair will be stored and to check for KeyFilled variable being present for this section
- LDAP implementation for Windows from Franz J Ehrengruber
- prevent endpoints to reregister during gatekeeper shutdown, thanks to Franz J Ehrengruber
- accounting is enabled in compilation by default

Changes from 2.0.6 to 2.0.7
===========================
- RadAuth/RadAliasAuth modules can now add/remove endpoint aliases during
  endpoint registration (see radauth.txt for more info).
  WARNING: GkAuthenticator Check RRQ virtual method signature has changed!!!
- BUGFIX(GkStatus.cxx) rollback of the previous buggy patch
- fixed destination call signaling address handling (it should not disapper
  from CDRs anymore and should be consistent for auth/acct modules and NATed
  endpoints)
- various small status line improvements (command echo, up arrow repeats
  the most recent command, a new debug cfg command)
- BUGFIX(gkauth.cxx) fixed call duration limit handling when multiple
  authenticator modules are specified
- added utilities to the contrib dir that allow the gnugk ro run 
  as a Windows service process. Thanks to Franz J Ehrengruber!
- new Windows project configurations - Win32 ReleaseAcct and Win32 DebugAcct
- Windows improvements (project icon, version info, better console
  handler). Thanks to Franz J Ehrengruber!
- BackSpace key is now properly handled for Windows telnet clients
- BUGFIX(RasTbl.cxx) fixed CRV handling (call reference value flag 0x8000)
- BUGFIX(RasTbl.cxx) added missing lock. Thanks to Andrey Pankov!
- BUGFIX(RasTbl.cxx) source call signaling address should not disappear
  from CDRs and accounting anymore for unregistered endpoints
- BUGFIX(h323util.cxx) additional check for H225_TransportAddress
  to prevent NULL pointer assertions. Thanks to Andrey Pankov!
- BUGFIX(ProxyChannel.cxx) incorrect arguments passed to FindEndpoint
  could cause wrong Calling-Station-Id selection for accounting purposes
- BUGFIX(yasocket.cxx) PSocket::Select was not called when compiled 
  without PTRACING. Thanks to Per Kreipke!
- BUGFIX(RasTbl.cxx) fixed wrong destination info for calls, caused
  by previous changes. Thanks to Alexey Livikin
- Radius Q.931 Setup authentication routines optimized.
  WARNING!!!: GkAuthentication API for Q.931 checks has changed
- BUGFIX(radauth.cxx) better Framed-IP-Address detection for unregistered 
  endpoints
- BUGFIX(ProxyChannel.cxx) fixed missing originating IP for some calls 
  from unregistered endpoints
- BUGFIX(ProxyChannel.cxx) multiple calls over a single signalling channel
  are now gracefully handled using ReleaseComplete with newConnectionNeeded code.
  Thanks to Alex Golyshev!
- BUGFIX(radauth.cxx) fixed Session-Timeout processing in RadAliasAuth Setup check
- BUGFIX(radproto.cxx) fixed invalid signed/unsigned conversion that caused
  some functions to return unexpected results
- better Calling-Station-Id handling for acct/auth modules
- BUGFIX(RasSrv.cxx) ACF will now contain rewritten destinationInfo 
  (by a virtual queue) only if the matching ARQ comes from the virtual queue
- better Called-Station-Id handling - now it is set to an alias that
  actually matched the destination endpoint
- BUGFIX(WaitingARQ.cxx) better mulithreading safety
- BUGFIX(RasSrv.cxx) LCF messages contain now correct destinationInfo
  - e.g. for gateways LCF will contain dialed number, not the gateway alias
- gateway and neighbor prefixes match can also occur with alias types
  (in addition to dialedDigits) partyNumber and h323_ID (containing only 0-9#*)
- added new VirtualQueuePrefixes and VirtualQueueRegex config variables
  to [CTI::Agents] section. These make possible to call virtual queue
  not only with the exact alias name, but also with an alias that matches
  configured prefixes or configured regular expression. Thanks to Max Speransky
- renamed config variable VirtualQueue to VirtualQueueAliases 
  and CTI_Timeout to RequestTimeout (backward compatibility is maintained)
- BUGFIX(RasSrv.cxx) crypto tokens are not copied from RAS requests to RAS 
  replies, as this does not make any sense in the current form. H.235 Auth
  Procedure I should be implemented instead and crypto tokens should be generated
  by the gatekeeper, not just copied
- BUGFIX(gkauth.gxx) fixed segfault in H.235 capability selection routine. Thanks to Daniel Liu
- changed handling of multiple accounting modules (added new "alternative" control)
- BUGFIX(RasTbl.cxx) fixed connect/disconnect time handling and call duration
  calculation. Thanks to Aivis Olsteins
- BUGFIX(ProxyChannel.cxx) acctstart events can now correctly
  log an IP address for unregistered endpoints
- BUGFIX(RasTbl.cxx) make sure format of ACXF message generated by
  printcurrentcalls matches the format of normal ACFs
- BUGFIX(ProxyChannel.cxx) Q.931 setup authentication now correctly
  updates number of active/total calls for unregistered endpoints
  and records unconnected CDRs for rejected calls due to auth failure
- BUGFIX(ProxyChannel.cxx) if Home is specified in the config, RTP proxy 
  sockets will bind to this specific address - this should solve problems
  with proxy gatekeepers running on the same machine. Thanks to Julius Stavaris
- accounting updates for calls in progress. Currenly only RadAcct
  module implements this type of accounting event
- BUFGIX(radproto.cxx) socket write operation is atomic now
- BUGFIX(RasSrv.cxx): ARQ was not sent from child GK to parent GK
  for the second and subsequent calls to the same OZEP
- BUGFIX(radproto.cxx): unaligned 32-bit access crashed GK on systems
  with Alignment Check enabled
- improved Radius h323-xxx attributes handling (now understands
  attributes both with embedded name strings and without them)
- BUGFIX(radauth.cxx): Session-Timeout RADIUS attribute was processed
  as a string-type attribute, not integer-type attribute
- BUGFIX(radauth.cxx): Q.931 Setup authentication stopped to work due 
  to previous changes
- BUGFIX(RasTbl.h): better call duration limit accuracy (was always 1 second longer)
- BUGFIX(singleton.cxx): incorrect singleton instance counting with different trace levels
- BUGFIX(Makefile): GK_NOANSI moved out of LDAP section

Changes from 2.0.5 to 2.0.6
===========================
- virtual queue config will be reloaded by 'reload' command from
  status port
- in configurations with virtual queues the additional field
  destinationInfo is added to _all_ ACF messages when canMapAlias
  was true in the ARQ was TRUE (allows for ACD routing over gateways)
- added "run as user" feature
- Radius accounting updates
- plain text CDR accounting logger module from Tamas Jalsovszky
- call authentication is now possible with Q.931 Setup message,
  so calls from unregistered endpoints can be authenticated/authorized
- full pre-paid support - both for registered endpoints (ARQ) and for unregistered
  endpoints (Q.931 Setup). Call duration limit is fully supported by RADIUS
  authenticators by now
- commented out rewritting Q.931/H.225.0 Setup nonStandardControl
  (most probably it rewrites useful vendor-specific info into trashes 
  and crashes randomly gk)

Changes from 2.0.4 to 2.0.5
===========================
- LDAP support is of by default, sincd LDAP support has been dropped by OpenH323
  the old LDP files rom OpenH323 have been included, so you can compile with HAS_LDAP=1
- Radius accounting support
- now multiple virtual queues are possible

Changes from 2.0.3 to 2.0.4 (by cwhuang)
========================================
- Radius support from Zygmuntowicz Michal <m.zygmuntowicz@onet.pl>
- add multiple prefixes for neighbors from Rodrigo Gonzalez
- TransferCall patch from Olivier GRALL <olivier.grall@caramail.com>
- fix H.235 compatibility with lastest CVS of Openh323
- set m_h245Tunneling as h245Tunneling flag in Setup_UUIE
- allow h245 reverting work for calltype=1
- allow disable Shutdown command
- permanent endpoints can be reloaded now
- fix conflict between AcceptGatewayPrefixes option and permanent endpoints
- fix bug for multiple SupportedProtocols
- add StatusWriteTimeout option
- add OverwriteEPOnSameAddress option
- add Shutdown command (jan)

Changes from 2.0.2 to 2.0.3 (by cwhuang)
========================================
- add VendorIdentifier in RRQ
- more elegant way to detect version of Openh323
- fix typo for CheckID :(
- fix nattype bug on fullRRQ
- reject nated endpoint from private IP 127.0.0.1
- fix problem if receiving DRQ before than ReleaseComplete
- fix compile problem with latest CVS of Openh323
- add AcceptEndpointIdentifier option
- fix hang bug on GkStatus
- allow to reject forwarded LRQ
- forward call on Facility
- fix bug LRQ with empty destinationInfo
- send endpoint alias via sourceInfo of LRQ
- allow set nated endpoints forcedly
- let virtual queue feature be optional
- fix a bug on startH245
- implemented inbound call distribution with virtual queues
  (based on patch by Dennis Lazreg)
- workaround for Setup contains empty destinationAddress
- workaround to copy cryptoTokens for the latest CVS of OpenH323
- fix shutdown problem on SMP machine
- reject lightweightRRQ if IP has changed
- send DRQ to parent if reject a call
- fix billing issue for forwarded calls
- change 'ifdef PTRACING' to 'if PTRACING' since it is always defined
- fix warnings of unused variables in non PTRACING mode
- expire endpoints even in active calls
- send endSessionCommand before closing h245socket

Changes from 2.0.1 to 2.0.2 (by cwhuang)
========================================
- show NAT IP in print verbose command
- fix reply of pending ARQs to NATed endpoint
- fix bug on handling Facility
- allow hide DisplayIE and CallingPartyNumberIE
- fix an interoperability bug with old NAT solution
- fix a bug that prefixes is not changed on full RRQ
- support 'H323-GW' prefixes
- fix leaking messages on status port
- fix a security bug OnDRQ
- rewrite Setup.destinationAddress even if no CalledPartyNumber
- fix interoperability problem on CloseLogicalChannel for some bad endpoints
- reload route table on RRJ with reason fullRegistrationRequired

Changes from 2.0.0 to 2.0.1 (by cwhuang)
========================================
- add statistics for nated ep and calls from parent
- avoid looped calls
- add NetworkInterfaces option for OS that don't support GetRouteTable()
- add H.245 Reverting technology(Patent Pending)
- fix H.225.0 procotolID problem
- fix a long existing bug according to Packetizer
  http://www.packetizer.com/in/q14.html
- add TOS flag for RTP/RTCP, thanks to Thomas Jalsovsky
- add Citron NAT technology(Patent Pending)
- allow multiple nated endpoints with the same private IP but
  different public IP register simultaneously
- fix possible race conditions in all STL list::size()
- fix a sigfault when name of parent GK is unresolved
- add 'gk' command to show parent GK
- add AlwaysForwardLRQ option
- don't do round-robin for LRQ and find command
- fix a bug in proxy mode (when there are several session IDs in fast start)
- improve support NATed endpoints
- only include alternateGatekeeper field in GCF/RCF if GRQ/RRQ has supportsAltGK
- add a workaround so OpenH323 clients won't reject our confirm messages
  when use H.235 authenticators
- add UseBroadcastListener option
- fix incorrect bandwidth in answered ARQ as a child GK
- add DisconnectSession command, thanks to Rodrigo Gonzalez
- change debug level of received messages(Q931, H245) to 4,
  only show sent messages if modified
- change RasSvr to RasSrv for consistent
- fix bandwidth problem of the answered ARQ
- add password rule for GkStatus, thanks to Rodrigo Gonzalez
- large fd_set patch
- fix problem of h245socket handling
- fix incorrect lightweight RRQ handling

Changes from 2.0b8 to 2.0.0 (by cwhuang)
========================================
- allow to find by epid or ip address
- improve ProxySocket for thread-safe writing
- improve BRQ handling
- add alternateGKs support for GkClient
- improve alternateGKs support
- sort the AuthRules by priority
- clean up BroadcastListen.cxx and MulticastGRQ.cxx
- fix a serious bug in MulticastGRQ.cxx
- let setting options from status port work
- print version when connect to status port

Changes from 2.0b5 to 2.0b8 (by cwhuang)
========================================
- allow to limit port range
- allow call unregistered endpoints
- add RemoveTrailingChar feature
- show CallerIP for CDR from neighbors
- disconnect all calls on shutdown
- disconnect calls when unregister an endpoint
- accept LRQ from registered endpoints
- add AcceptGatewayPrefixes option
- always rewrite dialedDigits OnARQ
- create symbolic link in /tmp to avoid permission problem
- rewrite GkAuthorize to PrefixAuth module
- accept broadcasting RRQ (workaround for Cisco Call Manager)

Changes from 2.0b4 to 2.0b5 (by cwhuang)
========================================
- add ExternalPasswordAuth module
- accept unregistered call if Q.931 contains CalledPartyNumber
- add IncludeDestinationInfoInLCF option
- allow a second ARQ if srcCallSignalAddress is in SkipForwards
- support forwarding LRQs
- add call duration in seconds, thanks to Rodrigo Gonzalez
- change executable name to gnugk
- add DropCallsByReleaseComplete option
- support NATed endpoints by NATHandler
- add AcceptNeighborsCalls, change the meaning of AcceptUnregisteredCalls

Changes from 2.0b3 to 2.0b4 (by cwhuang)
========================================
- add MySQLAliasAuth module
- add ExtraCriterion to MySQLAuth, remove CheckField
- bandwidth management is disable by default
- remove resourceManager, bandwidth management now in CallTable
- allow set neighbors without prefix, no LRQs will be sent to such neighbors
- send IRQ to an endpoint before expiring it
- only accept unregistered call from neighbors
- in SimplePasswordAuth module, allow expire password cache
- add NeighborPasswordAuth module
- check if LRQs is from IP of my neighbors 
- add dynamic resolving name for neighbors, thanks to Rodrigo Gonzalez
- add GkClient module
- allow remove a key or a section in the config from status thread
- remove isalnum check for aliases, we hope to use unicode. :)
- add total call counting for EndpointRec

Changes from 2.0b2 to 2.0b3 (by cwhuang)
========================================
- add AcceptUnregisteredCalls feature
- fix problem of RouteTable in Linux with alias interfaces
- show endtime in CDR even if call not connected
- in routed mode, reject answered ARQ if no CallRec found
- add detailed explanations of known options
- support proxy for fast start logical channels
- fix GKHome not work for proxy

Changes from 2.0b1 to 2.0b2 (by cwhuang)
========================================
- add proxy for T.120 logical channels
- add proxy for RTP logical channels, add Proxy section

Changes from 1.3 to now (by mmuehlen)
====================================
- added destination analysis module list (gkDestAnalysis.cxx, gkDestAnalysis.h)
  with a similar structure as the authentication module list 
  (can be enabled with compiler option WITH_DEST_ANALYSIS_LIST)
- added base class 'GkLDAP' for LDAP access (gkldap.h gkldap.cxx)
- changed the following section names in ini-file 
  (reason: LDAP is not only used for authentification):
    LDAPAuth::LDAPAttributeNames -> GkLDAP:LDAPAttributeNames
    LDAPAuth::Settings -> GkLDAP::Settings

Changes from 1.3 to 2.0b1 (by cwhuang)
======================================
- redesign routed model, add RoutedMode section
- add H.245 routed support, including early connect
- TimeToLive now can be specified in config file
- improve multi-homed support
- new command unregisterip (jan)
- other minor cleanup

Changes from 1.2 to 1.3 (by mmuehlen)
====================================
- fix a bug in Toolkit::GKName (13.11.01)
- add SrcInfo and GkName to CDR:
    CDR|CallNo|CallId|Duration|Starttime|Endtime|CallerIP|CallerEndId|CalledIP|CalledEndId|DestInfo|
    srcInfo|GkName (13.11.01)
- add SHA1 support for SimplePasswordAuth (14.12.01)
- add LDAPAliasAuth (03.01.02)
- add support for new voip.schema (15.01.02)

Changes from 1.2 to 1.3 (by cwhuang)
====================================
- fix problem for lightweightRRQ without callSignalAddress & rasAddress
- rotate log on SIGHUP signal
- write pid to /var/run/gk.pid (can be specified by --pid option)
- rewrite dialedDigits OnLRQ

Changes from 1.1 to 1.2 (by cwhuang)
====================================
- add MySQLPasswordAuth, need mysql++ to compile it
- show left time of calls in PrintCurrentCalls
- add 'Statistics' command
- Rewrite destinationAddress in H225_Setup_UUIE
- fix a bug in Toolkit::RewritePString
- send DRQ to endpoints when tear down a call, give up send Release Complete
  (in some situation it causes deadlock, very strange!!)
  however, some buggy endpoints would ignore DRQ, sigh...
  only send Release Complete on 'DisconnectCall' command
- fix 'connectionList returned NULL' bug in SignalChannel.cxx
- modify SignalConnection::Send to more thread-safe
- modify OnARQ to fix routed mode problem
- show count of current calls of endpoints in PrintAllRegistrationsVerbose
- add 'Find' and 'FindVerbose' commands
- check endpoint identifier for fullRegistrationRRQ
- fix a (security) bug in lightweightRRQ
- add startup and running time to 'Version' command
- change EndpointRec::m_terminalType to be a pointer to reduce memory
  consumed (sizeof H225_EndpointType = 2552 in x86)
- send Release Complete to endpoints when tear down a call (routed mode)
- disconnect calls of an endpoint on URQ
- add DefaultCallTimeout to remove staled calls
- fix bug in DisconnectAlias
- only use CallId to find CallRec if it presents, this fix a potential
  CRV conflict in ARQ
- re-use endpoint identifier if call signal address found in RemovedList
- send URQ & DRQ from RAS port instead of arbitrary port
- print dialed number, number of calls in PrintCurrentCalls cmd
- print number of endpoints in PrintAllRegistrations cmd
- allow generate NB, UC CDR
- don't let ttl < 60
- only generate CDR for call that originated from my zone and connected
  (must work in routed mode)
- redesign CallRec & CallTable
- extend debug cfg SEC command to retrieve a whole section

Changes from 1.0 to 1.1 (by cwhuang)
====================================
- change neighbors structure
- add class GkAuthInitializer for authenticators initialization
- add authentication modules (gkauth.cxx, gkauth.h)

Changes from 1.0pre9 to 1.0 (by cwhuang)
========================================
- add 'debug printrm' command
- change EndpointRec::Ptr to template

Changes from 1.0pre8 to 1.0pre9 (by cwhuang)
============================================
- Neighbor function based on LRQ/LCF.
  GK would cache the records in a list.
  A command "PrintAllCached" is added to GkStatus.
  
- Add more information in LCF reply, including terminal type, aliases
  and supportedProtocols (if any) so that the neighbors could cache it.

- Re-design EndpointRec & RegistrationTable.
  The output format of "PrintAllRegistrations" is also changed.

- Add permanent endpoints support for endpoints without RAS.

- Add gateway SupportedPrefix support.
  Note the gateway aliases no longer be treated as prefixes.
  If you want an alias to be a prefix, add it to SupportedPrefix
  or config file.

- Replace using directive by using declaration to avoid namespace pollution.

Changes from 0.17 to 1.0pre8
============================
- add destInfo to CallRec and CDR (cwhuang)
- rewrite some codes in OnRRQ to be more clean and compact (cwhuang)
- change H323RasSrv to be a separate thread, do housekeeping in the main thread (cwhuang)
- shutdown handler refine (cwhuang)
- allow aliases begin with '#' (cwhuang)
- don't search endpoint table for an ARQ to an answerCall (cwhuang)
- add registration timeout (cwhuang)
- add mutex to RegistrationTable for thread-safe (cwhuang)
- almost rewrite SoftPBX.cxx (cwhuang)
- add singleton.h, singleton.cxx, change all singleton objects to derive from a
  template singleton base to avoid code duplication and allow a better cleanup
  (cwhuang)
- remove all usages of for_each_with by STL for_each (cwhuang)
- add RegistrationTable::RemovePrefixes(const PString &) (cwhuang)
- add more fields to CDR output, add port number to ACF output (cwhuang)
- rewrite UnixShutdownhandler for graceful shutdown (cwhuang)
- change some members and methods in Toolkit to non-static (cwhuang)
- ensure Toolkit::Config be called after SetConfig
  some order of initialization in gk.cxx changed accordingly (cwhuang)
- fix the reload mechanism, set m_RewriteFastmatch when reload (cwhuang)
- add 'reload' command to status thread and remove 'debug reload' command
  'shutdown' command is also added, but not implemented yet (cwhuang)
- show a copyright notice to be compliant to GPL requirement (cwhuang)

- more documentation
- status thread: changed Disconnect command to DisconnectIp,
  added DisconnectAlias, DisconnectCall, DisconnectEndpoint,
  UnregisterAlias
- better handling of DCF
- better error checking for command arguments via status thread
- dummy implementation for TransferCall and MakeCall (doesn't do anything, yet)
- slightly different handling of SIGHUP
- RewriteE164: multiple comma-separated targets, randomly chosen
- simplified conversion between socket and H225 ip addresses
- first steps to implement H.245-routing (doesn't do anything, yet)
- commands via status thread are case insensitive
- changed command line option -h (home interface) to -i, new option -h (help)
- updated to latest OpenH323 version (pwlib 1.1.32, openh323 1.5.4)
- use callIndentifiers instead of callReferences (the first are globally unique)
- generate CallProceeding messages
- using all aliases of endpoint, not only the first alias
- generate CDRs, signal all ACFs
- check H.225 connections with Q.931 StatusEnquiry heartbeat (optional)
- changed default for RasSrv::RRQAuth back to confirm (so you can use
  the gatekeeper without a config file)
- compile fixes for Visual C++ 6.0

Changes from 0.16 to 0.17
=========================

- fixed crash in status reporting of ACF in routed mode
- fixed bug, where the destCallSignalAdress still pointed to the GK
  after being forwarded in routed mode (prevented routed call from
  OhPhone -> Netmeeting)
- the config file gatekeeper.ini is no longer mandatory; simple
  configurations will work without any config file, but you'll need
  it for more complicated setups

Changes from 0.15 to 0.16
=========================

- small fixes to make the gatekeeper compile under Visual C++ 6.0

Changes from 0.14 to 0.15
=========================

- fixed unsafe cast from H323 alias to PASN_BMPString
  Bacci Emiliano found it

Changes from 0.13 to 0.14
=========================

- major bug-fix for ohphone compatibility
  Christoph Stueckjuergen found it

Changes from 0.12 to 0.13
=========================

- updated to compile with OpenH323 beta 3
- small fix in SignalConnection for Windows NT
  by rama@anwsi.com
- multicast requests are answered to the specified port (not the
  sender port
  by Denver Trouton
- RegistrationTable::FindByPrefix now finds the longest prefix, not
  the first one
  by Michael Rubashenkov
- fix in H323RasSrv::OnLRQ to allow it to work with Cisco gatekeeper
  by Michael Rubashenkov
- fix to allow Netmeeting to call ohphone (the other always way has
  been working)
  by Andreas Hofmeister

Changes from 0.11 to 0.12
=========================

- you must have a config file now to set the various new options
  (eg. gatekeeper.ini in the current directory, or set a path on the
  command line with -c)
- support for failover to other gatekeepers
- RAS messages can be forwarded to other gatekeepers
- TCP parameters can be configured in the config file
- what gateway to use on what E.164 prefix can be specified in the
  config file
- overlapped sending: specify in the config file when to send
  "incompleteAddress" on ARQ and collect more digits
- detailed authentication rules which endpoints may register based on
  their IP numbers
- rule based authentication for usage of the status port
- alias rewriting: the gatekeeper has a list of E.164 aliases
  that are replaced by another E.164 number
- many bug fixes...

- the timeToLive filed in RCF can be set on the command line with -l

- more detailed status messages (see GkStatusMsgFmt.html)
  many patches from Henrik Joerring

Most of the changes in this release are donated by folks at MediaWays
(Markus Storm and Torsten Will).
They sent more stuff than I can mention here.


Changes from 0.10 to 0.11
=========================

- many memory leaks fixed
  by Damian Slee
- LRQ implemented
  patch by Ashley Unitt
- accept LRQ as Multicast, too
- when more bandwidth is requested than available we now grant ACF with
  the bandwidth that's still available
  input from Robert Jongbloed
- more attempts for a clean shutdown handling
- status thread accepts commands now (see gkstatus.txt)
  patch by Ashley Unitt
- more detailed status messages (see GkStatusMsgFmt.html)
  input from Henrik Joerring
- general code fixups
  by nils@shkoo.com


Changes from 0.9 to 0.10
========================

- trace messages now use the Pwlib trace facility (use -t or -tt ... to
  turn them on and -o to write to a file)
  patch from Seungoh Jhung
- support for lightweight registration updates
- on shutdown all registered endpoint receive a UnregistrationRequest
- support for gateways: for gateways we only compare the prefix of
  the E.164 address the gateway registered and assume that the gateway
  provides access to the whole address space (needs testing!)
  input from Frank Breitenbach
- new command line option -h <ip> to specify the ip number the
  gatekeeper binds to. Now you can use IP aliases on Linux and
  start as many gatekeepers as you want.
  input from Markus Storm
- status messages with ip numbers
  input from Seungoh Jhung
- bugfixes
  from many contributors...


Changes from 0.8 to 0.9
=======================

- gatekeeper routed signaling implemented (only H.225; no H.245, yet)
  provided by Sergio Artero Martinez
- Bugfix: RRQ from Innovaphone IP400 now ok
  input by Markus Storm
- gk sends status messages to all clients connected to TCP port 7000
  (eg. for SNMP agent) - this is experimental and may evolve into
  a full-fledged interface to the gatekeeper
- all mandatory RAS messages implemented

