File: changes.txt

package info (click to toggle)
gnugk 2%3A3.0.2-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 5,208 kB
  • sloc: cpp: 48,392; php: 2,314; sql: 2,089; perl: 588; sh: 511; java: 220; makefile: 198
file content (1397 lines) | stat: -rw-r--r-- 77,782 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
- new switch [Gatekeeper::Main] MaxStatusClients= to limit number of status port connections (default: 20)

Changes from 2.3.5 to 3.0
=========================
- BUGFIX(RasTbl.cxx) fix possibility of stale calls when using failover
- when using alias "-" in RouteToGateway, no destination alias will be set
- BUGFIX(gk.cxx) fix trace level if the trace file is in the config file and the trace level on the command line
- [Routing::Explicit] rules now allow IP destinations to be mapped to any kind of alias destination
- BUGFIX(gkauth.h,gkauth.cxx) don't check GRQ in password auth modules
- BUGFIX(RasSrv.cxx) fix crash if H.460.18 client sends only invalid RAS addresses in RRQ
- BUGFIX(Routing.cxx) the DNS policy didn't properly handle ports (eg. joe@company.com:1720)
- rds policy now supports routing unregistered calls
- new switch [Routing::ENUM] ResolveLRQ=
- new switch [Routing::RDS] ResolveLRQ=
- new switch [Routing::SRV] ResolveNonLocalLRQ=
- TraceLevel switch in config now re-read on config reload
- new switch [GkStatus::Filtering] Enable=1
- new config section [PortNotifications] to run scripts whenever GnuGk opens or closes a port
  and new status port command PrintCurrentCallsPorts
- H.235 Media encryption/decryption support for a single leg of a call (EnableH235HalfCallMedia=1) - doesn't work, yet
- stop accepting the old config format for [Gatekeeper::Main] AlternateGKs= (deprecated since 2.3.3)
- IPv4-IPv6 proxying
- IPv6 support
- massive performance improvement when (re-)loading large numbers of GW rewrites
- support for RTP multiplexing (with H.460.19)
- improved H.235 password authentication with neighbors
- support for gatekeeper to gatekeeper H.460.18/.19 (traversal zones)
- BUGFIX(ProxyChannel.cxx) fix H.239 where only one sides uses H.460.19
- BUGFIX(RasSrv.cxx) use correct callSignalAddress for H.460.18 enabled endpoint if H.460.18
  has been disabled per endpoint
- BUGFIX(ProxyChannel.cxx) fix crash when handling a OLCA without mediaControlChannel
  on a NATed connection
- always include destCallSignalAddress in Setup to avoid crash in Polycom m100
- BUGFIX(ProxyChannel.cxx) remove endpointIdentifier from Setup before forwarding
- new switch [Routed::H46023SignalGKRouted] to force all signalling to be Gatekeeper routed for H.460.23/.24
- added more interop support for Sorenson equipment

Changes from 2.3.4 to 2.3.5
===========================
- new switch [Routing::DNS] ResolveNonLocalLRQ=1 to configure if DNS policy resolves hostnames
  in LRQs that don't terminate locally
- BUGFIX(ProxyChannel.cxx) silently drop GnuGk NAT message if endpoint is not NATed
- BUGFIX(ProxyChannel.cxx) make sure ReleaseComplete gets dropped if it doesn't belong to a call
- BUGFIX(ProxyChannel.cxx) strip Private: prefix from H.450.2 transfer destinations
- new switch [Gatekeeper::Main] MaxASNArraySize=
- BUGFIX(ProxyChannel.cxx) rewrite H.460.19 port detection logic
- BUGFIX(RasTbl.h) make sure H.460.18 registrations expire, even without global TimeToLive
- support GWRewriteE164 for neighbors by neighbor ID or neighbor GK-ID
- BUGFIX(Toolkit.cxx) fix PTLib assert when using empty string as regex
- actively reject Home=0.0.0.0
- enable stack protection and full RELRO on Linux
- new setting [RoutedMode] H46023PublicIP to allow Non-NAT endpoints provide NAT support (default=0).
- the config file is now checked for unrecognized entries and a warning is printed
- config switch Fortytwo=42 is now obsolete
- add encryption support (StartTLS) for H.350 (needs PTLib 2.11.x)
- BUGFIX(gnugk.rc) fix tray icon for Windows service
- BUGFIX(gkauth.cxx) remove newline from H.235 password from H.350 server
- BUGFIX(Toolkit.cxx) fix H.350 AssignedAliases and GatekeeperDiscovery
- BUGFIX(gksql_pqsql.cxx) use PQescapeStringConn() instead of PQescapeString()
- add the called IP as alternativeAliasAddress to a routeCallToGK Facility if none is provided
- BUGFIX(ProxyChannel.cxx) fix rare crash for H.460.18 calls
- support for SSH encryption of the status port connection
- BUGFIX(*.cxx) treat empty ExternalIP and NetworkInterfaces settings correctly
- BUGFIX(Toolkit.cxx) fix setting of the default IP, make sure its include in the
  Home= setting, unless explicitly specified in Bind=
- BUGFIX(Routing.cxx) populate calledIP field in RouteRequests resulting from ARQs
- jitter values reported through Radius are now in msec (was codec dependent clock rate)
- new switches: [RasSrv::ARQFeatures] SendRIP=<delay> and [RasSrv::LRQFeatures] SendRIP=<delay>
- new status port command: PrintEndpointQoS
- use H.460.9 data in the same way as sniffed RTCP stats for status port and Radius reporting
- BUGFIX(RasSrv.cxx) fix handling of H.460.9 in ARQ/ACF, signal support in RCF
- BUGFIX(ProxyChannel.cxx) remove callDestSignalAddress from incoming Setup if its the
  ExternalIP to avoid loops
- BUGFIX(RasSrv.cxx) don't include a callSignalAddress in RCFs in direct mode
- BUGFIX(RasSrv.cxx) fix bandwidth calculation
- enable failover to CatchAll endpoint
- enable failover for calls released by the gatekeeper (eg. timeouts)

Changes from 2.3.3 to 2.3.4
===========================
- convert 2nd CallProceeding even if the first was sent through the status port
- BUGFIX(Toolkit.cxx) fix handling of ModeSelection rules (sponsored by Charite, Berlin)
- BUGFIX(gksql_mysql.cxx) set MySQL connect timeout to 10 seconds (was 10000 seconds)
- BUGFIX(RasTbl.cxx) add NULL pointer checks when searching for endpoints
- BUGFIX(RasSrv.cxx) fix handling of BRQs reducing the bandwidth
- BUGFIX(ProxyChannel.cxx) fix H.239 from H.460.19 client (sponsored by Nanjing Southern Telecom)
- BUGFIX(ProxyChannel.cxx) fix H.245 IP in H.460.18 call
- BUGFIX(ProxyChannel.cxx) sourceCallSignalAddr rewrite and RemoveH235Call= were ignored
  when calling endpoint who uses H.460.18
- BUGFIX(yasocket.cxx) fix crash on Windows service shutdown
- new switch: [EP::...]AdditionalDestinationAlias=
- BUGFIX rewrite memory mangement for routeToAlias
- BUGFIX(RasSrv.cxx) allow calls with zero bandwidth
- BUGFIX(ProxyChannel.cxx) fix crash when call being retried is deleted by another thread
- new switch: [Proxy]EnableRTCPStats=, must be enabled to send RTCP stats to Radius server
- BUGFIX(ProxyChannel.cxx) fix crash in RTCP handling
- new switch: [RoutedMode]AlwaysRewriteSourceCallSignalAddress=, defaults to 2.3.2 behavior

Changes from 2.3.2 to 2.3.3
===========================
- BUGFIX(ProxyChannel.cxx) avoid bug in H323Plus so H.460.19 feature indicator can be removed
- "make" with no target builds optnoshared now
- BUGFIX(ProxyChannel.cxx) fix crash on failover with DisableRetryChecks=1
- ignore a 2nd column in SQL routing if it equals "IGNORE"
- addpasswd moved to subdir
- BUGFIX(routedmode.sgml): TcpKeepAlive= has always defaulted to 0
- BUGFIX(Toolkit.cxx): disregard IPv6 addresses if the machine has any
- BUGFIX(SoftPBX.cxx): DisconnectIP now disconnects all calls on the IP as specified
- database drivers load their libraries at runtime now, added Library= switch
- documented [RoutedMode] EnableH460P= and H460PActThread= switches
- BUGFIX(Routing.cxx): apply ENUM policy also to Setup and Facility messages
- BUGFIX(gk.cxx): fix crash when setting a non-writable trace file in the config file
- improved bandwidth management: calls that exceed the bandwidth limit
  will be allowed with reduced bandwidth instead of rejected
- limit bandwidth per call: [Gatekeeper::Main] MinimumBandwidthPerCall= and MaximumBandwidthPerCall=
- limit bandwidth for registered endpoints with [EP::...] MaxBandwidth=
- change to the format of [Gatekeeper::Main] AlternateGKs=
- new config section [RasSrv::AlternateGatekeeper] for alternate gatekeeper configuration by endpoint IP
- new config section [Routing::Explicit] to define mappings for IP dialing
- include BMV, a web front-end for SQLBill (in contrib/bmv2/)
- new config section [ReplyToRasAddress]
- BUGFIX(RasSrv.cxx): fix multicast discovery
- document status port command: DisconnectEndpoint
- H.450.2 emulator extended for unregistered calls
- new switch: [CTI::MakeCall]TransferMethod=
- added vendor string in RouteRequest event
- extended status port commands RouteToAlias/RouteToGateway/BindAndRouteToGateway with caller-ID parameter
- updated status port command: TransferCall by call-id and with transfer method
- new status port command: DisconnectCallId
- BUGFIX(GkClient.cxx) signal change of destination alias in parent policy
- gatekeeper-based TCS=0 call transfer: activated through H.450.2 emulator
  or new status port command RerouteCall
- BUGFIX(yasocket.cxx, RasTbl.cxx) don't accept new calls or retry calls when shutdown is
  in progress, avoids possible crash
- BUGFIX(Routing.cxx) check if routing policies have been configured, before using them
- BUGFIX(ProxyChannel.cxx) only rewrite sourceCallSignalAddress if proxying
- BUGFIX(ProxyChannel.cxx) fix NAT detection for unregistered callers
- BUGFIX(RasTbl.cxx) fire unregister event also when endpoint expired
- BUGFIX(Toolkit.cxx) fix order of home IPs
- display H323Plus and PTLib version in GnuGk's version string

Changes from 2.3.1 to 2.3.2
===========================
- new GKClient supports SRV lookup on registrations
- BUGFIX(RasSrv.cxx) set unresolved interface to the default gateway IP as first is loopback on windows
- BUGFIX(Toolkit.cxx) Setting ExternalIP when behind a NAT on a private network
- BUGFIX(ProxyChannel.cxx) fix memory leak in BuildReceiverReport()
- new status port command BindAndRouteToGateway
- new setting [Neighbor::...] SendAliases= to specify aliases to send to the neighbor
- new setting [EP::...] AddNumbers= to add numeric aliases to an endpoint
- new variable for sql routing: %{client-auth-id}
- new switch [RoutedMode]RemoveFaxUDPOptionsFromRM=1 to remove t38FaxUdpOptions
  from t38FaxProfile eg. for Avaya Communication Manager (thanks Denis Kochmashev)
- BUGFIX(Toolkit.cxx) consider H245Routed setting for implied [ModeSelection]
  rules for internal networks (based on patch by Denis Kochmashev)
- BUGFIX(Toolkit.cxx) make sure explicit [ModeSelection] rules override implied
  rules for internal networks
- BUGFIX(RasSrv.cxx) don't start GnuGk, if we can't open a signaling port in routed mode
- BUGFIX(gksql_mysql.cxx) make sure /etc/my.cnf gets read
- changed default for [CTI::MakeCall]UseH450= to 0 (supported by more endpoints)
- new switch [RoutedMode]NATStdMin for registering endpoints behind NAT to support NAT standard.
- extend statusport commands UnregisterIP and DisconnectIP to find endpoints on non-standard ports
- BUGFIX(GkClient.cxx) fix race condition when unregistering child
- BUGFIX(GkClient.h) fix memory leak
- rewrite srv policy, add handling of LRQs and Setups
- BUGFIX(Neighbor.cxx) fix memory leaks in neighbor, srv and rds policy
- more presence work added
- added H.460.24 Annex B support
- add new accounting events: AcctAlert, AcctRegister, AcctUnregister
- BUGFIX(ProxyChannel.cxx, gkauth.cxx) always check if DecodeSubType() was successfull
  before using the result value
- BUGFIX(ProxyChannel.cxx) remove supportedFeature H.460.19 from Setup when called party
  doesn't support it
- added support for multiple DefaultDomains

Changes from 2.3.0 to 2.3.1
===========================
- Firebird database driver updated for Firebird 2.0.x and 2.1.x
- BUGFIX(Toolkit.cxx) don't ignore ExternalIP settings when NetworkInterfaces= is set
- BUGFIX(SoftPBX.cxx) make response messages more consistent
- the old format (2.0) to specify neighbor gatekeepers is deprecated now and has been
  removed from the manual; it still works, but may be removed from future versions
- BUGFIX(ProxyChannel.cxx) only close endpoints logical channel on CloseLogicalChannel, use
  [Proxy]SearchBothSidesOnCLC=1 to retain the old behavior
- BUGFIX(Toolkit.cxx) Enable RewritePString to rewrite address correctly if unregistered full URI.
- BUGFIX(Neighbor.cxx) srv policy now fails calls and doesn't pass them to the next policy
  if a SRV record exists for a domain, but doesn't have a destination for the call
- allow to set proxy mode through 'proxy' variable in Radius h323-ivr-in attribute (thanks to Yuriy Georgiewskiy)
- BUGFIX(Routing.cxx) let dns policy handle LRQs that resolve locally, so URI dialing from neighbors works
- the manual has been improved (thanks to Robert Kulagowski)
- set Radius VSA attribute h323_rtp_proxy in stop event (thanks to Yuriy Georgiewskiy)
- BUGFIX(ProxyChannel.cxx) fix memory leak when creation of a fastStart channel fails
- status port command DisconnectIP now also works with unregistered endpoints using the std port
- BUGFIX(ProxyChannel.cxx) fix handling of H.460.19 RTP keepalive packets
- new switch [Proxy]DisableRTPQueueing=1
- BUGFIX(ProxyChannel.cxx) fully initialize UDP proxy IPs and ports
- BUGFIX(Routing.cxx) don't apply dns policy to aliases of type dialedDigits
- BUGFIX(Toolkit.h/.cxx) use default IP for networks specified in InternalNetwork=, not ExternalIP
- enable data execution protection on Windows versions that support it (starting with XP SP3)
- BUGFIX(gk.cxx) make sure Windows service writes same trace format as application (including file and line)
- BUGFIX(Neighbor.cxx) fix memory leak in srv policy, only send the local part of the alias in the LRQ
- new switch [RoutedMode]H46018NoNat to disable H.460.18 if no NAT detected (default enabled)
- new routing policy 'catchall' to route all calls to one alias or IP
- new Radius attributes on stop: h323pddtime, h323ringtime, h323routeattempts
- BUGFIX(Neighbor.cxx) fix srv policy for direct mode, don't send LRQ if SRV points to us
- new switch [RoutedMode]TranslateSorensonSourceInfo=1 to convert the Sorenson VP200 caller information
- BUGFIX(GkStatus.cxx) don't flush status port socket when access is denied to avoid blocking
- new switches in [Gatekeeper::Main]: CompareAliasType and CompareAliasCase to switch off
  alias type and case matching
- BUGFIX(Routing.cxx) fix dns policy for direct mode
- BUGFIX(Neighbor.cxx) try next policy if SRV lookup fails
- neighbor type (GnuGk|CiscoGk|ClarentGk|GlonetGk) is now case insensitive
- features documented: [AssignedAliases::SQL], [AssignedGatekeepers::SQL] and [GkQoSMonitor::SQL]
- BUGFIX(RasTbl.cxx) use rewritten number when decrementing prefix capacity counters, so they match the increment
- feature to set a ClientAuthId in SqlAuth that is provided as %{client-auth-id} on all accounting events
- new status port command ResetCallCounters
- changed ProxyForSameNAT default from 0 to 1 (to avoid media failure uncertainty)
- BUGFIX(RasSrv.cxx) IsReachable looks at correct route table. (virtual was ignored)
- changed [RoutedMode]EnableH46024= to be consistent with H.460.18 switch
- BUGFIX(RasSrv.cxx) RCF messages H.460 features now supported Features not GenericData
- BUGFIX(ProxyChannel.cxx) H.460.19 working with Fast Connect
- BUGFIX(RasSrv.cxx,ProxyChannel.cxx) Tandberg MXP interoperability fixes
- BUGFIX(ProxyChannel.cxx) check capacity on routes supplied by authenticators (Radius, SQL etc.)
- BUGFIX(RasSrv.cxx) avoid cutting off status messages after 1000 chars (problem in PString::Printf)
- BUGFIX(ProxyChannel.cxx) fix for fastStart with H.460.19
- new switch [RoutedMode]EnableH.460.24=, which defaults to OFF
- send RTCP statistics to Radius server (thanks to Yuriy Georgiewskiy)
- BUGFIX(Toolkit.cxx) fix a crash in RewriteE164() when casting aliases
- new config section [ModeSelection] to specify the routing/proxy mode by IP network

Changes from 2.2.8 to 2.3.0
===========================
- codec filtering using [CallTable]DisableCodecs= or Radius (based on a patch by Georgiewskiy Yuriy)
- H.460.18 and H.460.19 support
- BUGFIX(Routing.cxx) fix round-robin that broke in 2.2.8
- new switch [Gatekeeper::Main]DisconnectCallsOnShutdown=0 to avoid disconnecting calls on shutdown
- new switch: [Proxy] ProxyAlways=1
- new variable for sql routing: %{Calling-Station-Id}
- BUGFIX(RasTbl.cxx) fix pointer check in SingleGatekeeper()
- BUGFIX(RasSrv.h) fix memory leak in assignedGK code
- BUGFIX(ProxyChannel.cxx) only set CallInProgress on Alerting and Connect so a 3rd and following
  routes can be tried on failover even when DisableRetryChecks is not set
- BUGFIX(ProxyChannel.cxx) make sure the DisableRetryChecks switch also covers the cases
  where the remote side didn't accept the call (without a ReleaseComplete)
- new switch [SimplePasswordAuth]DisableAlgorithm= to disable H.235 algorithms
- re-enable H.235.1 (Annex D / Baseline Profile) when compiling against OpenH323 < 1.19.x or H323Plus
- BUGFIX(gkauth.cxx) fix CAT authentication when compiling against OpenH323 < 1.19.x or H323Plus

Changes from 2.2.7 to 2.2.8
===========================
- new RadAcct attribute: RewriteE164
- enable multiple failover routes with sql routing policy
- BUGFIX(RasTbl.*) %{last-cdr} was wrong if last call succeeded
- forward the destCallSignalAddress in ARQs to the parent gatekeeper
  (set [Endpoint]ForwardDestIp=0 to get the old behavior)
- BUGFIX(RasTbl.cxx) never overwrite dialed_number after is has been set
- BUGFIX(RasSrv.cxx) add check to avoid crash on GRQ
- BUGFIX(ProxyChannel.cxx) fix reading of fragmented TPKT packets
- new switches Called/CallingPlanOfNumber in [RoutedMode] and [EP::...] to set numbering plan
- enable SRV policy for all OpenH323 versions as long as DNS services are available
- global switches for TranslateReceivedQ931Cause and TranslateSentQ931Cause in [RoutedMode],
  similar to those in [EP::...]
- BUGFIX(ProxyChannel.cxx) supress 2nd acct start event for 2nd Setup with same callid
- allow outbound number rewrite through SQL/RADIUS modules
- rewrite also aliases of type partyNumber (public and private), don't change alias type during rewrite
- BUGFIX(MakeCall.cxx) MakeCall didn't work on Windows
- implemented status port gai/gci commands for SQLAcct, SQLAuth, SQLPasswordAuth and SQLAliasAuth modules
- BUGFIX(capctrl.cxx) added a missing lock during config reload for CapacityControl module
- BUGFIX InternalPolicy should set a reject reason to something like gatewayResources/resourcesUnavailable
  instead of calledPartyNotRegistered when terminating gateways were found, but there was no capacity
- BUGFIX(gksql.cxx) SQL reconnect thread-safety fixes
- new q931cause variable in SQLAuth module
- status port connection can now be closed with Ctrl-D (instead of 'exit')
- selective reload on the status port: Reload <AcctConfig|AuthConfig|CapConfig|EpConfig>
- BUGFIX(radauth.cxx) fixed crash in processing h323-redirect-ip
  when no h323-redirect-number is present
- BUGFIX (RasTbl.cxx) read GWPrefixes even if there is an EP:: section for this endpoint
- BUGFIX (GkStatus.cxx) make sure status port threads don't share string memory with other threads
- new compile option COMPILE_AS_SERVICE to create a native Windows service
- new config options [Logfile]Filename=, [Gatekeeper::Main]TraceLevel= (same as -o and -t on cmd line)
- BUGFIX (ProxyChannel.cxx) always check m_call in H.450.2 call transfer emulator
- allow mutiple results per query from MySQL (and ignore all after the first)
  needed for using strored procedures (patch by Matteo Piscitelli)
- Added Bind INI setting to set the default interface for multihomed virtual servers.
- BUGFIX (Toolkit.cxx) on reload, check if new config is not empty (Fortytwo=42)
- BUGFIX (ProxyChannel.cxx) add NULL pointer checks to avoid crashes
- CapacityControl H.323 Id rules work now also for SetupUnreg calls
- BUGFIX (ProxyChannel.cxx) make sure Q.931 cause is included in generated ReleaseComplete
- new ^= and /= RewriteCLI rules for H.323 ID only rewritting
- new getauthinfo/getacctinfo status port commands
- Changed P2Pnat from H.460 OID to the standard allocated H.460.23/24
- BUGFIX(RasTbl.cxx): dynamically registered prefixes are added with the GatewayPriority
- BUGFIX(GkClient.cxx): use [Endpoint] Type= setting for GRQ, not only for RRQ
- merged P2Pnat support
- added first cut of Presence support
- set radius release-source attribute in stop accounting packet, like %r in sqlacct
- ./configure support for Windows
- new database driver 'SQLite'
- new database driver 'ODBC'
- auto-reconnect on database errors (for all database drivers)
- allow setting a reject reason when rejecting using the sql policy

Changes from 2.2.6 to 2.2.7
===========================
- clarified optional rule effect on auth modules, new "alternative" rule added
  WARNING: semantics of optional rules has changed slightly
- BUGFIX(gk.cxx) don't look for the default config file gatekeeper.ini if -c switch is given
- BUGFIX(RasTbl.cxx) honor setting of Called/CallingTypeOfNumber in [EP::..] section (patch by Mauricio Nuez)
- BUGFIX(Toolkit.cxx) fix detection of default IP when host has a default route, but no default gateway
- SQLBill: implement fixed per-call billing
- BUGFIX(contrib/sqlbill/sql/src/upgrade_tables.sql): fix wrong foreign key reference
- implement SendProceeding command on status port (experimental)
- BUGFIX(Routing.*): calls from registered endpoints to IPs should match vqueue ^.*$
- added cause code translation (see [EP::..] TranslateReceivedQ931Cause and TranslateSentQ931Cause)
- Added H.450 Call Transfer emulator [RoutedMode] EnableH450.2=1
- implement MakeCall command on status port
- BUGFIX SRV policy correctly detects E.164 number.
- BUGFIX Radius module now sent public IP of endpoints behind NAT.
- new switches [RoutedMode] GenerateCallProceeding, UseProvisionalRespToH245Tunneling (experimental)
- new SQLAUth variable %{CallId}
- BUGFIX(RasTbl.*,SoftPBX.cxx) status port commands (find,disconnectcall,transfercall) could influence round-robin order
- enable auto-reconnect for MySQL >= 5.0
- BUGFIX(capctrl.cxx) counters were incorrectly updated for H.323ID and CLI rules
- Added %{CallLink} SQL parameter for correct billing of H.450 call transfer
- BUGFIX (proxychannel.cxx) Detect call signalling is using H.245 Tunneling but says it doesn't
- BUGFIX (RasSrv.cxx) Endpoint registered on same machine as GnuGk should not be treated as being NAT.
- added H.460.interop support for interworking of NetMeeting with everything else (req. OpenH323 v1.19.5)
- added [GkQoSMonitor] H.460.9 realtime QoS monitoring (req. OpenH323 v1.19.5)
- BUGFIX (statusacct.*) output callID in same format as other status port events (spaces replaced with dashes)
- new status port command: printcc
- BUGFIX (RasTbl.cxx) preserve internal call number for each failed call record
  if we have SingleFailoverCDR option enabled. This allow CapacityControl and other
  modules to work fine with failover enabled
- BUGFIX (RasTbl.cxx) don't send URQ to permanent endpoints on shutdown
- BUGFIX (Routing.cxx) fix LRQ canMapAlias detection for vqueue
- BUGFIX (RasTbl.cxx) added missing include file for H.350 support
- added Prefix support for MCU's
- extend virtual queue functionality to unregistered calls (anonymous sponsor)
- remove SignalCallId switch, now call ID is always sent with status port events
- new status port command: PrintPrefixCapacities/printpc
- implement rate limiting, configured by CpsLimit and CpsCheckInterval in the [RoutedMode] section, defaults to OFF
- BUGFIX (RasSrv.cxx, GkClient.cxx) deal better with having no RAS interfaces at all
- BUGFIX (RasSrv.cxx) ensure compatibility with PWLib < 1.9.3
- new 'sql' routing policy configured via [Routing::Sql], sponsored by CoProSys
- BUGFIX (RasTbl.cxx) fix race condition where same call number could be assigned multiple times
- BUGFIX (RasTbl.cxx) avoid memory reference in AliasTypeFilter that causes crash on endpoint delete
- Added [GkH350::Settings] H.350 LDAP directory support (req. OpenLDAP,OpenH323 v1.19.5)
- Added H.350 Authenticator module (req. OpenLDAP,OpenH323 v1.19.5)
- new accounting variable %{bandwidth}
- allow Radius server to send multiple destinations in "h323-redirect-number" attribute for call failover (patch by Lucas Martinez)
- Added Alias Filter via [RasSrv::RRQFeatures] AliasTypeFilter
- Added RDS (resolver discovery service) Routing policy
- BUGFIX (RasTbl.cxx) check route capacity just before it is used for failover, not only at the beginning of the call (patch by Vladimir Voronin)
- Added HTTP Service control via [RasSrv::RRQFeatures] AccHTTPLink 
- BUGFIX (GkStatus.cxx) add semicolon after status port 'debug cfg' output for consistency
- Added [RasSrv::AssignedAlias] to gatekeeper assign aliases
- Added [RasSrv::AssignedGKs] to assign gatekeepers based on alias or IP.(req. H.323v6)
- Added [Gatekeeper::Main] Authenticators option to select which authenticators to use. (req. openh323 v1.19)
- BUGFIX (ProxyChannel.cxx) Finally fixed same nat bug with GnuGk NAT method
- [EP::xxx] PrefixCapacities: limit capacity by prefix on an endpoint
- BUGFIX (gkauth.cxx) Fixed H.235.1 Authenticator
- [RoutedMode] added ENUMservers setting

Changes from 2.2.5 to 2.2.6
===========================
- BUGFIX(toolkit.cxx) Fixed DefaultDomain Alias rewrite
- BUGFIX(routing.cxx) ENUM policy not to be used with LRQ
- BUGFIX(Neighbors.cxx) Fixed SRV policy to try both CS and LR records and not use with LRQ request
- remove ArjReasonRouteCallToSCN (was inactive + broken for a long time)
- BUGFIX(Toolkit.cxx) enable SQLConfig also if only Firebird is available
- BUGFIX(RasTbl.cxx) reject the call if no gateway has capacity, don't just use the first matching gateway
- BUGFIX(RasTbl.cxx) the first route was duplicated and a call was sent twice to the same gw.
  Thanks to Alex Golyshev for pointing this out!
- BUGFIX(RasSrv.cxx) fixed crash inside IRR handler
- BUGFIX(yasocket.cxx) due to recent changes, it was impossible to send
  more than 10240 bytes of data when data queuing had to be involved
- move status port examples to contrib/statusport/
- fix nonStandardData field usage, make use of assigned T.35 codes
- BUGFIX(RasTbl.cxx) ensure that full gateways are eliminated, when failover
  is active and remaining gateways are sorted due to their priority correctly
- BUGFIX(ProxyChannel.cxx) preserve presentation and screening indicators
  in Calling-Party-Number IEs
- BUGFIX(RasTbl.cxx) restore default value for capacity and priority
  on config reload, if removed from an EP section (or if the whole section
  has been removed)
- BUGFIX(Neighbor.cxx,ProxyChannel.cxx): fix canMapAlias for LRQs with
  unregistered endpoints
- new config section [H225toQ931] to change the H.225 reason to Q.931
  cause code mapping
- optional priorities for gateway prefixes: gw-alias=prefix[:=priority][,prefix[:=priority],...] (patch by Alex Golyshev and Andrey Pasukov)
- change default value for CallSignalHandler to 5
- BUGFIX(Toolkit.cxx): fix for calling between 2 internal networks
- Added AcceptNonNeighborLCF to LRQFeatures settings
- Added GnuGk OID & T.35 Codes
- BUGFIX(Toolkit.cxx): fix to allow URI rewriting on ARQ processing
- BUGFIX(ProxyChannel.cxx): fix to show correct Setup CallSignallingAddress when behind NAT
- Added RemoveH235Call & RemoveH460Call Settings
- BUGFIX(ProxyChannel.cxx): H.245 addresses being incorrectly written in NATHandler for public proxies.

Changes from 2.2.4 to 2.2.5
===========================
- RADIUS AAA module now handles a Class attribute correctly
- BUGFIX(clirw.cxx) missing iterator check, that could cause an invalid
  memory access, fixed - thanks to Vladimir Voronin
- implement optional call-id parameter for Routing commands
- Bugfix(RasSrv.cxx) fix SignalCallID=1
- Bugfix(Proxychannel.cxx) avoid inserting same socket twice in cleanup list
- Bugfix(Proxychannel.cxx) make sure all members of CallSignalSocket are
  initialized on creation
- Bugfix(yasocket.cxx) send very large status port messages
  in 10KB chunks and sleep after each
- new feature: StatusPort filtering by Doron Bleiberg
- new switch: [RoutedMode]DisableRetryChecks retries all calls
- BUGFIX(ProxyChannel.cxx) make sure we preserve the original Setup message for
  retries and not only copy the buffer address
- Bugfix(Neighbor.cxx) copy canMapAlias when forwarding LRQs
- implement virtual queues for LRQs sponsored by Associated Engineering Srl.
- implement canMapAlias for LCFs sponsored by TelecomUnity Ltd.
- copy all unknown IEs in Notify messages when forwarding
  (fixes some failed transfers)
- BUGFIX(*.cxx) set all deleted pointers to NULL
- new SyslogAcct accounting module for the Unix syslog
- (gkauth.cxx)Reapplied H235.1 (formally known as H235AnnexA) by using OpenH323 Authenticator factory loader
- (rassrv.cxx)Registration Priority Added
- (Proxychannel.cxx)TreatUnregisteredNat added. Treat unregistered calls unknown NAT status as being NAT
- (routing.cxx)DNS SRV support to DNS Routing policy
- (toolkit.cxx)RewriteAlias section added
- BUGFIX(ProxyChannel.cxx) WaitAndSignal added to OnInformation to avoid NAT support crash.
- BUGFIX(ProxyChannel.cxx) Check for NATSupport added.
- BUGFIX(RasTbl.cxx) WaitAndSignal added to FindByEndPointid()
- BUGFIX(ProxyChannel.cxx) Added SupportCallingNATedEndpoints.
- Moved DNS SRV to it's own seperate policy
- Registration pre-emption support added
- Support for EP's on dynamic IP's
- fixed code to compile with the latest pwlib CVS (STL string conversion)
- Added support for GnuGk to work behind NAT box
- Added support for Third party (non-neighbor) Gatekeepers (AcceptNonNeighborLRQ=1)
- Added auto-detection on internal network for proxy mode.
- Added DefaultDomain for H323 URI rewriting


Changes from 2.2.3 to 2.2.4
===========================
- new Calling/CalledTypeOfNumber and Proxy configuration variables
  in [RouteMode] section and endpoint configuration. Thanks to Vladimir Voronin
- (ipauth.cxx) added support for prefixes. Thanks to Vladimir Voronin
- (gksql_firebird.cxx) Firebird/Interbase driver for SQL modules. Sponsored
  by Roitel Telecommunication S.A.
- (Routing.cxx) NumberAnalysis routing policy can handle Setup messages now.
  Thanks to Vladimir (vl@kamatele.com)
- (pwlib_compat.h) adapt to changed mutexes starting with PWLib 1.9.2
- call mute in proxy mode using userinput * (patch by Simon Horne)
- NAT support for unregistered callers (patch by Simon Horne)
- (gk.cxx) allow correct spelling for FortyTwo=42 entry
- BUGFIX(yasocket.h) fix compilation with gcc 4.1
- (clirw.cxx) process CLI ranges with leading zeros correctly
- new CapacityControl auth/acct modules to control inbound traffic
- BUGFIX(ProxyChannel.cxx) check added for a NULL pointer in NAT traversal code
- (RasTbl.cxx) default SignalTimeout value increased from 15 to 30 seconds
- BUGFIX(RasSrv.cxx) remove call records correctly in direct signaling mode,
  when only called party is registered. Thanks to Julius Bajzik
- BUGFIX(RasTbl.cxx) fixed race condition when accessing endpoint records
- BUGFIX(ProxyChannel.cxx) fixed race condition in H245Socket when H.245
  tunneling is disabled
- (configure) better detection of PostgreSQL on FreeBSD
- BUGFIX(RasSrv.cxx) allow bandwidth=0 in ARQ / ACF
- BUGFIX(ProxyChannel.cxx) fix bug when using RADIUS/SQL based routing
  for Setup messages
- BUGFIX(ProxyChannel.cxx) check for poor NAT implementations, that might
  have crashed GnuGk (by Simon Horne)
- new accounting variables: %{media-oip}, %{codec}
- new accounting variables: %{call-attemps}, %{last-cdr}, %{caller/callee-epid}
- new feature: call failover (see manual)
- BUGFIX(clirw.cxx) set presentationIndicator correctly in H.225.0 Setup UUIE
- BUGFIX(RasTbl.h) when active, perform IRR checks for local
  endpoints only, others (parent, neighbor etc.) won't send us IRRs
- BUGFIX(Routing.cxx) remove leading zeros for ENUM queries
- BUGFIX(RasSrv.cxx) have AcceptNeighborsCalls default to 1 like
  the documentation always said
- BUGFIX(Routing.cxx) fix ENUMPolicy implementation
- new StatusAcct accounting module for the status port sponsored by Grupo Isec

Changes from 2.2.2 to 2.2.3
===========================
- (ProxyChannel.cxx) use Calling-Party-Number to perform inbound per-gateway number rewrite
  (GWRewriteE164), if no sourceAddress is present in H.225.0 Setup UUIE
- IRR checking for active calls [CallTable] IRRFrequency=n, IRRCheck=TRUE
- BUGFIX(RasSrv.cxx) terminate all calls before unregistering endpoint
  when OverwriteEPOnSameAddress=1
- new RewriteCLI options to control CLIR features precisely 
- new CLIR/CLIP (Calling Line Identification Restriction/Presentation) features in
  RewriteCLI module. Ability to hide CLI (enable CLIR/CLIP) per endpoint
- Unix man page in the docs folder by Ivan Lopez <ilopez@enress.gov.ar>
- do not leave sockets open when proxy handlers are idle. Peform proper cleanup
  all the time
- manual updated with notes on TIME_WAIT and Q931PortRange/H245PortRange/T120PortRange
- new SocketCleanupTimeout config variable to control time to wait before
  a socket is deleted
- more reliable port allocation making better call throughput better on a heavily
  loaded server or when using very small port ranges
- more detailed description of network operations
- if Home contains a single IP address, bind RTP sockets to this specific address,
  instead of INADDR_ANY
- do not remove addresses specified in Home that are not found in PWLib interface table,
  just generate a warning
- BUGFIX(clirw.cxx) random rewrite did not work for outbound rules and comma separated items
- Solaris compilation errors fixed, thanks to Mikko Oilinki
- BUGFIX(yasocket.cxx) fixed address reuse for UDP sockets in LARGE_FDSET mode,
  broadcast RAS socket did not work previously
- better error reporting on socket allocation
- new ENUM routing policy from Simon Horne
- added check for PWLib/OpenH323 minimum version supported
- optionally signal call ids in the status port with ACF/ARJ/DCF/DRJ/RouteRequest
  messages (switch on with SignalCallIds=1 in main section)
- NetMeeting compatibility problems fixed
- new [RasSrv::RRQFeatures] IRQPollCount config variable, default number
  of "poll" IRQ messages changed from 2 to 1
- FileIPAuth module moved from the contrib section into the main branch
- BUGFIX(ProxyChannel.cxx) tunnelled H.245 messages were not processed
  correctly

Changes from 2.2.1 to 2.2.2
===========================
- allow empty key values in SQLConfig ConfigQuery/RewriteE164Query
- restored MSVC6.0 compatibility
- BUGFIX(radproto.cxx) GetSocket could use an invalidated iterators
  under some circumstances. Thanks to kubuqi cn
- (ProxyChannel.cxx) ignore incorrect mediaChannel offers with port number 0,
  internal option [Proxy] RemoveMCInFastStartTransmitOffer to enable removing
  mediaChannel from fast start transmit channel open offers
- creditamout and billingmode fields may appear in a result for SQLAuth CallQuery
- exclude all SQL modules from build if no SQL support is enabled
- BUGFIX(ProxyChannel.cxx) originate an H.245 TCP connection from the same IP
  as an associated signalling connection is established
- (clirw.cxx) new CLI rewrite types - prefix replacement (*=) and an identity
  match (~=)
- don't lock the call table when logging accounting data on call disconnect,
  to prevent gatekeeper long lock periods when a backend is not working properly
- new TranslateFacility config variable to enable Facility message conversion
  between H.323v4 and previous versions of the protocol
- %t, %p, %{ring-time}, %{alerting-time} accounting variables ported from 2.0
  branch. ConnectTimeout config variable replaced with SignalTimeout and AlertingTimeout
- new %r accounting variable to get who disconnected a call, thanks to Freddy Parra
- new generic SQLAuth module to authenticate and authorize RRQ, ARQ, LRQ and Setup messages
- BUGFIX(ProxyChannel.cxx) another attempt to solve race issues in H.245 routed
  mode that may cause occasional crashes
- new --core command line argument to enable core dump generation for Unix
- new Vendor config variable for [Endpoint] section to provide vendor specific
  extensions when registering with a parent gatekeeper
- added support for Connect event in SqlAcct module, thanks to Boian Bonev
- BUGFIX(Neighbor.cxx) nonStandardData field was not included for CiscoGK neighbors
- a new module to rewrite ANI/CLI numbers. Sponsored by Gabriel Georgescu.
- new FreeBSD 5.3 startup script
- BUGFIX(ProxyChannel.cxx) send proper Release Complete when the remote side
  does not respond to a Setup message
- BUGFIX(ProxyChannel.cxx) correctly remove calls from the call table,
  when setup processing fails for some reason (auth failed, acct failed, ...)
- BUGFIX(ProxyChannel.cxx) fixed config reload deadlock when using H.245
  routed mode and listening sockets are holding the config reload mutex
- (Routing.cxx) new routing policy NumberAnalysis to support overlapped digit
  sending with ARQs
- WinSvc from Franz J Ehrengruber updated to work with GnuGk 2.2.2 and 2.0.10
- new FileIPAuth module in the contrib/ipauth directory
- (RasTbl.cxx) call accounting updates/disconnecting is now more robust
  and does not lock up the call table and (effectively) the gatekeeper
  for long time periods
- Makefile for docs, make sure generated PDF manual is searchable
- do not support mutiple rewrite targets, as this feature does not work well
  if rewrite is performed more than once
- BUGFIX(GkStatus.cxx) the gatekeeper could crash if the connection
  was closed before the welcome message has been sent
- BIGFIX(gkacct.cxx) different Username was reported during Setup auth
  and acct step, if no sourceAddress has been present for an unregistered call
- more missing config reload locks added to allow seamless config reload
- BUGFIX(ProxyChannel.cxx) the code could reference an invalid H.245 socket
  due to recent changes
- BUGFIX(h323util.cxx) conference/call-id could get incorrectly converted
  to a string with some compilers
- (Routing.cxx) ability to do per-call proxy mode control from routing handlers
- BUGFIX(ProxyChannel.cxx) fixed race condition between signaling/H.245 channel
  closure
- parts of signalling code rewritten
- default value for config variable ForwardOnFacility changed to 0
- BUGFIX(ProxyChannel.cxx) inbound rewrite code did not check for presence
  of sourceCallSignalAddress field in Setup messages. Use real peer IP instead
- ability to encrypt all passwords in the config (radius shared secrets,
  database passwords). A new EncryptAllPasswords config variable and KeyFilled
  usage extended
- SQLConfig ported from 2.0
- BUGFIX(radauth.cxx) Framed-IP-Address could not be determined
  for unregistered calls with no Setup-UUIE.sourceCallSignalAddress field,
  causing authentication to fail
- (ProxyChannel.cxx) small optimizations in signaling handling
- fixed bug with aliases handling in various places, introduced by recent changes
- BUGFIX(Toolkit.cxx) correct handling of '!' character in rewrite rules
- provide proper handling of aliases of type partyNumber (e164Number or privateNumber)
- BUGFIX(ProxyChannel.cxx) fix for RTP/Q931/H245/T120PortRange
  to correct a bug with port range wraparound if the last port is 65535.
  This caused a next port to be set to 0 and any subsequent port allocation 
  to fail
- BUGFIX(ProxyChannel.cxx) dynamic allocation of RTP ports did not work,
  use a fixed range 1024-65535 as a default for RTPPortRange config variable
- (RasTbl.cxx) LRQs received on a multicast interface triggered LCFs
  with an invalid signalling port number (0) in signalling routed mode
- get rid of redundant config reload mutex inside accounting modules
- obsolete auth modules MySQLAliasAuth and MySQLPasswordAuth are now removed
- (GkStatus.cxx) fixed a missing lock during config reload
- accept LRQs from any port (check only an IP address)
- SQL modules accept only one database host now (the failover was not supported
  properly either, so it has been removed)

Changes from 2.2.0 to 2.2.1
===========================
- enchanced prefix matching for routing policies. A dot (.) matches any digit
- enchanced prefix matching for neighbors. A dot (.) matches any digit,
  ! at the beginning disables the prefix
- (ProxyChannel.cxx) critical fix - a missing lock during config reload
  caused the gatekeeper to crash
- (ProxyChannel.cxx) more reliable port number selection for Q.931, H.245, 
  T.120 and RTP port ranges (before, a config reload could cause many calls 
  to fail because of unability to get a new socket)
- (ProxyChannel.cxx) default setting for RTPPortRange is now to let the OS select a port number
- more flexible rewrite rules (both global and per-gw) with '.' and '%'
  wildcard characters
- security fix for socket handle/select oveflow issue
- new accounting event 'connect' (only in routed mode)
- timestamp microseconds field has a fixed length of 3 digits
- enchanced prefix matching for gateways. A dot (.) matches any digit,
  ! at the beginning disables the prefix
- BUGFIX(radproto.cxx) VSA matching routing ignored a vendor identifier
  causing incorrect attributes to be matched
- insert missing Calling-Party-Number-IE/Display-IE if corresponing
  Screen... options are enabled
- shutdown the gatekeeper if there are errors in SQL auth/acct modules
  configuration, thanks to Mikko Oilinki
- (gkslq.cxx) try to reconnect to the database, if the initial attempt
  failed. Thanks to Mikko Oilinki
- another changes to Calling/Called-Station-Id handling, always use
  Calling/Called-Party-Number IEs when available. Calling/Called-Station-Id
  is now set outside auth modules, so acct modules receive correct
  values, independetly of auth modules usage
- BUGFIX(Toolkit.cxx) correctly replace %u in timestamps with number
  of microseconds instead of passing %u to strftime
- ability to select Called-Station-Id number type between the original one
  (dialed number) and the rewritten one. New UseDialedNumber config option
  for RadAuth/RadAliasAuth/RadAcct modules, new %{Dialed-Number} variable
  for SQLAcct and FileAcct modules
- ability to customize timestamp formats. New TimestampFormat config variables
  for main, SqlAcct, RadAcct, FileAcct and CallTable sections
- (ProxyChannel.cxx) safety check before a signaling socket is actually deleted
  for being removed from an associated call record
- new TcpKeepAlive option to remove problem with network errors and hanging
  calls (see docs/keepalive.txt for more details)
- RadAuth/RadAliasAuth modules can now add/remove endpoint aliases during
  endpoint registration (using h323-ivr-in=terminal-alias: Cisco AV-Pair)
- per-call proxy control
- new status port command RouteToGateway

Changes from 2.2beta5 to 2.2.0
==============================
- BUGFIX(RasSrv.cxx) invalid/unsupported RAS/signaling addresses are ignored
  in RRQ messages
- GCC 3.4.2 compilation errors fixed
- BUGFIX(gkauth.cxx) PrefixAuth module crashed when checking ARQ without
  a destinationInfo field

Changes from 2.2beta4 to 2.2beta5
=================================
- BUGFIX(ProxyChannel.cxx) race condition with NAT sockets fixed, thanks to Daniel Liu
- new RoundRobinGateways config option in the RasSrv::ARQFeatures sections
  to enable/disable round-robin gateway selection
- call capacity limits and gateway prioritization (new EP:: config sections)
- BUGFIX(ProxyChannel.cxx) errors during H.245 channel establishment caused
  calls to not disconnect correctly
- check VirtualQueueRegex on startup
- BUGFIX(gk.cxx) reopen a log file on reload (HUP) signal to allow logrotate
  to manage logs
- BUGFIX(RasTbl.cxx) multithreading issues with an access to endpoint record
  data fixed. Thanks to kubuqi cn!
- BUGFIX(ProxyChannel.cxx) RTP proxy handling moved to a separate RTP proxy
  threads. New RtpHandlerNumber config option
- BUGFIX(yasocket.cxx) enabled REUSE_ADDRESS option on listening sockets
  in non-LARGE_FDSET mode to allow fast gatekeeper restarting
- better disconnect cause reporting in Setup processing
- ability to set call destination in auth modules. RADIUS based call routing
- BUGFIX(Neighbor.cxx) fixed sourceInfo LRQ field handling - now it contains
  an H.323 identifier of the gatekeeper
- (radproto.cxx) ability to set shared secrets for each radius server 
  separatelly, more Radius optimizations
- new, much faster, Radius client implementation. Thanks to Pavel Pavlov
  for numerous ideas and suggestions!
- BUGFIX(ProxyChannel.cxx) Called-Party-Number-IE rewrite occured too late,
  causing auth/acct modules to receive the original number instead of the rewritten one
- (RasSrv.cxx) duplicated RAS messages are now simply discarded
- BUGFIX(ProxyChannel.cxx) fixed proxying of RTP packets, so RTP sockets are
  not closed on temporary errors (like remote socket not yet ready). This bug
  affected especially NAT traversal and situation, when audio was sent very 
  early, when reverse proxy path has not been yet established
- BUGFIX(RasSrv.cxx) fixed handling of RRJ (fullRegistrationRequired)
  from an alternate GnuGk
- BUGFIX(GkStatus.cxx) fixed bug in status client authentication introduced
  by recent changes, thanks to Razvan Radu!
- (sqlbill) examples how to setup SQLAcct, SQLPasswordAuth and SQLAliasAuth
  with the billing
- direct SQL accounting module (SQLAcct) ported from 2.0 branch
- BUGFIX(gkauth.cxx) gcc 2.95.x compilation errors fixed
- BUGFIX(Neighbor.cxx) handling reply messages (RIP/LCF/LRJ) from neighbors 
  fixed, thanks to kubuqi cn (kubuqi@hotmail.com)
- support for CallCreditServiceControl in RCF and ACF messages, which allows
  reporting call duration limit and user's account balance to endpoints. 
  Currently RadAuth and RadAliasAuth modules support this feature.
- BUGFIX(gk.cxx) removed an invalid test for the log filename, preventing
  from creating log files in a directory other than the current one
- BUGFIX(GkClient.cxx) TTL bug fixed (RRQ every second), documentation updates
- fixed assertions caused by attempts to get/set config keys with an empty key name
- BUGFIX(gk.cxx) fixed log file rotation under Windows, thanks to Cristian Bullokles!
- log file rotation, new LogFile config section, new setlog and rotatelog
  status interface commands
- BUGFIX(gkacct.cxx) a fix to rotation interval calculation for monthly 
  CDR file rotation
- BUGFIX(gkacct.cxx) FileAcct monthly rotation rotated a CDR file unnecessary
  on gatekeeper restart
- BUGFIX(gkacct.cxx) fixed a critical bug in Username determination 
  for unregistered endpoints, introduced by recent changes
- BUGFIX(RasSrv.cxx) do not include an invalid access token (with null object
  identifier) in LCF to prevent interoperability problems, thanks to Andreas Sikkema!
- BUGFIX(ProxyChannel.cxx) better handling of multiple calls over a single
  signalling channel by setting multipleCalls and maintainConnection
  H.225.0 fields to FALSE in all messages. Thanks to Ian Campbell!
- better Username, Calling-Station-Id and Called-Station-Id determination,
  consistant across all auth/acct modules, redundant code removed
- new Gatekeeper::Auth flag SetupUnreg to toggle Q.931 Setup authentication
  for unregistered endpoints only
- IncludeEndpointIP flag for RadAuth, RadAliasAuth and RadAcct is obsolete,
  these modules will always send Framed-IP-Address
- (sqlbill) reject gracefully Access-Requests without Framed-IP-Address
- (sqlbill) improvements for IP only authorization
- BUGFIX(sqlbill) FreeRadius accounting_stop_query changed to not check h323id 
  in order to allow IP only authorization
- BUGFIX(sqlbill) FreeRadius accounting_update_query changed to not check h323id 
  in order to allow IP only authorization
- (radacct.cxx) new RADIUS h323-ivr-out=h323-call-id parameter that contains
  an H.323 Call Identifier
- BUGFIX(radauth.cxx) better Framed-IP-Address handling in RadAliasAuth Setup check
- BUGFIX (ProxyChannel.cxx) With a certain combination of endpoints it 
  was possible to have UDPProxySocket trying to forward incoming RTP / 
  RTCP trafic to 127.0.0.1:0. Added a check for this situation and send
  traffic to non-loopback address and hope it is the correct address.
- (sqlbill) added ability to authenticate users only by their IP 
  (ignoring User-Name)
- BUGFIX(radauth.cxx) RadAliasAuth will use Calling-Party-Number as User-Name
  if no sourceAddress inside is present in Setup-UUIE
- (sqlbill) new, more flexible tariff/rating engine
- BUGFIX(gk.cxx) fixed signal handling to use sigaction instead of signal
  to prevent accidental gatekeeper crashes because of restored signal handlers
- BUGFIX(gkacct.cxx) rotation per number of lines works correctly now

Changes from 2.2beta3 to 2.2beta4
=================================
- BUGFIX(radauth.cxx) check if generalID matches one of endpoint's aliases
  only when authenticating RRQ
- (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
- (yasocket.cxx) fixed a bug in TCPListener::IsTimeout() which prevented
  GNUgk from running > 596 hours
- (ProxyChannel.cxx) fixed a critical bug with referencing already deleted
  socket, when the remote party did not accept signalling tcp connection
- (ProxyChannel.cxx) more UDP proxy optimizations
- new flexible CDR file rotation for FileAcct module
- (gktimer.cxx) new generic support for time-based events
- BUGFIX(Routing.cxx) processing LRQ request should not apply round robin
  selection to gateways with the same prefix
- BUGFIXes: make sure we delete list items _after_ we have removed
  them from the list
- BUGFIX(RasTbl.cxx) make sure PrintCurrentCalls prints ACF messages
  in the same format as all ACFs
- 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(radproto.cxx) default auth/acct ports are now set to fixed values
  1812 and 1813, due to problems with getservbyname and multithreading
- (gksql.cxx) improved SQL query parameters replacement routine
- removed descendancy check in radproto to allow compilation with the latest
  RTTI enabled PWLib
- BUGFIX(Neighbor.cxx) fixed missing parentheses, thanks to kubuqi cn
- BUGFIX(h323util.cxx) GetIPAndPortFromTransportAddr now checks if the address
  is valid
- BUGFIX(ProxyChannel.cxx) fixed bugs in ForwardCall, thanks to Daniel Liu
- header file usage more consistent
- SQL authenticators moved to a separate file
- added VSNET2003 sln and vcproj files
- fixed Windows DSP files to not enable some optimizations for Windows
  that result in VC6 linker throwing away some gnugk modules (static variables)
- improved configure script to detect installed PWLib/OpenH323
- significant API changes to authentication/accounting modules
- added logparser application from Saad Faisal to the contrib section
- pgsqlauth removed from the contrib section, as it is obsolete now
- BUGFIX(Routing.cxx) the absense of a regexp for virtual queues wasn't detected
- BUGFIX(ProxyChannel.cxx) multiple calls over a single signalling channel
  are now gracefully handled using ReleaseComplete with newConnectionNeeded code.
- (RasTbl.cxx) permanent endpoints are correctly reloaded now, with removal
  of permanent endpoints for which config entries have been deleted
- (gkauth.cxx) depreciated ExternalPasswordAuth finally removed
- 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.
- BUGFIX(Routing.h) fixed referencing to a temporary PString object
  after it is destroyed
- better LOG_OFF Windows event handling to prevent gatekeeper shutdown
  when user logs out. The patch from Franz J Ehrengruber
- added GNU Gatekeeper Service for Windows from Franz J Ehrengruber
- added Windows icon and version info from Franz J Ehrengruber
- (manual.sgml) corrected MySQLPasswordAuth, MySQLAliasAuth sections,
  removed NeighborPasswordAuth documentation (not necessary anymore)
- (gkauth.cxx) fixed SimplePasswordAuth module to read settings from 
  [SimplePasswordAuth] section instead of [Password] section. 
  Fixed MySQLPasswordAuth module to accept CacheTimeout parameter.
  Default CacheTimeout for MySQLPasswordAuth and MySQLAliasAuth set to 0
  (do not cache passwords/aliases at all)
- applied the concept of output trace levels for the status interface. 
  It allows to select amount of information a status client receives
  (level 0 - silent mode + reloads; level 1 - CDRs, RouteRequests, reloads;
   level 2 - everything: the default mode)
- (GkStatus.cxx) some cleanup, better tracing, new trace command introduced
  to support multiple output levels in the future
- added missing addpasswd Visual Studio project files (dsp and dsw)
- (configure.in) added check for MSG_NOSIGNAL flag support with send/recv calls
- (configure.in) better pwlib/openh323 detection patches from Klaus Kaempf
- (RasTbl.cxx) treat MCUs as gateways and allow MCUs to register prefixes
- (Toolkit.cxx) use in-place constructors and destructors inside RewriteData
  to prevent Windows exceptions on rewrite rules reload in debug mode
- removed duplicated build timestamp from 'version' command output.
  Added special file versionts.h to ensure version.cxx is rebuilt each
  time GnuGk is recompiled, in order to get proper build timestamp
- (job.cxx) jobs simplified, optimised and checked for thread safety
- (version.cxx) modified to list all extensions in the version string
- (ProxyChannel.cxx) support for H.323 V4 provisionalRespToH245Tunneling
  and parallelH245Control H.225.0 elements
- log rotation now maintains the original filename and stores rotated
  log files with precise timestamp (YYYYMMDD_HHMMSS) to prevent overwritting. 
  Thanks to Rafael Costa dos Santos.
- added Q.931 Setup authentication to RadAuth module to allow
  authentication based on crypto tokens carried inside Setup
- modified GkAuthenticator and RADIUS authenticators prototypes
  to allow modifications of messages being processed
  (NOTE: This may break compatibility with some customer derived classes)
- (ProxyChannel.cxx) RTP proxy fixed to not require RTCP channel
  and work better with T.38 faxes
- (ProxyChannel.cxx) added new config parameter ScreenSourceAddress
  to screen calling party aliases from UUIE Setup element
- added sample SQL/RADIUS billing example to the contrib directory
- removed Makefile to force users running configure script before compilation
- added per gateway E.164 rewriting of dialedDigits in addition to
  global E.164 rewriting

Changes from 2.2beta2 to 2.2beta3
=================================
- addpasswd utility changed to require section name where the encrypted 
  username/password will be stored
- BUGFIX(gkauth.cxx) fixed call duration limit handling when multiple
  authenticator modules are specified
- BUGFIX(gkacct.cxx) changed accounting reload handling to first cleanup
  the old modules and then create the new ones. This allows the FileAcct 
  logger to work fine with the reload command
- BUGFIX(h323util.cxx) additional check for H225_TransportAddress
  to prevent NULL pointer assertions. Thanks to Andrey Pankov!
- added Q.931/H.225 Setup authentication (RadAliasAuth module implementation)
- BUGFIX(radproto.cxx) fixed invalid signed/unsigned conversion that caused
  some functions to return unexpected results
- BUGFIX(Neighbor.cxx) LCF is considered to come from a given neighbor
  if either IP:PORT or neighbor identifier inside LCF nonstandarparam field matches
  (was: neighbor identifier inside LCF nonstandarparam field or, if the field
  is missing, IP:PORT)
- added PostgreSQL authenticator modules to the contrib directory
- API for AliasAuth has changed slightly
- better checking of tokens/cryptoTokens by SimplePasswordAuth derived authenticators
- BUGFIX(RasTbl.cxx) fixed NULL reference in CallRec::SetSocket - caused crash
  in ForwardCall. Thanks to kubuqui cn!
- check ReleaseComplete for H225 reason field, if no Q.931 cause IE is found
- set disconnect cause to "normal call clearing" on DRQ received with normalDrop
  disengageReason and no termination cause set
- BUGFIX(ProxyChannel.cxx) fixed h225 termination cause setting for ReleaseComplete
- better hop count handling for neighbors - now LRQ m_hopCount field 
  is forwarded/generated correctly, according to an original hop count
  or a ForwardHopCount config settings
- small radius accounting/authentication module optimizations and better trace ouput
- changed handling of multiple accounting modules (added new "alternative" control)
- 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 
  (backward compatibility is maintained)

Changes from 2.2beta1 to 2.2beta2
=================================
- BUGFIX(RasTbl.cxx) fixed connect/disconnect time handling and call duration
  calculation. Thanks to Aivis Olsteins
- BUGFIX(GkClient.cxx) changed SetPassword to fill LRQs with all recognized
  tokens/cryptoTokens
- better disconnect cause handling
- BUGFIX(ProxyChannel.cxx) ReleaseComplete now always contains either CauseIE
  or H225_ReleaseCompleteReason, because one of these fields is mandatory
- added status line improvements (command expansion, repeat last command,
  backspace handling for windows) from Hu Yuxin
- BUGFIX(GkStatus.cxx) removed unimplemented "disconnect" and "unregister"
  commands
- ACF is filled with destinationInfo if aliases have changed during
  ARQ processing and ARQ.canMapAlias is TRUE
- added more tracing and human readable names to routing policies
- added modified CTI virtual queues implementation from Chih-Wei Huang
- BUGFIX(singleton.cxx): incorrect singleton instance counting with different trace levels
- added "run as user" feature
- plain text CDR accounting logger module from Tamas Jalsovszky
- call duration limit features introduced for ARQ handlers
- old LDAP support removed from the source code tree
- full Radius - authentication and accounting(start/stop/update)
- added configure script to detect system settings and create Makefile

Changes from 2.0.x to 2.2beta1 (by cwhuang)
===========================================
- new method to detect NATed endpoints
- better handling of call timeout
- support multiple mysql servers
- add authentication method selection for GkClient
- the underlying architecture is almost rewritten entirely, includes
    object factory
    new thread model
    universal sockets handling mechanism
    RAS type traits
    multi-threaded RAS server
    new neighboring system
    configurable routing policies
    thread-safed gkauth
- use MySQL C API directly instead of MySQL++

Changes from 2.0.3 to 2.0.4 (by cwhuang)
========================================
- 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