Asterisk - The Open Source Telephony Project GIT-master-f36a736
Todo List
Global __ast_read (struct ast_channel *chan, int dropaudio, int dropnondefault)
XXX It is possible to write a digit to the audiohook twice if the digit was originally read while the channel was in autoservice.
File ael_structs.h
document this file (ael.h)
Page AMI - The Manager Interface
include missing manager txt
Class ao2_container
Linking and unlinking container objects is typically expensive, as it involves a malloc()/free() of a small object which is very inefficient. To optimize this, we can allocate larger arrays of container nodes 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 anyway).
File app_voicemail.c

This module requires res_adsi to load. This needs to be optional during compilation.

This file is now almost impossible to work with, due to all #ifdefs. Feels like the database code before realtime. Someone - please come up with a plan to clean this up.

File app_voicemail_imap.c

This module requires res_adsi to load. This needs to be optional during compilation.

This file is now almost impossible to work with, due to all #ifdefs. Feels like the database code before realtime. Someone - please come up with a plan to clean this up.

File app_voicemail_odbc.c

This module requires res_adsi to load. This needs to be optional during compilation.

This file is now almost impossible to work with, due to all #ifdefs. Feels like the database code before realtime. Someone - please come up with a plan to clean this up.

Page ARA - The Asterisk Realtime Interface

include missing realtime txt

include missing extconfig txt

Global ast_audiohook_move_by_source (struct ast_channel *old_chan, struct ast_channel *new_chan, const char *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.
Global ast_cel_fabricate_channel_from_event (const struct ast_event *event)
This function is very expensive, especially given that some CEL backends use it on every CEL event. This function really needs to go away at some point.
File ast_expr.h
Explain this file!
Class ast_generator
Add an explanation of an Asterisk generator
Class ast_party_caller
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.
Global ast_party_name::char_set
Start using the party name character set value. Not currently used.
Global ast_pbx_outgoing_exten_predial (const char *type, struct ast_format_cap *cap, const char *addr, int timeout, const char *context, const char *exten, int priority, int *reason, int synchronous, const char *cid_num, const char *cid_name, struct ast_variable *vars, const char *account, struct ast_channel **locked_channel, int early_media, const struct ast_assigned_ids *assignedids, const char *predial_callee)
XXX Not good. The channel name is not unique if more than one originate fails at a time.
Global ast_rtcp_calc_interval (struct ast_rtp *rtp)
XXX Do a more reasonable calculation on this one Look in RFC 3550 Section A.7 for an example
Global ast_say_date_with_format_he (struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone)
  • A "ha" is missing in the standard date format, before the 'd'.
  • The numbers of 3000–19000 are not handled well
Global ast_security_event_severity
Do we need any more levels here?
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
Global bridge_agent_hold_push (struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *swap)
XXX the login probation time should be only if it is needed.
Page CDR - Call Data Records and billing
include missing cdrdriver txt
File cel.h
TODO: There some event types that have been defined here, but are not yet used anywhere in the code. It would be really awesome if someone went through and had Asterisk generate these events where it is appropriate to do so. The defined, but unused events are: CONF_ENTER, CONF_EXIT, CONF_START, CONF_END, 3WAY_START, 3WAY_END, TRANSFER, and HOOKFLASH.
File chan_dahdi.c
Deprecate the "musiconhold" configuration option post 1.4
File chan_iax2.c
Implement musicclass settings for IAX2 devices
Global dahdi_answer (struct ast_channel *ast)
XXX this is redundantly set by the analog and PRI submodules!
Global dahdi_setoption (struct ast_channel *chan, int option, void *data, int datalen)
XXX This is an abuse of the stack!!
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.
Global do_forward (struct chanlist *o, struct cause_args *num, struct ast_flags64 *peerflags, int single, int caller_entertained, int *to, struct ast_party_id *forced_clid, struct ast_party_id *stored_clid)
eventually this function should be integrated into and replaced by ast_call_forward()
File enum.c

Implement a caching mechanism for multile enum lookups

The service type selection needs to be redone.

Global FRAME_ENDED
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 handle_redirect (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
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.
Global handle_show_settings (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
we could check musiconhold, voicemail, smdi, adsi, queues
Global load_module (void)

Don't error or warn on a default install. If the config is default we should not attempt to connect to a server. -lathama

Leaking anything allocated by reload_config() ...

Global main (int argc, char *argv[])
Document these options
Global mansession_session::addr
XXX need to document which fields it is protecting
Global MAX_CHANLIST_LEN
Move definition of MAX_CHANLIST_LEN to a proper place.
Global MAX_RECALC
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.
Global MSG_MOREDATA
XXX MSG_MOREDATA should go to a header file.
Global OBJ_SEARCH_MASK
Eventually OBJ_SEARCH_MASK will shrink to a two bit field when the codebase is made to use the search field values as a field instead of independent bits.
Global pbx_dial_reason (enum ast_dial_result dial_result, int cause)
XXX The old originate reasons need to be trashed and replaced with normal disconnect cause codes if the call was not answered. The internal consumers of the reason values would also need to be updated: app_originate, call files, and AMI OriginateResponse.
Global pbx_load_users (void)
Remove users.conf support in Asterisk 23
Global realtime_ldap_base_ap (unsigned int *entries_count_ptr, const char *basedn, const char *table_name, const struct ast_variable *fields)

get the default variables from the accountBaseDN, not implemented with delimited values

XXX The interactions with base_var and append_var may cause a memory leak of base_var nodes. Also the append_var list and base_var list may get cross linked.

Global reload (void)
XXX here we should sort rules according to the same order we have in pbx.c so we have the same matching behaviour.
File res_adsi.c

Move app_getcpeid into this module

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

File res_calendar.c

Support responding to a meeting invite

Support writing attendees

File res_security_log.c

Make informational security events optional

Escape quotes in string payload IE contents

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 SAMPLE_RATE
Make this optional. If this is only going to talk to 8 kHz endpoints, then it makes sense to use 8 kHz natively.
Global SAY_INIT (x)
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 scan_service (const char *fn, time_t now)
XXX There is some odd delayed duplicate servicing of call files going on. We need to suppress the error message if the file does not exist as a result.
Global SCHED_MULTITHREADED
XXX The IAX2 channel driver needs its native bridge code converted to the new bridge technology scheme.
File streamplayer.c
Update this application to be able to connect to a stream via HTTP, since that is the #1 most requested feature, and it would be quite useful. A lot of people think that is what this is for and email me when it does not work. :)
Global tdd_gen_holdtone (unsigned char *buf)
How big should this be?
File test_event.c
API Calls not yet touched by a test: XXX TODO
File udptl.h
add doxygen documentation to this file!
Class unistim_line
Convert to stringfields
Page Video support in Asterisk
include missing video txt
Global wait_for_answer (struct queue_ent *qe, struct callattempt *outgoing, int *to, char *digit, int prebusies, int caller_disconnect, int forwardsallowed)
eventually all call forward logic should be integrated into and replaced by ast_call_forward()