Continue channel opaque-ification by wrapping all of the stringfields.
Eventually, we will restrict what can actually set these variables, but
the purpose for now is to hide the implementation and keep people from
adding code that directly accesses the channel structure. Semantic
changes will follow afterward.
Review: https://reviewboard.asterisk.org/r/1661/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@352348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
There are many benefits to making the ast_channel an opaque handle, from
increasing maintainability to presenting ways to kill masquerades. This patch
kicks things off by taking things a field at a time, renaming the field to
'__do_not_use_${fieldname}' and then writing setters/getters and converting the
existing code to using them. When all fields are done, we can move ast_channel
to a C file from channel.h and lop off the '__do_not_use_'.
This patch sets up main/channel_interal_api.c to be the only file that actually
accesses the ast_channel's fields directly. The intent would be for any API
functions in channel.c to use the accessor functions. No more monkeying around
with channel internals. We should use our own APIs.
The interesting changes in this patch are the addition of
channel_internal_api.c, the moving of the AST_DATA stuff from channel.c to
channel_internal_api.c (note: the AST_DATA stuff will have to be reworked to
use accessor functions when ast_channel is really opaque), and some re-working
of the way channel iterators/callbacks are handled so as to avoid creating fake
ast_channels on the stack to pass in matching data by directly accessing fields
(since "name" is a stringfield and the fake channel doesn't init the
stringfields, you can't use the ast_channel_name_set() function). I went with
ast_channel_name(chan) for a getter, and ast_channel_name_set(chan, name) for a
setter.
The majority of the grunt-work for this change was done by writing a semantic
patch using Coccinelle ( http://coccinelle.lip6.fr/ ).
Review: https://reviewboard.asterisk.org/r/1655/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@350223 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Even though we set the frame to the ast_null_frame and return that,
the caller of the frame hook may still need the frame. This now is
a bit more careful about when it frees the frame, i.e., only under
the same conditions that applied when we duplicated it in the first
place.
........
Merged revisions 349822 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@349823 65c4cc65-6c06-0410-ace0-fbb531ad65f3
A frame that is translated via ast_translate is also duplicated via ast_frdup.
This will allocate a new frame on the heap, which needs to be free'd
at the appropriate time. This issue reporter used valgrind to find that this
occurred in res_fax's fax_gateway_framehook; a quick search through the code
showed that only place this was currently not handling the translatted frame
properly.
(closes issue ASTERISK-19133)
Reported by: Sylvain Rochet
........
Merged revisions 349608 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@349609 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit removes the V.21 preamble detection code previously added to the
generic DSP implementation in Asterisk, and instead enhances the res_fax module
to be able to utilize V.21 preamble detection functionality made available by
FAX technology modules. This commit also adds such support to res_fax_spandsp,
which uses the Spandsp modem tone detection code to do the V.21 preamble
detection.
There should be no functional change here, other than much more reliable V.21
preamble detection (and thus T.38 gateway initiation).
........
Merged revisions 349248 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@349249 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/10
................
r340109 | mnicholson | 2011-10-10 09:15:41 -0500 (Mon, 10 Oct 2011) | 18 lines
Merged revisions 340108 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r340108 | mnicholson | 2011-10-10 09:14:48 -0500 (Mon, 10 Oct 2011) | 11 lines
Load the proper XML documentation when multiple modules document the same application.
This patch adds an optional "module" attribute to the XML documentation spec
that allows the documentation processor to match apps with identical names from
different modules to their documentation. This patch also fixes a number of
bugs with the documentation processor and should make it a little more
efficient. Support for multiple languages has also been properly implemented.
ASTERISK-18130
Review: https://reviewboard.asterisk.org/r/1485/
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@340110 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Added func FAXOPT(faxdetect)=yes,cng,t38[,timeout]/no
to enable dialplan faxdetect allowing more flexibility.
as soon as a fax tone is detected the framehook is removed.
there is a penalty involved in running this framehook on
non G711 channels as they will be transcoded.
CNG tone is suppresed using the SQUELCH flag to allow
WaitForNoise to be run on the channel to detect Voice.
(Closes issue ASTERISK-18569)
Reported by: Myself
Reviewed by: Matthew Nicholson, Kevin Fleming
Review: https://reviewboard.asterisk.org/r/1116/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@339465 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/10
........
r339463 | irroot | 2011-10-05 08:28:46 +0200 (Wed, 05 Oct 2011) | 9 lines
Only change the capabilities on the gateway when
the session is been destroyed there is still
a race condition that ends in a segfault.
if the caps are changed the logic in res_fax_spandsp
will run T30 code not gateway code to end the session.
this has been experienced on a "slower" under spec system.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@339464 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/10
........
r338950 | irroot | 2011-10-03 11:37:59 +0200 (Mon, 03 Oct 2011) | 14 lines
Fixup a race condition in res_fax.c where FAXOPT(gateway)=no will
turn off the gateway but the framehook is not destroyed.
this problem happens when a gateway is attempted in the dialplan and
the device is not available i may want to do fax to mail in the server
it will not be allowed.
instead of checking only AST_FAX_TECH_GATEWAY also check gateway_id
Reverts 338904
Fix some white space.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@338951 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/10
........
r338904 | irroot | 2011-10-02 16:17:32 +0200 (Sun, 02 Oct 2011) | 8 lines
Remove T38 Gateway capability when detaching framehook.
SET(FAXOPT(gateway)=no) does not remove the capability when
detaching the framehook.
small patch to fix this problem.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@338905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
generating party time to send its own T.38 reinvite.
Also don't forward frames through the gateway if we are negotiating T.38.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@327511 65c4cc65-6c06-0410-ace0-fbb531ad65f3
terminal). Can be enabled on a channel by setting FAXOPT(gateway)=yes in the
dialplan.
Big thanks to irroot for porting this code to use the framehooks api.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@325816 65c4cc65-6c06-0410-ace0-fbb531ad65f3
state of the channel reverts to unknown this should be rejected.
this is important for negotiating T.38 gateway see #13405
This patch adds a option T38_REJECTED that behaves as T38_DISABLED except it reports state rejected.
Trivial Change to res_fax to honnor UNAVAILABLE and REJECTED states.
(closes issue #18889)
Reported by: irroot
Tested by: irroot, darkbasic, mnicholson
Review: https://reviewboard.asterisk.org/r/1115
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@319087 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r311352 | jrose | 2011-03-18 11:19:05 -0500 (Fri, 18 Mar 2011) | 10 lines
Changes some print statements/events to use a blank string in place of NULL if the string in question is NULL.
This is supposed to improve Solaris compatibility since Solaris goes berserk when trying to output NULL strings.
(closes issue #18759)
Reported by: bklang
Patches:
null-strings.patch uploaded by bklang (license 919)
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@311373 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This patch is the foundation of an entire new way of looking at media in Asterisk.
The code present in this patch is everything required to complete phase1 of my
Media Architecture proposal. For more information about this project visit the link below.
https://wiki.asterisk.org/wiki/display/AST/Media+Architecture+Proposal
The primary function of this patch is to convert all the usages of format
bitfields in Asterisk to use the new format and format_cap APIs. Functionally
no change in behavior should be present in this patch. Thanks to twilson
and russell for all the time they spent reviewing these changes.
Review: https://reviewboard.asterisk.org/r/1083/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@306010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Skipping the call to set_t38_fax_caps() caused the FAX session
details to not be marked as supporting audio FAX either... the
function's name is a bit misleading. This patch restores the
single bit of non-T.38 behavior from that function when audio
mode is forced.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@304599 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The recently added option to disable usage of T.38 for a single
session should have been named 'F' for 'force audio', since that
is really what the user is asking to happen (and it's a positive
option instead of a negative option that way).
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@304422 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Sometimes during troubleshooting it can be useful to disable T.38 usage in order
to narrow down a problem. This patch adds an 'n' option to SendFAX and ReceiveFAX
so that can be done without having to disable T.38 usage entirely for the peer
that Asterisk is communicating with.
(inspired by trying to assist Bryant Zimmerman on asterisk-users)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@304342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r297157 | mnicholson | 2010-12-01 13:47:33 -0600 (Wed, 01 Dec 2010) | 2 lines
Changed some NOTICE and WARNING messages to DEBUG messages.
........
r297486 | mnicholson | 2010-12-02 15:30:47 -0600 (Thu, 02 Dec 2010) | 6 lines
Add support for reserving a fax session before answering the channel.
Note: this change breaks ABI compatibility.
FAX-217
........
r297495 | mnicholson | 2010-12-03 09:21:52 -0600 (Fri, 03 Dec 2010) | 4 lines
Print a DEBUG message instead of a WARNING message when the selected fax tech does not support reserving sessions.
Answer the channel before quering it for t.38 support. This is necessary for the query to work properly over local channels.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@297496 65c4cc65-6c06-0410-ace0-fbb531ad65f3