[asterisk-dev] [Code Review] Improve behavior of ast_answer() to not lose incoming frames

Kevin Fleming kpfleming at digium.com
Mon Mar 16 17:16:07 CDT 2009


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.digium.com/r/196/
-----------------------------------------------------------

(Updated 2009-03-16 17:16:07.732407)


Review request for Asterisk Developers.


Changes
-------

New patch addresses previous comments; ast_raw_answer() was added to do the bulk of the answering work, but without waiting for media. In addition, all three answer() variants how have proper Doxygen documentation.


Summary
-------

ast_answer(), when supplied a delay before returning to the caller, use ast_safe_sleep() to implement the delay. Unfortunately during this time any incoming frames are discarded, which is problematic for T.38 re-INVITES and other sorts of channel operations.

When a delay is not passed to ast_answer(), it still delays for up to 500 milliseconds, waiting for media to arrive. Again, though, it discards any control frames, or non-voice media frames.

This patch rectifies this situation, by storing all incoming frames during the delay period on a list, and then requeuing them onto the channel before returning to the caller.


Diffs (updated)
-----

  /trunk/main/channel.c 182399 
  /trunk/include/asterisk/channel.h 182399 
  /trunk/main/features.c 182399 

Diff: http://reviewboard.digium.com/r/196/diff


Testing
-------

Compile testing only.


Thanks,

Kevin




More information about the asterisk-dev mailing list