[asterisk-dev] [Code Review] Support text messages outside of a call

David Vossel reviewboard at asterisk.org
Mon Mar 7 09:57:01 CST 2011



> On 2011-03-04 17:27:20, David Vossel wrote:
> > /trunk/main/message.c, lines 783-794
> > <https://reviewboard.asterisk.org/r/1042/diff/5/?file=15808#file15808line783>
> >
> >     Take a look at main/format.c and how I handle storing and finding the attribute interfaces.  I made a wrapper called interface_ao2_wrapper that allowed me to guarantee the module was still in memory when I wanted to use it.
> 
> Russell Bryant wrote:
>     I took a look, but it actually looks to me like it's possible for a module to be unloaded while an attribute interface is being used.  Let's look at this together on Monday.

Before the interface is ever used, the interface's wrapper lock is held.  While the wrapper lock is held we can verify the interface is still within memory.  It is impossible for the interface to go away while the wrapper lock is held.  This is because the wrapper lock has to be held when removing the interface from the wrapper before it leaves memory.  The wrapper simply lets us detect whether the interface is still in memory or not in a safe way and guarantee it will not leave memory while it is being used.


- David


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1042/#review3233
-----------------------------------------------------------


On 2011-03-04 16:56:22, Russell Bryant wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1042/
> -----------------------------------------------------------
> 
> (Updated 2011-03-04 16:56:22)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> This branch contains a proposal for adding protocol independent support for processing text messages into and out of the dialplan, outside of a call.  The file doc/asterisk-messaging.txt contains more details on the proposal.  The introduction of the document is quoted here:
> 
> "    Asterisk has some limited support today for messaging.  The support that
> exists primarily includes passing text messages in the context of a call.  The
> SIP and IAX2 protocols have support for this, but that's it.
> 
>     There are a couple of other messaging protocols that are supported: Skype
> and XMPP (Jabber).  The support of these is very minimal and not very integrated
> into the architecture of Asterisk since these messages are not in the context of
> a phone call.  They provide a combination of dialplan and manager interface
> interfaces that are specific to each protocol.  There just is no current
> architectural concept of dealing with text messages.
> 
>     The purpose of this proposal is to introduce text messaging into the
> architecture of Asterisk.  For messaging support to exist in the true spirit of
> Asterisk architecture, the design needs to achieve the following two goals:
> 
>     a) Protocol Independence
>     b) Scriptable message routing
> 
>     The rest of this document goes through some details about how these goals
> will be achieved in a way that is both architecturally compatible with Asterisk
> as well as practical to implement."
> 
> ----------
> 
> In addition to the documented proposal, I have made some good progress on implementation.  While the document includes some ideas for future enhancements, what is there so far should be usable.
> 
>  - core modifications to allow sending incoming messages through the dialplan
>  - core modifications to allow outbound messages from the dialplan
>  - modifications to res_jabber to allow inbound and outbound messages in the new architecture
>  - changes to chan_sip to support inbound and outbound MESSAGE outside of a call
> 
> 
> Diffs
> -----
> 
>   /trunk/CHANGES 309638 
>   /trunk/channels/chan_sip.c 309638 
>   /trunk/channels/sip/include/sip.h 309638 
>   /trunk/configs/jabber.conf.sample 309638 
>   /trunk/configs/sip.conf.sample 309638 
>   /trunk/doc/asterisk-messaging.txt PRE-CREATION 
>   /trunk/include/asterisk/_private.h 309638 
>   /trunk/include/asterisk/channel.h 309638 
>   /trunk/include/asterisk/jabber.h 309638 
>   /trunk/include/asterisk/message.h PRE-CREATION 
>   /trunk/main/asterisk.c 309638 
>   /trunk/main/channel.c 309638 
>   /trunk/main/message.c PRE-CREATION 
>   /trunk/res/res_jabber.c 309638 
> 
> Diff: https://reviewboard.asterisk.org/r/1042/diff
> 
> 
> Testing
> -------
> 
> svn/testsuite/asterisk/team/russell/messaging:
>   - This branch of the testsuite contains my tests for this branch, which include:
>     - tests/sip/message_disabled
>       - Ensure MESSAGE outside of a call is rejected when disabled.
>     - tests/sip/message_unauth
>       - When enabled, test sending a MESSAGE to Asterisk and send another back out from the dialplan.
>     - tests/sip/message_auth
>       - Same as the last test, but authenticate MESSAGE both inbound and outbound.
>     - tests/sip/message_from_call
>       - Set up a normal SIP call and send an out of call MESSAGE from the dialplan processing the call
> 
> I have also written some simple apps using the pjsua Python module from pjsip that can send and receive messages sent through Asterisk.
> 
> Lastly, I have done some manual testing of XMPP messages in and out of Asterisk using this code.
> 
> 
> Thanks,
> 
> Russell
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110307/12036314/attachment-0001.htm>


More information about the asterisk-dev mailing list