Added a null check in netsock2 ast_sockaddr_resolve() as well as added default initalizers in chan_sip parse_uri_legacy_check() to make sure that invalid uris will make null (and not undefined) user,pass,domain,transport variables
(closes issue #19346)
Reported by: kobaz
Patches:
netsock2.patch uploaded by kobaz (license 834)
Tested by: kobaz, Marquis
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@321100 65c4cc65-6c06-0410-ace0-fbb531ad65f3
It is important to always initialize ast_sockaddrs before use--even if they
are passed to ast_sockaddr_copy as the underlying storage could be bigger
than what ends up being copied--leaving part of the data unitialized.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@321042 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The addition of connected line support in v1.8 changes the behavior of the
channel caller ID somewhat. The channel caller ID value no longer time
shares with the connected line ID on outgoing call legs. The timing of
some AMI events/responses output the connected line ID as caller ID.
These party ID's are now separate.
* The ConnectedLineNum and ConnectedLineName headers were added to many
AMI events/responses if the CallerIDNum/CallerIDName headers were also
present.
(closes issue #18252)
Reported by: gje
Tested by: rmudgett
Review: https://reviewboard.asterisk.org/r/1227/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@320823 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Recent crashes from zombie channels suggests that they need a safe home to
goto. When a masquerade happens, the physical part of the zombie channel
is hungup. The hangup normally sets the channel private pointer to NULL.
If someone then blindly does a callback to the channel driver, a crash is
likely because the private pointer is NULL.
The masquerade now sets the channel technology of zombie channels to the
kill channel driver.
Related to the following issues:
(issue #19116)
(issue #19310)
Review: https://reviewboard.asterisk.org/r/1224/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@320796 65c4cc65-6c06-0410-ace0-fbb531ad65f3
* Add ConnectedLineNum and ConnectedLineName headers to the output of the
AMI action Status. This makes it easier to find out who the channel is
connected to without having to lookup BridgedChannel or when they are
connected to an application (e.g.: VoiceMail) which has no bridged
channel.
* Bridged channels with no CallerID had "" instead of "<unknown>" output,
that might be a bug as "<unknown>" was what older versions used.
(closes issue #18158)
Reported by: gareth
Patches:
svn-292308.diff uploaded by gareth (license 208)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@320650 65c4cc65-6c06-0410-ace0-fbb531ad65f3
When a call is being attended transferred during the time between
AST_FRAME_DTMF_BEGIN and AST_FRAME_DTMF_END, the transferred channel
becomes a zombie (so tech data is not available), making ast_dtmf_stream()
segfault when it tries to send the DTMF digit (at least with SIP
channels).
Patch based on feature-end-zombie.patch uploaded by Irontec (license 1256)
* Check for zombies when ast_channel_bridge() returns.
* Guarantee that the fo parameter value is initialized in
ast_channel_bridge() before any returns.
(closes issue #19116)
Reported by: Irontec
Tested by: rmudgett
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@320057 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The directed pickup applications can cause a crash if the pickup was
successful because the dialplan keeps executing.
This patch does the following:
* Completes the channel masquerade on a successful pickup before the
application returns. The channel is now guaranteed a zombie and must not
continue executing the dialplan.
* Changes the return value of the directed pickup applications to return
zero if the pickup failed and nonzero(-1) if the pickup succeeded.
* Made some code optimizations that no longer require re-checking the
pickup channel to see if it is still available to pickup.
(closes issue #19310)
Reported by: remiq
Patches:
issue19310_v1.8_v2.patch uploaded by rmudgett (license 664)
Tested by: alecdavis, remiq, rmudgett
Review: https://reviewboard.asterisk.org/r/1221/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@319997 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The capabilities used in the bridging API are very different than the
ones used for formats. When the conversion was made expanding the bit
width of codecs, the bridging code was accidentally accosted in ways
that it didn't deserve.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@319920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
If the following is true after a CCSS activation:
* The generic agent is for an analog phone or ISDN phone. (Caller party)
* The called party becomes available.
* The caller party is not available.
When the caller party becomes available, the caller is not alerted to the
called party being available. The generic agent still thinks the caller
is busy.
* Fixed the generic agent device state event subscription to look for all
device states that are considered available.
* Encapsulated the device state test for CCSS generic device available in
cc_generic_is_device_available(). Made the generic agent and monitor use
the new function instead of the manually coded inline equivalent.
JIRA AST-559
JIRA SWP-3462
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@319758 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Deadlock can occur when the generic CCSS agent is deleting duplicate CC
offers and the native ISDN CC driver is processing an incoming CC message.
The cc_core_instances container lock cannot be held when an agent or
monitor callback is invoked without the possibility of a deadlock.
* Make kill_duplicate_offers() remove the reference in cc_core_instances
outside of the container lock.
JIRA AST-566
JIRA SWP-3469
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@319259 65c4cc65-6c06-0410-ace0-fbb531ad65f3
CDR's are being written immediately on caller hangup. The dialplan is not
able to modify it in the h exten. The h exten in the initial context is
not run before closing CDR's when the bridge is unlinked if a macro is
active and does not have an h exten.
* Make ast_bridge_call() check for an h exten in the current context and
if a macro is active then the initial context. The first h exten found is
then run before closing the CDR.
(closes issue #18212)
Reported by: leearcher
Patches:
issue18212_v1.8.patch uploaded by rmudgett (license 664)
Tested by: rmudgett
Review: https://reviewboard.asterisk.org/r/1206/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Since 1.6.2, the new pickupsound and pickupfailsound in features.conf cause many issues.
1). chan_sip:handle_request_invite() shouldn't be playing out the fail/success audio, as it has 'netlock' locked.
2). dialplan applications for directed_pickups shouldn't beep.
3). feature code for directed pickup should beep on success/failure if configured.
Created a sip_pickup() thread to handle the pickup and playout the audio, spawned from handle_request_invite.
Moved app_directed:pickup_do() to features:ast_do_pickup().
Functions below, all now use the new ast_do_pickup()
app_directed_pickup.c:
pickup_by_channel()
pickup_by_exten()
pickup_by_mark()
pickup_by_part()
features.c:
ast_pickup_call()
(closes issue #18654)
Reported by: Docent
Patches:
ast_do_pickup_1.8_trunk.diff.txt uploaded by alecdavis (license 585)
Tested by: lmadsen, francesco_r, amilcar, isis242, alecdavis, irroot, rymkus, loloski, rmudgett
Review: https://reviewboard.asterisk.org/r/1185/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318671 65c4cc65-6c06-0410-ace0-fbb531ad65f3
When a user hangs up a call, in certain circumstances, the hangup
extension can end up being executed twice:
1) If a call is bridged and the 'h' extension executes the Hangup
application, then the 'h' extension will be executed twice.
2) If a call is bridged within a macro (Dial or Queue), it has its own 'h'
extension, the main context also has an 'h' extension, and the macro 'h'
extension executes the Hangup application, then both 'h' extensions will
be executed.
* Revert originally commited fix for #16106 and just set
AST_FLAG_BRIDGE_HANGUP_RUN unconditionally in ast_bridge_call(). The
bridge code just executed an 'h' extension so the main PBX loop does not
need to execute one as well.
(issue #16106)
Reported by: ajohnson
(issue #16548)
Reported by: hajekd
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318282 65c4cc65-6c06-0410-ace0-fbb531ad65f3
When calculating the 'A2' portion of our digest for verification, we need the
HTTP method that is currently in use. Unfortunately our mapping function was
incorrect, resulting in invalid hashes being generated and, in turn, failures
in authentication.
(closes issue #18598)
Reported by: ksn
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@316919 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The 'e' extension is a fall back for the 'i', 't', or 'T' extensions if
any of them do not exist. Many of the places the 'e' extension was
supposed to be invoked fail because the priority was set wrong. There
were two places where the 'e' extension was not even checked for fall
back.
* Made invoke the 'e' extension similarly to the previous 'i', 't', or 'T'
extension check and added the 'e' extension as a fall back to the two
missing locations.
* Prioritized and optimized some hangup tests associated with the 'e'
extension.
(closes issue #19136)
Reported by: kshumard
Tested by: rmudgett
Review: https://reviewboard.asterisk.org/r/1196/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@315645 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r315643 | twilson | 2011-04-26 14:27:44 -0700 (Tue, 26 Apr 2011) | 25 lines
Merged revisions 315596 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r315596 | twilson | 2011-04-26 14:16:10 -0700 (Tue, 26 Apr 2011) | 18 lines
Allow transfer loops without allowing forwarding loops
We try to avoid the situation where two phones may be forwarded to each other
causing an infinite loop by storing each dialed interface in a channel
datastore and checking the list before dialing out. This works, but currently
breaks situations like A calls B, A transfers B to C, B transfers C to A, and A
transfers C to B. Since human interaction is happening here and not an
automated forwarding loop, it should be allowed.
This patch removes the dialed_interfaces datastore when a call is bridged (a
suggestion from the brilliant mmichelson). If a call is being bridged, it
should be safe to assume that we aren't stuck in a loop.
Since we are now handling this is the bridge code, the previous attempts at
handling it in app_dial and app_queue are removed.
Review: https://reviewboard.asterisk.org/r/1195/
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@315644 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r314620 | mnicholson | 2011-04-21 13:22:19 -0500 (Thu, 21 Apr 2011) | 20 lines
Merged revisions 314607 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r314607 | mnicholson | 2011-04-21 13:19:21 -0500 (Thu, 21 Apr 2011) | 14 lines
Added limits to the number of unauthenticated sessions TCP based protocols are allowed to have open simultaneously. Also added timeouts for unauthenticated sessions where it made sense to do so.
Unrelated, the manager interface now properly checks if the user has the "system" privilege before executing shell commands via the Originate action.
AST-2011-005
AST-2011-006
(closes issue #18787)
Reported by: kobaz
(related to issue #18996)
Reported by: tzafrir
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@314628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This patch fixes how chan_sip handles dynamic rtp payload types
it does not understand. At the moment if a dynamic payload's mime
type does not match one we understand, the payload does not get
removed from our payload table. As a result of this, the payload
is set to whatever dynamic codec we use internally for that payload
number on outgoing INVITES. This is incorrect.
This patch fixes this by properly checking the rtpmap set function's
return code to make sure it was found. The function can return both
-1 and -2 depending on the source of the mismatch. We were just
checking -1 explicitly.
Review: https://reviewboard.asterisk.org/r/1169/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@314017 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r313579 | rmudgett | 2011-04-13 11:29:49 -0500 (Wed, 13 Apr 2011) | 48 lines
Merged revisions 313545 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r313545 | rmudgett | 2011-04-13 11:21:24 -0500 (Wed, 13 Apr 2011) | 41 lines
Asterisk does not hangup a channel after endpoint hangs up.
If the call that the dialplan started an AGI script for is hungup while
the AGI script is in the middle of a command then the AGI script is not
notified of the hangup. There are many AGI Exec commands that this can
happen with. The reported applications have been: Background, Wait, Read,
and Dial. Also the AGI Get Data command.
* Don't wait on the Asterisk channel after it has hung up. The channel is
likely to never need servicing again.
* Restored the AGI script's ability to return the AGI_RESULT_HANGUP value
in run_agi(). It previously only could return AGI_RESULT_SUCCESS or
AGI_RESULT_FAILURE after the DeadAGI and AGI applications were merged.
(closes issue #17954)
Reported by: mn3250
Patches:
issue17954_v1.8.patch uploaded by rmudgett (license 664)
issue17954_v1.6.2.patch uploaded by rmudgett (license 664)
issue17954_v1.4.patch uploaded by rmudgett (license 664)
Tested by: rmudgett
JIRA SWP-2171
(closes issue #18492)
Reported by: devmod
Tested by: rmudgett
JIRA SWP-2761
(closes issue #18935)
Reported by: nvitaly
Tested by: astmiv, rmudgett
JIRA SWP-3216
(closes issue #17393)
Reported by: siby
Tested by: rmudgett
JIRA SWP-2727
Review: https://reviewboard.asterisk.org/r/1165/
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@313588 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The CallCompletionRequest()/CallCompletionCancel() dialplan applications
exit nonzero on normal failure conditions. The nonzero exit causes the
dialplan to hangup immediately. The dialplan author has no opportunity to
report success/failure to the user.
* Made always return zero so the dialplan can continue.
* Made set CC_REQUEST_RESULT/CC_REQUEST_REASON and
CC_CANCEL_RESULT/CC_CANCEL_REASON channel variables respectively. Also
documented the values set.
* Reduced the warning about no core instance in CallCompletionCancel() to
a debug message. It is a normal event and should not be output at the
WARNING level.
(closes issue #18763)
Reported by: p_lindheimer
Patches:
ccss.patch uploaded by p lindheimer (license 558) Modified
Tested by: p_lindheimer, rmudgett
JIRA SWP-3042
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@312461 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r310889 | twilson | 2011-03-16 12:03:27 -0500 (Wed, 16 Mar 2011) | 36 lines
Merged revisions 310888 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r310888 | twilson | 2011-03-16 11:58:42 -0500 (Wed, 16 Mar 2011) | 29 lines
Don't delay DTMF in core bridge while listening for DTMF features
This patch is mostly the work of Olle Johansson. I did some cleanup and
added the silence generating code if transmit_silence is set.
When a channel listens for DTMF in the core bridge, the outbound DTMF is not
sent until we have received DTMF_END. For a long DTMF, this is a disaster. We
send 4 seconds of DTMF to Asterisk, which sends no audio for those 4 seconds.
Some products see this delay and the time skew on RTP packets that results and
start ignoring the audio that is sent afterward.
With this change, the DTMF_BEGIN frame is inspected and checked. If it matches
a feature code, we wait for DTMF_END and activate the feature as before. If
transmit_silence=yes in asterisk.conf, silence is sent if we paritally match a
multi-digit feature. If it doesn't match a feature, the frame is forwarded
along with the DTMF_END without delay. By doing it this way, DTMF is not delayed.
(closes issue #15642)
Reported by: jasonshugart
Patches:
issue_15652_dtmf_ast-1.4.patch.txt uploaded by twilson (license 396)
Tested by: globalnetinc, jde
(closes issue #16625)
Reported by: sharvanek
Review: https://reviewboard.asterisk.org/r/1092/
Review: https://reviewboard.asterisk.org/r/1125/
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@310902 65c4cc65-6c06-0410-ace0-fbb531ad65f3