Commit Graph

43 Commits

Author SHA1 Message Date
Kinsey Moore
3e9a54d857 Allow Asterisk to compile under GCC 4.10
This resolves a large number of compiler warnings from GCC 4.10 which
cause the build to fail under dev mode. The vast majority are
signed/unsigned mismatches in printf-style format strings.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@413586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-05-09 22:18:59 +00:00
Corey Farrell
a6a92ffe3d res_fax: Warn that minrate=2400 is not valid for V.27 instead of failing load.
Change minrate from 2400 to 4800 on config reload in response to changes from
ASTERISK-22790 only.  Any config with minrate of 2400 that would fail before
r405693 will still fail.

Comment out many settings in res_fax.conf.sample. The defaults are set in
res_fax.c, so setting the same value in sample config does nothing but make
the sample config more fragile.

(closes issue ASTERISK-23231)
Reported by: David Brillert
Review: https://reviewboard.asterisk.org/r/3261/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@409052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-02-27 15:59:15 +00:00
Kevin Harwell
affe507d5b res_fax: check_modem_rate() returned incorrect rate for V.27
According to the new standard for V.27 and V.32 they are able to transmit
at a bit rate of 4,800 or 9,600.  The check_mode_rate function needed to be
updated to reflect this.  Also, because of this change the default 'minrate'
value was updated to be 4800.

(closes issue ASTERISK-22790)
Reported by: Paolo Compagnini
Patches:
     res_fax.txt uploaded by looserouting (license 6548)






git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@405656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-01-16 17:27:05 +00:00
Kinsey Moore
7412e73962 Ensure ReceiveFax provides a CED tone via T.38
When using res_fax_digium, the T.38 CED tone was not being provided
properly which would cause some incoming faxes to fail. This was not an
issue with res_fax_spandsp since it does not strictly honor the
send_ced flag and sends the CED tone whenever receiving a T.38 fax.

(closes issue FAX-343)
Reported-by: Benjamin Tietz
Patch-by: Kinsey Moore


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@377655 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-12-10 16:51:35 +00:00
Mark Michelson
9ea3e78e54 Fix a "set but not used" warning on newer gccs.
Turns out the "helpful" setting of ms and res in this
macro is completely useless after the timeout antipattern
fix.

If you're a new guy looking to write code, don't write
a macro like this one.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@376087 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-08 21:56:49 +00:00
Mark Michelson
e95efa6c50 Fix misuses of timeouts throughout the code.
Prior to this change, a common method for determining if a timeout
was reached was to call a function such as ast_waitfor_n() and inspect
the out parameter that told how many milliseconds were left, then use
that as the input to ast_waitfor_n() on the next go-around.

The problem with this is that in some cases, submillisecond timeouts
can occur, resulting in the out parameter not decreasing any. When this
happens thousands of times, the result is that the timeout takes much
longer than intended to be reached. As an example, I had a situation where
a 3 second timeout took multiple days to finally end since most wakeups
from ast_waitfor_n() were under a millisecond.

This patch seeks to fix this pattern throughout the code. Now we log the
time when an operation began and find the difference in wall clock time
between now and when the event started. This means that sub-millisecond timeouts
now cannot play havoc when trying to determine if something has timed out.

Part of this fix also includes changing the function ast_waitfor() so that it
is possible for it to return less than zero when a negative timeout is given
to it. This makes it actually possible to detect errors in ast_waitfor() when
there is no timeout.

(closes issue ASTERISK-20414)
reported by David M. Lee

Review: https://reviewboard.asterisk.org/r/2135/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@375993 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-07 17:01:13 +00:00
Kinsey Moore
0353a57671 Fix coverity UNUSED_VALUE findings in core support level files
Most of these were just saving returned values without using them and
in some cases the variable being saved to could be removed as well.

(issue ASTERISK-19672)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368738 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-11 15:13:22 +00:00
Kinsey Moore
4148e51555 Add missing newlines to CLI logging
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361471 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-06 18:09:19 +00:00
Mark Michelson
aeadbab220 Adding reload support to res_fax.so
(closes issue ASTERISK-16712)
reported by Frank DiGennaro

Review: https://reviewboard.asterisk.org/r/1713



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354545 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-09 16:56:34 +00:00
Matthew Nicholson
5921a96450 Don't clear LOCALSTATIONID before sending or receiving. The user may set that
variable.

ASTERISK-18921


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@348212 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-14 22:01:48 +00:00
Jonathan Rose
88bf8d3316 Fixes some support level info so that it can be read by menuselect.
(issue ASTERISK-18268)
Review: https://reviewboard.asterisk.org/r/1525/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@340863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-14 15:58:44 +00:00
Matthew Nicholson
de9e8e501e 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/branches/1.8@340108 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-10 14:14:48 +00:00
Matthew Nicholson
50947036a5 The app name in the documentation must match what we register the application
as.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@339505 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-05 16:31:21 +00:00
Matthew Nicholson
1067b58cd3 check for CONFIG_STATUS_FILE_INVALID when loading the res_fax config file
Patch by: tzafrir
Reported by: tzafrir
(closes issue ASTERISK-18161)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@329991 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-28 15:26:56 +00:00
Leif Madsen
d4938a111e Introduce <support_level> tags in MODULEINFO.
This change introduces MODULEINFO into many modules in Asterisk in order to show
the community support level for those modules. This is used by changes committed
to menuselect by Russell Bryant recently (r917 in menuselect). More information about
the support level types and what they mean is available on the wiki at
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@328209 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-14 20:13:06 +00:00
Russell Bryant
a82f1bb995 Fix a bunch of compiler warnings generated by gcc 4.6.0.
Most of these are -Wunused-but-set-variable, but there were a few others
mixed in here, as well.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@316265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-03 19:55:49 +00:00
Jonathan Rose
7cf95da39a 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/branches/1.8@311352 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-03-18 16:19:05 +00:00
Matthew Nicholson
87b246e421 Properly populate the LOCALSTATIONID channel variable.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@311342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-03-18 16:02:50 +00:00
Matthew Nicholson
193a80b513 Reimplemented fax session reservation to reverse the ABI breakage introduced in r297486.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@303907 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-25 20:56:12 +00:00
Jason Parker
dcd9b4347f Fix typo pointed out on asterisk-users list.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@302600 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-19 20:14:40 +00:00
Matthew Nicholson
041535f994 Prevent a memcpy overlap in GENERIC_FAX_EXEC_SET_VARS
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@298054 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-10 16:52:11 +00:00
Matthew Nicholson
5b8a1e8bc5 Display the capabilities requested when requesting a fax session fails instead of displaying a hex value.
Tweak the way fax stats are calculated so that all fax attempts and faliures are logged.  Also make ensure faxes are either counted as completed or falied and never both.

FAX-210


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@297905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-08 16:12:26 +00:00
Matthew Nicholson
f847ff2c38 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/branches/1.8@297495 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-03 15:21:52 +00:00
Matthew Nicholson
93454c0e30 Add support for reserving a fax session before answering the channel.
Note: this change breaks ABI compatibility.

FAX-217


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@297486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-02 21:30:47 +00:00
Matthew Nicholson
26e5a0d111 Changed some NOTICE and WARNING messages to DEBUG messages.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@297157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-01 19:47:33 +00:00
Matthew Nicholson
83729137a5 Validate minrate, maxrate, and modem settings before attempting a fax session.
FAX-224


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@281358 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-09 14:49:38 +00:00
Matthew Nicholson
ec62b158dc Initialize FAXOPT() status variables in sendfax and receivefax instead of when the details structure is created.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@280909 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-04 15:11:13 +00:00
Matthew Nicholson
c788a384aa Fix regression introduced in r1664. Give the fax stack time to shutdown and populate the FAXOPT output variables.
FAX-222


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@280557 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-29 21:07:21 +00:00
Matthew Nicholson
180846d2e7 Don't print failure status when the remote end hangs up, it may not be an actual failure.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278426 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-21 13:03:01 +00:00
Matthew Nicholson
c149b851b3 This commit contains several changes to the way output channel variables are handled.
FAX output channel variables will now match the values reported by FAXOPT() and should be set in all failure and success cases.

This commit also contains a few modifications to the way FAXOPT() variables are populated in a few spots and fixes for some reference count leaks of the session details structure in some failure cases.

Also found and fixed more cases where FAXOPT(status) may not have gotten set.

FAX-214
FAX-203


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278168 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-20 21:01:26 +00:00
Tilghman Lesher
b4e18d5660 Add load priority order, such that preload becomes unnecessary in most cases
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278132 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-20 19:35:02 +00:00
Bradley Latus
c0607e02b5 Update res_fax.c to be a good xml citizen.
(closes issues #17667)
 Reported by: snuffy


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@277667 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-17 00:03:37 +00:00
Matthew Nicholson
f03b3691ea Set proper FAXOPT(status), FAXOPT(statusstr), and FAXOPT(error) values where possible. Previously some failure cases did not result in proper FAXOPT values.
FAX-203


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@274540 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-07 16:40:19 +00:00
Matthew Nicholson
390d5781cf Properly detect and report invalid maxrate and maxrate values in the FAXOPT dialplan function. Also make fax_rate_str_to_int() return an unsigned int and return 0 instead of -1 in the event of an error.
FAX-202


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@274243 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-06 19:53:04 +00:00
Matthew Nicholson
6acfd9f20a Properly handle failures of fax->start_session()
FAX-177


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@273464 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-01 19:34:47 +00:00
Matthew Nicholson
480b7e43ca Implemement support for handling multiple documents when sending.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@272558 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-25 19:42:54 +00:00
Russell Bryant
9cc7c55578 Change the method of retrieving the Asterisk version string.
Using this method makes it so res_fax doesn't have to be rebuilt on every
svn update.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@271833 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-22 16:17:14 +00:00
Mark Michelson
0a63e3fa10 Log spandsp's fax debug output to the FAX logger level.
Review: https://reviewboard.asterisk.org/r/658



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@264953 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-05-21 15:15:58 +00:00
Matthew Nicholson
13f523731a Update res_fax and res_fax_spandsp to be compatible with Fax For Asterisk 1.2.
The fax session initilization code for T.38 faxes has been rewritten. T.38 session initialization was removed from generic_fax_exec, and split into two different code paths for receive and send.  Also the 'z' option (to send a T.38 reinvite if we do not receive one) was added to sendfax.

In the output of 'fax show sessions', the 'Type' column has been renamed to 'Tech' and replaced with a new 'Tech' column that will report 'G.711' or 'T.38'.

Control of ECM defaults has been added to res_fax

A 'fax show settings' CLI command has been added.

Support of the new AST_T38_REQUEST_PARMS control method request to handle channels that have already received a T.38 reinvite before the FAX application is start has been added.

Support for the 'fax show settings' command has been added to res_fax_spandsp and handling of the ECM flag has been slightly altered.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@258896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-26 14:18:15 +00:00
Kevin P. Fleming
42577406fd Improve handling of T.38 re-INVITEs that arrive before a T.38-capable
application is executing on a channel.

This patch addresses an issue found during working with end-users
using res_fax. If an incoming call is answered in the dialplan, or
jumps to the 'fax' extension due to reception of a CNG tone (with
faxdetect enabled), and then the remote endpoint sends a T.38
re-INVITE, it is possible for the channel's T.38 state to be
'T38_STATE_NEGOTIATING' when the application starts up. Unfortunately,
even if the application wants to use T.38, it can't respond to the
peer's negotiation request, because the AST_CONTROL_T38_PARAMETERS
control frame that chan_sip sent originally has been lost, and the
application needs the content of that frame to be able to formulate a
reply.

This patch adds a new 'request' type to AST_CONTROL_T38_PARAMETERS,
AST_T38_REQUEST_PARMS. If the application sends this request, chan_sip
will re-send the original control frame (with
AST_T38_REQUEST_NEGOTIATE as the request type), and the application
can respond as normal. If this occurs within the five second timeout
in chan_sip, the automatic cancellation of the peer reinvite will be
stopped, and the application will 'own' the negotiation process from
that point onwards.

This also improves the code path in chan_sip to allow sip_indicate(),
when called for AST_CONTROL_T38_PARAMETERS, to be able to return a
non-zero response, which should have been in place before since the
control frame *can* fail to be processed properly. It also modifies
ast_indicate() to return whatever result the channel driver returned
for this control frame, rather than converting all non-zero results
into '-1'. Finally, the new request type intentionally returns a
positive value, so that an application that sends
AST_T38_REQUEST_PARMS can know for certain whether the channel driver
accepted it and will be replying with a control frame of its own, or
whether it was ignored (if the sip_indicate()/ast_indicate() path had
properly supported failure responses before, this would not be
necessary).

This patch also modifies res_fax to take advantage of the new request.

In addition, this patch makes sip_t38_abort() actually lock the
private structure before doing its work... bad programmer, no donut.

This patch also enhances chan_sip's 'faxdetect' support to allow
triggering on T.38 re-INVITEs received as well as CNG tone detection.

Review: https://reviewboard.asterisk.org/r/556/



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@254450 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-25 15:27:31 +00:00
Kevin P. Fleming
43d922b5a6 Improve handling of values supplied to FAXOPT(ecm).
Previously, values that began with whitespace were silently treated as 'no',
and all non-'yes' values were also treated as 'no'. Now the supplied value
is specifically checked for a 'yes' or 'no' (or equivalent) value, after skipping
leading whitespace. If the value is not valid, then a warning message is generated.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@252709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-15 22:48:38 +00:00
Matthew Nicholson
8ef8706944 Updated CHANGES file to mention res_fax and res_fax_spandsp.
Also fixed MODULEINFO depends and conflicts for app_fax, res_fax, and res_fax_spandsp.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@250302 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-03 15:39:45 +00:00
Matthew Nicholson
06dc8bc123 Merge res_fax and res_fax_spandsp.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@250190 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-02 23:11:06 +00:00