[asterisk-dev] ast_frame allocation/free question

Kevin P. Fleming kpfleming at digium.com
Tue Nov 27 17:23:29 CST 2007

Simon Perreault wrote:

> 1) The channel makes a copy of the frame for sending later, and takes charge 
> of freeing the copy.
> 2) ast_write() is synchronous and the frame is no longer needed once it 
> returns.
> Which is it?

Why does it matter how the channel driver works internally? In either of
those scenarios, the ast_frame that you have a pointer to (that you
passed to ast_write()) is your responsibility once ast_write() returns
to you.

To answer your question though, there are some channel drivers that are
#1 and some that are #2.

I'm actually not sure why this ever came up, since the (admittedly
minimal) documentation in channel.h does not give anyone the impression
that ast_write() takes ownership of the frame. If it did so it would
certainly be our policy to document such non-obvious behavior.

Kevin P. Fleming
Director of Software Technologies
Digium, Inc. - "The Genuine Asterisk Experience" (TM)

More information about the asterisk-dev mailing list