Changes from 2.0b3 to now (by cwhuang)
======================================
- add MySQLAliasAuth module
- add ExtraCriterion to MySQLAuth, remove CheckField
- 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

