Tilghman Lesher [Tue, 25 Nov 2008 05:19:53 +0000 (05:19 +0000)]
Copyright clarification; also, have variable set to "t" or "i" on timeout or
invalid extension, respectively.
(closes issue #13944)
Reported by: chappell
Sean Bright [Tue, 25 Nov 2008 01:01:49 +0000 (01:01 +0000)]
This is basically a complete rollback of r155401, as it was determined that
it would be best to maintain API compatibility. Instead, this commit introduces
ao2_callback_data() which is functionally identical to ao2_callback() except
that it allows you to pass arbitrary data to the callback.
Reviewed by Mark Michelson via ReviewBoard:
http://reviewboard.digium.com/r/64
Terry Wilson [Mon, 24 Nov 2008 18:11:08 +0000 (18:11 +0000)]
This patch adds a new application for sending MWI to phones via Asterisk's event subsystem. Also, the minivm documentation is all converted to use xmldocs.
Sean Bright [Sun, 23 Nov 2008 03:36:52 +0000 (03:36 +0000)]
If you enabled 'notifycid' one of the limitations is that the calling channel
is only found if it dialed the extension that was subscribed to. You can now
specify 'ignore-context' for the 'notifycid' option in sip.conf which will, as
it's value implies, ignore the current context of the caller when doing the
lookup.
Michiel van Baak [Sat, 22 Nov 2008 16:57:11 +0000 (16:57 +0000)]
dont send reorder tone after a device is hungup if a dialout is abandoned or failed.
Without this reorder tone will play after hangup and both wedhorn's and my wife have threatened to use an axe on our asterisk box
When compiling against Zaptel dahdi_compat will now only define all the DAHDI defines if the Zaptel define is present. Also, there is no such thing as DAHDI_PRI.
In reference to the fix made for 13871, I was
merging the fix into 1.6.0 and realized I missed
the code in the h-exten block, and didn't catch it
because my test case had the h-exten commented out.
So, this corrects the code I missed, as a
preventative against another crash report.
Tested with the h-exten defined, all is well.
The passed extension may not be the same in the list as the current entry,
because we strip spaces when copying the extension into the structure.
Therefore, use the copied item to place the item into the list.
(found by lmadsen on -dev, fixed by me)
........
This one is totally my fault. The code doesn't even
create a bridge CDR if the channel CDR has POST_DISABLED.
I didn't check for that at the end of the bridge.
Fixed with a few small insertions. Tested. Looks
good. No cdr generated, no crash, no unnecc. data
objects created either.
Mark Michelson [Fri, 21 Nov 2008 00:59:23 +0000 (00:59 +0000)]
Fix the build for 32-bit systems. %lu is only 32-bits
on 32-bit systems, so we need to use %llu instead. Of course
%llu is 128-bits on 64-bit systems, so we have to cast to
unsigned long long. No harm, but it's sure annoying.
Mark Michelson [Thu, 20 Nov 2008 23:12:50 +0000 (23:12 +0000)]
Change the remote user agent session version variable
from an int to a uint64_t. This prevents potential comparison
problems from happening if the version string exceeds
INT_MAX. This was an apparent problem for one user who could
not properly place a call on hold since the version in the
SDP of the re-INVITE to place the call on hold greatly
exceeded INT_MAX.
This also aligns with RFC 2327 better since it recommends
using an NTP timestamp for the version (which is a
64-bit number).
Sean Bright [Thu, 20 Nov 2008 19:41:23 +0000 (19:41 +0000)]
Fix one case where the application argument was not converted from a pipe to
a comma. This was causing problems with switch statements with empty expressions.
We don't handle 4XX responses to BYE well. According to
section 15 of RFC 3261, we should terminate a dialog if we
receive a 481 or 408 in response to our BYE. Since I am aware
of at least one phone manufacturer who may sometimes send a
404 as well, I am being liberal and saying that any 4XX response
to a BYE should result in a terminated dialog.
Make sure to set the hangup cause on the calling channel in the case
that ast_call() fails. For incoming SIP channels, this was causing
us to send a 603 instead of a 486 when the call-limit was reached on
the destination channel.
Jeff Peeler [Thu, 20 Nov 2008 17:37:31 +0000 (17:37 +0000)]
(closes issue #12929)
Reported by: snyfer
This handles the case for a zero length file to attempt to be streamed. Instead of failing from not playing any data, go ahead and return success as ast_streamfile should consider playing nothing a success when there is nothing to play.
the gcc optimizer frequently finds broken code (use of uninitalized variables, unreachable code, etc.), which is good. however, developers usually compile with the optimizer turned off, because if they need to debug the resulting code, optimized code makes that process very difficult. this means that we get code changes committed that weren't adequately checked over for these sorts of problems.
with this build system change, if (and only if) --enable-dev-mode was used and DONT_OPTIMIZE is turned on, when a source file is compiled it will actually be preprocessed (into a .i or .ii file), then compiled once with optimization (with the result sent to /dev/null) and again without optimization (but only if the first compile succeeded, of course).
while making these changes, i did some cleanup work in Makefile.rules to move commonly-used combinations of flag variables into their own variables, to make the file easier to read and maintain
........
Tilghman Lesher [Wed, 19 Nov 2008 21:54:39 +0000 (21:54 +0000)]
Two new functions, REALTIME_FIELD, and REALTIME_HASH, which should make
querying realtime from the dialplan a little more consistent and easy to use.
The original REALTIME function is preserved, for those who are already
accustomed to that interface.
(closes issue #13651)
Reported by: Corydon76
Patches:
20081119__bug13651__2.diff.txt uploaded by Corydon76 (license 14)
Tested by: blitzrage, Corydon76
Mark Michelson [Wed, 19 Nov 2008 19:37:32 +0000 (19:37 +0000)]
Merge the changes from the res_timing_timerfd branch.
This provides a new timing interface. In order to use it,
you must be running a Linux with a kernel version of
2.6.25 or newer and glibc 2.8 or newer.
This timing interface is a good alternative if a timing
source is necessary (e.g. for IAX trunking) but DAHDI is
otherwise unnecessary for the system.
For now, this commit contains the actual work done in the
res_timing_timerfd branch. There are no notices in the README
or CHANGES files yet, but they will be added in my next commit.
The timing API of Asterisk also needs to have a bit of work done
with regards to choosing which timing interface to use. This commit
makes the choice a build-time decision, by only allowing one of
the timer interfaces to be chosen in menuselect. It would be preferable
if the choice could be made at run-time, however. The preferred timing
interface could be loaded and tested, and if it does not work, choice
number two may be used instead. That sort of thing. That is beyond
the scope of work in this branch though.
Tilghman Lesher [Wed, 19 Nov 2008 18:28:14 +0000 (18:28 +0000)]
Add check for t38_terminal_init in spandsp (not found in 0.0.6, so it should fail reasonably)
(closes issue #13473)
Reported by: genie
Patches:
20080916__bug13473.diff.txt uploaded by Corydon76 (license 14)
Kevin P. Fleming [Wed, 19 Nov 2008 12:42:19 +0000 (12:42 +0000)]
make some corrections to the ast_agi_register_multiple(), ast_agi_unregister_multiple() and ast_agi_fdprintf() API calls to be consistent with API guidelines
also, move UPGRADE.txt to UPGRADE-1.6.txt and make the new UPGRADE.txt contain information about upgrading between Asterisk 1.6 releases
Tilghman Lesher [Wed, 19 Nov 2008 01:02:45 +0000 (01:02 +0000)]
Starting with a change to ensure that ast_verbose() preserves ABI compatibility
in 1.6.1 (as compared to 1.6.0 and versions of 1.4), this change also
deprecates the use of Asterisk with FreeBSD 4, given the central use of va_copy
in core functions. va_copy() is C99, anyway, and we already require C99 for
other purposes, so this isn't really a big change anyway. This change also
simplifies some of the core ast_str_* functions.
Mark Michelson [Tue, 18 Nov 2008 23:59:02 +0000 (23:59 +0000)]
This change prevents a crash from occurring if res_musiconhold.so
is unloaded and then Asterisk is stopped. The problem was that
we are not unregistering the ast_moh_destroy function at exit.
Add some missing invite state changes necessary in the sip_write
function. Not setting the invite state correctly on the call was
resulting in the Record application leaving empty files. I also
have updated the doxygen comment next to the declaration of the
INV_EARLY_MEDIA constant to reflect that we also use this state
when we *send* a 18X response to an INVITE.
Mark Michelson [Tue, 18 Nov 2008 21:59:24 +0000 (21:59 +0000)]
Based on Russell's advice on the asterisk-dev list, I have
changed from using a global lock in update_call_counter to
using the locks within the sip_pvt and sip_peer structures
instead.
Mark Michelson [Tue, 18 Nov 2008 20:23:58 +0000 (20:23 +0000)]
* Add a lock to be used in the update_call_counter function.
* Revert logic to mirror 1.4's in the sense that it will not allow
the call counter to dip below 0.
These two measures prevent potential races that could cause a SIP peer
to appear to be busy forever.
This fix is the result of a bug fix in ast_app_separate_args r124395. If an argument does not exist it should always be set to a null string rather than a null pointer.
Fix a crash in the end_bridge_callback of app_dial and
app_followme which would occur at the end of an attended
transfer. The error occurred because we initially stored
a pointer to an ast_channel which then was hung up due
to a masquerade.
This commit adds a "fixup" callback to the bridge_config
structure to allow for end_bridge_callback_data to be
changed in the case that a new channel pointer is needed
for the end_bridge_callback.
This fixes two problems: a spurious linefeed insertion
probably left over from pre-precomment times. Only
generated when category had no previous comments.
The other problem: Insertions could get the line-numbering
out of whack and generate negative line numbers, causing
chunks of line numbers to be emitted, on the scale of the
number of lines up to that point in the file. In such cases,
abort the looping, and all is well.
Tilghman Lesher [Mon, 17 Nov 2008 22:25:06 +0000 (22:25 +0000)]
Can't use items duplicated off the stack frame in an element returned from
a function: in these cases, we have to use the heap, or garbage will result.
(closes issue #13898)
Reported by: alecdavis
Patches:
20081114__bug13898__2.diff.txt uploaded by Corydon76 (license 14)
Tested by: alecdavis
Kevin P. Fleming [Sat, 15 Nov 2008 19:51:29 +0000 (19:51 +0000)]
ensure that if a .i file (preprocessed source) is present, the .o file is made from it, not from the .c file (this only works because GNU makes respects the order the rules are defined)
Kevin P. Fleming [Sat, 15 Nov 2008 19:45:19 +0000 (19:45 +0000)]
Merged revisions 157162-157163 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r157162 | kpfleming | 2008-11-15 20:24:24 +0100 (Sat, 15 Nov 2008) | 1 line
dist-clean should remove dependency information files as well
........
r157163 | kpfleming | 2008-11-15 20:31:03 +0100 (Sat, 15 Nov 2008) | 1 line
when an individual directory dist-clean is run, run clean in that directory first, and when running top-level dist-clean, do not run subdirectory clean operations twice
........
1) update to doxygen 1.5.x style file, as used in trunk
2) tell doxygen where are header files are, so include-file processing can be done
3) make all macros that are used to define variables/functions be expanded, so that doxygen will properly document the resulting variable/function
4) make all macros that are used to provide the contents of a variable (structure) be expanded, so that doxygen will be able to document the resulting fields
5) suppress compiler attributes (__attribute__(xxx)) from being seen by doxygen, so it will properly match up function definition and usage (for an example of th effect of this, look at the doxygen docs for ast_log() from before and afte this commit)
........
Mark Michelson [Fri, 14 Nov 2008 21:19:58 +0000 (21:19 +0000)]
Revision 155513 of chan_sip.c in trunk inadvertently
removed a very important line to set the "len" field
for incoming SIP requests. The result was that all incoming
SIP messages appeared to be 0-length, meaning Asterisk
could do no meaningful processing of anything SIP-related
Mark Michelson [Fri, 14 Nov 2008 16:53:38 +0000 (16:53 +0000)]
Fix some refcounting in app_queue.c and change the
hashing used by app_queue.c to be case-insensitive.
This is accomplished by adding a new case-insensitive
hashing function.
This was necessary to prevent bad refcount errors
(and potential crashes) which would occur due to the
fact that queues were initially read from the config
file in a case-sensitive manner. Then, when a user
issued a CLI command or manager action, we allowed
for case-insensitive input and used that input to
directly try to find the queue in the hash table. The result
was either that we could not find a queue that was input or
worse, we would end up hashing to a completely bogus value
based on the input.
This commit resolves the problem presented in
issue #13703. However, that issue was reported against
1.6.0. Since this fix introduces a behavior change, I am
electing to not place this same fix in to the 1.6.0 or 1.6.1
branches, and instead will opt for a change which does not
change behavior.
If the prompt to reenter a voicemail password timed out, it
resulted in the password not being saved, even if the input matched
what you gave when first prompted to enter a new password. This is
because the return value of ast_readstring was checked, but not checked
properly.
This bug was discovered by Jared Smith during an Asterisk training course.
Thanks for reporting it!
ast_waitfordigit() requires that the channel be up, for no good logical
reason. This prevents While/EndWhile from working within the "h"
extension.
Reported by: jgalarneau (for ABE C.2)
Fixed by: me
........
Provide more space for all the data which can appear in an originating
channel name.
(closes issue #13398)
Reported by: bamby
Patches:
manager.c.diff uploaded by bamby (license 430)
........
Jeff Peeler [Thu, 13 Nov 2008 19:17:50 +0000 (19:17 +0000)]
(closes issue #13891)
Reported by: smurfix
This reverts a change I made in 116297. At the time it seemed the change was required to solve an issue with attempting a transfer but then letting it timeout without dialing any digits. However, I didn't realize that having an empty extension was possible. I'm removing the immediate return that was added in pbx_find_extension if the extension is null.
- Add an attribute to optionlist 'hasparams' with the same functionality as the one
we have in <parameter> and <argument> (the DTD was updated)
- Fix a leak when getting an attribute while parsing an <optionlist>.
- Make alias->real_cmd point to the allocated space outside alias->alias.
- Register the aliased cli command (or we will not alias anything).
- Use ARRAY_LEN() when possible.
It turns out that the 0x0XX00 codes being returned for
N, X, and Z are off by one, as per conversation with
jsmith on #asterisk-dev; he was teaching a class
and disconcerted that this published rule was not
being followed, with patterns _NXX, _[1-8]22 and
_[2-9]22... and NXX was winning, but [1-8] should
have been.
This change, tested on these 3 patterns now
picks the proper one.
However, this change may surprise users who
set up dialplans based on previous behavior,
which has been there for what, 2 and half
years or so now.