[asterisk-dev] [Code Review] Add replacement for SIP_CAUSE
opticron
reviewboard at asterisk.org
Fri Mar 23 10:00:37 CDT 2012
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1822/
-----------------------------------------------------------
(Updated March 23, 2012, 10 a.m.)
Review request for Asterisk Developers.
Changes
-------
Updated the patch according to suggestions. Added changes and update information. Added deprecation warning and documentation. Switched SIP_CAUSE backend to use the same mechanism as PVT_CAUSE. Ran this diff through the testsuite to ensure that no tests were broken by it.
Summary
-------
Add PVT_CAUSE as a drop-in replacement for SIP_CAUSE that does not incur the overhead of the MASTER_CHANNEL dialplan function. This feature uses control frames to pass the data and creates a mechanism by which any channel driver can report cause information. This implementation includes only SIP, but implementations for other channel drivers will be available in the next month.
This addresses bug SWP-4221.
https://issues.asterisk.org/jira/browse/SWP-4221
Diffs (updated)
-----
trunk/funcs/func_frame_trace.c 360259
trunk/include/asterisk/frame.h 360259
trunk/main/channel.c 360259
trunk/main/dial.c 360259
trunk/main/features.c 360259
trunk/main/file.c 360259
trunk/main/rtp_engine.c 360259
trunk/CHANGES 360259
trunk/UPGRADE.txt 360259
trunk/apps/app_dial.c 360259
trunk/apps/app_followme.c 360259
trunk/apps/app_queue.c 360259
trunk/channels/chan_sip.c 360259
Diff: https://reviewboard.asterisk.org/r/1822/diff
Testing
-------
Verified that this functions identically to SIP_CAUSE in single-channel dials, forked dials, and forked dials behind a local dial.
Sample dialplan:
[foo]
exten => s,1,Dial(SIP/bar)
exten => h,1,noop()
exten => h,n,set(PVT_CAUSE_STRING=${HASHKEYS(PVT_CAUSE)})
; start loop
exten => h,n(pvt_begin),noop()
; check exit condition (no more array to check)
exten => h,n,gotoif($[${LEN(${PVT_CAUSE_STRING})} = 0]?pvt_exit)
; pull the next item
exten => h,n,set(ARRAY(item)=${PVT_CAUSE_STRING})
exten => h,n,set(PVT_CAUSE_STRING=${PVT_CAUSE_STRING:${LEN(${item})}})
; display the channel ID and cause code
exten => h,n,noop(got channel ID ${item} with pvt cause ${HASH(PVT_CAUSE,${item})})
; check exit condition (no more array to check)
exten => h,n,gotoif($[${LEN(${PVT_CAUSE_STRING})} = 0]?pvt_exit)
; we still have entries to process, so strip the leading comma
exten => h,n,set(PVT_CAUSE_STRING=${PVT_CAUSE_STRING:1})
; go back to the beginning of the loop
exten => h,n,goto(pvt_begin)
exten => h,n(pvt_exit),noop(All PVT_CAUSE entries processed)
Thanks,
opticron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120323/3d57d9df/attachment.htm>
More information about the asterisk-dev
mailing list