Thu Oct 11 06:49:58 2012

Asterisk developer's documentation

Todo List

Class ao2_container
Linking and unlink objects is typically expensive, as it involves a malloc() of a small object which is very inefficient. To optimize this, we allocate larger arrays of bucket_list's when we run out of them, and then manage our own freelist. This will be more efficient as we can do the freelist management while we hold the lock (that we need anyways).

Class ast_callerid
Implement settings for transliteration between UTF8 caller ID names in to Ascii Caller ID's (DAHDI). Ísten ┼sklund might be transliterated into Osten Asklund or Oesten Aasklund depending upon language and person... We need automatic routines for incoming calls and static settings for our own accounts.

Class ast_generator
Add an explanation of an Asterisk generator

Class bucket_list
this should be private to the container code

Global mgcp_subchannel::cxident [80]
FIXME txident is replaced by rqnt_ident in endpoint. This should be obsoleted

Class unistim_line
Convert to stringfields

File ael_structs.h
document this file (ael.h)

Global d_app
XXX Remove this application after 1.4 is relased

Global can_pickup
This application should return a result code, like PICKUPRESULT

Global eivr_comm
add deprecation debug message for X command here

File app_originate.c
Make a way to be able to set variables (and functions) on the outbound channel, similar to the Variable headers for the AMI Originate, and the Set options for call files.

File ast_expr.h
Explain this file!

Global handle_show_settings
we could check musiconhold, voicemail, smdi, adsi, queues

Global ast_audiohook_move_by_source
Currently only the first audiohook of a specific source found will be moved. We should add the capability to move multiple audiohooks from a single source as well.

File bridge_softmix.c
This bridge operates in 8 kHz mode unless a define is uncommented. This needs to be improved so the bridge moves between the dominant codec as needed depending on channels present in the bridge and transcoding capabilities.

Make this optional. If this is only going to talk to 8 kHz endpoints, then it makes sense to use 8 kHz natively.

File chan_dahdi.c
Deprecate the "musiconhold" configuration option post 1.4

Move definition of MAX_CHANLIST_LEN to a proper place.

Global dahdi_setoption
XXX This is an abuse of the stack!!

File chan_iax2.c
Implement musicclass settings for IAX2 devices

File chan_sip.c
Better support of forking

File chan_sip.c
VIA branch tag transaction checking

File chan_sip.c
Transaction support

This string should be set dynamically. We only support REFER and SUBSCRIBE if we have allowsubscribe and allowrefer on in sip.conf.

Use known T1 for timeout (peerpoke)

Global authl
Move the sip_auth list to AST_LIST

Global __sip_reliable_xmit
According to the RFC some packets need to be retransmitted even if its TCP, so this needs to get revisited

Global _sip_tcp_helper_thread
XXX If there's no Content-Length or if the content-length and what we receive is not the same - we should generate an error

Global add_peer_mailboxes
document this function

Global check_auth
need a better return code here

Global check_rtp_timeout
Check video RTP keepalives

Global create_addr
Fix this function. When we ask for SRV, we should check all transports In the future, we should first check NAPTR to find out transport preference

Global dialog_needdestroy
Re-work this to improve efficiency. Currently, this function is called on _every_ dialog after processing _every_ incoming SIP/UDP packet, or potentially even more often when the scheduler has entries to run.

Global function_sippeer
Will be deprecated after 1.4

Global get_rdnis
This function does not take user-parameters into consideration. First look for @, then start looking for ; to find uri-parameters.

Global get_transport_pvt
Fix this function to work correctly

Global handle_request_info
Note: Doesn't read the duration of the DTMF. Should be fixed.

Global handle_request_invite
XXX This needs to be reviewed. YOu don't change the request URI really, you route the packet correctly instead...

Global handle_request_options
Fix handle_request_options device handling with optional authentication (this needs to be fixed in 1.4 as well)

Global initreqprep
Need to add back the VXML URL here at some point, possibly use build_string for all this junk

Global load_module
Fix this XXX This must be all wrong XXXX

Global parse_moved_contact
XXX Doesn't redirect over TLS on sips: uri's. If we get a redirect to a SIPS: uri, this needs to be going back to the dialplan (this is a request for a secure signalling path). Note that transport=tls is deprecated, but we need to support it on incoming requests.

Global parse_register_contact
Check NAPTR/SRV if we have not got a port in the URI

Global register_verify
XXX here too we interpret a missing as a name-only URI, whereas the RFC says this is a domain-only uri.

Global register_verify
OEJ Remove this - there's never RTP in a REGISTER dialog...

Global set_address_from_contact
We need to save the TRANSPORT here too

Global set_destination
XXX If we have use_dns on, then look for NAPTR/SRV, otherwise, just look for A records

Global sip_prepare_socket
Get socket for dialog, prepare if needed, and return file handle

Global sip_prepare_socket
Check this... This might be wrong, depending on the proxy configuration If proxy is in "force" mode its correct.

Global sip_prune_realtime
XXXX Propably needs an overhaul after removal of the devices

Global sip_sipredirect
Fix this function so that we wait for reply to the REFER and react to errors, denials or other issues the other end might have.

Global terminate_uri
As this function does not support user-parameters, it's considered broken and needs fixing.

Global transmit_refer
Fix the transfer() dialplan function so that a transfer may fail

Global transmit_refer
In theory, we should hang around and wait for a reply, before returning to the dial plan here. Don't know really how that would affect the transfer() app or the pbx, but, well, to make this useful we should have a STATUS code on transfer().

Global load_module
Leaking anything allocated by reload_config() ...

Global __ast_read
XXX It is possible to write a digit to the audiohook twice if the digit was originally read while the channel was in autoservice.

Global ast_write
XXX should return 0 maybe ?

File devicestate.h
Currently, when the state of a device changes, the device state provider calls one of the functions defined here to queue an object to say that the state of a device has changed. However, this does not include the new state. Another thread processes these device state change objects and calls the device state provider's callback to figure out what the new state is. It would make a lot more sense for the new state to be included in the original function call that says the state of a device has changed. However, it will take a lot of work to change this.

File enum.c
Implement a caching mechanism for multile enum lookups

File enum.c
The service type selection needs to be redone.

Global ast_bridge_call
XXX how do we guarantee the latter ?

Global feature_exec_app
XXX should probably return res

Global load_config
XXX var_name or app_args ?

Global park_exec_full
XXX we would like to wait on both!

Global park_exec_full
XXX Play a message XXX

Check this buf size estimate, it may be totally wrong for large frame video

File func_devstate.c
Delete the entry from AstDB when set to nothing like Set(DEVICE_STATE(Custom:lamp1)=)

Global pbx_builtin_importvar
XXX should do !ast_strlen_zero(..) of the args ?

File res_adsi.c
Move app_getcpeid into this module

File res_adsi.c
Create a core layer so that app_voicemail does not require res_adsi to load

File res_agi.c
Convert the rest of the AGI commands over to XML documentation

Global handle_redirect
It would be nice to be able to redirect 2 channels at the same time like you can with AMI redirect. However, it is not possible to acquire two channels without the potential for a deadlock with how ast_channel structs are managed today. Once ast_channel is a refcounted object, this command will be able to support that.

File res_jabber.c
If you unload this module, chan_gtalk/jingle will be dead. How do we handle that?

File res_jabber.c
Dialplan applications need RETURN variable, like JABBERSENDSTATUS

This should really be renamed to xmpp.conf. For backwards compatibility, we need to read both files

File res_smdi.c
This module currently has its own mailbox monitoring thread. This should be converted to MWI subscriptions and just let the optional global voicemail polling thread handle it.

Global ast_rtcp_calc_interval
XXX Do a more reasonable calculation on this one Look in RFC 3550 Section A.7 for an example

XXX As the conversion from the old implementation of say.c to the new implementation will be completed, and the API suitably reworked by removing redundant functions and/or arguments, this mechanism may be reverted back to pure static functions, if needed.

Global tdd_gen_holdtone
How big should this be???

Global powerof
TODO: sample frames for each supported input format. We build this on the fly, by taking an SLIN frame and using the existing converter to play with it.

File udptl.h
add doxygen documentation to this file!

Page SIP TCP and TLS support
Fix TCP/TLS handling in dialplan, SRV records, transfers and much more

Page SIP TCP and TLS support
Save TCP/TLS sessions in registry If someone registers a SIPS uri, this forces us to set up a TLS connection back.

Page SIP TCP and TLS support
Add TCP/TLS information to function SIPPEER and SIPCHANINFO

Page SIP TCP and TLS support
If tcpenable=yes, we must open a TCP socket on the same address as the IP for UDP. The tcpbindaddr config option should only be used to open ADDITIONAL ports So we should propably go back to bindaddr= the default address to bind to. If tcpenable=yes, then bind this to both udp and TCP if tlsenable=yes, open TLS port (provided we also have cert) tcpbindaddr = extra address for additional TCP connections tlsbindaddr = extra address for additional TCP/TLS connections udpbindaddr = extra address for additional UDP connections These three options should take multiple IP/port pairs Note: Since opening additional listen sockets is a *new* feature we do not have today the XXXbindaddr options needs to be disabled until we have support for it

Page SIP TCP and TLS support
re-evaluate the transport= setting in sip.conf. This is right now not well thought of. If a device in sip.conf contacts us via TCP, we should not switch transport, even if udp is the configured first transport.

Page SIP TCP and TLS support
Be prepared for one outbound and another incoming socket per pvt. This applies specially to communication with other peers (proxies).

Page SIP TCP and TLS support
We need to test TCP sessions with SIP proxies and in regards to the SIP outbound specs.

Page SIP TCP and TLS support
;transport=tls was deprecated in RFC3261 and should not be used at all. See section 26.2.2.

Page SIP TCP and TLS support
If the message is smaller than the given Content-length, the request should get a 400 Bad request message. If it's a response, it should be dropped. (RFC 3261, Section 18.3)

Page SIP TCP and TLS support
Since we have had multidomain support in Asterisk for quite a while, we need to support multiple domains in our TLS implementation, meaning one socket and one cert per domain

Page SIP TCP and TLS support
Selection of transport for a request needs to be done after we've parsed all route headers, also considering outbound proxy options. First request: Outboundproxy, routes, (reg contact or URI. If URI doesn't have port: DNS naptr, srv, AAA) Intermediate requests: Outboundproxy(only when forced), routes, contact/uri DNS naptr support is crucial. A SIP uri might lead to a TLS connection. Also note that due to outbound proxy settings, a SIPS uri might have to be sent on UDP (not to recommend though)

Page SIP TCP and TLS support
Default transports are set to UDP, which cause the wrong behaviour when contacting remote devices directly from the dialplan. UDP is only a fallback if no other method works, in order to be compatible with RFC2543 (SIP/1.0) devices. For transactions that exceed the MTU (like INIVTE with video, audio and RTT) TCP should be preferred.

Page Asterisk Language Syntaxes supported
Note that in future, we need to move to a model where we can differentiate further - e.g. between en_US & en_UK

Generated on Thu Oct 11 06:49:58 2012 for Asterisk - the Open Source PBX by  doxygen 1.5.6