Mark Michelson [Tue, 29 Jul 2008 15:54:48 +0000 (15:54 +0000)]
Merging the imap_consistency branch.
The main aim of this branch was to make the IMAP
code function in the same manner as the ODBC code
does, eliminating the need for so many IMAP-specific
code chunks. The focal point of all of this work was
to make the various macros (e.g. RETRIEVE, DISPOSE)
functionally equivalent.
While doing the above work, I also fixed a few bugs
that I came across in my testing. Among these were
1. Fixed message forwarding. This was completely
broken when using IMAP.
2. Fixed the inability to save new messages as old
and vice versa.
3. Fixed the "delete" options in voicemail.conf when
using IMAP storage.
Even though a few bugs were fixed and the code is
a lot more consistent, the one thing that was *not*
improved in this branch was performance.
The merge of this to trunk may not come immediately
due to the amount of work it will probably involve.
Detect when sox fails to raise the volume, because sox can't read the file.
(closes issue #12939)
Reported by: rickbradley
Patches:
20080728__bug12939.diff.txt uploaded by Corydon76 (license 14)
Tested by: rickbradley
Fix some errant device states by making the devicestate API more strict in
terms of the device argument (only without the unique identifier appended).
(closes issue #12771)
Reported by: davidw
Patches:
20080717__bug12771.diff.txt uploaded by Corydon76 (license 14)
Tested by: davidw, jvandal, murf
Kevin P. Fleming [Wed, 23 Jul 2008 20:42:30 +0000 (20:42 +0000)]
make some more changes to the dahdi/zap channel name support stuff to ensure allthe globals are 'const', and clean up mmichelson's changes to app_chanspy to simplify the code
Mark Michelson [Wed, 23 Jul 2008 19:39:47 +0000 (19:39 +0000)]
As suggested by seanbright, the PSEUDO_CHAN_LEN in
app_chanspy should be set at load time, not at compile
time, since dahdi_chan_name is determined at load time.
Also changed the next_unique_id_to_use to have the
static qualifier.
Also added the dahdi_chan_name_len variable so that
strlen(dahdi_chan_name) isn't necessary. Thanks to
seanbright for the suggestion.
Mark Michelson [Wed, 23 Jul 2008 17:50:01 +0000 (17:50 +0000)]
Small cleanup. Move the declaration of the DAHDI_SPANINFO
variable to the block where it is used. This allows one
less #ifdef HAVE_PRI to clutter things up.
Thanks to Tzafrir for pointing this out on #asterisk-dev
Kevin P. Fleming [Wed, 23 Jul 2008 15:52:29 +0000 (15:52 +0000)]
ensure that after a channel is created, if it happened to be in 'channel alarm' state, when that alarm clears we won't generate a spurious 'alarm cleared' message
Kevin P. Fleming [Wed, 23 Jul 2008 11:52:18 +0000 (11:52 +0000)]
minor optimization for stringfields: when a field is being set to a larger value than it currently contains and it happens to be the most recent field allocated from the currentl pool, it is possible to 'grow' it without having to waste the space it is currently using (or potentially even allocate a new pool)
another Fix because of r119585, this commit has broken high frequented BRI Ports, there was a possibility that a channel, that was marked as in_use would be reused later, the corresponding port could got stuck then. So it is recommended to upgrade for chan_misdn users.
Mark Michelson [Tue, 22 Jul 2008 22:14:24 +0000 (22:14 +0000)]
Allow Spiraled INVITEs to work correctly within Asterisk.
Prior to this change, a spiraled INVITE would cause a 482
Loop Detected to be sent to the caller. With this change,
if a potential loop is detected, the Request-URI is inspected
to see if it has changed from what was originally received. If
pedantic mode is on, then this inspection is fully RFC 3261
compliant. If pedantic mode is not on, then a string comparison
is used to test the equality of the two R-URIs.
This has been tested by using OpenSER to rewrite the R-URI
and send the INVITE back to Asterisk.
Kevin P. Fleming [Tue, 22 Jul 2008 22:11:01 +0000 (22:11 +0000)]
fix up namespace pollution for dahdi_chan_mode enum
correct registration of AMI actions in chan_dahdi; in zap-only mode, only register the Zap flavors of the actions (and use Zap prefixes for headers and acks), but in dahdi+zap mode, register both Zap and DAHDI flavors of actions
Kevin P. Fleming [Tue, 22 Jul 2008 21:17:23 +0000 (21:17 +0000)]
ensure that if any alarms exist at channel creation time, they are handled identically to if they occurred later, so that later alarm clearing will work properly and 'make sense'
Olle Johansson [Tue, 22 Jul 2008 20:10:26 +0000 (20:10 +0000)]
The most common question on the #asterisk iRC channel and on mailing lists
seems to be in regards to an error message when retransmit fails. This
is frequently misunderstood as a failure of Asterisk, not a failure of
the network to reach the other party.
This document tries to assist the Asterisk user in sorting out these
issues by explaining the logic and pointing at some possible
causes. Hopefully, we will get other questions now :-)
Fix a bug in 1.4 branch with iax2 channels not being removed when a call was rejected (from the calling box, not the box that denied the
registration). Related to revisions 132466 in trunk, and 132467 in 1.6.0. Earlier I had accidently tested 1.4 with a backport from those revisions,
so I didn't see this problem (oops).
Kevin P. Fleming [Sat, 19 Jul 2008 16:45:52 +0000 (16:45 +0000)]
grant a license exception to allow distribution of Asterisk binaries that use the UW IMAP Toolkit (which is licensed under a non-GPL-compatible license)
Revert part of issue #5620 (revision 6965) as it appears that it was in error.
This should fix talk call progress on analog lines.
(closes issue #12178)
Reported by: michael-fig
Patches:
20080717__bug12178.diff.txt uploaded by Corydon76 (license 14)
Russell Bryant [Wed, 16 Jul 2008 20:47:53 +0000 (20:47 +0000)]
Always ensure that the channel's tech_pvt reference is NULL after calling the
destroy callback.
(closes issue #13060)
Reported by: jpgrayson
Patches:
chan_iax2_tech_pvt_crash.patch uploaded by jpgrayson (license 492)
Mark Michelson [Wed, 16 Jul 2008 20:23:02 +0000 (20:23 +0000)]
Move the init_queue call back to where it used to be (changed
Sept 12 last year). It was moved then to prevent a memory leak.
Since then, the same memory leak recurred and was fixed in a
better way.
Now it has been found that the placement of this init_queue
call can cause problems if a realtime queue has values changed
to an empty string. The problem is that the default value
for that queue parameter would not be set.
Mark Michelson [Wed, 16 Jul 2008 18:57:34 +0000 (18:57 +0000)]
Make absolutely certain that the transfer datastore
is removed from the calling channel once the caller
is finished in the queue. This could have weird con-
sequences when dialing local queue members when multiple
transfers occur on a single call.
Also fixed a memory leak that would occur when an
attended transfer occurred from a queue member.
Steve Murphy [Wed, 16 Jul 2008 17:53:43 +0000 (17:53 +0000)]
(closes issue #13090)
Reported by: murf
The problem was that, esoteric as it is, because the hangerupper
context immediately preceded the std-priv-extent macro, that
the checking code accidentally would fall from traversing hangerupper
into the std-priv-exten macro, where it would hit the hangerupper
in the 'includes', and proceed into an infinite recursion.
A small fix to traverse into the statements of the context instead
of the context solves this issue.
I also added some commented out printfs for debug, which were pretty
handy in the face of a dorky gdb.
This was a problem around since the package was first written;
but evidently pretty rare in turning up in the field.
astman_send_error does not need a newline appended -- the API takes care of
that for us.
(closes issue #13068)
Reported by: gknispel_proformatique
Patches:
asterisk_1_4_astman_send.patch uploaded by gknispel (license 261)
asterisk_trunk_astman_send.patch uploaded by gknispel (license 261)
Override the callerid in all cases when the callerid is set in the user, not
just when a remote callerid is set. Also, if not set in the user, allow the
remote CallerID to pass through.
(closes issue #12875)
Reported by: dimas
Patches:
20080714__bug12875.diff.txt uploaded by Corydon76 (license 14)
Mark Michelson [Mon, 14 Jul 2008 17:50:21 +0000 (17:50 +0000)]
Add a check to the CAN_EARLY_BRIDGE macro in app_dial to
be sure there are no audiohooks present on the channels
involved. This fixed a one-way audio situation I had in
my test setup. I couldn't find any open issues that suggested
one-way audio with regards to mixmonitor (or other audiohook)
usage, though.
notify the user that dnsmgr refresh wont work when dnsmgr is not enabled.
Previously this command would automagically appear and disappear.
This was confusing.
Kevin P. Fleming [Fri, 11 Jul 2008 22:12:26 +0000 (22:12 +0000)]
a whole pile of Zaptel/DAHDI compatibility work, with lots more to come... this tree is not yet ready for users to be easily upgrading or switching, but it needs to be :-)
Ensure that a destination callno of 0 will not match for frames that do not
start a dialog (new, lagrq, and ping).
(closes issue #12963)
Reported by: russellb
Patches:
chan_iax2_dup_new_fix4.patch uploaded by jpgrayson (license 492)
Pass the devicestate from an underlying channel up through the Agent channel.
This should make the Agent always report the correct device state, even when
the underlying channel is used for other purposes.
(closes issue #12773)
Reported by: davidw
Patches:
20080710__bug12773.diff.txt uploaded by Corydon76 (license 14)
Tested by: davidw
Kevin P. Fleming [Fri, 11 Jul 2008 15:41:56 +0000 (15:41 +0000)]
add support for a configuration parameter for 'inband audio during RELEASE', which is currently mandatory in libpri-1.4.4 but will become configurable in libpri-1.4.5 later today
Kevin P. Fleming [Fri, 11 Jul 2008 14:03:52 +0000 (14:03 +0000)]
fix a flaw found while experimenting with structure alignment and padding; low-fence checking would not work properly on 64-bit platforms, because the compiler was putting 4 bytes of padding between the fence field and the allocation memory block
added a very obvious runtime warning if this condition reoccurs, so the developer who broke it can be chastised into fixing it :-)
Correctly deal with duplicate NEW frames (due to retransmission). Also, fixup
the destination call number matching to be more strict and reliable.
(closes issue #12963)
Reported by: jpgrayson
Patches:
chan_iax2_dup_new_fix3.patch uploaded by jpgrayson (license 492)
Tested by: jpgrayson, Corydon76
Mark Michelson [Wed, 9 Jul 2008 19:32:20 +0000 (19:32 +0000)]
Fix a problem where inbound rfc2833 audio would be sent to the
core instead of being P2P bridged. When the core regenerated
the rfc2833 packet for the outbound leg, the SSRC would be different
than the RTP audio on the call leg causing DTMF detection issues on
the far end.
Mark Michelson [Tue, 8 Jul 2008 21:09:10 +0000 (21:09 +0000)]
Backport TCP-related timeouts to IMAP voicemail in 1.4
since it should solve bugs people are experiencing. Specifically,
there are times where communication with the IMAP server causes
system calls to block forever. If this should happen when querying
the mailbox so that chan_sip's do_monitor thread can send MWI to
a phone, it means that SIP calls cannot be processed any more.
The timeout options are outlined in doc/imapstorage.txt. Defaults
for the timeouts are sixty seconds.
Cause SIP to return a 480 instead of a 404 when a sip peer exists, but is not
registered.
(closes issue #12885)
Reported by: ibc
Patches:
20080701__bug12885__2.diff.txt uploaded by Corydon76 (license 14)
Tested by: ibc
Timestamp decoding for video mini-frames is bogus, because the timestamp only
includes 15 bits, unlike voice frames, which contain a 16-bit timestamp.
(closes issue #13013)
Reported by: jpgrayson
Patches:
chan_iax2_unwrap_ts.patch uploaded by jpgrayson (license 492)
Olle Johansson [Tue, 8 Jul 2008 09:52:21 +0000 (09:52 +0000)]
Don't hangup the call if we can't resolve the Contact if there's a proxy
route set for the call.
----
This comment was added a while ago and today it hit me badly.
/* OEJ: Possible issue that may need a check:
If we have a proxy route between us and the device,
should we care about resolving the contact
or should we just send it?
*/
Olle Johansson [Tue, 8 Jul 2008 09:06:08 +0000 (09:06 +0000)]
Fix issues where repeated messages where ignored, but retransmitted reliably instead of unreliably.
Reported by: johan
Patches:
12746.txt uploaded by oej (license 306)
Tested by: johan
(issue #12746)
Mark Michelson [Mon, 7 Jul 2008 17:02:28 +0000 (17:02 +0000)]
By using the iaxdynamicthreadcount to identify a thread, it was possible
for thread identifiers to be duplicated. By using a globally-unique monotonically-
increasing integer, this is now avoided.
Fix the 'dialplan remove extension' logic, so that it a) works with cidmatch,
and b) completes contexts correctly when the extension is ambiguous.
(closes issue #12980)
Reported by: licedey
Patches:
20080703__bug12980.diff.txt uploaded by Corydon76 (license 14)
Tested by: Corydon76
As to 11849, I think these changes fix the core problems
brought up in that bug, but perhaps not the more global
problems created by the limitations of CDR's themselves
not being oriented around transfers.
Reopen if necc, but bug reports are not the best
medium for enhancement discussions. We need to start
a second-generation CDR standardization effort to cover
transfers.
Mark Michelson [Tue, 1 Jul 2008 23:36:40 +0000 (23:36 +0000)]
Add error message to failed open(2) calls inside the copy() function of
app_voicemail. This idea came as part of my work in helping to resolve
issue #12764.