aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_fax.c
AgeCommit message (Collapse)AuthorFilesLines
2010-07-14ast_callerid restructuringrmudgett1-19/+19
The purpose of this patch is to eliminate struct ast_callerid since it has turned into a miscellaneous collection of various party information. Eliminate struct ast_callerid and replace it with the following struct organization: struct ast_party_name { char *str; int char_set; int presentation; unsigned char valid; }; struct ast_party_number { char *str; int plan; int presentation; unsigned char valid; }; struct ast_party_subaddress { char *str; int type; unsigned char odd_even_indicator; unsigned char valid; }; struct ast_party_id { struct ast_party_name name; struct ast_party_number number; struct ast_party_subaddress subaddress; char *tag; }; struct ast_party_dialed { struct { char *str; int plan; } number; struct ast_party_subaddress subaddress; int transit_network_select; }; struct ast_party_caller { struct ast_party_id id; char *ani; int ani2; }; The new organization adds some new information as well. * The party name and number now have their own presentation value that can be manipulated independently. ISDN supplies the presentation value for the name and number at different times with the possibility that they could be different. * The party name and number now have a valid flag. Before this change the name or number string could be empty if the presentation were restricted. Most channel drivers assume that the name or number is then simply not available instead of indicating that the name or number was restricted. * The party name now has a character set value. SIP and Q.SIG have the ability to indicate what character set a name string is using so it could be presented properly. * The dialed party now has a numbering plan value that could be useful to have available. The various channel drivers will need to be updated to support the new core features as needed. They have simply been converted to supply current functionality at this time. The following items of note were either corrected or enhanced: * The CONNECTEDLINE() and REDIRECTING() dialplan functions were consolidated into func_callerid.c to share party id handling code. * CALLERPRES() is now deprecated because the name and number have their own presentation values. * Fixed app_alarmreceiver.c write_metadata(). The workstring[] could contain garbage. It also can only contain the caller id number so using ast_callerid_parse() on it is silly. There was also a typo in the CALLERNAME if test. * Fixed app_rpt.c using ast_callerid_parse() on the channel's caller id number string. ast_callerid_parse() alters the given buffer which in this case is the channel's caller id number string. Then using ast_shrink_phone_number() could alter it even more. * Fixed caller ID name and number memory leak in chan_usbradio.c. * Fixed uninitialized char arrays cid_num[] and cid_name[] in sig_analog.c. * Protected access to a caller channel with lock in chan_sip.c. * Clarified intent of code in app_meetme.c sla_ring_station() and dial_trunk(). Also made save all caller ID data instead of just the name and number strings. * Simplified cdr.c set_one_cid(). It hand coded the ast_callerid_merge() function. * Corrected some weirdness with app_privacy.c's use of caller presentation. Review: https://reviewboard.asterisk.org/r/702/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@276347 f38db490-d61c-443f-a65b-d21fe96a405b
2010-06-08Don't pass null to manager_event()mnicholson1-2/+2
(closes issue #17087) Reported by: bklang Patches: app-fax-null-sprintf1.diff uploaded by mnicholson (license 96) Tested by: bklang git-svn-id: http://svn.digium.com/svn/asterisk/trunk@269083 f38db490-d61c-443f-a65b-d21fe96a405b
2010-03-03Updated CHANGES file to mention res_fax and res_fax_spandsp.mnicholson1-1/+3
Also fixed MODULEINFO depends and conflicts for app_fax, res_fax, and res_fax_spandsp. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@250302 f38db490-d61c-443f-a65b-d21fe96a405b
2010-02-09Ensure frames are only freed once.tilghman1-0/+2
(closes issue #16361) Reported by: vlad Patches: 20100208__issue16361.diff.txt uploaded by tilghman (license 14) Tested by: kenny, bloodoff, misaksen git-svn-id: http://svn.digium.com/svn/asterisk/trunk@245729 f38db490-d61c-443f-a65b-d21fe96a405b
2010-02-09Don't offer MMR or JBIG transcoding during T.38 negotiation.kpfleming1-2/+6
After further discussion with Steve Underwood, we should not (yet) be offering to receive MMR or JBIG transcoded streams from T.38 endpoints. A future spandsp release will support those features, and then they can be enabled during negotiation git-svn-id: http://svn.digium.com/svn/asterisk/trunk@245680 f38db490-d61c-443f-a65b-d21fe96a405b
2009-12-15spandsp does in fact support V.17 modulation at 14.4 kilobits per second,kpfleming1-1/+1
so we should generate T38MaxBitRate of 14400 (even though that doesn't really affect the FAX transmission much at all) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@235010 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-16Fix another buglet in T.38 session teardown at the end of FAX sessions.kpfleming1-2/+3
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@230381 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-16Ensure that only one end of a T.38 session initiates teardown at completion.kpfleming1-1/+5
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@230343 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-13Display a list of channel variables in each channel-oriented event.tilghman1-1/+1
(Closes AST-33) Reviewboard: https://reviewboard.asterisk.org/r/368/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@230111 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-04Expand codec bitfield from 32 bits to 64 bits.tilghman1-10/+10
Reviewboard: https://reviewboard.asterisk.org/r/416/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@227580 f38db490-d61c-443f-a65b-d21fe96a405b
2009-10-12Remove automatic switching from T.38 to voice mode in chan_sip.kpfleming1-1/+54
chan_sip has some code to automatically switch from T.38 mode to voice mode when a voice frame is written to the channel while it is in T.38 mode; this was intended to handle the situation when a FAX transmission has ended and the channel is not yet hung up, but is causing problems at the beginning of FAX sessions as well when there are still voice frames 'in flight' at the time the T.38 negotiation completes. This patch removes the automatic switchover, and changes app_fax to explicitly switch off T.38 mode when the FAX transmission process ends. (closes issue #16025) Reported by: jamicque git-svn-id: http://svn.digium.com/svn/asterisk/trunk@223652 f38db490-d61c-443f-a65b-d21fe96a405b
2009-10-09Initiate T.38 switchover when acting as called party, regardless of FAX ↵kpfleming1-2/+2
direction. SendFAX() and ReceiveFAX() can be given options to indicate whether they should act as the calling or called party; this mode should be used to decide whether to initiate a switchover to T.38, not the direction that the FAX transfer will take place. (closes issue #16039) Reported by: jamicque git-svn-id: http://svn.digium.com/svn/asterisk/trunk@223330 f38db490-d61c-443f-a65b-d21fe96a405b
2009-08-06Minor improvements to app_fax.kpfleming1-33/+36
This patch makes some small changes to handle watchdog timeouts in a better way, and also uses a 'cleaner' method of including the spandsp header files. (closes issue #14769) Reported by: andrew Patches: app_fax-20090406.diff uploaded by andrew (license 240) v1-14769.patch uploaded by dimas (license 88) Tested by: freh, deti, caspy, dimas, sgimeno, Dovid git-svn-id: http://svn.digium.com/svn/asterisk/trunk@210777 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-27Cleanup T.38 negotiation changes.kpfleming1-5/+9
Convert LOG_NOTICE messages about T.38 negotiation in debug level 1 messages, clean up some looping logic, and correct an improper use of ast_free() for freeing an ast_frame. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@209279 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-27Make T.38 switchover in ReceiveFAX synchronous.kpfleming1-56/+76
In receive mode, if the channel that ReceiveFAX is running on supports T.38, we should *always* attempt to switch T.38, rather than listening for an incoming CNG tone and only triggering on that. The channel may be using a low-bitrate codec that distorts the CNG tone, the sending FAX endpoint may not send CNG at all, or there could be a variety of other reasons that we don't detect it, but in all those cases if T.38 is available we certainly want to use it. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@209256 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-23Rework of T.38 negotiation and UDPTL API to address interoperability problemskpfleming1-14/+13
Over the past couple of months, a number of issues with Asterisk negotiating (and successfully completing) T.38 sessions with various endpoints have been found. This patch attempts to address many of them, primarily focused around ensuring that the endpoints' MaxDatagram size is honored, and in addition by ensuring that T.38 session parameter negotiation is performed correctly according to the ITU T.38 Recommendation. The major changes here are: 1) T.38 applications in Asterisk (app_fax) only generate/receive IFP packets, they do not ever work with UDPTL packets. As a result of this, they cannot be allowed to generate packets that would overflow the other endpoints' MaxDatagram size after the UDPTL stack adds any error correction information. With this patch, the application is told the maximum *IFP* size it can generate, based on a calculation using the far end MaxDatagram size and the active error correction mode on the T.38 session. The same is true for sending *our* MaxDatagram size to the remote endpoint; it is computed from the value that the application says it can accept (for a single IFP packet) combined with the active error correction mode. 2) All treatment of T.38 session parameters as 'capabilities' in chan_sip has been removed; these parameters are not at all like audio/video stream capabilities. There are strict rules to follow for computing an answer to a T.38 offer, and chan_sip now follows those rules, using the desired parameters from the application (or channel) that wants to accept the T.38 negotiation. 3) chan_sip now stores and forwards ast_control_t38_parameters structures for tracking 'our' and 'their' T.38 session parameters; this greatly simplifies negotiation, especially for pass-through calls. 4) Since T.38 negotiation without specifying parameters or receiving the final negotiated parameters is not very worthwhile, the AST_CONTROL_T38 control frame has been removed. A note has been added to UPGRADE.txt about this removal, since any out-of-tree applications that use it will no longer function properly until they are upgraded to use AST_CONTROL_T38_PARAMETERS. Review: https://reviewboard.asterisk.org/r/310/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@208464 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-10Eliminate extraneous LOG_DEBUG messages generated by app_fax.kpfleming1-35/+40
The transmit_audio() and transmit_t38() functions in app_fax have processing loops that are supposed to wait for frames to arrive on the channel and then handle them, but they also have short timeouts so that the loops can have watchdog timers and do other required processing. This commit changes the loops to not actually call ast_read() and attempt to process the returned frame unless a frame actually arrived, eliminating hundreds of LOG_DEBUG messages and slightly improving performance. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@205780 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-10Fix some remaining T.38 negotiation problems in app_fax.kpfleming1-9/+8
Revision 205696 did not quite fix all the issues with the T.38 negotiation changes and app_fax; this patch corrects them, along with a couple of other minor issues. (closes issue #15480) Reported by: dimas Patches: test2-15480.patch uploaded by dimas (license 88) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@205770 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-09Repair ability of SendFAX/ReceiveFAX to respond to T.38 switchover.kpfleming1-2/+19
Recent changes in T.38 negotiation in Asterisk caused these applications to not respond when the other endpoint initiated a switchover to T.38; this resulted in the T.38 switchover failing, and the FAX attempt to be made using an audio connection, instead of T.38 (which would usually cause the FAX to fail completely). This patch corrects this problem, and the applications will now correctly respond to the T.38 switchover request. In addition, the response will include the appopriate T.38 session parameters based on what the other end offered and what our end is capable of. (closes issue #14849) Reported by: afosorio git-svn-id: http://svn.digium.com/svn/asterisk/trunk@205696 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-26Improve T.38 negotiation by exchanging session parameters between ↵file1-17/+29
application and channel. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@203699 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-20Fix version detection for API changes in spandsp.seanbright1-2/+2
(closes issue #15355) Reported by: deuffy git-svn-id: http://svn.digium.com/svn/asterisk/trunk@202183 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-16Enable applications to enable/disable digit and tone detection.kpfleming1-0/+50
Some applications (notably app_fax) do not need digit detection nor FAX tone detection while they are running, and if Asterisk is using software DSPs to provide the detection, this consumes extra CPU cycles that could be better spent on the actual application. This patch allows applications to query and control the state of digit and tone detection on a channel, and modifies app_fax to disable them while the FAX operations are occurring (and re-enable digit detection afterwards). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@201139 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-15Last batch of 'static' qualifiers for module-level global variables.kpfleming1-1/+1
Fix up modules in the 'apps' directory, and also correct the bad example of enum definitions in include/asterisk/app.h, which many developers followed (thanks for reading the documentation!). In addition, add some basic usage examples of the 'pahole' and 'pglobal' tools to the coding guidelines. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@200656 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-07Global var cleanup - constification and removing unused vars.russell1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@199479 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-21Const-ify the world (or at least a good part of it)kpfleming1-2/+2
This patch adds 'const' tags to a number of Asterisk APIs where they are appropriate (where the API already demanded that the function argument not be modified, but the compiler was not informed of that fact). The list includes: - CLI command handlers - CLI command handler arguments - AGI command handlers - AGI command handler arguments - Dialplan application handler arguments - Speech engine API function arguments In addition, various file-scope and function-scope constant arrays got 'const' and/or 'static' qualifiers where they were missing. Review: https://reviewboard.asterisk.org/r/251/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@196072 f38db490-d61c-443f-a65b-d21fe96a405b
2009-02-20Make app_fax compatible with spandsp-0.0.6pre4dhubbard1-3/+9
Prior to spandsp-0.0.6pre4 the t30_stats_t structure used a pages_transferred integer to indicate the number of pages transferred (so far) during the fax session. The spandsp-0.0.6pre4 release removed the pages_transferred integer and replaced it with two different integers - pages_tx and pages_rx. This revision uses the new integers for spandsp-0.0.6pre4 while maintaining backwards compatibility for previous spandsp releases. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@177699 f38db490-d61c-443f-a65b-d21fe96a405b
2008-12-15Make app_fax compatible with newer versions of spandsp. This remains ↵file1-0/+3
backwards compatible with earlier versions though so do not fret. (closes issue #14073) Reported by: seandarcy git-svn-id: http://svn.digium.com/svn/asterisk/trunk@164257 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-01Merge changes from team/group/appdocsxmlrussell1-54/+99
This commit introduces the first phase of an effort to manage documentation of the interfaces in Asterisk in an XML format. Currently, a new format is available for applications and dialplan functions. A good number of conversions to the new format are also included. For more information, see the following message to asterisk-dev: http://lists.digium.com/pipermail/asterisk-dev/2008-October/034968.html git-svn-id: http://svn.digium.com/svn/asterisk/trunk@153365 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-14API differences in spandsp 0.0.6pre1 and highertilghman1-19/+42
(closes issue #13688) Reported by: irroot Patches: app_fax-span6.patch uploaded by irroot (license 52) with minor modifications by me git-svn-id: http://svn.digium.com/svn/asterisk/trunk@148868 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-13Add FAXMODE variable with what fax transport was used.qwell1-9/+16
(closes issue #13252) Patches: v1-13252.patch uploaded by dimas (license 88) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@137496 f38db490-d61c-443f-a65b-d21fe96a405b
2008-07-08Update app_fax for better compatibility with spandsp 0.0.5. Add a call torussell1-7/+7
t38_terminal_release, and make sure that the phase E handler gets called with proper status. (closes issue #13020) Reported by: dimas Patches: v1-appfax.patch uploaded by dimas (license 88) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@129006 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-16Resurrected app_faxseanbright1-0/+741
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@122834 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-12Goodbye Zaptel, hello DAHDI. Removes Zaptel driver support with DAHDI. ↵jpeeler1-741/+0
Configuration file and dialplan backwards compatability has been put in place where appropiate. Release announcement to follow. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@122234 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-02Add app_fax from asterisk-addons, with some additional changes to resolve ↵russell1-0/+741
compiler warnings, as well as update to the APIs in spandsp 0.0.5. Spandsp 0.0.5 is being distributed under the LGPL, so we can move this module into the main tree. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@119801 f38db490-d61c-443f-a65b-d21fe96a405b