TODO
====

This list of missing features and bugs is meant as a starting point
for people who wish to contribute to this project.
I'll add a note if somebody is already working on a project to
avoid duplicate work.

- feature: update CallRec between Alternate GKs
           (=> forward ARQ, DRQ, too).

- feature: multithread RasSrv

- fix: decode Q.931 UUIE output, too (pwlib thingy)

- fix: Forwarding to alternate GK doesn't use GKHome as it's
  sender address

- fix: the ACF event signalled by PrintCurrentCalls should match
  the format of the regular ACF (needed for gkgui)

- debug: Genaration of CallProceeding messages is broken. The current
  version forwards the CallProceeding messages generated by the endpoints.
  To get the broken version compile with -D GENERATE_CALL_PROCEEDING

- debug: call forwarding with ohphone (using Facility message)
  doesn't work in GK routed-mode. User-User info n Facility
  seems corrupt.

- debug: problems with FastStart in routed mode (eg. Siemens LP 5100
  or Netergy adapter)

- implement gatekeeper performed H.450.2 Call Transfer ?
  gatekeeper routed, gatekeeper transparent mode works already

- load testing: how many concurrent calls can be made with the
  gatekeeper on what hardware ? how does the memory requirement
  grow ? when is the slowdown to high ?

- we need a GUI client to visualize the status messages (Java GUI started)

- Implement H.245 signal routing (command line option) - PARTLY DONE
  * implement fast connect 
  * implement codec selection (caller-, callee-dependant)

- implement carrier-grade routing
  (Assigned to: martinfroehlich, mmuehlen, rkeil, nilsb)

- implement screening
  (verification of A number, based on authentification) functionality
  (Assigned to: martinfroehlich, mmuehlen, rkeil, nilsb)

- implement blacklists (caller-, callee-dependant)

- implement metric based routing (to allow for least cost routing decisions)

- implement 'gateway of last resort' (to be taken if none is registered)

- implement alternate routing
  watch for either TCP or PBX errors, i.e. TCP errors on H.225 connection
  establishment or PBX side error codes in response to sending Q.931 SETUP
  (like no circuit/channel available)

- implement source based routing: for mobile numbers (and others, possibly), 
  routing should be done based on *A* number.
  Since the breakout gateway doesn't make a difference in terms of cost,
  routing to the breakout gateway closest to the originator minimizes on-net costs.

- implement call interception (for legal purposes)

- implement call distribution based on:
  * static percentage
  * time of day
  * overflow (i.e. first concurrent n calls go to destination 1,
    all additional calls to destination 2)

