You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asterisk/ChangeLog

44131 lines
2.0 MiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

2016-05-03 12:55 +0000 Asterisk Development Team <asteriskteam@digium.com>
* asterisk certified/13.8-cert1-rc2 Released.
2016-05-03 07:54 +0000 [cadb5c4e64] Joshua Colp <jcolp@digium.com>
* Release summaries: Remove previous versions
2016-05-03 07:54 +0000 [d4d5548ef8] Joshua Colp <jcolp@digium.com>
* .version: Update for certified/13.8-cert1-rc2
2016-05-03 07:54 +0000 [a5bc40ae51] Joshua Colp <jcolp@digium.com>
* .lastclean: Update for certified/13.8-cert1-rc2
2016-05-03 07:54 +0000 [2b6df52c66] Joshua Colp <jcolp@digium.com>
* realtime: Add database scripts for certified/13.8-cert1-rc2
2016-04-15 11:59 +0000 [c4426f1035] Alexei Gradinari <alex2grad@gmail.com>
* res_pjsip: disable multi domain to improve realtime performace
This patch added new global pjsip option 'disable_multi_domain'.
Disabling Multi Domain can improve Realtime performance by reducing
number of database requests.
ASTERISK-25930 #close
Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7
2016-04-26 05:48 +0000 [c69e0f1813] Joshua Colp <jcolp@digium.com>
* app_queue: Fix crash when unloading module.
When unloading the app_queue module the members in each queue are
destroyed and as part of this they are removed from the pending
members container. Unfortunately a crash would occur as the container
was destroyed before the members were removed.
This change tweaks ordering so the container destruction occurs
after the members are destroyed.
ASTERISK-16115
Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b
2016-04-21 14:23 +0000 [eebe8b3dd3] Kevin Harwell <kharwell@digium.com>
* app_queue: queue members can receive multiple calls
It was possible for a queue member that is a member of at least 2 or more
queues to receive mulitiple calls at the same time. This happened because
of a race between when a member was being rung and when the device state
notified the other queue(s) member object of the state change.
This patch makes it so when a queue member is being rung it gets added to
a global pool of queue members. If that same member is tried again, e.g.
from another queue, and it is found to already exist in the pending member
container then it will not ring that member.
ASTERISK-16115 #close
Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48
2016-04-22 17:53 +0000 [5cbd4b9799] gtjoseph <gjoseph@digium.com>
* res_agi: Prevent run_agi from eating frames it shouldn't
The run_agi function is eating control frames when it shouldn't be. This is
causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond
transfer.
Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie
answers.
Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE
and is left thinking he's connected to Bob.
In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls
an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on
Charlie's channel.
The fix was to accumulate deferrable frames in the "forever" loop instead of
dropping them, and re-queue them just before running the actual agi command
or exiting.
ASTERISK-25951 #close
Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645
2016-04-15 14:36 +0000 [bc51227ef8] Richard Mudgett <rmudgett@digium.com>
* res_stasis: Handle re-enter stasis bridge with swap channel.
We lose the fact that there is a swap channel if there is one. We
currently wind up rejoining the stasis bridge as a normal join after the
swap channel has already been kicked from the bridge.
This patch preserves the swap channel so the AMI/ARI events can note that
the channel joining the bridge is swapping with another channel. Another
benefit to swaqpping in one operation is if there are any channels that
get lonely (MOH, bridge playback, and bridge record channels). The lonely
channels won't leave before the joining channel has a chance to come back
in under stasis if the swap channel is the only reason the lonely channels
are staying in the bridge.
ASTERISK-25947 #close
Reported by: Richard Mudgett
ASTERISK-24649
Reported by: John Bigelow
ASTERISK-24782
Reported by: John Bigelow
Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee
2016-04-19 16:58 +0000 [8dd79720e6] Richard Mudgett <rmudgett@digium.com>
* bridge: Hold off more than one imparting channel at a time.
An earlier patch blocked the ast_bridge_impart() call until the channel
either entered the target bridge or it failed. Unfortuantely, if the
target bridge is stasis and the imprted channel is not a stasis channel,
stasis bounces the channel out of the bridge to come back into the bridge
as a proper stasis channel. When the channel is bounced out, that
released the block on ast_bridge_impart() to continue. If the impart was
a result of a transfer, then it became a race to see if the swap channel
would get hung up before the imparted channel could come back into the
stasis bridge. If the imparted channel won then everything is fine. If
the swap channel gets hung up first then the transfer will fail because
the swap channel is leaving the bridge.
* Allow a chain of ast_bridge_impart()'s to happen before any are
unblocked to prevent the race condition described above. When the channel
finally joins the bridge or completely fails to join the bridge then the
ast_bridge_impart() instances are unblocked.
ASTERISK-25947
Reported by: Richard Mudgett
ASTERISK-24649
Reported by: John Bigelow
ASTERISK-24782
Reported by: John Bigelow
Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1
2016-04-19 17:52 +0000 [2a2e754d15] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_callerid: Clear out display name if id->name is not valid
When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning
the From header, then it overwrites the display name and uri from the channel's
connected.id. If the connected.id.name wasn't valid, create_new_id_hdr was
leaving the display name from the From header in the new RPID or PAI header.
On an attended transfer where the originator had a caller id number set but not
a display name, the re-INVITE to the final transferee had the number of the
originator but the display name of the transferer.
Added a check to clear out the display name in the new header if
connected.id.name was invalid.
ASTERISK-25942 #close
Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b
2016-04-19 13:02 +0000 [188ce34aff] Joshua Colp <jcolp@digium.com>
* app_talkdetect: Make the module core supported.
This module is used as part of testsuite tests to confirm
stuff works. I'm accordingly marking it as core as it is
required by those tests.
Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88
2016-04-19 13:00 +0000 [da80f40014] Joshua Colp <jcolp@digium.com>
* app_talkdetect: Enable for testsuite tests.
Change-Id: I9acf2e2210f7a15cdd2c63c4c8dcb92de6b47d43
2016-04-18 12:12 +0000 [9f3ecf0a8d] Mark Michelson <mmichelson@digium.com>
* PJSIP: Remove PJSIP parsing functions from uri length validation.
The PJSIP parsing functions provide a nice concise way to check the
length of a hostname in a SIP URI. The problem is that in order to use
those parsing functions, it's required to use them from a thread that
has registered with PJLib.
On startup, when parsing AOR configuration, the permanent URI handler
may not be run from a PJLib-registered thread. Specifically, this could
happen when Asterisk was started in daemon mode rather than
console-mode. If PJProject were compiled with assertions enabled, then
this would cause Asterisk to crash on startup.
The solution presented here is to do our own parsing of the contact URI
in order to ensure that the hostname in the URI is not too long. The
parsing does not attempt to perform a full SIP URI parse/validation,
since the hostname in the URI is what is important.
ASTERISK-25928 #close
Reported by Joshua Colp
Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60
2016-04-18 17:00 +0000 [39b4742db1] Mark Michelson <mmichelson@digium.com>
* res_pjsip_registrar: Fix bad memory-ness with user_agent.
Recent changes to the PJSIP registrar resulted in tests failing due to
missing AOR_CONTACT_ADDED test events. The reason for this was that the
user_agent string had junk values in it, resulting in being unable to
generate the event.
I'm going to be honest here, I have no idea why this was happening. Here
are the steps needed for the user_agent variable to get messed up:
* REGISTER is received
* First contact in the REGISTER results in a contact being removed
* Second contact in the REGISTER results in a contact being added
* The contact, AOR, expiration, and user agent all have to be passed as
format parameters to the creation of a string. Any subset of those
parameters would not be enough to cause the problem.
Looking into what was happening, the thing that struck me as odd was
that the user_agent variable was meant to be set to the value of the
User-Agent SIP header in the incoming REGISTER. However, when removing a
contact, the user_agent variable would be set (via ast_strdupa inside a
loop) to the stored contact's user_agent. This means that the
user_agent's value would be incorrect when attempting to process further
contacts in the incoming REGISTER.
The fix here is to use a different variable for the stored user agent
when removing a contact. Correcting the behavior to be correct also
means the memory usage is less weird, and the issue no longer occurs.
ASTERISK-25929 #close
Reported by Joshua Colp
Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08
2016-04-18 13:41 +0000 [4caa57f6b3] Joshua Colp <jcolp@digium.com>
* res_pjsip_transport_management: Allow unload to occur.
At shutdown it is possible for modules to be unloaded that wouldn't
normally be unloaded. This allows the environment to be cleaned up.
The res_pjsip_transport_management module did not have the unload
logic in it to clean itself up causing the res_pjsip module to not
get unloaded. As a result the res_pjsip monitor thread kept going
processing traffic and timers when it shouldn't.
Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a
2016-04-14 13:49 +0000 [0b35582bbb] Mark Michelson <mmichelson@digium.com>
* transport management: Register thread with PJProject.
The scheduler thread that kills idle TCP connections was not registering
with PJProject properly and causing assertions if PJProject was built in
debug mode.
This change registers the thread with PJProject the first time that the
scheduler callback executes.
AST-2016-005
Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283
2016-03-08 12:12 +0000 [9f8b803a29] Mark Michelson <mmichelson@digium.com>
* res_pjsip_transport_management: Kill idle TCP connections.
"Idle" here means that someone connects to us and does not send a SIP
request. PJProject will not automatically time out such connections, so
it's up to Asterisk to do it instead.
When we receive an incoming TCP connection, we will start a timer
(equivalent to transaction timer D) waiting to receive an incoming
request. If we do not receive a request in that timeframe, then we will
shut down the TCP connection.
ASTERISK-25796 #close
Reported by George Joseph
AST-2016-005
Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6
2016-03-08 10:52 +0000 [a35d3eb73b] Mark Michelson <mmichelson@digium.com>
* Rename res_pjsip_keepalive res_pjsip_transport_management
ASTERISK-25796
Reported by George Joseph
AST-2016-005
Change-Id: Id322a05f927392293570599730050bc677d99433
2016-04-14 07:15 +0000 [3de37dee68] Mark Michelson <mmichelson@digium.com>
* AST-2016-004: Fix crash on REGISTER with long URI.
Due to some ignored return values, Asterisk could crash if processing an
incoming REGISTER whose contact URI was above a certain length.
ASTERISK-25707 #close
Reported by George Joseph
Patches:
0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch
AST-2016-004
Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55
2016-03-23 08:59 +0000 [e378c18815] gtjoseph <george.joseph@fairview5.com>
* pjproject-bundled: Cleanups for reported issues
PortAudio should no longer be required
PJSIP_MAX_PKT_LEN is now 6000
Older autoconf issue fixed. (CentOS 6)
Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd
(cherry picked from commit d963a3374991c64594cf196e90a5c74964c8ba7c)
2016-04-06 16:01 +0000 Asterisk Development Team <asteriskteam@digium.com>
* asterisk certified/13.8-cert1-rc1 Released.
2016-04-06 10:27 +0000 [4fa3428247] Joshua Colp <jcolp@digium.com>
* Release summaries: Remove previous versions
2016-04-06 10:27 +0000 [b418e14998] Joshua Colp <jcolp@digium.com>
* .version: Update for certified/13.8-cert1-rc1
2016-04-06 10:27 +0000 [69b6cf2368] Joshua Colp <jcolp@digium.com>
* .lastclean: Update for certified/13.8-cert1-rc1
2016-04-06 10:27 +0000 [847dc5c7d7] Joshua Colp <jcolp@digium.com>
* realtime: Add database scripts for certified/13.8-cert1-rc1
2016-04-06 09:20 +0000 [c23bf7c8df] Joshua Colp <jcolp@digium.com>
* ChangeLog: Updated for certified/13.8-cert1-rc1
2016-04-06 09:19 +0000 [4f94668022] Joshua Colp <jcolp@digium.com>
* Release summaries: Add summaries for certified/13.8-cert1-rc1
2016-04-06 08:47 +0000 [454daec0e1] Joshua Colp <jcolp@digium.com>
* Release summaries: Remove previous versions
2016-04-06 08:47 +0000 [4ba2b5e92c] Joshua Colp <jcolp@digium.com>
* .version: Update for certified/13.8-cert1-rc1
2016-04-06 08:47 +0000 [e6f27ca09c] Joshua Colp <jcolp@digium.com>
* .lastclean: Update for certified/13.8-cert1-rc1
2016-04-06 08:47 +0000 [08dbdd5996] Joshua Colp <jcolp@digium.com>
* realtime: Add database scripts for certified/13.8-cert1-rc1
2016-04-06 08:26 +0000 [ec7a89771d] Joshua Colp <jcolp@digium.com>
* ChangeLog: Updated for certified/13.8-cert1-rc1
2016-04-06 08:25 +0000 [ffcb651205] Joshua Colp <jcolp@digium.com>
* Release summaries: Add summaries for certified/13.8-cert1-rc1
2016-04-06 07:52 +0000 [97499f717a] Joshua Colp <jcolp@digium.com>
* Release summaries: Remove previous versions
2016-04-06 07:52 +0000 [99d52771b5] Joshua Colp <jcolp@digium.com>
* .version: Update for certified/13.8-cert1-rc1
2016-04-06 07:52 +0000 [eb9e193c65] Joshua Colp <jcolp@digium.com>
* .lastclean: Update for certified/13.8-cert1-rc1
2016-04-06 07:52 +0000 [8ec588b8b1] Joshua Colp <jcolp@digium.com>
* realtime: Add database scripts for certified/13.8-cert1-rc1
2016-04-05 14:23 +0000 [4b87a773dc] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Handle deferred SDP hold/unhold properly.
Some SIP devices indicate hold/unhold using deferred SDP reinvites. In
other words, they provide no SDP in the reinvite.
A typical transaction that starts hold might look something like this:
* Device sends reinvite with no SDP
* Asterisk sends 200 OK with SDP indicating sendrecv on streams.
* Device sends ACK with SDP indicating sendonly on streams.
At this point, PJMedia's SDP negotiator saves Asterisk's local state as
being recvonly.
Now, when the device attempts to unhold, it again uses a deferred SDP
reinvite, so we end up doing the following:
* Device sends reinvite with no SDP
* Asterisk sends 200 OK with SDP indicating recvonly on streams
* Device sends ACK with SDP indicating sendonly on streams
The problem here is that Asterisk offered recvonly, and by RFC 3264's
rules, if an offer is recvonly, the answer has to be sendonly. The
result is that the device is not taken off hold.
What is supposed to happen is that Asterisk should indicate sendrecv in
the 200 OK that it sends. This way, the device has the freedom to
indicate sendrecv if it wants the stream taken off hold, or it can
continue to respond with sendonly if the purpose of the reinvite was
something else (like a session timer refresher).
The fix here is to alter the SDP negotiator's state when we receive a
reinvite with no SDP. If the negotiator's state is currently in the
recvonly or inactive state, then we alter our local state to be
sendrecv. This way, we allow the device to indicate the stream state as
desired.
ASTERISK-25854 #close
Reported by Robert McGilvray
Change-Id: I7615737276165eef3a593038413d936247dcc6ed
2016-04-05 09:06 +0000 [c29e2e3fb7] Joshua Colp <jcolp@digium.com>
* .version: Update for certified/13.8
Change-Id: I37e5a8e36c2f4f9137f8f230c99220005424e514
2015-01-06 21:29 +0000 [3c796e694e] Matt Jordan <mjordan@digium.com>
* Disable extended support modules
Change-Id: Ia2e359021b3eccecce20028098c5b6d1099c3f9e
2016-03-28 18:10 +0000 [7b6c4decd3] Richard Mudgett <rmudgett@digium.com>
* res_stasis: Fix crash on a hanging up channel.
* Give the struct stasis_app_control ao2 object a ref to the channel held
in the object. Now the channel will still be around if a thread needs to
post a stasis message instead of crash because the topic was destroyed.
* Moved stopping any lingering silence generator out of the struct
stasis_app_control destructor and made it a part of exiting the Stasis
application. Who knows which thread the destructor will be called under
so it cannot affect the channel's silence generator. Not only was the
channel unprotected when the silence generator was stopped, stasis may no
longer even control the channel.
ASTERISK-25882
Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4
2016-03-29 14:39 +0000 [fad0410486] Mark Michelson <mmichelson@digium.com>
* ChangeLog: Updated for 13.8.0
2016-03-29 14:39 +0000 [0f885f0076] Mark Michelson <mmichelson@digium.com>
* Release summaries: Add summaries for 13.8.0
2016-03-29 14:34 +0000 [a1fa37aebd] Mark Michelson <mmichelson@digium.com>
* Release summaries: Remove previous versions
2016-03-29 14:34 +0000 [e7de5fd439] Mark Michelson <mmichelson@digium.com>
* .version: Update for 13.8.0
2016-03-29 14:34 +0000 [8baf813848] Mark Michelson <mmichelson@digium.com>
* .lastclean: Update for 13.8.0
2016-03-29 14:34 +0000 [42469df205] Mark Michelson <mmichelson@digium.com>
* realtime: Add database scripts for 13.8.0
2016-03-22 13:32 +0000 [06f5ace1fa] Mark Michelson <mmichelson@lunkwill>
* ChangeLog: Updated for 13.8.0-rc1
2016-03-22 13:26 +0000 [a698424678] Mark Michelson <mmichelson@lunkwill>
* Release summaries: Add summaries for 13.8.0-rc1
2016-03-22 13:21 +0000 [e395a0b973] Mark Michelson <mmichelson@lunkwill>
* .version: Update for 13.8.0-rc1
2016-03-22 13:21 +0000 [38a86b2dbf] Mark Michelson <mmichelson@lunkwill>
* .lastclean: Update for 13.8.0-rc1
2016-03-22 13:21 +0000 [e0c8c8bf4a] Mark Michelson <mmichelson@lunkwill>
* realtime: Add database scripts for 13.8.0-rc1
2016-03-18 14:31 +0000 [6a40520fe9] Kevin Harwell <kharwell@digium.com>
* chan_pjsip: ref leak when checking direct_media_glare
Fix the reference leak introduced in the following commit:
9444ddadf8525d1ce66a1faf1db97f9f6c265ca4
ASTERISK-25849
Change-Id: I5cfefd5ee6c1c3a1715c050330aaa10e4d2a5e85
2016-03-16 12:37 +0000 [9444ddadf8] Kevin Harwell <kharwell@digium.com>
* chan_pjsip: transfers with direct media reinvite has wrong address/port
During a transfer involving direct media a race occurs between when the
transferer channel is swapped out, initiating rtp changes/updates, and the
subsequent reinvites.
When Alice, after speaking with Charlie (Bob is on hold), connects Bob and
Charlie invites are sent to each in order to establish the call between them.
Bob is taken off hold and Charlie is told to have his media flow through
Asterisk. However, if before those invites go out the bridge updates Bob's
and/or Charlie's rtp information with direct media data (i.e. address, port)
then the invite(s) will contain the remote data in the SDP instead of the
Asterisk data.
The race occurs in the native bridge glue code when updating the peer. The
direct_media_address can get set twice before sending out the first invite
during call connection. This can happen because the checking/setting of the
direct_media_address happened in one thread while the sending of the invite(s)
happened in another thread.
This fix removes the race condition by moving the checking/setting of the
direct_media_address to be in the same thread as the sending of the invites(s).
This serializes the checking/setting and sending so they can no longer happen
out of order.
ASTERISK-25849 #close
Change-Id: Idfea590175e74f401929a601dba0c91ca1a7f873
2015-10-19 07:11 +0000 [88240f98d9] Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
* install_prereq: Update repositories before install on Debian systems
When to install packages the indexed local is more old of the
version of software on the repository they have been upgraded by security
update then get the package will give 404 not found.
The patch prevent by update local index to repository for aptitude before
install.
ASTERISK-25495 #close
Reporte by: Rodrigo Ramírez Norambuena
Change-Id: I645959e553aac542805ced394cac2dca964051fa
(cherry picked from commit 88f3dbaec9509bfba8bc1de7799aa0dc65304bb5)
2015-06-03 20:12 +0000 [efcf9a96db] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* install_prereq: Check if is installed aptitude otherwise to install.
If in Debian or system based, dont have aptitude installed the script do
nothing. This patch checked if aptitude installed, if not installed.
Also, if execute script with all packages installed yet, the script not show
nothing and return exit 1 because the command 'grep' get nothing from pipe from
'awk'.
ASTERISK-25113 #close
Reported By: Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f
(cherry picked from commit 6737ded0581a9e1256bdfe30c1d747e7ca93f8b3)
2016-03-03 04:43 +0000 [2b1b8e382a] Sergio Medina Toledo <lumasepa@gmail.com>
* res_pjsip_refer.c: Fix seg fault in process of Refer-to header.
The "Refer-to" header of an incoming REFER request is parsed by
pjsip_parse_uri(). That function requires the URI parameter to be NULL
terminated. Unfortunately, the previous code added the NULL terminator by
overwriting memory that may not be safe. The overwritten memory results
could be benign, memory corruption, or a segmentation fault. Now the URI
is NULL terminated safely by copying the URI to a new chunk of memory with
the correct size to be NULL terminated.
ASTERISK-25814 #close
Change-Id: I32565496684a5a49c3278fce06474b8c94b37342
2016-03-11 12:22 +0000 [de04308ae4] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix mwi resub deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
ASTERISK-25023 #close
Change-Id: I96d429c57a48861fd8bde63dd93db4e92dc3adb6
2016-03-10 17:01 +0000 [5f6627a8a4] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix registration timeout and expire deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
ASTERISK-25023
Change-Id: I2e40de89efc8ae6e8850771d089ca44bc604b508
2016-03-10 12:17 +0000 [32bd7a64f9] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix t38id deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
ASTERISK-25023
Change-Id: If595e4456cd059d7171880c7f354e844c21b5f5f
2016-03-09 16:34 +0000 [43556b800b] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix reinviteid deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
ASTERISK-25023
Change-Id: I9c11b9d597468f63916c99e1dabff9f4a46f84c1
2016-03-09 16:32 +0000 [38c1cdab2c] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix packet retransid deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
* Fix retrans_pkt() to call check_pendings() with both the owner channel
and the private objects locked as required.
* Refactor dialog retransmission packet list to safely remove packet
nodes. The list nodes are now ao2 objects. The list has a ref and the
scheduled entry has a ref.
ASTERISK-25023
Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641
2016-03-09 16:26 +0000 [e4ad55c888] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix waitid deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
* Made always run check_pendings() under the scheduler thread so scheduler
ids can be checked safely.
ASTERISK-25023
Change-Id: Ia834d6edd5bdb47c163e4ecf884428a4a8b17d52
2016-03-08 15:08 +0000 [98d5669c28] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix session timers deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
ASTERISK-25023
Change-Id: I6d65269151ba95e0d8fe4e9e611881cde2ab4900
2016-03-07 13:21 +0000 [9cb8f73226] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix autokillid deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
* Fix clearing autokillid in __sip_autodestruct() even though we could
reschedule.
ASTERISK-25023
Change-Id: I450580dbf26e2e3952ee6628c735b001565c368f
2016-03-07 18:28 +0000 [c5c7f48a15] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix provisional_keepalive_sched_id deadlock.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
ASTERISK-25023
Change-Id: I98a694fd42bc81436c83aa92de03226e6e4e3f48
2016-03-09 11:22 +0000 [f959d84dfd] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Adjust how dialog_unlink_all() stops scheduled events.
This patch is part of a series to resolve deadlocks in chan_sip.c.
* Make dialog_unlink_all() unschedule all items at once in the sched
thread.
ASTERISK-25023
Change-Id: I7743072fb228836e8228b72f6dc46c8cc50b3fb4
2016-03-10 21:54 +0000 [5f3225ddcc] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Clear scheduled immediate events on unload.
This patch is part of a series to resolve deadlocks in chan_sip.c.
The reordering of chan_sip's shutdown is to handle any immediate events
that get put onto the scheduler so resources aren't leaked. The typical
immediate events at this time are going to be concerned with stopping
other scheduled events.
ASTERISK-25023
Change-Id: I3f6540717634f6f2e84d8531a054976f2bbb9d20
2016-03-15 14:51 +0000 [7a74971771] Richard Mudgett <rmudgett@digium.com>
* sip/dialplan_functions.c: Fix /channels/chan_sip/test_sip_rtpqos crash.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Delaying destruction of the chan_sip sip_pvt structures caused the
/channels/chan_sip/test_sip_rtpqos unit test to crash. That test
registers a special test ast_rtp_engine with the rtp engine module. When
the unit test completes it cleans up by unregistering the test
ast_rtp_engine and exits. Since the delayed destruction of the sip_pvt
happens after the unit test returns, the destructor tries to call the rtp
engine destroy callback of the test ast_rtp_engine auto variable which no
longer exists on the stack.
* Change the test ast_rtp_engine auto variable to a static variable. Now
the variable can still exist after the unit test exits so the delayed
sip_pvt destruction can complete successfully.
ASTERISK-25023
Change-Id: I61e34a12d425189ef7e96fc69ae14993f82f3f13
2016-03-15 13:31 +0000 [d2c09ed73b] Andrew Nagy <andrew.nagy@the159.com>
* app_stasis: Don't hang up if app is not registered
This prevents pbx_core from hanging up the channel if the app isn't
registered.
ASTERISK-25846 #close
Change-Id: I63216a61f30706d5362bc0906b50b6f0544aebce
2016-03-07 15:50 +0000 [b2d2906445] Richard Mudgett <rmudgett@digium.com>
* sched.c: Ensure oldest expiring entry runs first.
This patch is part of a series to resolve deadlocks in chan_sip.c.
* Updated sched unit test to check new behavior.
ASTERISK-25023
Change-Id: Ib69437327b3cda5e14c4238d9ff91b2531b34ef3
2016-03-04 18:25 +0000 [9ae21b510f] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Made sip_reinvite_retry() call sip_pvt_lock_full().
Change-Id: I90f04208a089f95488a2460185a8dbc3f6acca12
2016-03-07 18:56 +0000 [56bcb97a3c] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Simplify sip_pvt destructor call levels.
Remove destructor calling destroy_it calling really_destroy_it
for no benefit. Just make the destructor the really_destroy_it
function.
Change-Id: Idea0d47b27dd74f2488db75bcc7f353d8fdc614a
2016-03-14 08:59 +0000 [677a65fcbb] Joshua Colp <jcolp@digium.com>
* build: Add configure check for proto field of PJSIP TLS transport setting.
Older versions of PJSIP do not have the proto field on the TLS transport
setting structure. This change adds a configure check so even if it is
not present we will still be able to build.
Change-Id: Ibf3f47befb91ed1b8194bf63888baa6fee05aba9
2016-03-12 16:02 +0000 [32f0a3d52a] gtjoseph <george.joseph@fairview5.com>
* build_system: Split COMPILE_DOUBLE from DONT_OPTIMIZE
I can't ever recall actually needing the intermediate files or the checking
that a double compile produces. What I CAN remember is every DONT_OPTIMIZE
build needing 3 invocations of gcc instead of 1 just to do the checks and
produce those intermediate files.
Having said that, Richard pointed out that the reason for the double compile
was that there were cases in the past where a submitted patch failed to compile
because the submitter never tried it with the optimizations turned on.
To get the best of both worlds, COMPILE_DOUBLE has been split into its own
option. If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected
BUT you can then turn it off if all you need are the debugging symbols. This
way you have to make an informed decision about disabling COMPILE_DOUBLE.
To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature
was added to menuselect. The <use> element can now contain an "autoselect"
attribute which will turn the used member on but not create a hard dependency.
The cflags.xml implementation for COMPILE_DOUBLE looks like this...
<member name="DONT_OPTIMIZE" displayname="Disable Optimizations ...">
<use autoselect="yes">COMPILE_DOUBLE</use>
<support_level>core</support_level>
</member>
<member name="COMPILE_DOUBLE" displayname="Pre-compile with ...>
<depend>DONT_OPTIMIZE</depend>
<support_level>core</support_level>
</member>
When DONT_OPTIMIZE is turned on, COMPILE_DOUBLE is turned on because
of the use.
When DONT_OPTIMIZE is turned off, COMPILE_DOUBLE is turned off because
of the depend.
When COMPILE_DOUBLE is turned on, DONT_OPTIMIZE is turned on because
of the depend.
When COMPILE_DOUBLE is turned off, DONT_OPTIMIZE is left as is because
it only uses COMPILE_DOUBLE, it doesn't depend on it.
I also made a few tweaks to the ncurses implementation to move things
left a bit to allow longer descriptions.
Change-Id: Id49ca930ac4b5ec4fc2d8141979ad888da7b1611
2016-03-10 13:09 +0000 [38499e7125] gtjoseph <george.joseph@fairview5.com>
* pjproject: Pass (dont_)optimize flags to pjproject and fix pjsua
The pjproject Makefile now uses the Asterisk optimization flags which
are determined by the setting of the DONT_OPTMIZE menuselect flag.
The Makefile was also restructured so a change to the top level
menuselect.makeopts will result in a rebuild of pjproject.
Also, "--disable-resample" was removed from the pjproject configure
options. Without resample, pjsua (which is used by the testsuite)
can't make audio calls. When it can't, it segfaults.
Change-Id: I24b0a4d0872acef00ed89b3c527a713ee4c2ccd4
2016-03-11 16:03 +0000 [336cae73cc] Walter Doekes <walter+asterisk@wjd.nu>
* app_chanspy: Fix occasional deadlock with ChanSpy and Local channels.
Channel masquerading had a conflict with autochannel locking.
When locking autochannel->channel, the channel is fetched from the
autochannel and then locked. During the fetch, the autochannel -- which
has no locks itself -- can be modified by someone who owns the channel
lock. That means that the value of autochan->channel cannot be trusted
until you hold the lock.
In practice, this caused problems with Local channels getting
masqueraded away while the ChanSpy attempted to get info from that
channel. The old channel which was about to get removed got locked, but
the new (replaced) channel got unlocked (no-op). Because the replaced
channel was now locked (and would never get unlocked), it couldn't get
removed from the channel list in a timely manner, and would now cause
deadlocks when iterating over the channel list.
This change checks the autochannel after locking the channel for changes
to the autochannel. If the channel had been changed, the lock is
reobtained on the new channel.
In theory it seems possible that after this fix, the lock attempt on the
old (wrong) channel can be on an already destroyed lock, maybe causing
a crash. But that hasn't been observed in the wild and is harder induce
than the current deadlock.
Thanks go to Filip Frank for suggesting a fix similar to this and
especially to IRC user hexanol for pointing out why this deadlock was
possible and testing this fix. And to Richard for catching my rookie
while loop mistake ;)
ASTERISK-25321 #close
Change-Id: I293ae0014e531cd0e675c3f02d1d118a98683def
2016-03-07 21:34 +0000 [875d5e9872] gtjoseph <george.joseph@fairview5.com>
* pjproject_bundled: Remove --with-external-pa from configure options.
Not sure why it was there in the first place as we already specify
--disable-sound.
Change-Id: Ia80a40e8b1e1acc287955ab11ba1fbd0c7d4cff9
2016-03-06 14:38 +0000 [530cff5f5f] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Strip spaces from items parsed from comma-separated lists
Configurations like "aors = a, b, c" were either ignoring everything after "a"
or trying to look up " b". Same for mailboxes, ciphers, contacts and a few
others.
To fix, all the strsep(&copy, ",") calls have been wrapped in ast_strip. To
facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were
updated to handle null pointers.
In some cases, an ast_strlen_zero() test was added to skip consecutive commas.
There was also an attempt to ast_free an ast_strdupa'd string in
ast_sip_for_each_aor which was causing a SEGV. I removed it.
Although this issue was reported for realtime, the issue was in the res_pjsip
modules so all config mechanisms were affected.
ASTERISK-25829 #close
Reported-by: Mateusz Kowalski
Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2
2016-03-04 20:37 +0000 [3c8076a83b] gtjoseph <george.joseph@fairview5.com>
* install_prereq: Add packages for bundled pjproject
RedHat/CentOS needs python-devel
Debian/Ubuntu needs automake, libsrtp-dev and python-dev
Ubuntu also needed libncurses5-dev for cmenuselect so while not
needed for pjproject, I adedd it anyway.
Change-Id: Idf5fa16e2d87c687439621507e122cb9461d7089
2016-02-24 17:25 +0000 [27f32cd0a6] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_caller_id: Anonymize 'From' when caller id presentation is prohibited
Per RFC3325, the 'From' header is now anonymized on outgoing calls when
caller id presentation is prohibited.
TID = trust_id_outbound
PRO = Set(CALLERID(pres)=prohib)
USR = endpoint/from_user
DOM = endpoint/from_domain
PAI = YES(privacy=off), NO(not sent), PRI(privacy=full) (assumes send_pai=yes)
Conditions |Result
--------------------|----------------------------------------------------
TID PRO USR DOM |PAI FROM
--------------------|----------------------------------------------------
Y Y abc def.ghi |PRI "Anonymous" <sip:abc@def.ghi>
Y Y abc |PRI "Anonymous" <sip:abc@anonymous.invalid>
Y Y def.ghi |PRI "Anonymous" <sip:anonymous@def.ghi>
Y Y |PRI "Anonymous" <sip:anonymous@anonymous.invalid>
Y N abc def.ghi |YES <sip:abc@def.ghi>
Y N abc |YES <sip:abc@<ip_address>>
Y N def.ghi |YES "Caller Name" <sip:<caller_exten>@def.ghi>
Y N |YES "Caller Name" <sip:<caller_exten>@<ip_address>>
N Y abc def.ghi |NO "Anonymous" <sip:abc@def.ghi>
N Y abc |NO "Anonymous" <sip:abc@anonymous.invalid>
N Y def.ghi |NO "Anonymous" <sip:anonymous@def.ghi>
N Y |NO "Anonymous" <sip:anonymous@anonymous.invalid>
N N abc def.ghi |YES <sip:abc@def.ghi>
N N abc |YES <sip:abc@<ip_address>>
N N def.ghi |YES "Caller Name" <sip:<caller_exten>@def.ghi>
N N |YES "Caller Name" <sip:<caller_exten>@<ip_address>>
ASTERISK-25791 #close
Reported-by: Anthony Messina
Change-Id: I2c82a5ca1413c2c00fb62ea95b0ae8e97af54dc9
2016-03-03 17:34 +0000 [7cf7b0a4f9] gtjoseph <george.joseph@fairview5.com>
* third_party/Makefile.rules: Replace unsupported != operator with $(shell ...)
Apparently the != operator is fairly new so I've replaced it with
the old $(shell ...) syntax.
Change-Id: I16b2e1878a4f91e7e9740abd427f9639f933c479
Reported-by: Richard Mudgett
2016-01-23 15:50 +0000 [53f57001f2] gtjoseph <george.joseph@fairview5.com>
* loader: Retry dlopen when loading fails
Although we use the RTLD_LAZY flag when calling dlopen
the first time on a module, this only defers resolution
for function calls. Pointer references to functions are
determined at link time so dlopen expects them to be there.
Since we don't cross-module link, pointers to functions
in other modules won't be available and dlopen will fail.
Doing a "hardened" build also causes problems because it
typically sets "-z now" on the ld command line which
overrides RTLD_LAZY at run time.
If the failing module isn't a GLOBAL_SYMBOLS module, then
dlopen will be called again after all the GLOBAL_SYMBOLS
modules have been loaded and they'll eventually resolve.
If the calling module IS a GLOBAL_SYMBOLS module itself
and a third module depends on it, then there's an issue
because the second time through the dlopen loop,
GLOBAL_SYMBOLS modules aren't given any special treatment
and since the order in which dlopen is called isn't
deterministic, the dependent may again be tried before the
module it needs is loaded.
Simple solution: Save modules that fail load_resource
because of a dlopen error in a list and retry them
immediately after the first pass. Keep retrying until
the failed list is empty or we reach a #defined max
retries. Error messages are suppressed until the final
pass which also gets rid of those confusing error messages
about module failures that are later corrected.
Change-Id: Iddae1d97cd2f00b94e61662447432765755f64bb
2016-03-01 16:18 +0000 [40d9e9e238] Kevin Harwell <kharwell@digium.com>
* bridge.c: Crash during attended transfer when missing a local channel half
It's possible for the transferer channel to get hung up early during the
attended transfer process. For instance, a phone may send a "bye" immediately
upon receiving a sip notify that contains a sip frag 100 (I'm looking at you
Jitsi). When this occurs a race begins between the transferer being hung up
and completion of the transfer code.
If the channel hangs up too early during a transfer involving stasis bridging
for instance, then when the created local channel goes to look up its swap
channel (and associated datastore) it can't find it (since it is no longer in
the bridge) thus it fails to enter the stasis application. Consequently, the
created local channel(s) hang up as well. If the timing is just right then the
bridging code attempts to add the message link with missing local channel(s).
Hence the crash.
Unfortunately, there is no great way to solve the problem of the unexpected
"bye". While we can't guarantee we won't receive an early hangup, and in this
case still fail to enter the stasis application, we can make it so asterisk
does not crash.
This patch does just that by locking the local channel structure, checking
that the local channel's peer has not been lost, and then continuing. This
keeps the local channel's peer from being ripped out from underneath it by
the local/unreal hangup code while attempting to set the stasis message link.
ASTERISK-25771
Change-Id: Ie6d6061e34c7c95f07116fffac9a09e5d225c880
2016-03-01 18:08 +0000 [ff3da61c35] Kevin Harwell <kharwell@digium.com>
* res_pjsip_refer.c: Delay sending the initial SIP Notify with frag 100
During the transfer process, some phones (okay it was the Jitsi softphone,
but maybe others are out there) send a "bye" immediately after receiving a
SIP Notify. When a "bye" is received early for some types of transfers the
transferer channel may no longer be available during late stage transfer
processing.
For instance, during an attended transfer involving stasis bridging at one
point the created local channel looks for an associated swap channel in
order to retrieve the stasis application name. If the transferer has hung
up then the local channel will fail to find it. The local channel then has
no way to know which stasis app to enter, so it fails and hangs up as well.
Thus the transfer does not complete as expected.
This patch delays the sending of the initial notify in order to give the
transfer process enough time to gather the necessary data for a successful
transfer.
ASTERISK-25771
Change-Id: I09cfc9a5d6ed4c007bc70625e0972b470393bf16
2016-03-03 08:26 +0000 [26b8f2692e] Joshua Colp <jcolp@digium.com>
* res_pjsip_dtmf_info: NULL terminate the message body.
PJSIP does not ensure that when printing the message body the
buffer will be NULL terminated. This is problematic when searching
for the signal and duration values of the DTMF.
This change ensures the buffer is always NULL terminated.
Change-Id: I52653a1a60c93092d06af31a27408d569cc98968
2016-03-01 20:03 +0000 [86d6e44cc1] gtjoseph <george.joseph@fairview5.com>
* alembic: Fix downgrade and tweak for sqlite
Downgrade had a few issues. First there was an errant 'update' statement in
add_auto_dtmf_mode that looks like it was a copy/paste error. Second, we
weren't cleaning up the ENUMs so subsequent upgrades on postgres failed
because the types already existed.
For sqlite... sqlite doesn't support ALTER or DROP COLUMN directly.
Fortunately alembic batch_operations takes care of this for us if we
use it so the alter and drops were converted to use batch operations.
Here's an example downgrade:
with op.batch_alter_table('ps_endpoints') as batch_op:
batch_op.drop_column('tos_audio')
batch_op.drop_column('tos_video')
batch_op.add_column(sa.Column('tos_audio', yesno_values))
batch_op.add_column(sa.Column('tos_video', yesno_values))
batch_op.drop_column('cos_audio')
batch_op.drop_column('cos_video')
batch_op.add_column(sa.Column('cos_audio', yesno_values))
batch_op.add_column(sa.Column('cos_video', yesno_values))
with op.batch_alter_table('ps_transports') as batch_op:
batch_op.drop_column('tos')
batch_op.add_column(sa.Column('tos', yesno_values))
# Can't cast integers to YESNO_VALUES, so dropping and adding is required
batch_op.drop_column('cos')
batch_op.add_column(sa.Column('cos', yesno_values))
Upgrades from base to head and downgrades from head to base were tested
repeatedly for postgresql, mysql/mariadb, and sqlite3.
Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8
2016-03-02 15:55 +0000 [6f0d7ce9db] gtjoseph <george.joseph@fairview5.com>
* config_transport: Fix objects returned by ast_sip_get_transport_states
ast_sip_get_transport_states was returning a container of internal_state
objects instead of ast_sip_transport_state objects. This was causing
transport lookups to fail, most noticably in res_pjsip_nat, which
couldn't find the correct external addresses. This was causing contacts
to go out with internal ip addresses.
ASTERISK-25830 #close
Reported-by: Sean Bright
Change-Id: I1aee6a2fd46c42e8dd0af72498d17de459ac750e
2016-03-02 11:17 +0000 [1ea7a5a774] Scott Griepentrog <scott@griepentrog.com>
* CHAOS: cleanup possible null vars on msg alloc failure
In message.c, if msg_alloc fails to init the string field,
vars may be null, so use a null tolerant cleanup.
In res_pjsip_messaging.c, if msg_data_create fails, mdata
will be null, so use a null tolerant cleanup.
ASTERISK-25323
Change-Id: Ic2d55c2c3750d5616e2a05ea92a19c717507ff56
2016-03-02 09:34 +0000 [3c37c7071f] Scott Griepentrog <scott@griepentrog.com>
* CHAOS: prevent crash on failed strdup
This patch avoids crashing on a null pointer
if the strdup() allocation fails.
ASTERISK-25323
Change-Id: I3f67434820ba53b53663efd6cbb42749f4f6c0f5
2016-02-29 18:11 +0000 [9633be9d25] Richard Mudgett <rmudgett@digium.com>
* func_callerid.c: Update REDIRECTING reason documentation.
Change-Id: I6e8d39b0711110a4bceafa652e58b30465e28386
2016-02-26 18:57 +0000 [4165ea7778] Richard Mudgett <rmudgett@digium.com>
* SIP diversion: Fix REDIRECTING(reason) value inconsistencies.
Previous chan_sip behavior:
Before this patch chan_sip would always strip any quotes from an incoming
reason and pass that value up as the REDIRECTING(reason). For an outgoing
reason value, chan_sip would check the value against known values and
quote any it didn't recognize. Incoming 480 response message reason text
was just assigned to the REDIRECTING(reason).
Previous chan_pjsip behavior:
Before this patch chan_pjsip would always pass the incoming reason value
up as the REDIRECTING(reason). For an outgoing reason value, chan_pjsip
would send the reason value as passed down.
With this patch:
Both channel drivers match incoming reason values with values documented
by REDIRECTING(reason) and values documented by RFC5806 regardless of
whether they are quoted or not. RFC5806 values are mapped to the
equivalent REDIRECTING(reason) documented value and is set in
REDIRECTING(reason). e.g., an incoming RFC5806 'unconditional' value or a
quoted string version ('"unconditional"') is converted to
REDIRECTING(reason)'s 'cfu' value. The user's dialplan only needs to deal
with 'cfu' instead of any of the aliases.
The incoming 480 response reason text supported by chan_sip checks for
known reason values and if not matched then puts quotes around the reason
string and assigns that to REDIRECTING(reason).
Both channel drivers send outgoing known REDIRECTING(reason) values as the
unquoted RFC5806 equivalent. User custom values are either sent as is or
with added quotes if SIP doesn't allow a character within the value as
part of a RFC3261 Section 25.1 token. Note that there are still
limitations on what characters can be put in a custom user value. e.g.,
embedding quotes in the middle of the reason string is silly and just
going to cause you grief.
* Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases.
e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the
'cfu' value.
* Added missing malloc() NULL return check in res_pjsip_diversion.c
set_redirecting_reason().
* Fixed potential read from a stale pointer in res_pjsip_diversion.c
add_diversion_header(). The reason string needed to be copied into the
tdata memory pool to ensure that the string would always be available.
Otherwise, if the reason string returned by reason_code_to_str() was a
user's reason string then the string could be freed later by another
thread.
Change-Id: Ifba83d23a195a9f64d55b9c681d2e62476b68a87
2016-02-26 18:54 +0000 [41f4af4ce5] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason.
Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd
2016-02-29 20:41 +0000 [4c5998ff55] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_send_to_voicemail.c: Fix off-nominal double channel unref.
* Fix double unref of other_party channel in off nominal path.
* This is unlikely to be a real problem. However, for safety,
in handle_incoming_request() keep the datastore ref with the
other_party channel ref until we are finished with the other_party
channel.
Change-Id: I78f22547bf0bb99fb20814ceab75952bd857f821
2016-01-18 21:54 +0000 [b59956a875] gtjoseph <george.joseph@fairview5.com>
* build-system: Allow building with static pjproject
Background here:
http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html
From CHANGES:
* To help insure that Asterisk is compiled and run with the same known
version of pjproject, a new option (--with-pjproject-bundled) has been
added to ./configure. When specified, the version of pjproject specified
in third-party/versions.mak will be downloaded and configured. When you
make Asterisk, the build process will also automatically build pjproject
and Asterisk will be statically linked to it. Once a particular version
of pjproject is configured and built, it won't be configured or built
again unless you run a 'make distclean'.
To facilitate testing, when 'make install' is run, the pjsua and pjsystest
utilities and the pjproject python bindings will be installed in
ASTDATADIR/third-party/pjproject.
The default behavior remains building with the shared pjproject
installation, if any.
Building:
All you have to do is include the --with-pjproject-bundled option on
the ./configure command line (and remove any existing --with-pjproject
option if specified). Everything else is automatic.
Behind the scenes:
The top-level Makefile was modified to include 'third-party' in the
list of MOD_SUBDIRS.
The third-party directory was created to contain any third party
packages that may be needed in the future. Its Makefile automatically
iterates over any subdirectories passing on targets.
The third-party/pjproject directory was created to house the pjproject
source distribution. Its Makefile contains targets to download, patch
configure, generate dependencies, compile libs, apps and python bindings,
sanitized build.mak and generate a symbols list.
When bootstrap.sh is run, it automatically includes the configure.m4
file in third-party/pjproject. This file has a macro to download and
conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR
and PJPROJECT_BUNDLED. It also tests for the capabilities like
PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to
trying to compile. Of course, bootstrap.sh is only run once and the
configure file is incldued in the patch.
When configure is run with the new options, the macro in configure.m4
triggers the download, patch, conifgure and tests. No compilation is
performed at this time. The downloaded tarball is cached in /tmp so
it doesn't get downloaded again on a distclean.
When make is run in the top-level Asterisk source directory, it will
automatically descend all the subdirectories in third_party just as it
does for addons, apps, etc. The top-level Makefile makes sure that
the 'third-party' is built before 'main' so that dependencies from the
other directories are built first.
When main does build, a new shared library (libasteriskpj) is created that
links statically to the pjproject .a files and exports all their symbols.
The asterisk binary links to that, just as it does with libasteriskssl.
When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject
python bindings are installed in ASTDATADIR/third-party/pjproject. This
will facilitate testing, including running the testsuite which will be
updated to check that directory for the pjsua module ahead of the system
python library.
Modules should continue to depend on pjproject if they use pjproject APIs
directly. They should not care about the implementation. No changes to any
res_pjsip modules were made.
Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103
2016-02-22 16:59 +0000 [18a323e542] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Fix T.38 issues caused by leaving a bridge.
chan_sip could not handle AST_T38_TERMINATED frames being sent to it when
the channel left the bridge. The action resulted in overlapping outgoing
reINVITEs. The testsuite tests/fax/sip/directmedia_reinvite_t38 was not
happy.
* Force T.38 to be remembered as locally bridged. Now when the channel
leaves the native RTP bridge after T.38, the channel remembers that it has
already reINVITEed the media back to Asterisk. It just needs to terminate
T.38 when the AST_T38_TERMINATED arrives.
* Prevent redundant AST_T38_TERMINATED from causing problems. Redundant
AST_T38_TERMINATED frames could cause overlapping outgoing reINVITEs if
they happen before the T.38 state changes to disabled. Now the T.38 state
is set to disabled before the reINVITE is sent.
ASTERISK-25582 #close
Change-Id: I53f5c6ce7d90b3f322a942af1a9bcab6d967b7ce
2016-02-18 18:27 +0000 [263a39f2cc] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_t38.c: Back out part of an earlier fix attempt.
This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d
commit. Item 4 added the t38_bye_supplement. Unfortunately, the frame
that it puts into the bridge may or may not be processed by the time the
bridged peer is kicked out of the bridge. If it is processed then all is
well. However, if it is not processed then that channel is stuck in fax
mode until it hangs up or maybe if it joins another bridge for T.38
faxing.
ASTERISK-25582
Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7
2016-02-22 13:54 +0000 [221422be50] Richard Mudgett <rmudgett@digium.com>
* bridge core: Add owed T.38 terminate when channel leaves a bridge.
The channel is now going to get T.38 terminated when it leaves the
bridging system and the bridged peers are going to get T.38 terminated as
well.
ASTERISK-25582
Change-Id: I77a9205979910210e3068e1ddff400dbf35c4ca7
2016-02-19 16:01 +0000 [0a5bc64491] Richard Mudgett <rmudgett@digium.com>
* channel api: Create is_t38_active accessor functions.
ASTERISK-25582
Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b
2016-02-19 19:06 +0000 [513638a5f4] Richard Mudgett <rmudgett@digium.com>
* bridge_channel: Don't settle owed events on an optimization.
Local channel optimization could cause DTMF digits to be duplicated.
Pending DTMF end events would be posted to a bridge when the local channel
optimizes out and is replaced by the channel further down the chain. When
the real digit ends, the channel would get another DTMF end posted to the
bridge.
A -- LocalA;1/n -- LocalA;2/n -- LocalB;1 -- LocalB;2 -- B
1) LocalA has the /n flag to prevent optimization.
2) B is sending DTMF to A through the local channel chain.
3) When LocalB optimizes out it can move B to the position of LocalB;1
4) Without this patch, when B swaps with LocalB;1 then LocalB;1 would
settle an owed DTMF end to the bridge toward LocalA;2.
5) When B finally ends its DTMF it sends the DTMF end down the chain.
6) Without this patch, A would hear the DTMF digit end when LocalB
optimizes out and when B ends the original digit.
ASTERISK-25582
Change-Id: I1bbd28b8b399c0fb54985a5747f330a4cd2aa251
2016-02-22 12:15 +0000 [7c4495cb70] Richard Mudgett <rmudgett@digium.com>
* channel.c: Route all control frames to a channel through the same code.
Frame hooks can conceivably return a control frame in exchange for an
audio frame inside ast_write(). Those returned control frames were not
handled quite the same as if they were sent to ast_indicate(). Now it
doesn't matter if you use ast_write() to send an AST_FRAME_CONTROL to a
channel or ast_indicate().
ASTERISK-25582
Change-Id: I5775f41421aca2b510128198e9b827bf9169629b
2016-02-25 15:13 +0000 [48d713a832] gtjoseph <george.joseph@fairview5.com>
* sorcery: Refactor create, update and delete to better deal with caches
The ast_sorcery_create, update and delete function have been refactored
to better deal with caches and errors.
The action is now called on all non-caching wizards first. If ANY succeed,
the action is called on all caching wizards and the observers are notified.
This way we don't put something in the cache (or update or delete) before
knowing the action was performed in at least 1 backend and we only call the
observers once even if there were multiple writable backends.
ast_sorcery_create was never adding to caches in the first place which
was preventing contacts from getting added to a memory_cache when they
were created. In turn this was causing memory_cache to emit errors if
the contact was deleted before being retrieved (which would have
populated the cache).
ASTERISK-25811 #close
Reported-by: Ross Beer
Change-Id: Id5596ce691685a79886e57b0865888458d6e7b46
2016-02-25 15:39 +0000 [ee947d4a7a] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_mwi: Turn some NOTICEs and WARNINGs into debug 1s.
There are a few cases where we're emitting notices or warnings
for things that really need neither, like a client retrying to subscribe
to mwi when they're not conifgured for it. They get a 404 so there's no
need for non-debug messages.
Change-Id: I05e38a7ff6c2f2521146f4be6a79731b9864e61f
2016-02-25 14:17 +0000 [6e70e8ccdb] gtjoseph <george.joseph@fairview5.com>
* res_sorcery_memory_cache: Fix SEGV in some CLI commands
A few of the CLI commands weren't checking for enough arguments
and were SEGVing.
Change-Id: Ie6494132ad2fe54b4f014bcdc112a37c36a9b413
2016-02-25 10:29 +0000 [4417f64d83] Leif Madsen <leif@leifmadsen.com>
* Add initial support to build Docker images
This work-in-progress is the first step to being able to reliably
build Asterisk containers from the Asterisk source. I'm submitting
this based on feedback gained at AstriDevCon 2015.
Information about how to use this is provided in contrib/docker/README.md
and will result in a local Asterisk container being built right from
your source. I believe this can eventually be automated via
hub.docker.com.
Change-Id: Ifa070706d40e56755797097b6ed72c1e243bd0d1
2016-02-22 19:31 +0000 [e7a6abbbd3] Richard Mudgett <rmudgett@digium.com>
* rtp_engine.h: Remove extraneous semicolons.
Change-Id: Ib462633d396fa941379dfef648dcd2245e350084
2016-02-23 14:57 +0000 [6656afffa0] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Suppress T.38 SDP c= line if addr is the same.
Use the correct comparison function since we only care if the address
without the port is the same.
Change-Id: Ibf6c485f843a1be6dee58a47b33d81a7a8cbe3b0
2016-02-16 08:14 +0000 [ea9deff996] Christof Lauber <christof.lauber@annax.ch>
* res_config_sqlite3: Fix crashes when reading peers from sqlite3 tables
Introduced realloaction of ast_str buf in sqlite3_escape functions in case
the returned buffer from threadstorage was actually too small.
Change-Id: I3c5eb43aaade93ee457943daddc651781954c445
2016-02-11 11:01 +0000 [d2a1457e0b] gtjoseph <george.joseph@fairview5.com>
* res_pjsip/config_transport: Allow reloading transports.
The 'reload' mechanism actually involves closing the underlying
socket and calling the appropriate udp, tcp or tls start functions
again. Only outbound_registration, pubsub and session needed work
to reset the transport before sending requests to insure that the
pjsip transport didn't get pulled out from under them.
In my testing, no calls were dropped when a transport was changed
for any of the 3 transport types even if ip addresses or ports were
changed. To be on the safe side however, a new transport option was
added (allow_reload) which defaults to 'no'. Unless it's explicitly
set to 'yes' for a transport, changes to that transport will be ignored
on a reload of res_pjsip. This should preserve the current behavior.
Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf
2016-02-07 17:34 +0000 [6b921f706d] gtjoseph <george.joseph@fairview5.com>
* res_pjproject: Add ability to map pjproject log levels to Asterisk log levels
Warnings and errors in the pjproject libraries are generally handled by
Asterisk. In many cases, Asterisk wouldn't even consider them to be warnings
or errors so the messages emitted by pjproject directly are either superfluous
or misleading. A good exampe of this are the level-0 errors pjproject emits
when it can't open a TCP/TLS socket to a client to send an OPTIONS. We don't
consider a failure to qualify a UDP client an "ERROR", why should a TCP/TLS
client be treated any differently?
A config file for res_pjproject has bene added (pjproject.conf) and a new
log_mappings object allows mapping pjproject levels to Asterisk levels
(or nothing). The defaults if no pjproject.conf file is found are the same
as those that were hard-coded into res_pjproject initially: 0,1 = LOG_ERROR,
2 = LOG_WARNING, 3,4,5 = LOG_DEBUG<level>
Change-Id: Iba7bb349c70397586889b8f45b8c3d6c6c8c3898
2016-02-18 10:55 +0000 [f295088764] Alexei Gradinari <alex2grad@gmail.com>
* res_pjsip_outbound_publish: Fix processing 412 response
When Asterisk receives a 412 (Conditional Request Failed) response
it has to recreate publish session.
There is bug in res_pjsip_outbound_publish.c
The function sip_outbound_publish_client_alloc is called with wrong object
while processing 412 (Conditional Request Failed) response.
This patch fixes it.
ASTERISK-25229 #close
Change-Id: I3b62f2debf6bb1e5817cde7b13ea39ef2bf14359
2016-02-18 11:15 +0000 [f1f79812c1] Mark Michelson <mmichelson@digium.com>
* Fix failing threadpool_auto_increment test.
The threadpool_auto_increment test fails infrequently for a couple of
reasons
* The threadpool listener was notified of fewer tasks being pushed than
were actually pushed
* The "was_empty" flag was set to an unexpected value.
The problem is that the test pushes three tasks into the threadpool.
Test expects the threadpool to essentially gather those three tasks, and
then distribute those to the threadpool threads. It also expects that as
the tasks are pushed in, the threadpool listener is alerted immediately
that the tasks have been pushed. In reality, a task can be distributed
to the threadpool threads quicker than expected, meaning that the
threadpool has already emptied by the time each subsequent task is
pushed. In addition, the internal threadpool queue can be delayed so
that the threadpool listener is not alerted that a task has been pushed
even after the task has been executed.
From the test's point of view, there's no way to be able to predict
exactly the order that task execution/listener notifications will occur,
and there is no way to know which listener notifications will indicate
that the threadpool was previously empty.
For this reason, the test has been updated to only check the things it
can check. It ensures that all tasks get executed, that the threads go
idle after the tasks are executed, and that the listener is told the
proper number of tasks that were pushed.
Change-Id: I7673120d74adad64ae6894594a606e102d9a1f2c
2016-02-16 23:37 +0000 [79dc5e2f00] Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
* app_queue: fix Calculate talktime when is first call answered
Fix calculate of average time for talktime is wrong when is completed the
first call beacuse the time for talked would be that call.
ASTERISK-25800 #close
Change-Id: I94f79028935913cd9174b090b52bb300b91b9492
2016-02-17 13:30 +0000 [5a3a857dd6] Richard Mudgett <rmudgett@digium.com>
* cel.c: Fix mismatch in ast_cel_track_event() return type.
The return type of ast_cel_track_event() is not large enough to return all
64 potential bits of the event enable mask. Fortunately, the defined CEL
events do not really need all 64 bits and the return value is only used to
determine if the requested CEL event is enabled.
* Made the ast_cel_track_event() return 0 or 1 only so the return value
can fit inside an int type instead of zero or a truncated 64 bit non-zero
value.
Change-Id: I783d932320db11a95c7bf7636a72b6fe2566904c
2016-02-16 16:37 +0000 [87ab65c557] gtjoseph <george.joseph@fairview5.com>
* res_odbc: Fix exports.in for missing symbols
res_odbc.exports.in was missing a few symbols.
Changed to wildcards.
Change-Id: Ieadd76df24e43ea92577f651d478a0f7b742c30c
2016-02-16 12:20 +0000 [c0f3062031] gtjoseph <george.joseph@fairview5.com>
* res_statsd: Fix exports.in for missing symbols
res_statsd.export.in was missing the _va variations of the log
functions causing Asterisk to crash in res_pjsip if OPTIONAL_API
wasn't enabled.
ASTERISK-25727 #close
Reported-by: Gergely Dömsödi
Change-Id: I395729f9f51bdd33c5ca757f5f96ebedad74077b
2016-02-15 21:31 +0000 [5e848dae7b] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: Add command to export primitive objects
A new command (pjsip export config_wizard primitives) has been added that
will export all the pjsip objects it created to the console or a file
suitable for reuse in a pjsip.conf file.
ASTERISK-24919 #close
Reported-by: Ray Crumrine
Change-Id: Ica2a5f494244b4f8345b0437b16d06aa0484452b
2016-02-15 15:37 +0000 [34c64707d1] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_caller_id: Fix segfault when replacing rpid or pai header
If the PJSIP_HEADER dialplan function adds a PAI or RPID header and send_rpid
or send_pai is set, res_pjsip_caller_id attemps to retrieve, parse and modify
the header added by the dialplan function. Since the header added by the
dialplan function is generic string, there are no virtual functions to parse
the uri and we get a segfault when we try. Since the modify, was really only
an overwrite, we now just delete the old header if it was type PJSIP_H_OTHER
and recreate it.
This raises a question for another time though: What should happen with
duplicate headers? Right now res_pjsip_header_funcs doesn't check for dups
so if it's session supplement is loaded after res_pjsip_caller_id's (or any
other module that adds headers), there'll be dups in the message.
ASTERISK-25337 #close
Change-Id: I5e296b52d30f106b822c0eb27c4c2b0e0f71c7fa
2016-02-15 13:08 +0000 [ebe167f792] Mark Michelson <mmichelson@digium.com>
* Fix creation race of contact_status structures.
It is possible when processing a SIP REGISTER request to have two
threads end up creating contact_status structures in sorcery.
contact_status is created using a "find or create" function. If two
threads call into this at the same time, each thread will fail to find
an existing contact_status, and so both will end up creating a new
contact status.
During testing, we would see sporadic failures because the
PJSIP_CONTACT() dialplan function would operate on a different
contact_status than what had been updated by res_pjsip/pjsip_options.
The fix here is two-fold:
1) The "find or create" function for contact_status now has a lock
around the entire operation. This way, if two threads attempt the
operation simultaneously, the first to get there will create the object,
and the second will find the object created by the first thread.
2) res_sorcery_memory has had its create callback updated so that it
will not allow for objects with duplicate IDs to be created.
Change-Id: I55b1460ff1eb0af0a3697b82d7c2bac9f6af5b97
2016-02-15 12:52 +0000 [1c4f2a920d] Joshua Colp <jcolp@digium.com>
* res_pjsip_pubsub: Move where the subscription is stored to after initialized.
A problem arose when testing the AMI subscription listing actions where it
was possible for a subscription that had not been fully initialized to be
listed. This was problematic as the underlying listing code would crash.
This change makes it so the subscription tree is fully set up before it is
added to the list of subscriptions. This ensures that when the listing actions
get the subscription it is valid.
ASTERISK-25738 #close
Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48
2015-02-20 20:51 +0000 [ac00c6bc2d] Corey Farrell <git@cfware.com>
* main/asterisk.c: Reverse #if statement in listener() to fix code folding.
listener() opens the same code block in two places (#if and #else). This
confuses some folding editors causing it to think that an extra code block
was opened. Folding in 'geany' causes all code after listener() to be
folded as if it were part of that procedure.
ASTERISK-24813 #close
Change-Id: I4b8c766e6c91e327dd445e8c18f8a6f268acd961
2016-02-09 17:34 +0000 [b1b797e0e7] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Refactor load_module/unload_module
load_module was just too hairy with every step having to clean up all
previous steps on failure.
Some of the pjproject init calls have now been moved to a separate
load_pjsip function and the unload_pjsip function was enhanced to clean
up everything if an error happened at any stage of the load process.
In the process, a bunch of missing pj_shutdowns, serializer_pool_shutdowns
and ast_threadpool_shutdowns were also corrected.
Change-Id: I5eec711b437c35b56605ed99537ebbb30463b302
2016-02-09 22:42 +0000 [20e9792fbc] Badalyan Vyacheslav <slavon.net@gmail.com>
* Resources/res_phoneprov: fix memory leak and heap-use-after-free
* heap-use-after-free happens when we free "cfg"
but then use "value" which refers to it
* A memory leak occurs because in some cases
it is not released "defaults"
ASTERISK-25721 #close
Reported by: Badalyan Vyacheslav
Tested by: Badalyan Vyacheslav
Change-Id: I3807d3f4726df6864430ec144cf6265d3f538469
2016-02-11 11:21 +0000 [962a9d61f8] Etienne Lessard (license #6394)
* func_iconv: Ensure output strings are properly terminated.
ASTERISK-25272 #close
Reported by: Etienne Lessard
patches:
AST-25272.patch submitted by Etienne Lessard (license #6394)
Change-Id: Id75ad202300960a1e91afe15e319d992936ecc17
2016-02-10 16:16 +0000 [c1bf014ea0] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Handle pjsip_dlg_create_uas deprecation
Pjproject has deprecated pjsip_dlg_create_uas in 2.5 and replaced it with
pjsip_dlg_create_uas_and_inc_lock which, as the name implies, automatically
increments the lock on the returned dialog. To account for this, configure.ac
now detects the presence of pjsip_dlg_create_uas_and_inc_lock and res_pjsip.c
has an #ifdef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK to decide whether to use
the original call or the new one. If the new one was used, the ref count is
decremented before returning.
ASTERISK-25751 #close
Reported-by Josh Colp
Change-Id: I1be776b94761df03bd0693bc7795a75682615ca8
2016-02-09 23:40 +0000 [bd07b6f0dd] Badalyan Vyacheslav <slavon.net@gmail.com>
* Build: Added testing compiler to support the system sanitizes
In older versions of the compiler was not sanitizes.
Compilers other than GCC can not support the Usan and TSAN
or have other options for *FLAGS.
ASTERISK-25767 #close
Reported by: Badalyan Vyacheslav
Tested by: Badalyan Vyacheslav
Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916
2016-02-09 20:57 +0000 [e9e896abd1] Badalyan Vyacheslav <v.badalyan@open-bs.ru>
* Build: Fix menuselect USAN conflicts
USAN can be used together with other sanitizers.
Reported by: Badalyan Vyacheslav
Tested by: Badalyan Vyacheslav
Change-Id: I3bffa350d70965c3026651dba3a12414d0aaa45f
2016-02-09 14:21 +0000 [93e8ed0154] Corey Farrell <git@cfware.com>
* Simplify and fix conditional in FD_SET.
FD_SET contains a conditional statement to protect against buffer
overruns. The statement was overly complicated and prevented use
of the last array element of ast_fdset. We now just verify the fd
is less than ast_FDMAX.
Change-Id: I41895c0b497b052aef5bf49d75c817c48b326f40
2016-02-09 07:11 +0000 [a7c8d4cd6b] Joshua Colp <jcolp@digium.com>
* tests/test_sorcery_memory_cache_thrash: Improve termination process.
When terminating the threads thrashing a sorcery memory cache each
would be told to stop and then we would wait on them. During at
least one thrashing test this was problematic due to the specific
usage pattern in use. It would take some time for termination of the
thread to occur.
This would occur due to contention between the threads retrieving
and the threads updating the cache. As the retrieving threads are
given priority it may be some time before the updating threads
are able to proceed.
This change makes it so all threads are told to stop and then each
are joined to ensure they stop. This way all the threads should
stop at around the same time instead of waiting for one to stop,
the next to stop, then the next, and so on. As a result of this
the execution time for each thrash test is much closer to their
expected value than previously seen as well.
Change-Id: I04a53470b0ea4170b8819180b0bd7475f3642827
2016-01-29 17:56 +0000 [2451d4e455] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Fix infinite recursion when loading transports from realtime
Attempting to load a transport from realtime was forcing asterisk into an
infinite recursion loop. The first thing transport_apply did was to do a
sorcery retrieve by id for an existing transport of the same name. For files,
this just returns the previous object from res_sorcery_config's internal
container, if any. For realtime, the res_sourcery_realtime driver looks in the
database and finds the existing row but now it has to rehydrate it into a
sorcery object which means calling... transport_apply. And so it goes.
The main issue with loading from realtime (apart from the loop) was that
transport stores structures and pointers directly in the ast_sip_transport
structure instead of the separate ast_transport_state structure. This patch
separates those items into the ast_sip_transport_state structure. The pattern
is roughly the same as res_pjsip_outbound_registration.
Although all current usages of ast_sip_transport and ast_sip_transport_state
were modified to use the new ast_sip_get_transport_state API, the original
items are left in ast_sip_transport and kept updated to maintain ABI
compatability for third-party modules. They are marked as deprecated and
noted that they're now in ast_sip_transport_state.
ASTERISK-25606 #close
Reported-by: Martin Moučka
Change-Id: Ic7a836ea8e786e8def51fe3f8cce855ea54f5f19
2016-01-25 17:36 +0000 [6f978fbfe5] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Only use b_profile options from the conference.
A user cannot set new bridge options after the conference is created by
the first user. Attempting to do so is documented as undefined behavior.
This patch ensures that the bridge profile options used are from the
conference and not what a subsequent user may have tried to set.
Change-Id: I1b6383eba654679e5739d5a8de98199cf074a266
2016-02-05 10:29 +0000 [ec8fd6714d] gtjoseph <george.joseph@fairview5.com>
* chan_misdn: Fix a few issues causing compile errors
Change-Id: I54b48c24d7ca88ed80496fdfd142d08772a7ab98
2016-02-04 16:17 +0000 [6a799cd78f] Mark Michelson <mmichelson@digium.com>
* Check for OpenSSL defines before trying to use them.
The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior
to OpenSSL version 1.0.1. A recent commit attempts to, by default, set
these options, which can cause problems on systems with older OpenSSL
installations.
This commit adds a configure script check for those defines and will not
attempt to make use of those if they do not exist. We will print a
warning urging the user to upgrade their OpenSSL installation if those
defines are not present.
Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d
2016-02-03 14:25 +0000 [953d1cc11a] gtjoseph <george.joseph@fairview5.com>
* pjsip/alembic: Add missing columns to system and registration
ps_systems needed disable_tcp_switch
ps_registrations needed line and endpoint
ASTERISK-25737 #close
Change-Id: Iaf9c2d69e62243d9fa53104c28c5339c47d4ac19
2016-02-04 11:39 +0000 [23829b3253] Mark Michelson <mmichelson@digium.com>
* res_stasis_device_state: Fix refcounting error.
Device state subscription lifetimes were governed by when the
subscription was established and unsubscribed from. However, it is
possible that at the time of unsubscription, there could be device state
events still in flight. When those device state events occur, the device
state callback could attempt to dereference a freed pointer. Crash.
This change ensures that the lifetime of the device state subscription
does not end until the underlying stasis subscription has confirmed that
its final message has been sent.
Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2
2016-01-27 10:44 +0000 [4e8e6d3922] Sean Bright <sean.bright@gmail.com>
* res_rtp_asterisk: Allow ICE host candidates to be overriden
During ICE negotiation the IPs of the local interfaces are sent to the remote
peer as host candidates. In many cases Asterisk is behind a static one-to-one
NAT, so these host addresses will be internal IP addresses.
To help in hiding the topology of the internal network, this patch adds the
ability to override the host candidates by matching them against a
user-defined list of replacements.
Change-Id: I1c9541af97b83a4c690c8150d19bf7202c8bff1f
2015-12-07 12:46 +0000 [c6b1b2b1c8] Richard Mudgett <rmudgett@digium.com>
* AST-2016-003 udptl.c: Fix uninitialized values.
Sending UDPTL packets to Asterisk with the right amount of missing
sequence numbers and enough redundant 0-length IFP packets, can make
Asterisk crash.
ASTERISK-25603 #close
Reported by: Walter Doekes
ASTERISK-25742 #close
Reported by: Torrey Searle
Change-Id: I97df8375041be986f3f266ac1946a538023a5255
2016-02-03 12:05 +0000 [f8acadde2c] Joshua Colp <jcolp@digium.com>
* AST-2016-001 http: Provide greater control of TLS and set modern defaults.
This change exposes the configuration of various aspects of the TLS
support and sets the default to the modern standards.
The TLS cipher is now set to the best values according to the
Mozilla OpSec team, different TLS versions can now be disabled, and
the cipher order can be forced to be that of the server instead of
the client.
ASTERISK-24972 #close
Change-Id: I0a10f2883f7559af5e48dee0901251dbf30d45b8
2015-09-28 17:07 +0000 [3c81a052c8] Richard Mudgett <rmudgett@digium.com>
* AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow.
Setting the sip.conf timert1 value to a value higher than 1245 can cause
an integer overflow and result in large retransmit timeout times. These
large timeout times hold system file descriptors hostage and can cause the
system to run out of file descriptors.
NOTE: The default sip.conf timert1 value is 500 which does not expose the
vulnerability.
* The overflow is now detected and the previous timeout time is
calculated.
ASTERISK-25397 #close
Reported by: Alexander Traud
Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290
2016-02-03 14:07 +0000 [2a6ee8caeb] gtjoseph <george.joseph@fairview5.com>
* logging: Remove/fix some message annoyances
test_dlinklists doesn't need to NOTICE everyone that every macro worked.
res_phoneprov doesn't need to VERBOSE everyone that a phoneprov extension or
provider was registered.
res_odbc was missing a newline at the end of one message.
Change-Id: I6c06361518ef3711821795e535acd439782a995e
2016-02-02 10:52 +0000 [32fc784284] Alexei Gradinari License #5691
* res_sorcery_realtime: Fix regex regression.
A regression was introduced where searching for realtime PJSIP objects
by regex by starting the regex with a leading "^" would cause no items
to be returned.
This was due to a change which attempted to drop the requirement for a
leading "^" to be present due to how some CLI commands formulate their
regexes. However, the change, rather than simply eliminating the
requirement, caused any regexes that did begin with "^" to end up not
returning the expected results.
This change fixes the problem by inspecting the regex and formulating
the realtime query differently depending on if it begins with "^".
ASTERISK-25702 #close
Reported by Nic Colledge
Patches:
realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691
Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693
2016-02-02 04:05 +0000 [0405c31756] Karsten Wemheuer <kwe-digium@iptam.com>
* res_xmpp: Does not connect in component mode
The module res_xmpp does not accept usernames in the form used in component
mode (XEP-0114). In component mode there is no @something in the name.
In component mode the connection is now not dropped anymore.
If the xmpp server sends out a "stream" tag before handshake is finished,
the connection gets dropped in res_xmpp. Now this tag will be ignored and
the connection will be established.
After connecting there will be an exchange of presence states. This does
not work as expected in component mode. The responsible function
"xmpp_pak_presence" is left before the states get sent out. Sending
presence states in component mode is now moved to the top of the function.
ASTERISK-25735 #close
Change-Id: I70e036f931c3124ebb2ad1e56f93ed35cfdd9d5c
2016-02-01 13:04 +0000 [8804d0973c] gtjoseph <george.joseph@fairview5.com>
* build_system: Fix some warnings highlighted by clang
Fix some warnings found with clang.
Change-Id: I5195b6189b148c2ee3ed4a19d015a6d4ef3e77bd
2016-02-01 13:16 +0000 [109b0aff6b] gtjoseph <george.joseph@fairview5.com>
* res/Makefile: Fix bug in "clean" target for ari
The "clean" target was attempting to clean res/ari from inside
the res directory which doesn't remove anything. Removed the res/
prefix.
Change-Id: Ib1a518d54efa81b9fd5a42742d43cc3767435bf6
2016-01-31 20:13 +0000 [a85fab7c44] gtjoseph <george.joseph@fairview5.com>
* pjsip/alembic: Fix definition of qualify_timeout
A recent commit set qualify_timeout to Decimal which isn't supported.
This path corrects it to Float.
Change-Id: I038f5274ba8cb60f8518a5845ce448d49306aadf
2016-01-29 07:39 +0000 [aa9348ab9a] Stefan Engström <stefanen@kth.se>
* chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip.
When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a)
AMI action: SIPnotify or b) cli command: sip notify <cmd> <peer>, I expect
asterisk to include the same value for its own ip in both cases a) and b),
but it seems a) produces a contact header like Contact:
<sip:asterisk@192.168.1.227:8060> whereas b) produces a contact header like
<sip:asterisk@127.0.0.1:8060>. 0.0.0.0:8060 is my udpbindaddr in sip.conf
My guess is that manager_sipnotify should call
ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does,
because after applying this patch, both cases a) and b) produce
the contact header that I expect: <sip:asterisk@192.168.1.227:8060>
Reported by: Stefan Engström
Tested by: Stefan Engström
Change-Id: I86af5e209db64aab82c25417de6c768fb645f476
2015-12-23 15:07 +0000 [65bd4fcc3f] Mark Michelson <mmichelson@digium.com>
* res_odbc: Remove connection management
Asterisk by default will create a single database connection and share
it among all threads that attempt to access the database. In previous
versions of Asterisk, this was tolerable, because the most used channel
driver, chan_sip, mostly accessed the database from a single thread.
With PJSIP, however, many threads may be attempting to perform database
operations, and there is the potential for many more database accesses,
meaning the concurrency is a horrible bottleneck if only one connection
is shared.
Asterisk has a connection pooling facility built into it, but the
implementation has flaws. For one, there is a strict limit on the number
of simultaneous connections that could be made to the database. Anything
beyond the maximum would result in a failed operation. Attempting to
predict what the maximum should be is nearly impossible even for someone
intimately familiar with Asterisk's threading model. In addition, use of
transactions in the dialplan can cause some severe bugs if connection
pooling is enabled.
This commit seeks to fix the concurrency problem by removing all
connection management code from Asterisk and leaving that to the
underlying unixODBC code instead. Now, Asterisk does not share a single
connection, nor does it try to maintain a connection pool. Instead, all
Asterisk ever does is request a connection from unixODBC and allow
unixODBC to either allocate those connections or retrieve them from a
pool.
Doing this has a bit of a ripple effect. For one, since connections are
not long-lived objects, several of the safeguards that previously
existed have been removed. We don't have to worry about trying to use a
connection that has gone stale. In every case, when we request a
connection, it has just been made and we don't need to perform any
sanity checks to be sure it's still active.
Another major player affected by this change is transactions.
Transactions and their respective connections were so tightly coupled
that it was almost pornographic. This code change moves
transaction-related code to its own file separate from the core ODBC
functionality. This way, the core of ODBC does not even have to know
that transactions exist.
In making this large change, I had to look at a lot of code and
understand it. When making this change, I discovered several places
where the behavior is definitely not ideal, but it seemed outside the
scope of this change to be fixing it. Instead, any place where I saw
some sort of room for improvement has had a XXX comment added explaining
what could be altered to improve it.
Change-Id: I37a84def5ea4ddf93868ce8105f39de078297fbf
2016-01-28 12:44 +0000 [2a9e623ff9] Richard Mudgett <rmudgett@digium.com>
* config_options.c: Fix warning message wording.
Change-Id: I915ea437936320393afde0e7552cf0a980a6b2e4
2016-01-25 17:34 +0000 [ed3c9c1512] Richard Mudgett <rmudgett@digium.com>
* app_confbridge.c: Replace inlined code with existing function.
Change-Id: Ida5594e9f8d7c1fc18eeb733a11f8fb96326da51
2016-01-25 16:05 +0000 [1d0abf86e7] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Add ability to get the muted conference state.
* Added CONFBRIDGE_INFO(muted,) for querying the muted conference state.
* Added Muted header to AMI ConfbridgeListRooms action response list
events to indicate the muted conference state.
* Added Muted column to CLI "confbridge list" output to indicate the muted
conference state and made the locked column a yes/no value instead of a
locked/unlocked value.
ASTERISK-20987
Reported by: hristo
Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1
2016-01-26 17:59 +0000 [f0d40afa69] Richard Mudgett <rmudgett@digium.com>
* app_confbridge.c: Update CONFBRIDGE and CONFBRIDGE_INFO documentation.
Change-Id: Ic1f9e22ba1f2ff3b3f5cb017c5ddcd9bd48eccc7
2016-01-25 15:48 +0000 [3e51e5c7fd] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Make non-admin users join a muted conference muted.
ASTERISK-20987 #close
Reported by: hristo
Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38
2016-01-27 13:02 +0000 [9da18af992] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Add res_pjproject dependency to UPGRADE.txt and samples
Since res_pjsip now depends on res_pjproject, this is now mentioned
in UPGRADE.txt and the basic-pbx modules.conf has been updated.
Change-Id: I42826597d5e10f08e518208860c44c96e52f1b2d
2016-01-27 10:29 +0000 [aee8448bc2] gtjoseph <george.joseph@fairview5.com>
* build_system: Prevent goals needing makeopts from running when it's missing
The Makefile only optionally includes makeopts so when goals like uninstall that
dont depend on anything else are run after a distclean, rules like
'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts
to remove everything in the root directory.
Although there's a rule defined for makeopts which prints a message and does
an 'exit 1', since '-include makepopts' was specified (with the -), the exit
was ignored letting the rest of the rules run.
This patch makes makeopts required unless the goal has the string 'clean' in it.
ASTERISK-25730 #close
Reported-by: George Joseph
Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7
2016-01-25 09:35 +0000 [f22074e5d9] Joshua Colp <jcolp@digium.com>
* config: Allow options to register when documentation is unavailable.
The config options framework is strict in that configuration options must
be documented unless XML documentation support is not available. In
practice this is useful as it ensures documentation exists however in
off-nominal cases this can cause strange problems.
If it is expected that a config option has a non-zero or non-empty
default value but the config option documentation is unavailable
this reasonable expectation will not be met. This can cause obscure
crashes and weirdness depending on how the code handles it.
This change tweaks the behavior to ensure that the config option
is still allowed to register, apply default values, and be set when
devmode is not enabled. If devmode is enabled then the option can
NOT be set.
This also does not remove the initial documentation error message that
is output on load when registering the configuration option.
ASTERISK-25725 #close
Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8
2016-01-25 10:23 +0000 [4a3275abb9] Mark Michelson <mmichelson@digium.com>
* Stasis: Use custom structure when setting variables.
A recent change to queue channel variable setting to the Stasis control
queue caused a regression. When setting channel variables, it is
possible to give a NULL channel variable value in order to unset the
variable (i.e. remove it from the channel variable list). The change
introduced a call to ast_variable_new(), which is not tolerant of NULL
channel variable values.
This new change switches from using ast_variable to using a custom
channel variable struct that is lighter weight and NULL value-tolerant.
Change-Id: I784d7beaaa3c036ea936d103e7caf0bb1562162d
2016-01-25 16:56 +0000 [b2c8a99f9e] Rusty Newton <rnewton@digium.com>
* sounds/Makefile: Incremented core and extra sounds versions to 1.5
Core and extra sounds 1.5 was recently released! The tarballs contain
change descriptions however I figure more people will see this one so
I'll try to be a bit detailed. Approximately 60 sounds were moved from Extra
to Core for en, en_GB, fr and added for languages that didn't already
have Extra sound sets (it,ja,ru).
In addition all of the English and Russian sounds have been completely
re-recorded.
Sounds moved and added:
activated,added,all-circuits-busy-now,astcc-followed-by-pound
at-tone-time-exactly,call-forwarding,call-fwd-no-ans,call-fwd-on-busy
,call-fwd-unconditional,calling,call-waiting,cancelled,
cannot-complete-as-dialed,check-number-dial-again,conf-full,de-activated
,disabled,do-not-disturb,enabled,enter-num-blacklist,entr-num-rmv-blklist
,extension,feature-not-avail-line,for,from-unknown-caller,goodbye,hello
,if-correct-press,im-sorry,info-about-last-call,is,is-in-use,is-set-to
,location,number,number-not-answering,num-was-successfully,one-moment-please
,please-try-again,pls-hold-while-try,pls-try-call-later,pm-invalid-option
,privacy-to-blacklist-last-caller,removed,simul-call-limit-reached
,something-terribly-wrong,sorry,sorry-youre-having-problems,speed-dial
,speed-dial-empty,telephone-number,time,to-call-this-number,to-extension
,to-listen-to-it,to-rerecord-it,unidentified-no-callback,with,you-entered
,your
There were also a few random fixes here and there to file names for a few
of the languages.
ASTERISK-25068 #close
Change-Id: I2b594344ec585d7dfd922b40c1af43b1508828b3
2016-01-25 16:51 +0000 [8261bda1bf] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Prevent crash from AMI command on freed subscription.
A test recently uncovered that running an ill-timed AMI command to show
inbound subscriptions could cause a crash since Asterisk will try to
operate on a freed subscription.
The fix for this is to remove the subscription tree from the list of
subscriptions at the time that we are sending our final NOTIFY request
out. This way, as the subscription is in the process of dying, it is
inaccessible from AMI.
Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23
2016-01-25 11:03 +0000 [a6823bb0c4] Corey Farrell <git@cfware.com>
* chan_sip: Fix buffer overrun in sip_sipredirect.
sip_sipredirect uses sscanf to copy up to 256 characters to a stacked buffer
of 256 characters. This patch reduces the copy to 255 characters to leave
room for the string null terminator.
ASTERISK-25722 #close
Change-Id: Id6c3a629a609e94153287512c59aa1923e8a03ab
2016-01-22 15:08 +0000 [1003c2eb05] Mark Michelson <mmichelson@digium.com>
* Stasis: Fix potential memory leak of control data.
When queuing tasks onto the Stasis control queue, you can pass an
arbitrary data pointer and a function to free that data. All ARI
commands that use the Stasis control queue made the assumption that the
destructor function would be called in all paths, whether the task was
queued successfully or not. However, this was not correct. If a task was
queued onto a control structure that was already completed, the
allocated data would not be freed properly.
This patch corrects this by making sure that all return paths call the
data destructor.
Change-Id: Ibf06522094f8e5c4cce652537dc5d7222b1c4fcb
2016-01-21 10:58 +0000 [eedd77fda0] Mark Michelson <mmichelson@digium.com>
* Stasis: Use control queue to prevent crash.
A crash occurred when attempting to set a channel variable on a channel
that had already been hung up. This is because there is a small window
between when a control is grabbed and when the channel variable is set
that the channel can be hung up.
The fix here is to queue the setting of the channel variable onto the
control queue. This way, the manipulation of the channel happens in a
thread where it is safe to be done.
In this change, I also noticed that the setting of bridge roles on
channels was being done outside of the control queue, so I also changed
those operations to be done in the control queue.
ASTERISK-25709 #close
Reported by Mark Michelson
Change-Id: I2a0a4d51bce6fba6f1d9954e40935e42f366ea78
2016-01-22 11:48 +0000 [1c95b211a0] Richard Mudgett <rmudgett@digium.com>
* logger.c: Fix buffer overrun found by address sanitizer.
The null terminator of the tail struct member was not being allocated
when no logger.conf config file is installed.
ASTERISK-25714 #close
Reported by: Badalian Vyacheslav
Change-Id: I45770fdd08af39506a3bc33ba279c4f16e047a30
2016-01-21 16:40 +0000 [6ff945ab87] Corey Farrell <git@cfware.com>
* Build System: Add support for checking alembic branches.
* Add 'check-alembic' target to root Makefile.
* Create build_tools/make_check_alembic to do the actual checks.
ASTERISK-25685
Change-Id: Ibb3cae7d1202ac23dc70b0f3b5801571ad46b004
2016-01-19 18:20 +0000 [02035212de] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case.
ASTERISK-25712 #close
Reported by: Richard Mudgett
Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f
2016-01-18 03:49 +0000 [c68c66c61f] Diederik de Groot <ddegroot@talon.nl>
* main/asterisk.c: ast_el_read_char
Make sure buf[res] is not accessed at res=-1 (buffer underrun).
Address Sanitizer will complain about this quite loudly.
ASTERISK-24801 #close
Change-Id: Ifcd7f691310815a31756b76067c56fba299d3ae9
2016-01-13 16:49 +0000 [f87c3275cc] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Add CLI "pjsip dump endpt [details]"
Dump the res_pjsip endpt internals.
In non-developer mode we will not document or make easily accessible the
"details" option even though it is still available. The user has to know
it exists to use it. Presumably they would also be aware of the potential
crash warning below.
Warning: PJPROJECT documents that the function used by this CLI command
may cause a crash when asking for details because it tries to access all
active memory pools.
Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb
2016-01-18 17:16 +0000 [46b2de55f9] Matt Jordan <mjordan@digium.com>
* funcs/func_cdr: Correctly report high precision values for duration and billsec
When CDRs were refactored, func_cdr's ability to report high precision values
for duration and billsec (the 'f' option) was broken. This was due to func_cdr
incorrectly interpreting the duration/billsec values provided by the CDR engine
in milliseconds, as opposed to seconds. Since the CDR engine only provides
duration and billsec in seconds, and does not expose either attribute with
sufficient precision to merely pass back the underlying value, this patch fixes
the bug by re-calculating duration and billsec with microsecond precision based
on the start/answer/end times on the CDR.
ASTERISK-25179 #close
Change-Id: I8bc63822b496537a5bf80baf6102c06206bee841
2016-01-18 19:20 +0000 [137fe5ae01] gtjoseph <george.joseph@fairview5.com>
* res_pjproject: Add module providing pjproject logging and utils
res_pjsip_log_forwarder has been renamed to res_pjproject
and enhanced as follows:
As a follow-on to the recent 'Add CLI "pjsip show buildopts"' patch,
a new ast_pjproject_get_buildopt function has been added. It
allows the caller to get the value of one of the buildopts.
The initial use case is retrieving the runtime value of
PJ_MAX_HOSTNAME to insure we don't send a hostname greater
than pjproject can handle. Since it can differ between
the version of pjproject that Asterisk was compiled against
and the version of pjproject that Asterisk is running against,
we can't use the PJ_MAX_HOSTNAME macro directly in Asterisk
source code.
Change-Id: Iab6e82fec3d7cf00c1cf6185c42be3e7569dee1e
2016-01-19 17:15 +0000 [b5c13c1545] Joshua Colp <jcolp@digium.com>
* test_threadpool: Wait for each task to complete and fix memory leak.
This change makes the thread_timeout_thrash unit test wait for
each task to complete. This fixes the problem where the test would
prematurely end when all threads were gone and a new one had to be
started to handle the last task. It also increases the thrasing as
it is now more likely for each task to encounter the above scenario.
This also fixes a memory leak where the data for each task was not
being freed.
ASTERISK-25611 #close
Change-Id: I5017d621a4dc911f509074c16229b86bff2fb3c6
2016-01-18 19:44 +0000 [0ab89182d9] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Increase CLI "core ping taskprocessor" timeout.
Change-Id: I4892d6acbb580d6c207d006341eaf5e0f8f2a029
2016-01-18 19:43 +0000 [a2a8ea3330] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Fix some taskprocessor unrefs.
You have to call ast_taskprocessor_unref() outside of the taskprocessor
implementation code. Taskprocessor use since v12 has become more
transient than just the singleton uses in earlier versions.
Change-Id: If7675299924c0cc65f2a43a85254e6f06f2d61bb
2016-01-19 13:44 +0000 [d604a9afc8] Richard Mudgett <rmudgett@digium.com>
* Fix alembic branches on v13.
Change-Id: I313449b609ede18ad1e1763a655dd23b9210a8e0
2016-01-18 18:45 +0000 [a0c79f3a4f] gtjoseph <george.joseph@fairview5.com>
* pjsip_loging_refactor: Rename res_pjsip_log_forwarder to res_pjproject
Change-Id: I5387821f29e5caa0cba0b7d62b0fc0d341e7e20b
2016-01-14 09:26 +0000 [018ccf680b] Rusty Newton <rnewton@digium.com>
* func_channel: Add help text for undocumented CHANNEL function arguments
Adding help text documentation for:
* hangupsource
* appname
* appdata
* exten
* context
* channame
* uniqueid
* linkedid
ASTERISK-24097 #close
Reported by: Steven T. Wheeler
Tested by: Rusty Newton
Change-Id: Ib94b00568b0433987df87d5b67ea529b5905754d
2016-01-16 13:18 +0000 [5644bca9f9] Daniel Journo <dan@keshercommunications.com>
* Update version number in features.conf.sample
Update the version number in the comments from Asterisk 12 to Asterisk 12+
Change-Id: Ie692ac8cda3c993c3bf10f27f51a1cca3317ec7b
2016-01-15 19:52 +0000 [3f5f30cf82] Corey Farrell <git@cfware.com>
* main/config: Clean config maps on shutdown.
ASTERISK-25700 #close
Change-Id: I096da84f9c62c6095f68bcf98eac4b7c7868e808
2016-01-14 14:42 +0000 [660fedecb7] Kevin Harwell <kharwell@digium.com>
* bridge_basic: don't cache xferfailsound during an attended transfer
The xferfailsound was read from the channel at the beginning of the transfer,
and that value is "cached" for the duration of the transfer. Therefore, changing
the xferfailsound on the channel using the FEATURE() dialplan function does
nothing once the transfer is under way.
This makes it so the transfer code instead gets the xferfailsound configuration
options from the channel when it is actually going to be used.
This patch also fixes a potential memory leak of the props object as well as
making sure the condition variable gets initialized before being destroyed.
ASTERISK-25696 #close
Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4
2015-07-10 10:37 +0000 [9cda1de34d] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Simplify ast_taskprocessor_get() return code.
Change-Id: Id5bd18ef1f60ef8be453e677e98478298358a9d1
2016-01-13 18:20 +0000 [a79af2b312] Richard Mudgett <rmudgett@digium.com>
* astmm.c: Add more stats to CLI "memory show" commands.
* Add freed regions totals to allocations and summary.
* Add totals for all allocations and not just the selected allocations.
Change-Id: I61d5a5112617b0733097f2545a3006a344b4032a
2016-01-14 16:00 +0000 [83feb7db3b] Kevin Harwell <kharwell@digium.com>
* bridge_basic: don't play an attended transfer fail sound after target hangs up
If the attended transfer destination answers (picks call up or goes to
voicemail) and then hangs up on the transferer then transferer hears the
fail sound.
This patch makes it so the fail sound is not played when the transfer
destination/target hangs up after answering.
ASTERISK-25697 #close
Change-Id: I97f142fe4fc2805d1a24b7c16143069dc03d9ded
2016-01-14 13:22 +0000 [935d641f3b] Mark Michelson <mmichelson@digium.com>
* Remove res/ari/* content during 'make clean'.
'make clean' and 'make distclean' can leave behind .o files in the
res/ari/ directory. One observed consequence of this is that running
Asterisk with MALLOC_DEBUG can cause Asterisk to crash immediately on
startup sometimes.
By ensuring that we are making a clean build, we can be sure that stale
files are not being included in the build and causing problems when
build options should have caused files to be re-built.
ASTERISK-25683 #close
Reported by yaron nahum
Change-Id: I1f48baa904d2468eddeefb42ee68a56af7adc7b7
2016-01-13 15:58 +0000 [46f21df302] Daniel Journo <dan@keshercommunications.com>
* pjsip/alembic: Fix qualify_timeout column definition
Corrects the qualify_timeout column type from Integer to Decimal
ASTERISK-25686 #close
Reported-by: Marcelo Terres
Change-Id: I757d0e3c011ee9be6cd5abd48bc92441a405d3c8
2016-01-12 11:14 +0000 [32b29d7b02] Joshua Colp <jcolp@digium.com>
* app: Queue hangup if channel is hung up during sub or macro execution.
This issue was exposed when executing a connected line subroutine.
When connected or redirected subroutines or macros are executed it is
expected that the underlying applications and logic invoked are fast
and do not consume frames. In practice this constraint is not enforced
and if not adhered to will cause channels to continue when they shouldn't.
This is because each caller of the connected or redirected logic does not
check whether the channel has been hung up on return. As a result the
the hung up channel continues.
This change makes it so when the API to execute a subroutine or
macro is invoked the channel is checked to determine if it has hung up.
If it has then a hangup is queued again so the caller will see it
and stop.
ASTERISK-25690 #close
Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea
2016-01-13 07:20 +0000 [e7cfda0b38] Sean Bright <sean.bright@gmail.com>
* res_musiconhold: Prevent multiple simultaneous reloads.
There are two ways in which the reload() function in res_musiconhold can be
called from the CLI:
* module reload res_musiconhold.so
* moh reload
In the former case, the module loader holds a lock that prevents multiple
concurrent calls, but in the latter there is no such protection.
This patch changes the 'moh reload' CLI command to invoke the module loader
directly, rather than call reload() explicitly.
ASTERISK-25687 #close
Change-Id: I408968b4c8932864411b7f9ad88cfdc7b9ba711c
2016-01-12 14:25 +0000 [5586abc957] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_log_forwarder.c: Add CLI "pjsip show buildopts".
PJPROJECT has a function available to dump the compile time
options used when building the library.
* Add CLI "pjsip show buildopts" command.
* Update contrib/scripts/autosupport to get pjproject information.
Change-Id: Id93a6a916d765b2a2e5a1aeb54caaf83206be748
2016-01-12 10:36 +0000 [4cd58c3b20] Mark Michelson <mmichelson@digium.com>
* res_sorcery_realtime: Remove leading ^ requirement.
res_sorcery_realtime's search-by-regex callback performed a check to
ensure that the passed-in regex began with a caret (^). If it did not,
then no results would be returned.
This callback only started to become used when "like" support was added
to PJSIP CLI commands. The CLI command for listing objects would pass an
empty regex ("") to the sorcery backend if no "like" statement was
present. For most sorcery backends, this resulted in returning all
objects. However, for realtime, this resulted in returning no objects.
This commit seeks to fix the regression by removing the requirement from
res_sorcery_realtime for the passed-in-regex to begin with a caret.
ASTERISK-25689 #close
Reported by Marcelo Terres
Change-Id: I22b4dc5d7f3f11bb29ac2e42ef94682e9bab3b20
2016-01-07 11:57 +0000 [219c204a41] gtjoseph <george.joseph@fairview5.com>
* pjsip_sdp_rtp: Add option endpoint/bind_rtp_to_media_address
On a system with multiple ip addresses in the same subnet, if a
transport is bound to a specific ip address and endpoint/media_address
is set, the SIP/SDP will have the correct address in all fields but
the rtp stream MAY still originate from one of the other ip addresses,
most probably the "primary" ip address. This happens because
res_pjsip_sdp_rtp/create_rtp always calls ast_instance_new with
the "all" ip address (0.0.0.0 or ::).
The new option causes res_pjsip_sdp_rtp/create_rtp to call
ast_rtp_instance_new with the endpoint's media_address (if specified)
instead of the "all" address. This causes the packets to originate from
the specified address.
ASTERISK-25632
ASTERISK-25637
Reported-by: Olivier Krief
Reported-by: Dan Journo
Change-Id: I3dfaa079e54ba7fb7c4fd1f5f7bd9509bbf8bd88
2016-01-10 16:22 +0000 [22801a06ee] Daniel Journo <dan@keshercommunications.com>
* pjsip: Add option global/regcontext
Added new global option (regcontext) to pjsip. When set, Asterisk will
dynamically create and destroy a NoOp priority 1 extension
for a given endpoint who registers or unregisters with us.
ASTERISK-25670 #close
Reported-by: Daniel Journo
Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62
2016-01-08 15:22 +0000 [1600ebca7d] Kevin Harwell <kharwell@digium.com>
* pbx: Deadlock between contexts container and context_merge locks
Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5)
introduced the possibility of a deadlock. Due to the mentioned modifications
ast_change_hints now needs to keep both merge/delete and state callbacks from
occurring while it executes. Unfortunately, sometimes ast_change_hints can be
called with the contexts container locked. When this happens it's possible for
another thread to grab the context_merge_lock before the thread calling into
ast_change_hints does and then try to obtain the contexts container lock. This
of course causes a deadlock between the two threads. The thread calling into
ast_change_hints waits for the other thread to release context_merge_lock and
the other thread is waiting on that one to release the contexts container lock.
Unfortunately, there is not a great way to fix this problem. When hints change,
the subsequent state callbacks cannot run at the same time as a merge/delete,
nor when the usual state callbacks do. This patch alleviates the problem by
having those particular callbacks (the ones run after a hint change) occur in a
serialized task. By moving the context_merge_lock to a task it can now safely be
attempted or held without a deadlock occurring.
ASTERISK-25640 #close
Reported by: Krzysztof Trempala
Change-Id: If2210ea241afd1585dc2594c16faff84579bf302
2016-01-10 17:08 +0000 [0fc3dad965] Corey Farrell <git@cfware.com>
* devicestate: Cleanup engine thread during graceful shutdown.
ASTERISK-25681 #close
Change-Id: I64337c70f0ebd8c77f70792042684607c950c8f1
2016-01-10 13:51 +0000 [f34dd10495] Corey Farrell <git@cfware.com>
* manager: Cleanup manager_channelvars during shutdown.
ASTERISK-25680 #close
Change-Id: I3251d781cbc3f48a6a7e1b969ac4983f552b2446
2016-01-10 13:27 +0000 [1d3a1167fc] Corey Farrell <git@cfware.com>
* res_calendar: Cleanup scheduler context at unload.
ASTERISK-25679 #close
Change-Id: I839159bf6882cccc1b23494c7aa2bc2a2624613f
2016-01-08 11:49 +0000 [3a160cdbf6] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Revert DTLS negotiation changes.
Due to locking issues within pjnath these changes are being
reverted until pjnath can be changed.
ASTERISK-25645
Revert "res_rtp_asterisk.c: Fix DTLS negotiation delays."
This reverts commit 24ae124e4f7310cfa64c187b944b2ffc060da28d.
Change-Id: I2986cfb2c43dc14455c1bcaf92c3804f9da49705
Revert "res_rtp_asterisk: Resolve further timing issues with DTLS negotiation"
This reverts commit 965a0eee46d24321f74c244e23c5a5f45e67e12b.
Change-Id: Ie68fafde27dad4b03cb7a1e27ce2a8502c3f7bbe
2016-01-09 17:57 +0000 [4b10fc9173] gtjoseph <george.joseph@fairview5.com>
* Revert "pjsip_location: Delete contact_status object when contact is deleted"
This reverts commit 0a9941de9d24093b5ff44096d1d7406f29d11e45.
Matt,
This patch causes another problem and should not have been needed.
Before this patch, persistent_endpoint_contact_deleted_observer WAS
deleting the contact_status when ast_sip_location_delete_contact was
called. By deleting it yourself in ast_sip_location_delete_contact
it was gone before the observer could run and the observer therefore
was throwing an error and not sending stasis/AMI/statsd messages.
So, I don't think this was the cause of your original issue. I also
had verified the contact AMI and statsd lifecycle and it was working.
I'll double check now though.
ASTERISK-25675
Reported-by: Daniel Journo
Change-Id: Ib586a6b7f90acb641b0c410f659743ab90e84f1a
2016-01-09 18:04 +0000 [79b4309881] Corey Farrell <git@cfware.com>
* pbx_dundi: Run cleanup on failed load.
During failed startup of pbx_dundi no cleanup was performed. Add a call
to unload_module before returning AST_MODULE_LOAD_DECLINE.
ASTERISK-25677 #close
Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29
2016-01-09 13:28 +0000 [a5406b1f9e] Corey Farrell <git@cfware.com>
* res_crypto: Perform cleanup at shutdown.
This change causes res_crypto to unregister CLI at shutdown while still
preventing the module from being unloaded.
ASTERISK-25673 #close
Change-Id: Ie5d57338dc2752abfc0dd05d0eec86413f2304fc
2016-01-06 19:10 +0000 [cf8e7a580b] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Create human friendly serializer names.
PJSIP name formats:
pjsip/aor/<aor>-<seq> -- registrar thread pool serializer
pjsip/default-<seq> -- default thread pool serializer
pjsip/messaging -- messaging thread pool serializer
pjsip/outreg/<registration>-<seq> -- outbound registration thread pool
serializer
pjsip/pubsub/<endpoint>-<seq> -- pubsub thread pool serializer
pjsip/refer/<endpoint>-<seq> -- REFER thread pool serializer
pjsip/session/<endpoint>-<seq> -- session thread pool serializer
pjsip/websocket-<seq> -- websocket thread pool serializer
Change-Id: Iff9df8da3ddae1132cb2ef65f64df0c465c5e084
2016-01-06 19:09 +0000 [4276f185f0] Richard Mudgett <rmudgett@digium.com>
* Sorcery: Create human friendly serializer names.
Sorcery name formats:
sorcery/<type>-<seq> -- Sorcery thread pool serializer
Change-Id: Idc2e5d3dbab15c825b97c38c028319a0d2315c47
2016-01-06 19:09 +0000 [f02ac1b7f9] Richard Mudgett <rmudgett@digium.com>
* Stasis: Create human friendly taskprocessor/serializer names.
Stasis name formats:
subm:<topic>-<seq> -- Stasis subscription mailbox task processor
subp:<topic>-<seq> -- Stasis subscription thread pool serializer
Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd
2016-01-07 16:15 +0000 [ec1f1c6742] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: New API for human friendly taskprocessor names.
* Add new API call to get a sequence number for use in human friendly
taskprocessor names.
* Add new API call to create a taskprocessor name in a given buffer and
append a sequence number.
Change-Id: Iac458f05b45232315ed64aa31b1df05b875537a9
2016-01-06 17:19 +0000 [d8bc3e0c8b] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Fix CLI "core show taskprocessors" output format.
Update the CLI "core show taskprocessors" output format to not be
distorted because UUID names are longer than previously used taskprocessor
names.
Change-Id: I1a5c82ce3e8f765a0627796aba87f8f7be077601
2016-01-07 21:07 +0000 [2c4b7502de] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Fix CLI "core show taskprocessors" unref.
Change-Id: I1d9f4e532caa6dfabe034745dd16d06134efdce5
2016-01-07 20:44 +0000 [3b33ac7a46] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Sort CLI "core show taskprocessors" output.
Change-Id: I71e7bf57c7b908c8b8c71f1816348ed7c5a5d51e
2016-01-06 19:00 +0000 [0fc32c4dd3] Richard Mudgett <rmudgett@digium.com>
* ccss.c: Replace space in taskprocessor name.
The CLI "core ping taskprocessor" command does not work very
well with taskprocessor names that have spaces in them. You
have to put quotes around the name so using tab completion
becomes awkward.
Change-Id: I29e806dd0a8a0256f4e2e0a7ab88c9e19ab0eda0
2016-01-05 16:54 +0000 [0e0c24ad78] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Add CLI "core ping taskprocessor" missing unlock.
Change-Id: I78247e0faf978bf850b5ba4e9f4933ab3c59d17b
2016-01-07 03:33 +0000 [0f79c8839b] Diederik de Groot <ddegroot@talon.nl>
* main: Use ast_strdup instead of strdup
Fix compile error in main/utils.c because strdup was used in dummy_start
Change-Id: Id61a6cf4f3cbf235450441e10e7da101a6335793
2016-01-07 03:21 +0000 [4285dee778] Diederik de Groot <ddegroot@talon.nl>
* include/asterisk/time.h: Renamed global declaration:tv
Renamed global declaration:tv to dummy_tv_var_for_types,
which would oltherwise cause 'shadow' warnings when 'tv'
was declared as a local variable elsewhere.
Added comment to note that dummy_tv_var_for_types is never
really exported and only used as a place holder.
ASTERISK-25627 #close
Change-Id: I9a6e17995006584f3627efe8988e3f8aa0f5dc28
2016-01-07 15:37 +0000 [96094feab6] Mark Michelson <mmichelson@digium.com>
* PJSIP: Prevent deadlock due to dialog/transaction lock inversion.
A deadlock was observed where the monitor thread was stuck, therefore
resulting in no incoming SIP traffic being processed.
The problem occurred when two 200 OK responses arrived in response to a
terminating NOTIFY request sent from Asterisk. The first 200 OK was
dispatched to a threadpool worker, who locked the corresponding
transaction. The second 200 OK arrived, resulting in the monitor thread
locking the dialog. At this point, the two threads are at odds, because
the monitor thread attempts to lock the transaction, and the threadpool
thread loops attempting to try to lock the dialog.
In this case, the fix is to not have the monitor thread attempt to hold
both the dialog and transaction locks at the same time. Instead, we
release the dialog lock before attempting to lock the transaction.
There have also been some debug messages added to the process in an
attempt to make it more clear what is going on in the process.
ASTERISK-25668 #close
Reported by Mark Michelson
Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a
2016-01-07 09:39 +0000 [52e9de0016] Corey Farrell <git@cfware.com>
* ast_format_cap_append_by_type: Resolve codec reference leak.
This resolves a reference leak caused by ASTERISK-25535. The pointer
returned by ast_format_get_codec is saved so it can be released.
ASTERISK-25664 #close
Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec
2016-01-04 04:26 +0000 [86eae38d7e] Aaron An <anjb@ti-net.com.cn>
* cel/cel_radius: Fix wrong pointer.
The macro ADD_VENDOR_CODE defined in the cel_radius.c should use the parameter
y not the address of y.
I capture the radius UDP packet via tcpdump, and the AV pairs are not correct,
then i review the source code and compare it with cdr/cdr_radius.c. Fix it and
it works.
ASTERISK-25647 #close
Reported by: Aaron An
Tested by: Aaron An
Change-Id: I72889bccd8fde120d47aa659edc0e7e6d4d019f0
2016-01-05 14:52 +0000 [881dc862e0] gtjoseph <george.joseph@fairview5.com>
* asterisk.h: Add ASTERISK_REGISTER_FILE macro
The 11/13 branches and master use 2 different file version macros. 11/13
uses ASTERISK_FILE_VERSION but master uses ASTERISK_REGISTER_FILE. This
means a new file added to 11/13 can't just be cherry-picked to master
because the macro has to be changed.
To make cherry-picking possible, ASTERISK_REGISTER_FILE was added
to asterisk.h as a simple alias for ASTERISK_FILE_VERSION(__FILE__, NULL)
The "$Revision$" tag doesn't do anything since Asterisk moved to git so
just passing NULL as the verison works fine. asterisk.h was also
annotated to deprecate ASTERISK_FILE_VERSION and suggest using
ASTERISK_REGISTER_FILE for all new files.
Finally, 2 recent file additions, pbx_builtins.c and pbx_functions.c,
were modified to use the new macro to make sure it actually worked.
'core show file version' showed the correct output.
Change-Id: I5867ed898818d26ee49bb6e5c7d4c1a45d4789a5
2016-01-05 11:06 +0000 [d228b62fd4] gtjoseph <george.joseph@fairview5.com>
* stasis_cache_pattern: Backport to 13
Somehow stasis_cache_pattern got out of sync between 13 and master
and it was causing duplicate channel message issues in 13 when
related to a specific endpoint. I.E. from statsd,
'endpoints.PJSIP.1174.channels 0|g' was being emitted twice.
Backporting stasis_cache_pattern from master to 13 solved
the issue and running the unit and testsuite tests confirmed
that no new ones were created.
ASTERISK-25317 #close
Change-Id: Ia8707462f62d15eed14541c37f332a7bbbceb548
2016-01-04 20:23 +0000 [e462f0063f] Corey Farrell <git@cfware.com>
* main/pbx: Move hangup handler routines to pbx_hangup_handler.c.
This is the sixth patch in a series meant to reduce the bulk of pbx.c.
This moves hangup handler management functions to their own source.
Change-Id: Ib25a75aa57fc7d5c4294479e5cc46775912fb104
2016-01-04 19:46 +0000 [ab191d124c] Corey Farrell <git@cfware.com>
* main/pbx: Move dialplan application management routines to pbx_app.c.
This is the sixth patch in a series meant to reduce the bulk of pbx.c.
This moves dialplan application management functions to their own source.
Change-Id: I444c10fb90a3cdf9f3047605d6a8aad49c22c44c
2016-01-04 18:20 +0000 [09a9b93896] Corey Farrell <git@cfware.com>
* main/pbx: Move switch routines to pbx_switch.c.
This is the fifth patch in a series meant to reduce the bulk of pbx.c.
This moves ast_switch functions to their own source.
Change-Id: Ic2592a18a5c4d8a3c2dcf9786c9a6f650a8c628e
2016-01-04 18:00 +0000 [c608274a39] Corey Farrell <git@cfware.com>
* main/pbx: Move timing routines to pbx_timing.c.
This is the fourth patch in a series meant to reduce the bulk of pbx.c.
This moves pbx timing functions to their own source.
Change-Id: I05c45186cb11edfc901e95f6be4e6a8abf129cd6
2015-12-29 04:31 +0000 [338a8ffed6] Martin Tomec <tomec.martin@gmail.com>
* app_queue: Add member flag "in_call" to prevent reading wrong lastcall time
Member lastcall time is updated later than member status. There was chance to
check wrapuptime for available member with wrong (old) lastcall time.
New boolean flag "in_call" is set to true right before connecting call, and
reset to false after update of lastcall time. Members with "in_call" set to true
are treat as unavailable.
ASTERISK-19820 #close
Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500
2015-12-28 17:23 +0000 [e13719bff1] Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
* app_queue: Added reason pause of member
In app_queue added value Paused Reason on QueueMemberStatus when a member
on queue is paused and the reason was set.
ASTERISK-25480 #close
Reporte by: Rodrigo Ramírez Norambuena
Change-Id: Ia5db503482f50764c15e2020196c785f59d4a68e
2015-12-30 10:49 +0000 [4ec85a9f07] gtjoseph <george.joseph@fairview5.com>
* voicemail: Move app_voicemail / res_mwi_external conflict to runtime
The menuselect conflict between app_voicemail and res_mwi_external
makes it hard to package 1 version of Asterisk. There no actual
build dependencies between the 2 so moving this check to runtime
seems like a better solution.
The ast_vm_register and ast_vm_greeter_register functions in app.c
were modified to return AST_MODULE_LOAD_DECLINE instead of -1 if there
is already a voicemail module registered. The modules' load_module
functions were then modified to return DECLINE instead of -1 to the
loader. Since -1 is interpreted by the loader as AST_MODULE_LOAD_FAILURE,
the modules were incorrectly causing Asterisk to stop so this needed
to be cleaned up anyway.
Now you can build both and use modules.conf to decide which voicemail
implementation to load.
The default menuselect options still build app_voicemail and not
res_mwi_external but if both ARE built, res_mwi_external will load
first and become the voicemail provider unless modules.conf rules
prevent it. This is noted in CHANGES.
Change-Id: I7d98d4e8a3b87b8df9e51c2608f0da6ddfb89247
2016-01-04 16:22 +0000 [7fdcfd7724] Corey Farrell <git@cfware.com>
* main/pbx: Move variable routines to pbx_variables.c.
This is the third patch in a series meant to reduce the bulk of pbx.c.
This moves channel and global variable routines to their own source.
Change-Id: Ibe8fb4647db11598591d443a99e3f99200a56bc6
2015-12-04 17:22 +0000 [80a8b2a4cd] Richard Mudgett <rmudgett@digium.com>
* app_dial: Immediately exit dial if the caller is already hung up.
If a caller hangs up before dial is executed within an AGI then the AGI
has likely eaten all queued frames before executing the dial in DeadAGI
mode. With the caller hung up and no pending frames from the caller's
read queue, dial would not know that the call has hung up until a called
channel answers. It is rather annoying to whoever just answered the
non-existent call.
Dial should not continue execution in DeadAGI mode, hangup handlers, or
the h exten.
* Added a check early in dial to abort dialing if the caller has hungup.
ASTERISK-25307 #close
Reported by: David Cunningham
Change-Id: Icd1bc0764726ef8c809f76743ca008d0f102f418
2016-01-02 10:26 +0000 [1087b0c6ed] Matt Jordan <mjordan@digium.com>
* main/cdr: Allow setting properties on a finalized CDR if it is the last one
Prior to this patch, we explicitly disallowed setting any properties on a
finalized CDR. This seemed like a good idea at the time; in practice, it was
more restrictive.
There are weird and strange scenarios where setting a property on a finalized
CDR is definitely wrong. For example, we may Fork a CDR, finalizing the
previous one, then change a property. In said case, the old CDR is supposed
to now be 'immutable' (so to speak), and should not be updated. From the
perspective of the code, a forked CDR that is finalized is just finalized.
Hence why we decided these should not be updated.
In practice, it is much more common to want to set a property on a CDR in
the h extension or in a hangup handler. Disallowing a common scenario to make
an esoteric behaviour work isn't good. This patch fixes this by allowing
callers to set a property IF we are the last CDR in the chain. This preserves
the finalized CDR if it was forked, while allowing the more common case to
function.
ASTERISK-25458 #close
Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9
2016-01-02 10:23 +0000 [1f23e65b89] Matt Jordan <mjordan@digium.com>
* main/cdr: Set the end time on a CDR if endbeforehexten is Yes
Prior to this patch, the CDR engine attempted to set the end time on a CDR
that was executing hangup logic and with endbeforehexten set to Yes by
calling a function that inspects the properties on the Party A snapshot to
determine if we are ready to set the end time. That always failed. This is
because a Party A snapshot is not updated for CDRs that are executing hangup
logic with endbeforehexten=Yes.
Instead of calling a function that looks at the Party A snapshot, we just
simply set the end time on the CDR. This is safe to call multiple times, and is
safe to call at this point as we know that (a) we are executing hangup logic,
and (b) we are supposed to set the end time at this point.
ASTERISK-25458
Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3
2015-12-30 20:51 +0000 [2ffade4574] Corey Farrell <git@cfware.com>
* main/pbx: Move custom function routines to pbx_functions.c.
This is the second patch in a series meant to reduce the bulk of pbx.c.
This moves custom function management routines to their own source.
Change-Id: I34a6190282f781cdbbd3ce9d3adeac3c3805e177
2015-12-28 19:18 +0000 [20b8474f20] gtjoseph <george.joseph@fairview5.com>
* main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c
We joked about splitting pbx.c into multiple files but this first step was
fairly easy. All of the pbx_builtin dialplan applications have been moved
into pbx_builtins.c and a new pbx_private.h file was added. load_pbx_builtins()
is called by asterisk.c just after load_pbx().
A few functions were renamed and are cross-exposed between the 2 source files.
Change-Id: I87066be3dbf7f5822942ac1449d98cc43fc7561a
2015-12-24 20:26 +0000 [e4a566918a] Matt Jordan <mjordan@digium.com>
* tests/test_stasis_endpoints: Remove expected duplicate events
The cache_clear test was written to expect duplicate Stasis messages
sent from the technology endpoint to the all caching topic. This patch
fixes the test to no longer expect these duplicate messages.
ASTERISK-25137
Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981
2015-12-28 14:02 +0000 [a280400758] Joshua Colp <jcolp@digium.com>
* test_time: Provide a timeout when waiting.
The test_timezone_watch unit test is written to expect a
condition to be signaled when the inotify daemon thread runs.
There exists a small window where the test_timezone_watch
thread can signal the inotify daemon thread while it is not
reading on the underlying file descriptor. If this occurs
the test_timezone_watch thread will wait indefinitely for a
signal that will never arrive.
This change adds a timeout to the condition so it will return
regardless after a period of time.
Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
2015-05-27 13:22 +0000 [3a1c4885be] gtjoseph <george.joseph@fairview5.com>
* endpoint/stasis: Eliminate duplicate events on endpoint status change
When an endpoint is created, its messages are forwarded to both the tech
endpoint topic and the all endpoints topic. This is done so that various
parties interested in endpoint messages can subscribe to just the tech
endpoint and receive all messages associated with that particular technology,
as opposed to subscribing to the all endpoints topic. Unfortunately, when the
tech endpoint is created, it also forwards all of its messages to the all
topic. This results in duplicate messages whenever an endpoint publishes its
messages.
This patch resolves the duplicate message issue by creating a new function
for Stasis caching topics, stasis_cp_sink_create. In most respects, this acts
as a normal caching topic, save that it no longer forwards messages it receives
to the all endpoints topic. This allows it to act as an aggregation "sink",
while preserving the necessary caching behaviour.
ASTERISK-25137 #close
Reported-by: Vitezslav Novy
ASTERISK-25116 #close
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b
2015-12-24 22:19 +0000 [136c537695] Dade Brandon <dade@xencall.com>
* res_http_websocket.c: prevent avoidable disconnections caused by write errors
Updated ast_websocket_write to encode the entire frame in to one
write operation, to ensure that we don't end up with a situation
where the websocket header has been sent, while the body can not
be written.
Previous to August's patch in commit b9bd3c14, certain network
conditions could cause the header to be written, and then the
sub-sequent body to fail - which would cause the next successful
write to contain a new header, and a new body (resulting in
the peer receiving two headers - the second of which would be
read as part of the body for the first header).
This was patched to have both write operations individually fail
by closing the websocket.
In a case available to the submitter of this patch, the same
body which would consistently fail to write, would succeed
if written at the same time as the header.
This update merges the two operations in to one, adds debug messages
indicating the reason for a websocket connection being closed during
a write operation, and clarifies some variable names for code legibility.
Change-Id: I4db7a586af1c7a57184c31d3d55bf146f1a40598
2015-12-27 22:38 +0000 [f2efbb5d75] Corey Farrell <git@cfware.com>
* Remove res_jabber file that was left behind.
Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b
2015-12-13 13:09 +0000 [dde7f3c1c4] Matt Jordan <mjordan@digium.com>
* res_pjsip_history: Add a module that provides PJSIP history for debugging
This patch adds a new module, res_pjsip_history, that provides a slightly
better way of debugging SIP message traffic on a busy Asterisk system. The
existing mechanisms all rely on passively dumping a SIP message to the CLI.
While this is perfectly fine for logging purposes and well controlled
environments, on many installations, the amount of SIP messages Asterisk
receives will quickly swamp the CLI. This makes it difficult to view/capture
those messages that you want to diagnose in real time.
This patch provides another way of handling this. When enabled, the module
will store SIP message traffic in memory. This traffic can then be queried
at leisure.
In order to make the querying useful, a CLI command has been implemented,
'pjsip show history', that supports a basic expression syntax similar to
SQL or other query languages. A small number of useful fields have been
added in this initial patch; additional fields can easily be added in
later improvements. Those fields are:
- number: The entry index in the history
- timestamp: The time the message was recieved
- addr: The source/destination address of the message
- sip.msg.request.method: The request method
- sip.msg.call-id: The Call-ID header
Note - this is a resurrection of the module initially proposed on Review Board
here: https://reviewboard.asterisk.org/r/4053/
Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36
2015-12-25 09:56 +0000 [be050f2638] Dade Brandon <dade@xencall.com>
* chan_sip.c: fix websocket_write_timeout default value
websocket_write_timeout was not being set to its default value
during sip config reload, which meant that prior to this commit,
1) the default value of 100 was not used, unless an invalid value
(or 1) was specified in sip.conf for websocket_write_timeout, and
2) if the websocket_write_timeout directive was removed from sip.conf
without a full restart of asterisk, then the previous value would
continue to be used indefinitely.
This essentially lead to a 0ms write timeout (the first write attempt
in ast_careful_fwrite must have succeeded) in websocket write requests
from chan_sip, unless websocket_write_timeout was explicitely set in sip.conf.
Changes to websocket_write_timeout still only apply to new websocket
sessions, after the sip reload -- timeouts on existing sessions are
not adjusted during sip reload.
Change-Id: Ibed3816ed29cc354af6564c5ab3e75eab72cb953
2015-12-23 17:40 +0000 [b3024cad10] Richard Mudgett <rmudgett@digium.com>
* bridge_basic.c: Fix GOTO_ON_BLINDXFR
Use of GOTO_ON_BLINDXFR would not work at all. The target location would
never be executed by the transferring channel.
* Made feature_blind_transfer() call ast_bridge_set_after_go_on() with
valid context, exten, and priority parameters from the transferring
channel.
* Renamed some feature_blind_transfer() local variables for clarity.
ASTERISK-25641 #close
Reported by Dmitry Melekhov
Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac
2015-12-24 12:19 +0000 [0a9941de9d] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_location: Delete contact_status object when contact is deleted
In 450579e908, a change was made that removed the deletion of the
'contact_status' object when a 'contact' object is deleted in sorcery.
This unfortunately means that the 'contact_status' object persists, even when
something has explicitly removed a contact. The result is that the state of
the contact will not be regenerated if that contact is re-created, and the
stale state will be reported/used for that contact. It also results in
no ContactStatusChanged events being generated for either ARI or AMI.
This patch restores the deletion logic that was removed. Doing so now
results in the expected events being generated again.
Change-Id: I28789a112e845072308b5b34522690e3faf58f07
2015-12-24 10:18 +0000 [1e24a0ca8a] Kevin Harwell <kharwell@digium.com>
* res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef
Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151
2015-12-20 21:33 +0000 [1d3d20dd68] Dade Brandon <dade@xencall.com>
* app_amd: Correct documentation to reflect functionality
Update documentation to reflect that maximum_number_of_words
has functionality inconsistent with the variable name (and inconsistent
with prior documentation.)
Update documentation for silence_threshold, which previously implied
that it was measuring time, rather than noise averages in the sample.
Update the comments in amd.conf.sample.
ASTERISK-25639 #close
Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093
2015-12-17 19:05 +0000 [965a0eee46] Dade Brandon <dade@xencall.com>
* res_rtp_asterisk: Resolve further timing issues with DTLS negotiation
Resolves an edge case dtls negotiation delay for certain networks which
somehow manage to drop the rtcp side's packet when these are both sent
ast_rtp_remote_address_set, causing it to have to time-out and restart
the handshake.
Move dtls pending bio flush in to it's own function, and call it from
ast_rtp_on_ice_complete, when we're rtp->ice, rather than when
ast_rtp_remote_address_set.
Keep the existing flush from the recent change to res_rtp_remote_address_set
if ice is not being used.
ASTERISK-25614 #close
Reported-by: XenCALL
Tested by: XenCALL
Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5
2015-12-18 09:54 +0000 [ae428d8460] Carlos Oliva <carlos.oliva@invoxcontact.com>
* app_queue: update RT members when the 1st call joins a queue with no agents
If a call enters on a queue and the members on that queue are updated in
realtime (ex: using mysql inserting a new agent) the queue members are
never refreshed and the call will stay in the queue until other event occurs.
This happens only if this is the first call of the queue and there is no
agents servicing.
This patch prevent this issue, ensuring realtime members are updated if
there is one call in the queue and no available agents
ASTERISK-25442 #close
Change-Id: If1e036d013a5c1d8b0bf60d71d48fe98694a8682
2015-12-05 10:01 +0000 [59d5bb0613] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Add support for a full backend cache.
This change introduces the configuration option 'full_backend_cache'
which changes the cache to be a full mirror of the backend instead
of a per-object cache. This allows all sorcery retrieval operations
to be carried out against it and is useful for object types which
are used in a "retrieve all" or "retrieve some" pattern.
ASTERISK-25625 #close
Change-Id: Ie2993487e9c19de563413ad5561c7403b48caab5
2015-12-17 10:25 +0000 [0cefcabd58] Joshua Colp <jcolp@digium.com>
* rtp_engine: Ignore empty filenames in DTLS configuration.
When applying an empty DTLS configuration the filenames in the
configuration will be empty. This is actually valid to do and
each filename should simply be ignored.
Change-Id: Ib761dc235638a3fb701df337952f831fc3e69539
2015-12-17 08:10 +0000 [158a0a5422] Joshua Colp <jcolp@digium.com>
* chan_sip: Enable WebSocket support by default.
Per the documentation the WebSocket support in chan_sip is
supposed to be enabled by default but is not. This change
corrects that.
Change-Id: Icb02bbcad47b11a795c14ce20a9bf29649a54423
2015-12-14 12:04 +0000 [a9d6fc571d] Joshua Colp <jcolp@digium.com>
* json: Audit ast_json_* usage for thread safety.
The JSON library Asterisk uses, jansson, is not thread
safe for us in a few ways. To help with this wrappers for JSON
object reference count increasing and decreasing were added
which use a global lock to ensure they don't clobber over
each other. This does not extend to reference count manipulation
within the jansson library itself. This means you can't safely
use the object borrowing specifier (O) in ast_json_pack and
you can't share JSON instances between objects.
This change removes uses of the O specifier and replaces them
with the o specifier and an explicit ast_json_ref. Some cases
of instance sharing have also been removed.
ASTERISK-25601 #close
Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1
2015-12-16 11:28 +0000 [53bd5a539a] Mark Michelson <mmichelson@digium.com>
* Alembic: Increase column size of PJSIP AOR "contact".
When running the PJSIP AMI "show_endpoint" test with automatic
conversion to realtime, the test would fail. This was because the AOR
"contact" column was sized at 40, and the configured contact was larger
than that.
This commit increases the size of the contact column to 255 characters.
Change-Id: Ia65bc7fd37699b7c0eaef9629a1a31eab9a24ba1
2015-12-16 11:25 +0000 [da17dc4d75] Mark Michelson <mmichelson@digium.com>
* Alembic: Add PJSIP global keep_alive_interval.
The keep_alive_interval option was added about a year ago, but no
alembic revision was created to add the appropriate column to the
database.
This commit fixes the problem and adds the column. This was discovered
by running the testsuite with automatic conversion to realtime enabled.
Change-Id: If3ef92a7c4f4844d08f8aae170d2178aec5c4c1a
2015-12-14 13:53 +0000 [24ae124e4f] server-pandora <server-pandora@xencall.com>
* res_rtp_asterisk.c: Fix DTLS negotiation delays.
- Trigger pending DTLS packets to send out, once the RTP instance's remote
address is set.
- Avoids locking the DTLS structure unnecessarily by only doing this if
DTLS is passive.
- Add DTLS locks around the structurally sensitive calls in the SSL
portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock
inside of itself, and we're dealing with the SSL BIO in at least two
threads.
WebRTC channels may receive a DTLS handshake before
ast_rtp_remote_address_set is called, which causes there to be a pending
response to send out. Previous to 1ad827, this was handled by calling
dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP
packet could trigger the pending handshake response. Since that was
rightfully removed, whenever the DTLS handshake is received before the
remote address is set, we would have to wait until another SSL packet
arrives.
As of Chrome M47's optimizations to their handshake process, WebRTC
conversations between Chrome M47+ and Asterisk, where Asterisk is passive,
experience a 1 second delay without this patch, because the SSL handshake
is received before ICE negotation stores the remote_address, and the next
SSL packet isn't received until after a 1 second timeout in Chrome, which
causes a new handshake request.
ASTERISK-25614 #close
Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908
2015-12-14 15:25 +0000 [36097a185d] Richard Mudgett <rmudgett@digium.com>
* Fix sscanf() format string type mismatch.
ASTERISK-25615
Reported by: George Joseph
Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b
2015-12-13 13:13 +0000 [94f9927784] Matt Jordan <mjordan@digium.com>
* main/utils: Don't emit an ERROR message if the read end of a pipe closes
An ERROR or WARNING message should generally indicate that something has gone
wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not
in control of when the far end closes its reading on a file descriptor. If the
far end does close the file descriptor in an unclean fashion, this isn't a bug
or error in Asterisk, particularly when the situation can be gracefully
handled in Asterisk.
Currently, when this happens, a user would see the following somewhat cryptic
ERROR message:
"utils.c: write() returned error: Broken pipe"
There's a few problems with this:
(1) It doesn't provide any context, other than 'something broke a pipe'
(2) As noted, it isn't actually an error in Asterisk
(3) It can get rather spammy if the thing breaking the pipe occurs often, such
as a FastAGI server
(4) Spammy ERROR messages make Asterisk appear to be having issues, or can even
mask legitimate issues
This patch changes ast_carefulwrite to only log an ERROR if we actually had one
that was reasonably under our control. For debugging purposes, we still emit
a debug message if we detect that the far side has stopped reading.
Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566
2015-12-12 11:08 +0000 [5b867fa904] gtjoseph <george.joseph@fairview5.com>
* pjsip/config_transport: Check pjproject version at runtime for async ops
pjproject < 2.5.0 will segfault on a tls transport if async_operations
is greater than 1. A runtime version check has been added to throw
an error if the version is < 2.5.0 and async_operations > 1.
To assist in the check, a new api "ast_compare_versions" was added
to utils which compares 2 major.minor.patch.extra version strings.
ASTERISK-25615 #close
Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98
Reported-by: George Joseph
Tested-by: George Joseph
2015-12-10 11:44 +0000 [14b41115e3] Jonathan Rose <jrose@digium.com>
* chan_sip: Add TCP/TLS keepalive to TCP/TLS server
Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously
this option was only being set on session sockets.
http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
According to the link above, the SO_KEEPALIVE option is useful for knowing
when a TCP connected endpoint has severed communication without indicating
it or has become unreachable for some reason. Without this patch, keep
alive is not set on the socket listening for incoming TCP sessions and
in Komatsu's report this resulted in the thread listening for TCP becoming
stuck in a waiting state.
ASTERISK-25364 #close
Reported by: Hiroaki Komatsu
Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36
2015-12-08 13:04 +0000 [fe8011cc50] sungtae kim <pchero21@gmail.com>
* AMI: Fixed OriginateResponse message
When the asterisk sending OriginateResponse message,
it doesn't set the "Uniqueid".
And it didn't support correct response message for
Application originate.
ASTERISK-25624 #close
Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d
2015-12-09 09:48 +0000 [cd119ed4a2] Tyler Cambron <tcambron@digium.com>
* res_chan_stats: Fix bug to send correct statistics to StatsD
Fixed a bug that originally would show a negative number of
active calls occuring in Asterisk. A gauge is persistent so
incrementing and decrementing it results in a more consistent
performance. Also changed to the call to StatsD to use
ast_statsd_log_string() so that a "+" could be sent to StatsD.
ASTERISK-25619 #close
Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7
2015-12-07 13:07 +0000 [ddf4dddf4f] Corey Farrell <git@cfware.com>
* app_meetme: Set default value for audio_buffers.
The default value was never set for audio_buffers, causing bad
audio quality. This ensures the default is always set.
ASTERISK-25569 #close
Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44
2015-12-08 01:57 +0000 [142d4fefb8] Filip Jenicek <phill@janevim.cz>
* chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)
Asterisk may crash when calling ast_channel_get_t38_state(c)
on a locked channel which is being hung up.
ASTERISK-25609 #close
Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b
2015-12-08 17:49 +0000 [21962dad93] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Add existence and readablity checks for tls related files
Both transport and endpoint now check for the existence and readability
of tls certificate and key files before passing them on to pjproject.
This will cause the object to not load rather than waiting for pjproject
to discover that there's a problem when a session is attempted.
NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located
in build_peer which is gigantic and I didn't want to disturb it.
Error messages will emit but it won't interrupt chan_sip loading.
ASTERISK-25618 #close
Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9
Reported-by: George Joseph
Tested-by: George Joseph
2015-12-02 12:42 +0000 [28d9243079] Eugene Voityuk <eugene@thirdlane.com>
* chan_sip.c: Start ICE negotiation when response is sent or received.
The current logic for ICE negotiation starts it
when receiving an SDP with ICE candidates. This is
incorrect as ICE negotiation can only start when each
call party have at least one pair of local and remote
candidate. Starting ICE negotiation early would result
in negotiation failure and ultimately no audio.
This change makes it so ICE negotiation is only started
when a response with SDP is received or when a response
with SDP is sent.
ASTERISK-24146
Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca
2015-12-08 11:03 +0000 [e03582a1c2] gtjoseph <george.joseph@fairview5.com>
* res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls
See ASTERISK-25615.
If the transport protocol is tls and async_operations > 1, pjproject
will segfault if more than one operation is attempted on the same socket.
Until this is fixed upstream, a check has been added to throw an error
if a tls transport config has async_operations set to > 1.
ASTERISK-25615
Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6
Reported-by: George Joseph
Tested-by: George Joseph
2015-12-08 08:39 +0000 [876600ce6e] Alexander Traud <pabstraud@compuserve.com>
* codec_resample: Increase buffer for Opus Codec with FEC.
ASTERISK-25599 #close
Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e
2015-12-08 03:46 +0000 [69e3d40ad7] Alexander Traud <pabstraud@compuserve.com>
* translate: Avoid a warning message when doing FEC within Opus Codec.
ASTERISK-25616 #close
Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319
2015-12-04 15:36 +0000 [2b992014dc] Richard Mudgett <rmudgett@digium.com>
* chan_sip: Fix crash involving the bogus peer during sip reload.
A crash happens sometimes when performing a CLI "sip reload". The bogus
peer gets refreshed while it is in use by a new call which can cause the
crash.
* Protected the global bogus peer object with an ao2 global object
container.
ASTERISK-25610 #close
Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed
2015-12-06 16:32 +0000 [529535f0c2] Matt Jordan <mjordan@digium.com>
* Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state"
This reverts commit 6614babea27fbafbe11820ea03737dd5c4f9ecec.
Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks
in core_unreal/chan_local. Local channels attempt to reach across both their
peer and the peer's bridge to inspect T.38 state. Given the propensity of
Local channel chains, managing the locking situation in such a scenario is
practically infeasible.
Change-Id: Ic687397ffea08dfb899345a443bd990ec3d0416a
2015-12-04 16:23 +0000 [450579e908] gtjoseph <george.joseph@fairview5.com>
* res_pjsip/contacts/statsd: Make contact lifecycle events more consistent
It will never be perfect or even pretty, mostly because of the differences
between static and dynamic contacts.
Created:
Can't use the contact or contact_status alloc functions
because the objects come and go regardless of the actual state.
Can't use the contact_apply_handler, ast_sip_location_add_contact or
a sorcery created handler because they only get called for dynamic
contacts. Similarly, permanent_uri_handler only gets called for
static contacts.
So, Matt had it right. :) ast_res_pjsip_find_or_create_contact_status is
the only place it can go and not have duplicated code. Both
permanent_uri_handler and contact_apply_handler call find_or_create.
Removed:
Can't use the destructors for the same reason as above. The only
place to put this is in persistent_endpoint_contact_deleted_observer
which I believe is the "correct" place but even that will handle only
dynamic contacts. This doesn't called on shutdown however. There is
no hook to use for static contacts that may be removed because of a
config change while asterisk is in operation.
I moved the cleanup of contact_status from ast_sip_location_delete_contact
to the handler as well.
Status Change and RTT:
Although they worked fine where they were (in update_contact_status) I
moved them to persistent_endpoint_contact_status_observer to make it
more consistent with removed. There was logic there already to detect
a state change.
Finally, fixed a nit in permanent_uri_handler rmudgett reported
eralier.
ASTERISK-25608 #close
Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d
Reported-by: George Joseph
Tested-by: George Joseph
2015-11-21 06:02 +0000 [5a18193dc0] Alexander Traud <pabstraud@compuserve.com>
* res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8.
ASTERISK-25584 #close
Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91
2015-11-21 05:21 +0000 [3e2178c05e] Alexander Traud <pabstraud@compuserve.com>
* res_format_attr_opus: Update to latest RFC 7587.
Beside that, the format-attribute module sends only non-default values in the
line fmtp, now. This avoids unnecessary overhead in SDP messages. Furthermore,
previously the parameter stereo was not parsed when being the first parameter.
ASTERISK-25583 #close
Change-Id: Iae85ba3e5960bfd5d51cf65bcffad00dd4875a73
2015-12-02 14:11 +0000 [072d94183c] Jonathan Rose <jrose@digium.com>
* Fix crash in audiohook translate to slin
This patch fixes a crash which would occur when an audiohook was
applied to a channel using an audio codec that could not be translated
to signed linear (such as when using pass-through codecs like OPUS or
when the codec translator module for the format in use is not loaded).
ASTERISK-25498 #close
Reported by: Ben Langfeld
Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384
2015-12-03 12:07 +0000 [9184fbeb34] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Use a MD5 hash for static Contact IDs
When 90d9a70789 was merged, it mostly tested dynamic contacts created as
a result of registering a PJSIP endpoint. Contacts generated in this
fashion typically have a long alphanumeric string as their object identifier,
which maps reasonably well for StatsD. Unfortunately, this doesn't work in the
general case. StatsD treats both '.' and ':' characters as special characters.
In particular, having a ':' appear in the middle of a StatsD metric will
result in the metric being rejected.
This causes some obvious issues with SIP URIs.
The StatsD API should not be responsible for escaping the metric name passed
to it. The metric is treated as a single long string, and it would be
challenging to know what to escape in the string passed to the function.
Likewise, we don't want to escape the metric in PJSIP, as that involves
overhead that is wasted when either res_statsd isn't loaded or enabled.
This patch takes an alternative approach. The Contact ID has been changed
to be "aor@@uri_hash" instead of "aor@@uri". This (a) won't contain any of the
aforementioned special characters, (b) can be done on Contact creation,
which has minimal impact on run-time performance, and (c) also conforms to an
earlier commit that changed the ID for dynamic contacts.
The downside of this is that StatsD users will have to map SHA1 hashes back to
the Contacts that are emitting the statistics. To that end, the CLI commands
have been updated to include the first 10 characters of the MD5 hash, which
should be enough to match what is shown in Graphite (or some other StatsD
backend).
ASTERISK-25595 #close
Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2
Reported-by: Matt Jordan
Tested-by: George Joseph
2015-11-30 22:19 +0000 [ed9134282e] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Update logging to show contact->uri in messages
An earlier commit changed the id of dynamic contacts to contain
a hash instead of the uri. This patch updates status change
logging to show the aor/uri instead of the id. This required
adding the aor id to contact and contact_status and adding
uri to contact_status. The aor id gets added to contact and
contact_status in their allocators and the uri gets added to
contact_status in pjsip_options when the contact_status is
created or updated.
ASTERISK-25598 #close
Reported-by: George Joseph
Tested-by: George Joseph
Change-Id: I56cbec1d2ddbe8461367dd8b6da8a6f47f6fe511
2015-12-01 16:11 +0000 [eadad24b59] Jonathan Rose <jrose@digium.com>
* Unset BRIDGEPEER when leaving a bridge
Currently if a channel is transferred out of a bridge, the BRIDGEPEER
variable (also BRIDGEPVTCALLID) remain set even once the channel is
out of the bridge. This patch removes these variables when leaving
the bridge.
ASTERISK-25600 #close
Reported by: Mark Michelson
Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da
2015-11-30 14:22 +0000 [bb0b60619d] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Fix off nominal ref leak.
Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49
2015-11-30 16:42 +0000 [e7c88e11aa] Richard Mudgett <rmudgett@digium.com>
* sched.c: Make not return a sched id of 0.
According to the API doxygen a sched ID of 0 is valid. Unfortunately, 0
was never returned historically and several users incorrectly coded usage
of the returned sched ID assuming that 0 was invalid.
ASTERISK-25476
Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20
2015-11-25 12:23 +0000 [4aed349a7b] Richard Mudgett <rmudgett@digium.com>
* Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)
chan_sip.c:
* Initialize mwi subscription scheduler ids earlier because of ASTOBJ to
ao2 conversion.
* Initialize register scheduler ids earlier because of ASTOBJ to ao2
conversion.
chan_skinny.c:
* Fix more scheduler usage for the valid 0 id value.
ASTERISK-25476
Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95
2015-11-24 12:44 +0000 [6d9156d10f] Richard Mudgett <rmudgett@digium.com>
* Audit improper usage of scheduler exposed by 5c713fdf18f.
channels/chan_iax2.c:
* Initialize struct chan_iax2_pvt scheduler ids earlier because of
iax2_destroy_helper().
channels/chan_sip.c:
channels/sip/config_parser.c:
* Fix initialization of scheduler id struct members. Some off nominal
paths had 0 as a scheduler id to be destroyed when it was never started.
chan_skinny.c:
* Fix some scheduler id comparisons that excluded the valid 0 id.
channel.c:
* Fix channel initialization of the video stream scheduler id.
pbx_dundi.c:
* Fix channel initialization of the packet retransmission scheduler id.
ASTERISK-25476
Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8
2015-12-01 07:55 +0000 [b76c196e13] Alexander Traud <pabstraud@compuserve.com>
* codec_resample: Increase buffer for Opus Codec.
ASTERISK-25599 #close
Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10
2015-11-28 08:46 +0000 [6614babea2] Matt Jordan <mjordan@digium.com>
* bridges/bridge_t38: Add a bridging module for managing T.38 state
When 4875e5ac32 was merged, it fixed several issues with a direct media bridge
transitioning to handling a T.38 fax. However, it uncovered a race condition
caused by the bridging core. When a channel involved in a T.38 fax leaves a
bridge, the frame queued by the channel driver that should inform the far side
that it is no longer in a T.38 fax may not make it across the bridge. The
bridging framework is *extremely* aggressive in tearing down the bridge, and
control frames that are currently in flight *may* get dropped.
This patch adds a new module to the bridging framework, bridge_t38. This module
maintains some notion of the T.38 state for the two channels in a bridge. When
the bridge detects that it is being torn down or when one of the two channels
leaves, it informs the respective channel(s) that they should stop faxing. This
ensures that channels switch back to audio if they survive and are ejected out
of a bridge while faxing.
ASTERISK-25582
Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0
2015-11-27 07:39 +0000 [3fcf160fae] Niklas Larsson <niklas@tese.se>
* CHANGES: Fix a typo
Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7
2015-11-25 15:26 +0000 [45efbf8503] Kevin Harwell <kharwell@digium.com>
* fastagi: record file closed after sending result
The fastagi record-file testsuite test sometimes fails reporting an empty
recorded file. This was happening because Asterisk was sending the agi result
notification prior to actually closing the file and the data, being buffered,
had not been written to the file yet when the test attempts to check the file
size.
This patch makes it so the record file stream is closed prior to sending the
agi result notification.
ASTERISK-25593 #close
Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde
2015-11-25 13:29 +0000 [b2787876d6] Walter Doekes <walter+asterisk@wjd.nu>
* main: Slight refactor of main. Improve color situation.
Several issues are addressed here:
- main() is large, and half of it is only used if we're not rasterisk;
fixed by spliting up the daemon part into a separate function.
- Call ast_term_init from rasterisk as well.
- Remove duplicate code reading/writing asterisk history file.
- Attempt to tackle background color issues and color changes that
occur. Tested by starting asterisk -c until the colors stopped
changing at odd locations.
ASTERISK-25585 #close
Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f
2015-11-24 13:54 +0000 [59881fbb99] David M. Lee <dlee@respoke.io>
* Fixed some typos
Fixes some minor typos in the CHANGES file, plus an embarrasing typo in
the StatsD API.
Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7
2015-11-24 13:07 +0000 [b75f587d15] Corey Farrell <git@cfware.com>
* res_pjsip_notify: Fix CLI usage info
The usage info for 'pjsip send notify' previously referenced the
chan_sip configuration sip_notify.conf. Fix this to reference
the correct configuration pjsip_notify.conf.
ASTERISK-25590 #close
Change-Id: I3898271a8e8a8b1db201741e790ebe2c6bf5cdea
2015-11-23 14:27 +0000 [fc45f4040d] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_realtime.c: Fix crash from NULL sorcery object type.
If the sorcery object type is not found a NULL is returned.
Unfortunately, sorcery_realtime_filter_objectset() will crash after
complaining about not finding the object type and saying to expect errors.
* Use ao2_cleanup() instead of ao2_ref() to prevent the crash.
ASTERISK-25165
Reported by Corey Farrell
Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97
2015-11-20 21:08 +0000 [4875e5ac32] Matt Jordan <mjordan@digium.com>
* chan_pjsip: Handle T.38 faxes with direct media bridges
When a channel is in a direct media bridge, a re-INVITE may arrive that forces
Asterisk to re-negotiate the media to a T.38 fax. When this occurs, the bridge
must change its technology to a simple bridge, and re-INVITE the media back
to Asterisk.
Generally, this logic mostly already exists in Asterisk. However, prior to this
patch, there were a few bugs:
(1) The T.38 framehook currently prevents a channel capable of T.38 faxes from
ever entering into a direct media bridge. This applies even when the only
media being passed over the channel is audio. This patch fixes this bug
by having the framehook specify that it defers caring about any frame type.
This allows the channels to enter into a direct media bridge, which will
be broken when a re-INVITE is received.
(2) When a re-INVITE is received, nothing instructed the bridging layer to
re-inspect the allowed bridging technology. This now occurs when either
a re-INVITE is received from a peer, or when a response is received from
the far end (that is, when the T.38 state changes to either
T38_PEER_REINVITE or T38_LOCAL_REINVITE).
(3) chan_pjsip needs to do a small amount of work to prevent a direct media
bridge from being chosen when a T.38 session is in progress. When a T.38
session supplement has a t38 datastore - which is added when we detect
we should start thinking about T.38 on a channel - we now refuse a native
RTP bridge.
(4) When a BYE request is received, we don't terminate the T.38 session. If
the other side of a T.38 fax survives the hangup (due to the 'g' flag
in Dial, for example), we don't currently re-INVITE the media on the
other channel back to audio. This patch now has res_pjsip_t38 intercept
BYE requests and inform the far side that the T.38 session is terminated.
This naturally causes the correct re-INVITEs to be sent.
ASTERISK-25582
Change-Id: Iabd6aa578e633d16e6b9f342091264e4324a79eb
2015-11-20 21:07 +0000 [2b94d9a10d] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_t38: Add debug statements
This patch adds some debug statements to res_pjsip_t38. These statements help
to determine which SDP negotiation callbacks are being executed, and, when
a particular callback exits, why a callback may not have applied its logic
to the local or remote SDP.
Change-Id: I61b3fb9183b7ebbb5da8e9f48b59a5d9d7042d77
2015-10-22 09:44 +0000 [af288b2d96] Matt Jordan <mjordan@digium.com>
* main/cli: Use proper string methods to check existence of context/exten/app
Because the context, extension, and application are stored in stringfields,
checking for them being NULL doesn't work so well. This patch uses the
appropriate string library call, ast_strlen_zero, to see if there is a value
in the context/exten/app values.
Change-Id: Ie09623bfdf35f5a8d3b23dd596647fe3c97b9a23
2015-11-18 09:43 +0000 [d27aac0a9d] Matt Jordan <mjordan@digium.com>
* res/res_endpoint_stats: Add module to emit endpoint StatsD statistics
This patch adds a module that emits StatsD statistics about Asterisk
endpoints. This includes:
* A GUAGE statistic for endpoint states, tracking how many endpoints are in
a particular state.
* A GUAGE statistic for each endpoint, counting the number of channels
currently associated with an endpoint.
ASTERISK-25572
Change-Id: If7e1333c5aeda8d136850b30c2101c0ee1c97305
2015-11-18 10:07 +0000 [90d9a70789] Matt Jordan <mjordan@digium.com>
* res_pjsip/pjsip_options: Add StatsD statistics for PJSIP contacts
This patch adds the ability to send StatsD statistics related to the
state of PJSIP contacts. This includes:
* A GUAGE statistic measuring the count of contacts in a particular state.
This measures how many contacts are reachable, unreachable, etc.
* The RTT time for each contact, if those contacts are qualified. This
provides StatsD engines useful time-based data about each contact.
ASTERISK-25571
Change-Id: Ib8378d73afedfc622be0643b87c542557e0b332c
2015-11-13 10:34 +0000 [75097a0955] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_outbound_registration: Add registration statistics for StatsD
This patch adds outbound registration statistics for StatsD. This includes
the following:
* A GUAGE metric for the overall count of outbound registrations.
* A GUAGE metric for each state an outbound registration can be in. As the
outbound registrations change state, the overall count of how many
outbound registrations are in the particular state is changed.
These statistics are particularly useful for systems with a large number of
SIP trunks, and where measuring the change in state of the trunks is useful
for monitoring.
ASTERISK-25571
Change-Id: Iba6ff248f5d1c1e01acbb63e9f0da1901692eb37
2015-11-19 09:40 +0000 [8f71263e72] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_outbound_registration: Apply configuration on object type load
When Asterisk is configured to use a dynamic sorcery backend (such as
res_sorcery_astdb) with 'registration' objects, it will fail to create the
internal state objects associated with the registration objects on module
load. This is due to nothing actually querying for the specific objects
and calling their sorcery apply handler during module load.
This patch fixes that by calling get_registrations in the sorcery observer's
object_type_loaded handler. Doing this causes the sorcery backends to be
asked for the current state of all registration objects, which causes the
apply handler to be called and the internal run-time state to be created.
ASTERISK-25575 #close
Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23
2015-11-11 11:51 +0000 [0b508789ab] Alexander Traud <pabstraud@compuserve.com>
* translate: Provide translation modules the result of SDP negotiation.
Previously, a trancoding module did not have access to the joint but cached
format. Therefore, the module did not have access to the attributes negotiated
via SDP (line fmtp). Now, a translation module receives the joint format.
ASTERISK-25545 #close
Change-Id: Id6878a989b50573298dab115d3371ea369e1a718
2015-11-19 01:14 +0000 [1aa552b2a2] Alexander Traud <pabstraud@compuserve.com>
* res_format_attr_h264: Do not reset string buffer.
When no parameter is present, Asterisk does not generate the line fmtp, as
expected. However, because a buffer was reset, even rtpmap and fmtp of previous
media codecs got removed. Now, Asterisk does not reset other codecs in case of
no parameter for H.264.
ASTERISK-25573 #close
Change-Id: I93811331f4a28c45418a9e14ee46c0debd47a286
2015-11-18 10:05 +0000 [3354b325c6] Matt Jordan <mjordan@digium.com>
* res_statsd: Add functions that support variable arguments
Often, the metric names of statistics we are generating for StatsD have some
dynamic component to them. This can be the name of a particular resource, or
some internal status label in Asterisk. With the current set of functions,
callers of the statsd API must first build the metric name themselves, then
pass this to the API functions. This results in a large amount of boilerplate
code and usage of either fixed length static buffers or dynamic memory
allocation, neither of which is desireable.
This patch adds two new functions to the StatsD API that support a printf
style format specifier for constructing the metric name. A dynamic string,
allocated in threadstorage, is used to build the metric name. This eases
the burden on users of the StatsD API.
Change-Id: If533c72d1afa26d807508ea48b4d8c7b32f414ea
2015-11-17 14:53 +0000 [d4a522d587] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Be tolerant of short registration timeouts.
Change-Id: Ie16f5053ebde0dc6507845393709b4d6a3ea526d
2015-11-17 14:53 +0000 [e44ab3816c] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Fix 423 response handling.
Receiving a 423 Interval Too Brief response after authentication for an
outbound registration attempt results in assuming that the registrar has
rejected the registration permanently. If there are no configured retries
for fatal responses then the outbound registration is stopped for that
endpoint.
For registrations, PJSIP/PJPROJECT intercepts the handling of 423
responses and does not include any authentication in the updated
registration request. When the updated request is challenged then the
Asterisk code assumes that we were challenged again because the peer
rejected the authentication we sent earlier.
* Made registration challenges keep track of the CSeq number to determine
if the received challenge response was for the request we thought we sent.
If the response's CSeq number differs from the CSeq number we last sent
with authentication then authenticate again because it is a challenge to a
different request.
Change-Id: I81b4bd36d1be095bab606e34b8b44e6302971b09
2015-11-03 14:36 +0000 [1e0040b88f] Tyler Cambron <tcambron@digium.com>
* StatsD: Add res_statsd compatibility
Added a new api to res_statsd.c to allow it to receive a
character pointer for the value argument. This allows for a
'+' and a '-' to easily be sent with the value.
ASTERISK-25419
Reported By: Ashley Sanders
Change-Id: Id6bb53600943d27347d2bcae26c0bd5643567611
2015-11-16 13:56 +0000 [f62b642fe3] Matt Jordan <mjordan@digium.com>
* res/res_pjsip: Fix off nominal crash with requests that fail and have a timer
When a request is sent using pjsip_endpt_send_request and fails, a condition
exists where the request wrapper, which is an AO2 object, may be de-ref'd
more times than it should. This occurs when the request's callback is called,
and, in the callback, the timer on the PJSIP heap is cancelled. When that
occurs, the request wrapper's lifetime is decremented. When
pjsip_endpt_send_request fails, we unilaterally decrement the lifetime of
the request wrapper again, even though we've already cancelled the reference
associated with the timer.
This patch checks the return result of pj_timer_heap_cancel_if_active before
removing the reference associated with the timer. We now only decrement it
in this case if a timer is cancelled as a result of the function call.
Change-Id: I21332343a1a019c1117076f9bf2df27be2850102
2015-11-13 14:03 +0000 [fdd2afcd16] Mark Michelson <mmichelson@digium.com>
* Confbridge: Add a user timeout option
This option adds the ability to specify a timeout, in seconds, for a
participant in a ConfBridge. When the user's timeout has been reached,
the user is ejected from the conference with the CONFBRIDGE_RESULT
channel variable set to "TIMEOUT".
The rationale for this change is that there have been times where we
have seen channels get "stuck" in ConfBridge because a network issue
results in a SIP BYE not being received by Asterisk. While these
channels can be hung up manually via CLI/AMI/ARI, adding some sort of
automatic cleanup of the channels is a nice feature to have.
ASTERISK-25549 #close
Reported by Mark Michelson
Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98
2015-11-16 04:29 +0000 [7debb986a5] Alec Davis <sivad.a@paradise.net.nz>
* app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked!
commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525)
refer ASTERISK-24958
above commit removed ast_channel_lock(qe->chan);
but failed to remove corresponding ast_channel_unlock(qe->chan);
ASTERISK-25561 #close
Reported Alec Davis
Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a
2015-11-14 07:02 +0000 [afd9a89e5a] Joshua Colp <jcolp@digium.com>
* hashtab: Add NULL check when destroying iterator.
The hashtab API is pretty NULL tolerant which has resulted
in remaining callers not doing much checks themselves.
Unfortunately the function to destroy an iterator does not
do a NULL check and will result in a crash if passed NULL.
This change fixes that.
ASTERISK-25552 #close
Change-Id: Ic1bf8eec3639e5a440f1c941d3ae3893ac6ed619
2015-11-13 14:32 +0000 [c0f2f8de45] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_rfc3326.c: Fix crash when channel goes away.
If an authenticated incoming caller does not respond to our 200 OK INVITE
response with an ACK then PJSIP will hangup the call. Unfortunately,
there is a chance that the session's channel will go away between one use
of the channel pointer and another when building the BYE request because
the BYE is being built by the monitor thread and not the call's serializer
thread.
* Added a check to ensure that the thread trying to add the Reason header
is the call's serializer thread. This ensures that the channel will not
go away on us.
Change-Id: I866388d2b97ea2032eaae3f3ab3f1ca6cbd2df89
2015-11-13 14:19 +0000 [4f43b85c92] Mark Michelson <mmichelson@digium.com>
* Taskprocessors: Increase high-water mark
In practical tests, we have seen certain taskprocessors, specifically
Stasis subscription taskprocessors, cross the recently-added high-water
mark and emit a warning. This high-water mark warning is only intended
to be emitted when things have tanked on the system and things are
heading south quickly. In the practical tests, the Stasis taskprocessors
sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in
any danger at all.
As such, this ups the high-water mark to 500 tasks instead. It also
redefines the SIP threadpool request denial number to be a multiple of
the taskprocessor high-water mark.
Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce
2015-11-11 11:46 +0000 [d8d3991390] Alexander Traud <pabstraud@compuserve.com>
* format: Register format-attribute module with cached formats.
In Asterisk 13, cached formats are created before their corresponding format-
attribute module is registered. Cached formats are involved when a local
extension is called. Therefore, ast_format_generate_sdp_fmtp did not work
on local extensions. This change affects the Opus Codec, H.263 (Plus), H.264,
and format-attribute modules provided externally.
ASTERISK-25160 #close
Change-Id: I1ea1f0483e5261e2a050112e4ebdfc22057d1354
2015-11-12 11:17 +0000 [367972e42d] Mark Michelson <mmichelson@digium.com>
* res_pjsip distributor: Don't send 503 response to responses.
When the SIP threadpool is backed up with tasks, we send 503 responses
to ensure that we don't try to overload ourselves. The problem is that
we were not insuring that we were not trying to send a 503 to an
incoming SIP response.
This change makes it so that we only send the 503 on incoming requests.
Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404
2015-11-11 17:11 +0000 [2f9cb7d62b] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Deny requests when threadpool queue is backed up.
We have observed situations where the SIP threadpool may become
deadlocked. However, because incoming traffic is still arriving, the SIP
threadpool's queue can continue to grow, eventually running the system
out of memory.
This change makes it so that incoming traffic gets rejected with a 503
response if the queue is backed up too much.
Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816
2015-11-12 06:24 +0000 [4e5bf12b33] Joshua Colp <jcolp@digium.com>
* format_cap: Don't append the 'none' format when appending all.
When appending all formats of a type all the codecs are iterated
and added. This operation was incorrectly adding the ast_format_none
format which is special in that it is supposed to be used when no
format is present. It shouldn't be appended.
ASTERISK-25535
Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c
2015-11-11 04:16 +0000 [07583c2888] Steve Davies <steve@one47.co.uk>
* Further fixes to improper usage of scheduler
When ASTERISK-25449 was closed, a number of scheduler issues mentioned in
the comments were missed. These have since beed raised in ASTERISK-25476
and elsewhere.
This patch attempts to collect all of the scheduler issues discovered so
far and address them sensibly.
ASTERISK-25476 #close
Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b
2015-11-11 11:04 +0000 [b818d70533] Joshua Colp <jcolp@digium.com>
* threadpool: Handle worker thread transitioning to dead when going active.
This change adds handling of dead worker threads when moving them
to be active. When this happens the worker thread is removed from
both the active and idle threads container. If no threads are able
to be moved to active then the pool grows as configured.
A unit test has also been added which thrashes the idle timeout
and thread activation to exploit any race conditions between the
two.
ASTERISK-25546 #close
Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143
2015-11-10 09:27 +0000 [4bf84459c7] Alexander Traud <pabstraud@compuserve.com>
* rtp_engine: Init a format-attribute module to its RFC defaults.
Previously, format-attribute modules relied on an existing fmtp line in SDP
negotiation. However, fmtp is optional for several formats like the Opus Codec.
Now, the format-attribute module is called with an empty fmtp, which allows the
module to initialise itself to RFC defaults. Furthermore now, Asterisk is able
to differentiate between internally and externally created formats.
ASTERISK-25537 #close
Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52
2015-11-09 03:04 +0000 [1bff400df7] Alexander Traud <pabstraud@compuserve.com>
* ast_format_cap_get_names: To display all formats, the buffer was increased.
ASTERISK-25533 #close
Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a
2015-11-09 07:04 +0000 [f3ac4d8090] Alexander Traud <pabstraud@compuserve.com>
* ast_format_cap: Avoid format creation on module load, use cache instead.
Since Asterisk 13, formats are immutable and cached. However while loading a
module like chan_sip, some formats were created instead using cached ones.
ASTERISK-25535 #close
Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b
2015-11-06 07:54 +0000 [6d1bdb9d3b] Walter Doekes <walter+asterisk@wjd.nu>
* func_callerid: Document that CALLERID(pres) is available.
CALLERPRES() says that it's deprecated in favor of CALLERID(num-pres)
and CALLERID(name-pres). But for channel driver that don't make a
distinction between the two (e.g. SIP), it makes more sense to get/set
both at once. This change reveals the availability of CALLERID(pres),
CONNECTEDLINE(pres), REDIRECTING(orig-pres), REDIRECTING(to-pres) and
REDIRECTING(from-pres).
ASTERISK-25373 #close
Change-Id: I5614ae4ab7d3bbe9c791c1adf147e10de8698d7a
2015-11-06 07:52 +0000 [8410336681] Walter Doekes <walter+asterisk@wjd.nu>
* docs: Fix a few typo's in app docs (more then, resourse).
Change-Id: Iba57efadf6c0b822e762c7a001bc89611d98afd7
2015-11-06 07:36 +0000 [0d425f2eb4] Walter Doekes <walter+asterisk@wjd.nu>
* xmldoc: Improve xmldoc wrapping of 'core show ...' output.
Previously, the wrapping did both lookahead and lookback, which,
together with color escape sequences, caused some lines to be wrapped
way earlier than other lines. This led to inconsistent output.
This simplifies the wrapping code and makes it more sane: if maxcolumns
is hit, we simply jump back to the last space and wrap there.
ASTERISK-25527 #close
Change-Id: I56d01c6f9a812642b1b05535c98d4db48d17c957
2015-11-06 06:57 +0000 [33752e0837] Sean Bright (license #5060)
* res_pjsip_sdp_rtp: Enable Opus to be negotiated via SIP/SDP.
In SIP/SDP, Opus has two channels always (see RFC 7587 section 7). The actual
amount of channels is negotiated in-band. Therefore now, the Opus codec and its
attribute rtpmap are registered with two channels.
ASTERISK-24779 #close
Reported by: PowerPBX
Tested by: Alexander Traud
patches:
asterisk-24779.patch submitted by Sean Bright (license #5060)
Change-Id: Ic7ac13cafa1d3450b4fa4987350924b42cbb657b
2015-11-03 16:19 +0000 [6ff48319d9] Jonathan Rose <jrose@digium.com>
* taskprocessor: Add high water mark warnings
If a taskprocessor's queue grows large, this can indicate that there
may be a problem with tasks not leaving the processor or else that
the number of available task processors for a given type of task is
too low. This patch makes it so that if a taskprocessor's task queue
grows above 100 queued tasks that it will emit a warning message.
Warning messages are emitted only once per task processor.
ASTERISK-25518 #close
Reported by: Jonathan Rose
Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c
2015-11-04 14:31 +0000 [506aea26e6] Matt Jordan <mjordan@digium.com>
* main/dial: Protect access to the format_cap structure of the requesting channel
When a dial attempt is made that involves a requesting channel, we previously
were not:
a) Protecting access to the native format capabilities structure on the
requesting channel. That is inherently unsafe.
b) Reference bumping the lifetime of the format capabilities structure.
In both cases, something else could sneak in, blow away the format
capabilities, and we'd be holding onto an invalid format_cap structure. When
the newly created channel attempts to construct its format capabilities, things
go poorly.
This patch:
a) Ensures that we get a reference to the native format capabilities while
the requesting channel is locked
b) Holds a reference to the native format capabilities during the creation
of the new channel.
ASTERISK-25522 #close
Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f
2015-10-30 22:57 +0000 [d098d00424] Corey Farrell <git@cfware.com>
* Fix cli display of build options.
A previous commit reduced the AST_BUILDOPTS compiler define to
only include options that affected ABI. This included some options
that were previously displayed by cli "core show settings". This
change corrects the CLI display while still restricting buildopts.h
to ABI effecting options only.
ASTERISK-25434 #close
Reported by: Rusty Newton
Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325
2015-11-03 11:15 +0000 [afec1b1b64] Matt Jordan <mjordan@digium.com>
* res_pjsip/location: Destroy contact_status objects on contact deletion
The contact_status Sorcery objects are currently not destroyed when a contact
is deleted. This causes the contact's last known RTT/status to be 'sticky'
when the contact itself may no longer exist. This patch causes the
contact_status objects associated with both dynamic and static contacts to
be destroyed if the AoR holding those contacts is also destroyed (or via
other paths where a contact may be deleted.)
Change-Id: I7feec8b9278cac3c5263a4c0483f4a0f3b62426e
2015-11-03 10:58 +0000 [715f770c9f] Matt Jordan <mjordan@digium.com>
* pjsip_configuration: On delete, remove the persistent version of an endpoint
When an endpoint is deleted (such as through an API), the persistent endpoint
currently continues to lurk around. While this isn't harmful from a memory
consumption perspective - as all persistent endpoints are reclaimed on
shutdown - it does cause Stasis endpoint related operations to continue
to believe that the endpoint may or may not exist.
This patch causes the persistent endpoint related to a PJSIP endpoint to be
destroyed if the PJSIP endpoint is deleted.
Change-Id: I85ac707b4d5e6aad882ac275b0c2e2154affa5bb
2015-11-03 08:15 +0000 [f0f190af08] Matt Jordan <mjordan@digium.com>
* main/stasis_endpoints: Fix ContactStatusChange JSON for roundtrip_usec field
The JSON packing for the ContactStatusChange event forgot to include the
roundtrip_usec field. As a result, the field never showed up in any event,
even when the data was available. This patch corrects that error by properly
packing the JSON blob with the data.
Change-Id: I8df80da659a44010afbd48f645967518ff5daa17
2015-11-02 20:24 +0000 [0393bd6bed] Corey Farrell <git@cfware.com>
* chan_sip: Allow websockets to be disabled.
This patch adds a new setting "websockets_enabled" to sip.conf.
Setting this to false allows chan_sip to be used without causing
conflicts with res_pjsip_transport_websocket.
ASTERISK-24106 #close
Reported by: Andrew Nagy
Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7
2015-11-02 17:19 +0000 [6fbffe42e1] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Set threadpool max size default to 50.
During a stress test of subscriptions, a huge blast of
subscription-related traffic resulted in the threadpool expanding to a
ridiculous number of threads. The balooning of threads resulted in an
increase of memory, which led to a crash due to being out of memory.
An easy fix for the particular test was to limit the size of the
threadpool, thus reining in the amount of memory that would be used. It
was decided that there really is no downside to having a non-infinite
default value for the maximum size of the threadpool, so this change
introduces 50 threads as the maximum threadpool size for the SIP
threadpool.
ASTERISK-25513 #close
Reported by John Bigelow
Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be
2015-11-02 06:57 +0000 [11e54b1932] Matt Jordan <mjordan@digium.com>
* pjsip_options: Schedule/unschedule qualifies on AoR creation/destruction
When an AoR is created or destroyed dynamically, the scheduled OPTIONS
requests that qualify the contacts on the AoR are not necessarily started
or destroyed, particularly for persistent contacts created for that AoR.
This patch adds create/update/delete sorcery observers for an AoR, which
schedule/unschedule the qualifies as expected.
Change-Id: Ic287ed2e2952a7808ee068776fe966f9554bdf7d
2015-10-30 13:22 +0000 [118d628e08] Matt Jordan <mjordan@digium.com>
* Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs
This patch adds a rule for installing the Super Awesome Company based 'Basic
PBX' configuration files. As part of adding this rule, a bit of the content
that makes up installing the configuration files under the 'samples' target
was refactored into a make subroutine for usage by additional later config
make targets.
Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404
2015-10-29 08:28 +0000 [9a021a42ad] Joshua Colp <jcolp@digium.com>
* res_pjsip_pubsub: Fix assertion when UAS dialog creation fails.
When compiled with assertions enabled one will occur when destroying
the subscription tree when UAS dialog creation fails. This is because
the code assumes that a dialog will always exist on a subscription
tree when in reality during this specific scenario it won't.
This change makes it so a dialog is not removed from the subscription
tree if it is not present.
ASTERISK-25505 #close
Change-Id: Id5c182b055aacc5e66c80546c64804ce19218dee
2015-10-26 11:42 +0000 [1256aedf66] Alexander Traud <pabstraud@compuserve.com>
* chan_sip: Do not send all codecs on INVITE.
Since version 13, Asterisk sent all allowed codecs as callee, even when the
caller did not request/support them. In case of dynamic RTP payloads, this led
to the same ID for different codecs, which is not allowed by SIP/SDP. Now, the
intersection between the requested and the supported codecs is send again.
ASTERISK-24543 #close
Change-Id: Ie90cb8bf893b0895f8d505e77343de3ba152a287
2015-10-24 13:08 +0000 [5f593e7c38] gtjoseph <george.joseph@fairview5.com>
* build: GCC 5.1.x catches some new const, array bounds and missing paren issues
Fixed 1 issue in each of the affected files.
ASTERISK-25494 #close
Reported-by: George Joseph
Tested-by: George Joseph
Change-Id: I818f149cd66a93b062df421e1c73c7942f5a4a77
2015-10-20 16:02 +0000 [162acd45f7] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Add "like" processing to pjsip list and show commands
Add the ability to filter output from pjsip list and show commands
using the "like" predicate like chan_sip.
For endpoints, aors, auths, registrations, identifyies and transports,
the modification was a simple change of an ast_sorcery_retrieve_by_fields
call to ast_sorcery_retrieve_by_regex. For channels and contacts a
little more work had to be done because neither of those objects are
true sorcery objects. That was just removing the non-matching object
from the final container. Of course, a little extra plumbing in the
common pjsip_cli code was needed to parse the "like" and pass the regex
to the get_container callbacks.
Some of the get_container code in res_pjsip_endpoint_identifier was also
refactored for simplicity.
ASTERISK-25477 #close
Reported by: Bryant Zimmerman
Tested by: George Joseph
Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1
2015-10-21 11:51 +0000 [c58091737d] Kevin Harwell <kharwell@digium.com>
* res_pjsip_outbound_registration: registration stops due to fatal 4xx response
During outbound registration it is possible to receive a fatal (any permanent/
non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due
to a problem with the registrar itself. Upon receiving the failure response
Asterisk terminates outbound registration for the given endpoint.
This patch adds an option, 'fatal_retry_interval', that when set continues
outbound registration at the given interval up to 'max_retries' upon receiving
a fatal response.
ASTERISK-25485 #close
Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2
2015-10-22 17:07 +0000 [ebe69dee0d] Mark Michelson <mmichelson@digium.com>
* format_cap: Detect vector allocation failures.
A crash was seen on a system that ran out of memory due to Asterisk not
checking for vector allocation failures in format_cap.c. With this
change, if either of the AST_VECTOR_INIT calls fail, we will return a
value indicating failure.
Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8
2015-10-02 15:32 +0000 [3b19efefef] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog.
A certain situation can result in our attempting to send a NOTIFY on a
destroyed dialog. Say we attempt to send a NOTIFY to a subscriber, but
that subscriber has dropped off the network. We end up retransmitting
that NOTIFY until the appropriate SIP timer says to destroy the NOTIFY
transaction. When the pjsip evsub code is told that the transaction has
been terminated, it responds in kind by alerting us that the
subscription has been terminated, destroying the subscription, and then
removing its reference to the dialog, thus destroying the dialog.
The problem is that when we get told that the subscription is being
terminated, we detect that we have not sent a terminating NOTIFY
request, so we queue up such a NOTIFY to be sent out. By the time that
queued NOTIFY gets sent, the dialog has been destroyed, so attempting to
send that NOTIFY can result in a crash.
The fix being introduced here is actually a reintroduction of something
the pubsub code used to employ. We hold a reference to the dialog and
wait to decrement our reference to the dialog until our subscription
tree object is destroyed. This way, we can send messages on the dialog
even if the PJSIP evsub code wants to terminate earlier than we would
like.
In doing this, some NULL checks for subscription tree dialogs have been
removed since NULL dialogs are no longer actually possible.
Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5
2015-09-29 14:53 +0000 [0a346f095f] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Ensure dialog lock balance.
When sending a NOTIFY, we lock the dialog and then unlock the dialog
when finished. A recent change made it so that the subscription tree's
dialog pointer will be set NULL when sending the final NOTIFY request
out. This means that when we attempt to unlock the dialog, we pass a
NULL pointer to pjsip_dlg_dec_lock(). The result is that the dialog
remains locked after we think we have unlocked it. When a response to
the NOTIFY arrives, the monitor thread attempts to lock the dialog, but
it cannot because we never released the dialog lock. This results in
Asterisk being unable to process incoming SIP traffic any longer.
The fix in this patch is to use a local pointer to save off the pointer
value of the subscription tree's dialog when locking and unlocking the
dialog. This way, if the subscription tree's dialog pointer is NULLed
out, the local pointer will still have point to the proper place and the
dialog lock will be unlocked as we expect.
Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a
2015-09-28 16:36 +0000 [ad39508095] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Prevent crashes on final NOTIFY.
The SIP dialog is removed from the subscription tree when the final
NOTIFY is sent. However, after the final NOTIFY is sent, the persistence
update function still attempts to access the cseq from the dialog,
resulting in a crash.
This fix removes the subscription persistence at the same time that the
dialog is removed from the subscription tree. This way, there is no
attempt to update persistence when the subscription is being destroyed.
Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb
2015-09-17 17:28 +0000 [067f408760] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Remove serializer when sending final NOTIFY.
There have been crashes seen where a taskprocessor's listener is NULL
unexpectedly.
Looking at backtraces, the problem was specifically seen in PJSIP
serializers.
Subscriptions make the mistake of removing a serializer from a dialog
during subscription tree destruction. Since subscription trees are
reference-counted, guaranteeing the circumstances behind the destruction
are not possible. This makes it so that the dialog serializer can be
removed while not holding the dialog lock. This makes it possible for
the distributor to get a pointer to the dialog serializer and have that
serializer get freed out from under it.
The fix for this is to remove the serializer from a subscription dialog
when sending the final NOTIFY. This guarantees that the serializer is
removed with the dialog lock held. By doing this, we guarantee that if
the distributor gains access to the dialog's serializer, it will not be
possible for the serializer to get freed by another thread.
Change-Id: I21f5dac33529f65cec45679bdace60670800ff66
2015-09-02 09:14 +0000 [1bcc592765] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Fix crash on destruction of empty subscription tree.
If an old persistent subscription is recreated but then immediately
destroyed because it is out of date, the subscription tree will have no
leaf subscriptions on it. This was resulting in a crash when attempting
to destroy the subscription tree.
A simple NULL check fixes this problem.
Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac
2015-09-01 15:47 +0000 [b3cc2bd7df] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Solidify lifetime and ownership of objects.
There have been crashes and general instability seen in the pubsub code,
so this patch introduces three changes to increase the stability.
First, the ownership model for subscriptions has been modified. Due to
RLS, subscriptions are stored in memory as a tree structure. Prior to my
patch, the PJSIP subscription was the owner of the subscription tree.
When the PJSIP subscription told us that it was terminating, we started
destroying the subscription tree along with all of the individual leaf
subscriptions that belong to the tree. The problem with this model is
that the two actors in play here, the PJSIP subscription and the
individual leaf subscriptions, need to have joint ownership of the
subscription tree. So now, the PJSIP subscription and the individual
leaf subscriptions each have a reference to the subscription tree. This
way, we will not actually free memory until no players are left that
care. The PJSIP subscription is a bigger stakeholder, in that if the
PJSIP subscription's reference to the subscription tree is removed, the
subscription tree instructs the leaf subscriptions to shut down and drop
their references to the subscription tree when possible. The individual
leaf subscriptions, upon being told to shut down, can drop their stasis
subscriptions or whatever they use to learn of new state, and then drop
their reference to the subscription tree once they are ready to die.
Second, the lifetime of a PJSIP subscription's reference to our
subscription tree has been altered. As I learned from doing a deep dive,
the PJSIP evsub code can tell Asterisk multiple times that the
subscription has been terminated, and not all of these times
are especially helpful. I have altered the message flow that we use for
SIP subscriptions such that we will always drop the PJSIP subscription's
reference to the subscription tree when we send the NOTIFY that
terminates a SIP subscription. This also means that we will now queue
NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so
that we can have predictable state changes from the PJSIP evsub code.
Third, the synchronization of operations has been improved. PJSIP can
call into our code from a serializer thread (e.g. upon receiving an
incoming request) or from the monitor thread (e.g. when a subscription
times out). Because of this, there is the possibility of competing
threads stepping on each other. PJSIP attempts to do some
synchronization on its own by always keeping the dialog lock held when
it calls into us. However, since we end up pushing tasks into the
serializer, the result was that serialized operations were not grabbing
the dialog lock and could, as a result, step on something that was being
attempted by a different thread. Now we ensure that serialized
operations grab the dialog lock, then check for extenuating
circumstances, then proceed with their operation if they can.
Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5
2015-10-19 15:28 +0000 [c8c65dfa41] Richard Mudgett <rmudgett@digium.com>
* strings.c: Fix __ast_str_helper() to always return a terminated string.
Users of functions which call __ast_str_helper() such as the ones listed
below are likely to not check the return value for failure so ensuring
that the string is always nil terminated is a good safety measure.
ast_str_set_va()
ast_str_append_va()
ast_str_set()
ast_str_append()
Change-Id: I36ab2d14bb6015868b49329dda8639d70fbcae07
2015-10-19 15:27 +0000 [b271d4a28a] Richard Mudgett <rmudgett@digium.com>
* Add missing failure checks to ast_str_set_va() callers.
Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f
2015-10-21 11:44 +0000 [f2725c8b77] Joshua Colp <jcolp@digium.com>
* res_pjsip: Move URI validation to use time.
In a realtime based system with a limited number of threadpool threads
it is possible for a deadlock to occur. This happens when permanent
endpoint state is updated, which will cause database queries to be done.
These queries may result in URI validation being done which is done
synchronously using a PJSIP thread. If all PJSIP threads are in use
processing traffic they themselves may be blocked waiting to get the
permanent endpoint container lock when identifying an endpoint.
This change moves URI validation to occur at use time instead of
configuration time. While this comes at a cost of not seeing a problem
until you use it it does solve the underlying deadlock problem.
ASTERISK-25486 #close
Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a
2015-10-21 08:08 +0000 [84ff075d41] Alexander Traud <pabstraud@compuserve.com>
* format: Update the maximum packetization time for iLBC 30.
In September 2006, the maximum packetization time (ptime) were set to such a
low value, packetization was disabled for many codecs actually. This was fixed
for many codecs but not for iLBC 30. This enables packetization for iLBC which
can be enabled for example via allow=ilbc:60,gsm,alaw,ulaw in the file sip.conf.
ASTERISK-7803
Change-Id: I2ef90023d35efb7cb8fe96ed74f53f6846ffad12
2015-10-21 09:51 +0000 [869ef2a8ee] Alexander Traud <pabstraud@compuserve.com>
* chan_sip: Fix autoframing=yes.
With Asterisk 13, the structures ast_format and ast_codec changed. Because of
that, the paketization timing (framing) of the RTP channel moved away from the
formats/codecs. In the course of that change, the ptime of the callee was not
honored anymore, when the optional autoframing was enabled.
ASTERISK-25484 #close
Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4
2015-10-20 22:24 +0000 [9fd2adc204] Matt Jordan <mjordan@digium.com>
* rest-api-templates: Wikify error code response reasons
Error response code descriptions may contain wiki markup that need to be
escaped. Without this patch, Confluence will reject the document being sent
and the responsible script will raise an exception.
Change-Id: I21fcb66fee7f6332381f2b99b1b0195dff215ee5
2015-10-20 12:06 +0000 [72cbb6df55] Matt Jordan <mjordan@digium.com>
* funcs/func_holdintercept: Actually add the HOLD_INTERCEPT function
When ab803ec342 was committed, it accidentally forgot to actually *add* the
HOLD_INTERCEPT function. This highlights two interesting points:
* Gerrit forces you to put the patch as it is going to into the repo up for
review, which Review Board did not. Yay Gerrit.
* No one apparently bothered to use this feature, or else they don't know about
it. I'm going to go with the latter explanation.
ASTERISK-24922
Change-Id: Ida38278f259dd07c334a36f9b7d5475b5db72396
2015-10-19 19:59 +0000 [9fc9777fa3] Matt Jordan <mjordan@digium.com>
* contrib/scripts/autosupport: Update for Asterisk 13
This patch adds some minor tweaks for autosupport to update it for Asterisk 13.
This includes:
* Finally removing most references to Zaptel
* Adding support for some additional 'core' commands, and fixing nomenclature
that generally hasn't been used for some time
* Adding some PJSIP/SIP commands to gather endpoints/peers and active channels
Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1
2015-10-14 14:15 +0000 [dc6ec661b3] mdu113 <mulitskiy@acedsl.com>
* res_config_pgsql.c: Fix deadlock loading realtime configuration.
On v13, loading several thousand PJSIP endpoints on Asterisk start causes
a deadlock most of the time.
Thanks to mdu113 for discovering that there was a call to pgsql_exec() not
protected by the pgsql_lock reentrancy lock.
{quote}
I believe a code path exists that attempts to use pgsql connection without
locking pgsql_lock. I believe what happens during that deadlock that I
see is two concurrent threads are both attempting to send query to pgsql,
one of the thread is using a code path without locking pgsql_lock. If
they managed to send queries at the same time, it seems postgres ignores
one of the queries and replies only to the one of them. If it happens so
that the thread holding the lock didn't receive the reply it will wait for
it (and hold the lock) forever (or at least for very long time), thus
completely blocking all access to db.
{quote}
* Added missing reentrancy locking around pgsql_exec() in find_table().
* Moved unlock of pgsql_lock in unload_module() to avoid locking inversion
between the psql_tables list lock and the pgsql_lock.
ASTERISK-25455 #close
Reported by: mdu113
Patches:
res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113
Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2
2015-10-13 14:13 +0000 [f8707ae9a5] Olle Johansson (License 5267)
* channels/chan_sip: Set cause code to 44 on RTP timeout
To quote Olle:
"When issuing a hangup due to RTP timeouts the cause code is not set. I have
selected 44 based on Cisco's implementation..."
ASTERISK-25135 #close
Reported by: Olle Johansson
patches:
rtp-timeout-cause-1.8.diff uploaded by Olle Johansson (License 5267)
Change-Id: Ia62100c55077d77901caee0bcae299f8dc7375fc
2015-10-10 15:20 +0000 [486b172b50] Ivan Poddubny <ivan.poddubny@gmail.com>
* Build: Add menuselect options for using compiler sanitizers
This patch adds menuselect options for building Asterisk with
various sanitizers provided by gcc and clang.
When one of *SANITIZER flags is set in menuselect, the appropriate
option is added to CFLAGS ad LDFLAGS for the build.
Information on sanitizers in the project wiki:
https://github.com/google/sanitizers/wiki
GCC Manual:
https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
Clang Compiler User's Manual:
http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
ASTERISK-24718 #close
Reported by: Badalian Vyacheslav
Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0
2015-10-12 11:21 +0000 [e14023ca35] Richard Mudgett <rmudgett@digium.com>
* config.c: Fix off-nominal memory leak.
Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0
2015-10-12 11:20 +0000 [a99e821520] Richard Mudgett <rmudgett@digium.com>
* config.c: Fix potential memory corruption after [section](+).
The memory corruption could happen if the [section](+) is the last section
in the file with trailing comments. In this case process_text_line() has
left *last_cat is set to newcat and newcat is destroyed.
Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93
2015-10-12 11:21 +0000 [8d31d2526b] Richard Mudgett <rmudgett@digium.com>
* config.c: Fix #include after [section](+).
An #include right after a [section](+) would associate any variable
assignments before a new section in the #include with the wrong section.
* Fix section association by setting the current section to the appended
section.
* Fix '+' and '!' section flag interaction corner case depending upon
which flag came first. If the '!' came first then it would be ignored.
If the '!' came after then it would affect the appended section. The '!'
will now no longer be ignored.
ASTERISK-25461 #close
Reported by: Sean Pimental
Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3
2015-10-06 18:01 +0000 [3329c714f7] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Fix deadlock when sending out-of-dialog requests.
The struct send_request_wrapper has a pjsip lock associated with it that
is created non-recursive. There is a code path for the struct
send_request_wrapper lock that will attempt to lock it recursively. The
reporter's deadlock showed that the thread calling endpt_send_request()
deadlocked itself right after the wrapper object got created.
Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited
MWI NOTIFY messages can hit this deadlock.
* Replaced the struct send_request_wrapper pjsip lock with the mutex lock
that can come with an ao2 object since all of Asterisk's mutexes are
recursive. Benefits include removal of code maintaining the pjsip
non-recursive lock since ao2 objects already know how to maintain their
own lock and the lock will show up in the CLI "core show locks" output.
ASTERISK-25435 #close
Reported by: Dmitriy Serov
Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d
2015-10-06 11:05 +0000 [a1435aa3fa] Stefan Engström <stefanen@kth.se>
* res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending
In ast_rtp_read, the value of the variable 'mark' which we try to assign to a
frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate
it to 0 or 1.
ASTERISK-25451 #close
Change-Id: I53bdf5c026041730184a6a809009c028549ce626
2015-10-07 01:24 +0000 [3357678b94] Ivan Poddubny <ivan.poddubny@gmail.com>
* func_presencestate: Return "not_set" when no data is set in AstDB
Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not
exist, i.e. when a new CustomPresence is added in the dialplan.
ASTERISK-25400 #close
Reported by: Andrew Nagy
Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a
2015-10-06 20:43 +0000 [b714b2152d] Matt Jordan <mjordan@digium.com>
* res/res_rtp_asterisk: Fix assignment after ao2 decrement
When we decide we will no longer schedule an RTCP write, we remove the
reference to the RTP instance, then assign -1 to the stored scheduler ID
in case something else comes along and wants to see if anything is scheduled.
That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to
fix the regression introduced by 3cf0f29310, this improper assignment on a
potentially destroyed object started getting tripped on the build agents.
Frankly, this should have been crashing a lot more often earlier. I can only
assume that the timing was changed just enough by both changes to start
actually hitting this problem.
As it is, simply moving the assignment prior to the ao2 deference is sufficient
to keep the RTP instance from being referenced when it is very, truly,
aboslutely dead.
(Note that it is still good practice to assign -1 to the scheduler ID when we
know we won't be scheduling it again, as the ao2 deref *may* not always destroy
the ao2 object.)
ASTERISK-25449
Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7
2015-10-06 12:40 +0000 [f939e2bd48] Florian Sauerteig <ffs@ccn.net>
* chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers.
If a Via header containes an IPv6 address and a port number is ommitted,
as it is the standard port, we now leave the port empty and to not set it
to the value after the first colon of the IPv6 address.
ASTERISK-25443 #close
Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70
2015-10-05 16:53 +0000 [426263a64d] Richard Mudgett <rmudgett@digium.com>
* chan_pjsip: Fix crash on reINVITE before initial INVITE completes.
Apparently some endpoints attempt to send a reINVITE before completing the
initial INVITE transaction. In this case PJSIP responds appropriately to
the reINVITE with a 491 INVITE request pending. Unfortunately chan_pjsip
is using the initial INVITE transaction state to determine if an INVITE is
the initial INVITE or a reINVITE. Since the initial INVITE transaction
has not been confirmed yet chan_pjsip thinks the reINVITE is an initial
INVITE and starts another PBX thread on the channel. The extra PBX thread
ensures that hilarity ensues.
* Fix checks for a reINVITE on incoming requests to look for the presence
of a to-tag instead of the initial INVITE transaction state.
* Made caller_id_incoming_request() determine what to do if there is a
channel on the session or not. After a channel is created it is too late
to just store the new party id on the session because the session's party
id has already been copied to the channel's caller id.
ASTERISK-25404 #close
Reported by: Chet Stevens
Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be
2015-10-05 21:34 +0000 [50fa9ff997] Matt Jordan <mjordan@digium.com>
* Fix improper usage of scheduler exposed by 5c713fdf18f
When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of
'0' returned. While this was valid per the documentation for the API, it was
apparently never returned previously. As a result, several users of the
scheduler API viewed the result as being invalid, causing them to reschedule
already scheduled items or otherwise fail in interesting ways.
This patch corrects the users such that they view '0' as valid, and a returned
ID of -1 as being invalid.
Note that the failing HEP RTCP tests now pass with this patch. These tests
failed due to a duplicate scheduling of the RTCP transmissions.
ASTERISK-25449 #close
Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39
2015-08-26 16:58 +0000 [8f777ab584] Debian Amtelco <dan@amtelco.com>
* chan_pjsip: Add Referred-By header to the PJSIP REFER packet.
Some systems require the REFER packet to include a Referred-By header.
If the channel variable SIPREFERREDBYHDR is set, it passes that value as the
Referred-By header value. Otherwise, it adds the current dialogs local info.
Reported by: Dan Cropp
Tested by: Dan Cropp
Change-Id: I3d17912ce548667edf53cb549e88a25475eda245
2015-10-03 06:27 +0000 [74635b5638] Ivan Poddubny <ivan.poddubny@gmail.com>
* manager: Fix GetConfigJSON returning invalid JSON
When GetConfigJSON was introduced back in 1.6, it returned each
section as an array of strings: ["key=value", "key2=value2"].
Afterwards, it was changed a few times and became
["key": "value", "key2": "value2"], which is not a correct JSON.
This patch fixes that by constructing a JSON object {} instead of
an array [].
Also, the keys "istemplate" and "tempates" that are used to
indicate templates and their inherited categories are now wrapped in
quotes.
ASTERISK-25391 #close
Reported by: Bojan Nemčić
Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8
2015-09-30 17:28 +0000 [40c69e78f5] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Fix deadlock with scheduler.
A deadlock can happen when a sorcery object is being expired from the
memory cache when at the same time another object is being placed into the
memory cache. There are a couple other variations on this theme that
could cause the deadlock. Basically if an object is being expired from
the sorcery memory cache at the same time as another thread tries to
update the next object expiration timer the deadlock can happen.
* Add a deadlock avoidance loop in expire_objects_from_cache() to check if
someone is trying to remove the scheduler callback from the scheduler.
ASTERISK-25441 #close
Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc
2015-10-01 14:30 +0000 [dfeb513e85] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Replace inline code with function.
Make sorcery_memory_cache_close() call remove_all_from_cache() instead of
partially inlining it.
ASTERISK-25441
Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c
2015-10-01 14:27 +0000 [ced0a2d71b] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Shutdown in a less crash potential order.
Basically you should shutdown in the opposite order of how you setup since
later setup pieces likely depend on earlier setup pieces. e.g.,
Registering your external API with the rest of the system should be the
last thing setup and the first thing unregistered during shutdown.
Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e
2015-09-30 17:27 +0000 [cc279eea11] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Misc tweaks.
Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160
2015-09-30 17:27 +0000 [9af3b613f6] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK.
Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c
2015-09-30 13:42 +0000 [56ed7b9dd5] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Move "Set role" warning to be debug.
In practice the set_role API callback can be invoked even
when no ICE is present on an RTP instance. This can occur
if ICE has not been enabled on it.
ASTERISK-25438 #close
Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69
2015-09-28 15:31 +0000 [ddebb217f0] Richard Mudgett <rmudgett@digium.com>
* sched.c: Add warning about negative time interval request.
Change-Id: Ib91435fb45b7f5f7c0fc83d0eec20b88098707bc
2015-09-29 14:53 +0000 [d30939b6e8] Kevin Harwell <kharwell@digium.com>
* ARI: Changed version from 1.8.0 to 1.9.0
Change-Id: I510991c60d28d171f47c4b58bba4947f7fc71b13
2015-09-25 18:37 +0000 [5f19c9bade] Richard Mudgett <rmudgett@digium.com>
* res/ari/config.c: Fix user sort compare function.
Made use the ao2 sort compare template function and OBJ_SEARCH_xxx
identifiers.
Change-Id: Ic53005dc5aafa7a36c72300dd89b75fb63c92f4c
2015-09-25 17:26 +0000 [3a85764039] Richard Mudgett <rmudgett@digium.com>
* res/ari/config.c: Optimize conf_alloc() object init.
* Now conf_alloc() has more off nominal error checking.
* Eliminated RAII_VAR() use in conf_alloc().
* Eliminated a dubius shortcut when destroying cfg->general in
conf_destructor() that would cause a crash if cfg->general failed to get
allocated.
* Add some ACO registration section comments.
Change-Id: Ia40c2b1b2d0777d641605118ae019c5a73865e1a
2015-09-25 16:48 +0000 [028033e5a8] Richard Mudgett <rmudgett@digium.com>
* res/ari/config.c: Fix conf_alloc() object init.
Need to finish initializing the string fields in the ao2 object before
putting any default strings into them.
ASTERISK-25383 #close
Reported by: yaron nahum
Change-Id: I9f7f3a03f0c4991a01593abf8697b9a587c0ea84
2015-09-27 20:45 +0000 [90165e306d] Matt Jordan <mjordan@digium.com>
* res/res_stasis: Fix accidental subscription to 'all' bridge topic
When b99a7052621700a1aa641a1c24308f5873275fc8 was merged, subscribing to a
NULL bridge will now cause app_subscribe_bridge to implicitly subscribe to
all bridges. Unfortunately, the res_stasis control loop did not check that
a bridge changing on a channel's control object was actually also non-NULL.
As a result, app_subscribe_bridge will be called with a NULL bridge when a
channel leaves a bridge. This causes a new subscription to be made to the
bridge. If an application has also subscribed to the bridge, the application
will now have two subscriptions:
(1) The explicit one created by the app
(2) The implicit one accidentally created by the control structure
As a result, the 'BridgeDestroyed' event can be sent multiple times. This
patch corrects the control loop such that it only subscribes an application
to a new bridge if the bridge pointer is non-NULL.
ASTERISK-24870
Change-Id: I3510e55f6bc36517c10597ead857b964463c9f4f
2015-09-04 13:51 +0000 [e1223ff6db] Scott Griepentrog <scott@griepentrog.com>
* Scripts: check file versions of Asterisk and dependencies
To help in diagnosing mismatched modules and libraries, this
script scans for version, repository, and source information
and reports what is found.
ASTERISK-25376 #close
Reported by: Ashley Sanders
Change-Id: Ib0642d0fb96712476f59760d6d137a24633fe2d6
2015-09-24 14:56 +0000 [6b1e7583c1] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Force COLP update if outgoing channel name changed.
* When a call is answered and the outgoing channel name has changed then
force a connected line update because the channel is no longer the same.
The channel was masqueraded into by another channel. This is usually
because of a call pickup.
Note: Forwarded calls are handled in a controlled manner so the original
channel name is replaced with the forwarded channel.
ASTERISK-25423 #close
Reported by: John Hardin
Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172
2015-09-24 14:20 +0000 [6bf304bf25] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Factor out a connected line update routine.
Replace inlined code with update_connected_line_from_peer().
ASTERISK-25423
Reported by: John Hardin
Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3
2015-09-24 13:27 +0000 [e36b5f1e8e] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Make 'A' option pass COLP updates.
While the 'A' option is playing the announcement file allow the caller and
peer to exchange COLP update frames.
ASTERISK-25423
Reported by: John Hardin
Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9
2015-09-24 12:59 +0000 [747bfac895] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Force COLP update if outgoing channel name changed.
* When a call is answered and the outgoing channel name has changed then
force a connected line update because the channel is no longer the same.
The channel was masqueraded into by another channel. This is usually
because of a call pickup.
Note: Forwarded calls are handled in a controlled manner so the original
channel name is replaced with the forwarded channel.
ASTERISK-25423
Reported by: John Hardin
Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c
2015-09-24 12:37 +0000 [14481d9aa0] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Factor out a connected line update routine.
Replace inlined code with update_connected_line_from_peer().
ASTERISK-25423
Reported by: John Hardin
Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091
2015-09-23 17:41 +0000 [bbeda190c3] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Remove some no-op code.
Change-Id: Ice1884a94315d3cb7e3bbd47a9fba76a27276c54
2015-09-23 14:02 +0000 [f050fa76eb] Mark Michelson <mmichelson@digium.com>
* logger: Prevent duplicate dynamic channels from being added.
There was a problem observed where the "logger add channel" CLI command
would allow for a channel with the same name to be added multiple times.
This would result in each message being written out to the same file
multiple times.
The problem was due to the difference in how logger channel filenames
are stored versus the format they are allowed to be presented when they
are added. For instance, if adding the logger channel "foo" through the
CLI, the result would be a logger channel with the file name
/var/log/asterisk/foo being stored. So when trying to add another "foo"
channel, "foo" would not match "/var/log/asterisk/foo" so we'd happily
add the duplicate channel.
The fix presented here is to introduce two new methods in the logger
code:
* make_filename(): given a logger channel name, this creates the
filename for that logger channel.
* find_logchannel(): given a logger channel name, this calls
make_filename() and then traverses the list of logchannels in order
to find a match.
This change has made use of make_filename() and find_logchannel()
throughout to more consistently behave.
ASTERISK-25305 #close
Reported by Mark Michelson
Change-Id: I892d52954d6007d8bc453c3cbdd9235dec9c4a36
2015-09-24 14:49 +0000 [629458d349] Mark Michelson <mmichelson@digium.com>
* Do not swallow frames on channels leaving bridges.
When leaving a bridge, indications on a channel could be swallowed by
the internal indication logic because it appears that the channel is on
its way to be hung up anyway. One such situation where this is
detrimental is when channels on hold are redirected out of a bridge. The
AST_CONTROL_UNHOLD indication from the bridging code is swallowed,
leaving the channel in question to still appear to be on hold.
The fix here is to modify the logic inside ast_indicate_data() to not
drop the indication if the channel is simply leaving a bridge. This way,
channels on hold redirected out of a bridge revert to their expected "in
use" state after the redirection.
ASTERISK-25418 #close
Reported by Mark Michelson
Change-Id: If6115204dfa0551c050974ee138fabd15f978949
2015-09-22 17:08 +0000 [5f15cd93f0] Richard Mudgett <rmudgett@digium.com>
* app_page.c: Fix crash when forwarding with a predial handler.
Page uses the async method of dialing with the dial API. When a call gets
forwarded there is no calling channel available. If the predial handler
was set then the calling channel could not be put into auto-service
for the forwarded call because it doesn't exist. A crash is the result.
* Moved the callee predial parameter string processing to before the
string is passed to the dial API rather than having the dial API do it.
There are a few benefits do doing this. The first is the predial
parameter string processing doesn't need to be done for each channel
called by the dial API. The second is in async mode and the forwarded
channel is to have the predial handler executed on it then the
non-existent calling channel does not need to be present to process the
predial parameter string.
* Don't start auto-service on a non-existent calling channel to execute
the predial handler when the dial API is in async mode and forwarding a
call.
ASTERISK-25384 #close
Reported by: Chet Stevens
Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981
2015-09-03 21:19 +0000 [b50e372394] Matt Jordan <mjordan@digium.com>
* ARI: Add events for Contact and Peer Status changes
This patch adds support for receiving events regarding Peer status changes
and Contact status changes. This is particularly useful in scenarios where
we are subscribed to all endpoints and channels, where we often want to know
more about the state of channel technology specific items than a single
endpoint's state.
ASTERISK-24870
Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9
2015-09-04 12:24 +0000 [3502c0431d] Matt Jordan <mjordan@digium.com>
* res/res_stasis_device_state: Allow for subscribing to 'all' device state
This patch adds support for subscribing to all device state changes. This is
done either by subscribing to an empty device, e.g., 'eventSource=deviceState:',
or by the WebSocket connection specifying that it wants all state in the
system.
ASTERISK-24870
Change-Id: I9cfeca1c9e2231bd7ea73e45919111d44d2eda32
2015-09-04 12:25 +0000 [4c9f613309] Matt Jordan <mjordan@digium.com>
* ARI: Add the ability to subscribe to all events
This patch adds the ability to subscribe to all events. There are two possible
ways to accomplish this:
(1) On initial WebSocket connection. This patch adds a new query parameter,
'subscribeAll'. If present and True, Asterisk will subscribe the
applications to all ARI events.
(2) Via the applications resource. When subscribing in this manner, an ARI
client should merely specify a blank resource name, i.e., 'channels:'
instead of 'channels:12354'. This will subscribe the application to all
resources of the 'channels' type.
ASTERISK-24870 #close
Change-Id: I4a943b4db24442cf28bc64b24bfd541249790ad6
2015-09-21 08:16 +0000 [ec514ad64d] Elazar Broad <elazar@thebroadfamily.com>
* core/logging: Fix logging to more than one syslog channel
Currently, Asterisk will log to the last configured syslog
channel in logger.conf. This is due to the fact that the
final call to openlog() supersedes all of the previous calls.
This commit removes the call to openlog() and passes the
facility to ast_log_vsyslog(), along with utilizing the
LOG_MAKEPRI macro to ensure that the message is routed to
the correct facility and with the correct priority.
ASTERISK-25407 #close
Reported by: Elazar Broad
Tested by: Elazar Broad
Change-Id: Ie2a2416bc00cce1b04e99ef40917c2011953ddd2
2015-09-21 18:06 +0000 [aeddee39fb] Kevin Harwell <kharwell@digium.com>
* app_record: RECORDED_FILE variable not being populated
The RECORDED_FILE variable is empty unless a '%d' is specified in the filename.
This patch makes it so the variable is always set to the filename.
ASTERISK-25410 #close
Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653
2015-09-16 08:22 +0000 [2bd27d1222] Joshua Colp <jcolp@digium.com>
* pbx: Update device and presence state when changing a hint extension.
When changing a hint extension without removing the hint first the
device state and presence state is not updated. This causes the state
of the hint to be that of the previous extension and not the current
one. This state is kept until a state change occurs as a result of
something (presence state change, device state change).
This change updates the hint with the current device and presence
state of the new extension when it is changed. Any state callbacks
which may have been added before the hint extension is changed are
also informed of the new device and presence state if either have
changed.
ASTERISK-25394 #close
Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f
2015-09-17 16:34 +0000 [c94f46080f] Scott Griepentrog <scott@griepentrog.com>
* CHAOS: avoid crash if string create fails
Validate string buffer allocation before using them.
ASTERISK-25323
Change-Id: Ib9c338bdc1e53fb8b81366f0b39482b83ef56ce0
2015-09-17 04:52 +0000 [b59c4d82b5] Walter Doekes <walter+asterisk@wjd.nu>
* chan_sip: Fix From header truncation for extremely long CALLERID(name).
The CALLERID(num) and CALLERID(name) and other info are placed into the
`char from[256]` in initreqprep. If the name was too long, the addr-spec
and params wouldn't fit.
Code is moved around so the addr-spec with params is placed there first,
and then fitting in as much of the display-name as possible.
ASTERISK-25396 #close
Change-Id: I33632baf024f01b6a00f8c7f35c91e5f68c40260
2015-09-17 16:59 +0000 [4cc59533b9] Richard Mudgett <rmudgett@digium.com>
* CHAOS: res_pjsip_diversion avoid crash if allocation fails
Validate ast_malloc buffer returned before using it in
set_redirecting_value().
ASTERISK-25323
Change-Id: I15d2ed7cb0546818264c0bf251aa40adeae83253
2015-09-17 16:47 +0000 [4fb95bbc4e] Kevin Harwell <kharwell@digium.com>
* app_queue: AgentComplete event has wrong reason
When a queued caller transfers an agent to another extension sometimes the
raised AgentComplete event has a reason of "caller" and sometimes "transfer".
Since a transfer has taken place this should always be transfer. This occurs
because sometimes the stasis hangup event arrives before the transfer event
thus writing a different reason out.
With this patch, when a hangup event is received during a transfer it will
check to see if the channel that is hanging up is part of a transfer. If so
it will return and let the subsequently received transfer event handler take
care of the cleanup.
ASTERISK-25399 #close
Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d
2015-09-17 13:09 +0000 [fb6b5c684b] Scott Griepentrog <scott@griepentrog.com>
* PJSIP: avoid crash when getting rtp peer
Although unlikely, if the tech private is returned as
a NULL, chan_pjsip_get_rtp_peer() would crash.
ASTERISK-25323
Change-Id: Ie231369bfa7da926fb2b9fdaac228261a3152e6a
2015-09-17 11:31 +0000 [6409e7b11a] Kevin Harwell <kharwell@digium.com>
* app_queue: Crash when transferring
During some transfer scenarios involving queues Asterisk would sometimes
crash when trying to obtain a channel snapshot (could happen on caller or
member channels). This occurred because the underlying channel had already
disappeared when trying to obtain the latest snapshot.
This patch adds a reference to both the member and caller channels that
extends to the lifetime of the queue'd call, thus making sure the channels
will always exist when retrieving the latest snapshots.
ASTERISK-25185 #close
Reported by: Etienne Lessard
Change-Id: Ic397fa68fb4ff35fbc378e745da9246a7b552128
2015-09-16 17:36 +0000 [fe5077b1f8] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Eliminate race during initial NOTIFY.
There is a slim chance of a race condition occurring where two threads
can both attempt to manipulate the same area.
Thread A can be handling an incoming initial SUBSCRIBE request. Thread A
lets the specific subscription handler know that the subscription has
been established.
At this point, Thread B may detect a state change on the subscribed
resource and queue up a notification task on Thread C, the subscription
serializer thread.
Now Thread A attempts to generate the initial NOTIFY request to send to
the subscriber at the same time that Thread C attempts to generate a
state change NOTIFY request to send to the subscriber.
The result is that Threads A and C can step on the same memory area,
resulting in a crash. The crash has been observed as happening when
attempting to allocate more space to hold the body for the NOTIFY.
The solution presented here is to queue the subscription establishment
and initial NOTIFY generation onto the subscription serializer thread
(Thread C in the above scenario). This way, there is no way that a state
change notification can occur before the initial NOTIFY is sent, and if
there is a quick succession of NOTIFYs, we can guarantee that the two
NOTIFY requests will be sent in succession.
Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815
2015-08-28 15:42 +0000 [b88c54fa4b] Alexander Traud <pabstraud@compuserve.com>
* translate: Fix transcoding while different in frame size.
When Asterisk translates between codecs, each with a different frame size (for
example between iLBC 30 and Speex-WB), too large frames were created by
ast_trans_frameout. Now, ast_trans_frameout is called with the correct frame
length, creating several frames when necessary. Affects all transcoding modules
which used ast_trans_frameout: GSM, iLBC, LPC10, and Speex.
ASTERISK-25353 #close
Change-Id: I2e229569d73191d66a4e43fef35432db24000212
2015-09-10 17:19 +0000 [5c713fdf18] Mark Michelson <mmichelson@digium.com>
* scheduler: Use queue for allocating sched IDs.
It has been observed that on long-running busy systems, a scheduler
context can eventually hit INT_MAX for its assigned IDs and end up
overflowing into a very low negative number. When this occurs, this can
result in odd behaviors, because a negative return is interpreted by
callers as being a failure. However, the item actually was successfully
scheduled. The result may be that a freed item remains in the scheduler,
resulting in a crash at some point in the future.
The scheduler can overflow because every time that an item is added to
the scheduler, a counter is bumped and that counter's current value is
assigned as the new item's ID.
This patch introduces a new method for assigning scheduler IDs. Instead
of assigning from a counter, a queue of available IDs is maintained.
When assigning a new ID, an ID is pulled from the queue. When a
scheduler item is released, its ID is pushed back onto the queue. This
way, IDs may be reused when they become available, and the growth of ID
numbers is directly related to concurrent activity within a scheduler
context rather than the uptime of the system.
Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2
2015-08-21 21:50 +0000 [865377fc38] Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
* chan_sip.c: Validation on module reload
Change validation on reload module because now used the cli function for
reload. The sip_reload() function never fail and ever return NULL for this
reason on reload() now use the call the sip_reload() and return
AST_MODULE_LOAD_SUCCESS.
This problem is dectected on reload by PUT method on ARI, getting always
404 http code when the module is reloaded.
ASTERISK-25325 #close
Reporte by: Rodrigo Ramírez Norambuena
Change-Id: I41215877fb2cfc589e0d4d464000cf6825f4d7fb
2015-08-21 17:39 +0000 [e75aff53e6] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Mark ast_sip_create_subscription() as not used.
Change-Id: I2b8db18eac36c01a5c7eb9467699124e203fd093
2015-09-09 12:24 +0000 [4d91d01df1] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Add some notification comments.
Change-Id: Ie62ff1f4b7adc1a12fa0303f53926af249b25e20
2015-08-21 18:01 +0000 [f36a9d1221] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Set dlg_status code instead of sending SIP response.
We should not try to send a SIP response message because we may be
restoring a persistent subscription where we are not responding to a SIP
request.
Change-Id: Id89167ef90320c5563f37e632db0dda6cb9e7dec
2015-08-21 17:40 +0000 [94582f8fab] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Fix off-nominal memory leak.
Fix off-nominal visited vector leak in build_resource_tree().
Change-Id: If0399c7941c9c0b1038bcfb7b9a371760977831c
2015-08-21 15:26 +0000 [8b3ed52239] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Fix one byte buffer overrun error.
ast_sip_pubsub_register_body_generator() did not account for the null
terminator set by sprintf() in the allocated output buffer.
Change-Id: I388688a132e479bca6ad1c19275eae0070969ae2
2015-08-21 15:25 +0000 [4329bd1e4c] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Use ast_alloca() instead of alloca().
Change-Id: Ia396096b4fedc2874649ca11137612c3f55e83e3
2015-08-21 11:04 +0000 [a456a20ecf] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_pubsub.c: Add missing error return in load_module().
Change-Id: I15debd0f717f16ee2f78e7f56151c3b3b97b72fc
2015-08-21 11:03 +0000 [f58f4c6e27] Richard Mudgett <rmudgett@digium.com>
* res_pjsip/location.c: Use the builtin ao2_callback() match function instead.
Change-Id: I364906d6d2bad3472929986704a0286b9a2cbe3f
2015-09-10 09:49 +0000 [9d1f176e29] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Copy default_from_user to avoid crash.
The default_from_user retrieval function was pulling the
default_from_user from the global configuration struct in an unsafe way.
If using a database as a backend configuration store, the global
configuration struct is short-lived, so grabbing a pointer from it
results in referencing freed memory.
The fix here is to copy the default_from_user value out of the global
configuration struct.
Thanks go to John Hardin for discovering this problem and proposing the
patch on which this fix is based.
ASTERISK-25390 #close
Reported by Mark Michelson
Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c
2015-09-10 08:39 +0000 [1dd0e220bf] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route
We will only rewrite the Contact header if there is no Record-Route header in
the received request. If a malfunctioning proxy places a Record-Route header
into a REGISTER request, we will decide that we shouldn't update the IP/port
in the Contact header, and we will end up storing a contact with an AoR that
contains the NAT'd IP address.
While it is nice to have the proxy *not* send a Record-Route in a REGISTER
request, it's also a good idea to not process the header in a non-dialog
message. This patch updates the code to explicitly ignore the Record-Route
header in REGISTER requests.
ASTERISK-25387 #close
Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f
2015-09-03 21:15 +0000 [4eedd9ef9d] Matt Jordan <mjordan@digium.com>
* main/config_options: Check for existance of internal object before derefing
Asterisk can load and register an object type while still having an invalid
sorcery mapping. This can cause an issue when a creation call is invoked.
For example, mis-configuring PJSIP's endpoint identifier by IP address mapping
in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a
subsequent ARI invocation to create the object will cause a crash, as the
internal type may not be registered as sorcery expects.
Merely checking for a NULL pointer here solves the issue.
Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac
2015-09-09 16:46 +0000 [71408df2b8] Alexander Anikin <may213@yandex.ru>
* chan_ooh323: Add ProgressIndicator IE with inband info available
Add ProgressIndicator IE with inband info present to Progress and
Alerting Q.931 message
ASTERISK-25227 #close
Reported by: Alexandr Dranchuk
Change-Id: I326ad13cb1db9a72b3fd902bafed3c28a3684203
2015-09-08 10:35 +0000 [f72f9ceefc] Scott Griepentrog <scott@griepentrog.com>
* pjsip: avoid possible crash req_caps allocation failure
Make certain that the pjsip session has not failed to
allocate the format capabilities structure, which can
otherwise cause a crash when referenced.
ASTERISK-25323
Change-Id: I602790ba12714741165e441cc64a3ecde4cb5750
2015-09-03 14:07 +0000 [fbf720db91] Jonathan Rose <jrose@digium.com>
* ParkAndAnnounce: Add variable inheritance
In Asterisk 11, the announcer channel would receive channel variables
from the channel being parked by means of normal channel inheritance.
This functionality was lost during the big res_parking project in
Asterisk 12. This patch restores that functionality.
ASTERISK-25369 #close
Review: https://gerrit.asterisk.org/#/c/1180/
Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e
2015-09-04 16:33 +0000 [695f26cbb7] David M. Lee <dlee@respoke.io>
* res_rtp_asterisk: Add more ICE debugging
In working through a recent ICE negotiation bug, I found the debug
logging in res_rtp_asterisk to be lacking. This patch adds a number of
debug and warning statements that were helpful.
Change-Id: I950c6d8f13a41f14b3d6334b4cafe7d4e997be80
2015-09-01 10:16 +0000 [4ed9c9a280] Guido Falsi <madpilot@freebsd.org>
* Core/General: Add #ifdef needed on FreeBSD.
pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED on FreeBSD
too.
ASTERISK-25310 #close
Reported by: Guido Falsi
Change-Id: Iae6befac9028b5b9795f86986a4a08a1ae6ab7c4
2015-09-08 07:21 +0000 [5469caa9dd] Joshua Colp <jcolp@digium.com>
* res_pjsip: Use hash for contact object identity instead of Contact URI.
In the wild it is possible for Contact URIs to be quite long as
parameters can exist on them. This can present a problem when storing
them in the AstDB as the URI is used as part of the object name and
there is a fixed length limit for the AstDB. This will cause
the contact to not get stored.
This change uses the MD5 hash of the Contact URI as part of the
object name instead. This has a fixed length which is guaranteed
to not exceed the AstDB length limit.
ASTERISK-25295 #close
Change-Id: Ie8252a75331ca00b41b9f308f42cc1fbdf701a02
2015-09-07 13:19 +0000 [480c443e26] Alexander Anikin <may213@yandex.ru>
* chan_ooh323: call ast_rtp_instance_stop on ooh323_destroy
Call ast_rtp_instance_stop on ooh323_destroy to free resources
allocated by rtp instance
ASTERISK-25299 #close
Report by: Alexandr Dranchuk
Change-Id: I455096bd7da016b871afe90af86067c2c7c9f33f
2015-09-07 11:15 +0000 [c3e6debdb9] Matt Jordan <mjordan@digium.com>
* res/res_pjsip: Purge contacts when an AoR is deleted
When an AoR is deleted by an external mechanism, such as through ARI, we
currently do not remove dynamic contacts that were created for that AoR as a
result of a received REGISTER request. As a result, re-creating the AoR will
cause the dynamic contact to be interpreted as a persistent contact, leading
to some rather strange state being created for the contacts/endpoints.
This patch adds a sorcery observer for the 'aor' object. When a delete is
issued on the underlying sorcery object, the observer is called, and all
contacts created and persisted in sorcery for that AoR are also removed. Note
that we don't want to perform this action when an AO2 object that is an AoR is
destroyed, as the AoR can still exist in the backing storage (and we would
thus be removing valid contacts from an AoR that still "exists".)
ASTERISK-25381 #close
Change-Id: I6697e51ef6b2858b5d63401f35dc378bb0f90328
2015-09-05 14:58 +0000 [78d0b9d97e] Matt Jordan <mjordan@digium.com>
* channels/pjsip/dialplan_functions: Add an option for extracting the SIP call-id
This patch adds a new option to the CHANNEL function that allows for the
extraction of the SIP call-id. It is used in conjunction with the 'pjsip'
option, and will return the Call-ID of the INVITE request that established
the PJSIP channel.
ASTERISK-25352
Change-Id: I278d1f8bcfe3a53c5aa1dadebc14e92b0abd476a
2015-09-04 16:06 +0000 [61c6c6aa6c] David M. Lee <dlee@respoke.io>
* Fix when remote candidates exceed PJ_ICE_MAX_CAND
We were passing the wrong count into pj_ice_sess_create_check_list(),
causing the create to fail if we ever received more than PJ_ICE_MAX_CAND
candidates.
Change-Id: I0303d8e1ecb20a8de9fe629a3209d216c4028378
2015-09-04 14:40 +0000 [ac62928d6b] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Change default from user value.
When Asterisk sends an outbound SIP request, if there is no direct
reason to place a specific value for the username in the From header,
Asterisk would generate a UUID. For example, this would happen when
sending outbound OPTIONS requests when qualifying or when sending
outbound INVITE requests when originating (if no explicit caller ID were
provided). The issue is that some SIP providers reject these sorts of
requests with a "Name too long" error response.
This patch aims to fix this by changing the default outbound username in
From headers to "asterisk". This value can be overridden by changing the
default_from_user option in the global options if desired.
ASTERISK-25377 #close
Reported by Mark Michelson
Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190
2015-09-04 09:26 +0000 [6002472a62] Scott Griepentrog <scott@griepentrog.com>
* endpoint snapshot: avoid second cleanup on alloc failure
In ast_endpoint_snapshot_create(), a failure to init the
string fields results in two attempts to ao2_cleanup the
same pointer. Removed RAII_VAR to eliminate problem.
ASTERISK-25375 #close
Reported by: Scott Griepentrog
Change-Id: If4d9dfb1bbe3836b623642ec690b6d49b25e8979
2015-09-04 05:33 +0000 [d32e516c7c] Martin Tomec <tomec.martin@gmail.com>
* res/pjsip: Mark WSS transport as secure
Pjsip is refusing to use unsecure transport with "sips" in url.
WSS should be considered as secure transport.
ASTERISK-24602 #comment Partially fixed by setting WSS as secure
Change-Id: Iddac406c6deba6240c41a603b8859dfefe1a5353
2015-09-02 17:26 +0000 [ad9cb6c2ce] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Fix contact refleak on stateful responses.
When sending a stateful response, creation of the transaction can fail,
most commonly because we are trying to create a transaction from a
retransmitted request. When creation of the transaction fails, we end up
leaking a reference to a contact that was bumped when the response was
created.
This patch adds the missing deref and fixes the reference leak.
Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07
2015-09-02 12:41 +0000 [cc1363209e] Joshua Colp <jcolp@digium.com>
* pbx: Fix crash when issuing "core show hints" with long pattern match.
When issuing the "core show hints" CLI command a combination of both
the hint extension and context is created. This uses a fixed size
buffer expecting that the extension will not exceed maximum extension
length. When the extension is actually a pattern match this constraint
does not hold true, and the extension may exceed the maximum extension
length. In this case extra characters are written past the end of the
fixed size buffer.
This change makes it so the construction of the combined hint extension
and context can not exceed the size of the buffer.
ASTERISK-25367 #close
Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499
2015-09-01 09:05 +0000 [d58c8d73af] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: re-re-fix persistent subscription storage.
A recent change to res_pjsip_pubsub switched to using pjsip_msg_print as
a means of writing an appropriate packet to persistent storage. While
this partially solved the issue, it had its own problems.
pjsip_msg_print will always add a Content-Length header to the message
it prints. Frequent restarts of Asterisk can result in persistent
subscriptions being written with five or more Content-Length headers. In
addition, sometimes some apparent corruption of individual headers could
be seen.
This aims to fix the problem by not running a parsed message through an
interpreter but rather by taking the raw message and saving it. The
logic for what to save is going to be different depending on whether a
SUBSCRIBE was received from the wire or if it was pulled from
persistence. When receiving a packet from the wire, when using a
streaming transport, the rdata->pkt_info.packet may contain multiple SIP
messages or fragments. However, the rdata->msg_info.msg_buf will always
contain the current SIP message to be processed. When pulling from
persistence, though, the rdata->msg_info.msg_buf will be NULL since no
transport actually handled the packet. However, since we know that we
will always ever pull one SIP message from persistence, we are free to
save directly from rdata->pkt_info.packet instead.
ASTERISK-25365 #close
Reported by Mark Michelson
Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b
2015-08-31 15:24 +0000 [03fe79f29e] Mark Michelson <mmichelson@digium.com>
* Fix deadlock on presence state changes.
A deadlock was observed where three threads were competing for different
locks:
* One thread held the hints lock and was attempting to lock a specific
hint.
* One thread was holding the specific hint's lock and was attempting to
lock the contexts lock
* One thread was holding the contexts lock and attempting to lock the
hints lock.
Clearly the second thread was doing the wrong thing here. The fix for
this is to make sure that the hint's lock is not held on presence state
changes. Something similar is already done (and commented about) for
device state changes.
ASTERISK-25362 #close
Reported by Mark Michelson
Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2
2015-08-29 10:36 +0000 [a676ba2aad] Joshua Colp <jcolp@digium.com>
* taskprocessor: Fix race condition between unreferencing and finding.
When unreferencing a taskprocessor its reference count is checked
to determine if it should be unlinked from the taskprocessors
container and its listener shut down. In between the time when the
reference count is checked and unlinking it is possible for
another thread to jump in, find it, and get a reference to it. If
the thread then uses the taskprocessor it may find that it is not
in the state it expects.
This change locks the taskprocessors container during almost the
entire unreference operation to ensure that any other thread which
may attempt to find the taskprocessor has to wait.
ASTERISK-25295
Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c
2015-08-28 20:22 +0000 [1b1561f4c8] Joshua Colp <jcolp@digium.com>
* res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items.
The keepalive support in res_pjsip_sdp_rtp currently assumes
that a stream will only be negotiated once. This is false.
If the stream is replaced and later added back it can be
negotiated again causing multiple keepalive scheduled items
to exist. This change explicitly deletes the existing
keepalive scheduled item before adding the new one.
The res_pjsip_sdp_rtp module also does not stop RTP
keepalives or timeout timer if the stream has been
replaced. This change adds a callback to the session media
interface to allow a media stream to be stopped without
the resources being destroyed. This allows the scheduled
items and RTP to be stopped when the stream no longer
exists.
ASTERISK-25356 #close
Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de
2015-08-28 19:57 +0000 [85e1cb51b2] Joshua Colp <jcolp@digium.com>
* sched: ast_sched_del may return prematurely due to spurious wakeup
When deleting a scheduled item if the item in question is currently
executing the ast_sched_del function waits until it has completed.
This is accomplished using ast_cond_wait. Unfortunately the
ast_cond_wait function can suffer from spurious wakeups so the
predicate needs to be checked after it returns to make sure it has
really woken up as a result of being signaled.
This change adds a loop around the ast_cond_wait to make sure that
it only exits when the executing task has really completed.
ASTERISK-25355 #close
Change-Id: I51198270eb0b637c956c61aa409f46283432be61
2015-08-27 12:26 +0000 [c2c7319082] Joshua Colp <jcolp@digium.com>
* res_pjsip_session: Don't invoke session supplements twice for BYE requests.
When a BYE request is received the PJSIP invite session implementation
creates and sends a 200 OK response before we are aware of it. This
causes the INVITE session state callback to be called into and ultimately
the session supplements run on the BYE request. Once this response has
been sent the normal transaction state callback is invoked which
invokes the session supplements on the BYE request again. This can
be problematic in particular with res_pjsip_rfc3326 as it may
attempt to update the hangup cause code on the channel while it is
in the process of being hung up.
This change makes it so the session supplements are only invoked
once by the INVITE session state callback.
ASTERISK-25318 #close
Change-Id: I69c17df55ccbb61ef779ac38cc8c6b411376c19a
2015-08-26 15:26 +0000 [6862c2a167] Scott Griepentrog <scott@griepentrog.com>
* Chaos: handle failed allocation in get_media_encryption_type
If the ast_strndup() call fails to allocate a copy of the
transport string for parsing, fail gracefully.
ASTERISK-25323
Reported by: Scott Griepentrog
Change-Id: Ia4b905ce6d03da53fea526224455c1044b1a5a28
2015-08-26 14:25 +0000 [f1cd636658] Scott Griepentrog <scott@griepentrog.com>
* Chaos: make hangup NULL tolerant
In chan_pjsip_new, if allocation of the pvt
structure fails, ast_hangup is called. But
it was written to assume pvt was valid, and
this change corrects that.
ASTERISK-25323
Reported by: Scott Griepentrog
Change-Id: I5f47860fe9cee4cd56abd3f79b108678ab72cc87
2015-08-26 05:40 +0000 [c01111223f] Joshua Colp <jcolp@digium.com>
* chan_sip: Allow call pickup to set the hangup cause.
The call pickup implementation in chan_sip currently sets the channel
hangup cause to "normal clearing" if call pickup is successfully
performed. This action overwrites the "answered elsewhere" hangup cause
set by the call pickup code and can result in the SIP device in
question showing a missed call when it should not.
This change sets the hangup cause to "normal clearing" as a
default initially but allows the call pickup to change it as
needed.
ASTERISK-25346 #close
Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff
2015-08-25 07:17 +0000 [2a4eee0cd9] Joshua Colp <jcolp@digium.com>
* res_pjsip: Add common ast_sip_get_host_ip API.
Modules commonly used the pj_gethostip function for retrieving the
IP address of the host. This function does not cache the result and may
result in a DNS lookup occurring, or additional work. If the DNS
server is unreachable or network issues arise this can cause the
pj_gethostip function to block for a period of time.
This change adds an ast_sip_get_host_ip and ast_sip_get_host_ip_string
function which does the same thing but caches the host IP address at
module load time. This results in no additional work being done each
time the local host IP address is needed.
ASTERISK-25342 #close
Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e
2015-08-24 11:04 +0000 [7c4d0c3506] Joshua Colp <jcolp@digium.com>
* res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced
When recreating a subscription it is possible for a freed sub_tree
to be referenced when the initial NOTIFY fails to be created.
Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788
2015-08-24 06:21 +0000 [6c2dab1e88] Joshua Colp <jcolp@digium.com>
* bridge: Kick channel from bridge if hung up during action.
When executing an action in a bridge it is possible for the
channel to be hung up without the bridge becoming aware of it.
This is most easily reproducible by hanging up when the bridge
is streaming DTMF due to a feature timeout. This change makes
it so after action execution the channel is checked to determine
if it has been hung up and if it has it is kicked from the bridge.
ASTERISK-25341 #close
Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062
2015-08-23 18:26 +0000 [bc6fe07f5c] Matt Jordan <mjordan@digium.com>
* res_pjsip/pjsip_configuration: Disregard empty auth values
When an endpoint is backed by a non-static conf file backend (such as
the AstDB or Realtime), the 'auth' object may be returned as being an
empty string. Currently, res_pjsip will interpret that as being a valid
auth object, and will attempt to authenticate inbound requests. This
isn't desired; is an auth value is empty (which the name of an auth
object cannot be), we should instead interpret that as being an invalid
auth object and skip it.
ASTERISK-25339 #close
Change-Id: Ic32b0c6eb5575107d5164a8c40099e687cd722c7
2015-08-19 12:10 +0000 [0582776f7f] Richard Mudgett <rmudgett@digium.com>
* ari/ari_websockets.c: Fix ast_debug parameter type mismatch.
This is a type mismatch fix of the debugging commit
c63316eec10e1990a88bf4712238d6deb375bfa9 made to find out why
a testsuite test was failing only on one of the continuous
integration build agents.
Change-Id: Iba34f6e87cec331f6ac80e4daff6476ea6f00a75
2015-08-19 10:30 +0000 [504213f542] Scott Griepentrog <scott@griepentrog.com>
* contrib: script install_prereq should install sqlite3
Asterisk needs the sqlite 3 library, which is package
sqlite-devel in CentOS. By adding this package to the
script, a problem with configure failing is resolved.
ASTERISK-25331 #close
Reported by: Kevin Harwell
Change-Id: I90efaf6a01914fea03f21e5cdbd91c348f44b0ec
2015-08-18 16:06 +0000 [77518d5434] Richard Mudgett <rmudgett@digium.com>
* res_http_websocket.c: Fix some off nominal path cleanup.
* Remove extraneous unlock on off-nominal path.
* Add missing HTTP error reply.
Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b
2015-08-18 14:46 +0000 [c61547fee6] Richard Mudgett <rmudgett@digium.com>
* res_ari.c: Add missing off nominal unlock and remove a RAII_VAR().
Change-Id: I0c5e7b34057f26dadb39489c4dac3015c52f5dbf
2015-08-17 16:41 +0000 [bd867cd078] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Extract some functions for simpler code.
* Extract set_queue_member_pause() from set_member_paused() for simpler
and more consistent code.
* Extract set_queue_member_ringinuse() from
set_member_ringinuse_help_members() for simpler code.
Change-Id: Iecc1f4119c63347341d7ea6b65f5fc4963706306
2015-08-14 12:55 +0000 [e5f5b9f384] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Fix setting QUEUE_MEMBER 'paused' and 'ringinuse'.
Setting the 'paused' and 'ringinuse' options on a queue member using the
dialplan function QUEUE_MEMBER did not behave the same way as the
equivalent dialplan applications or AMI actions.
* Made queue_function_mem_write() call the set_member_paused() and
set_member_value() for the 'paused' and 'ringinuse' options respectively.
A beneficial side effect is that the queue name is now optional and sets
the value in all queues the interface is a member.
* Update QUEUE_MEMBER XML documentation.
* Fix error checking in QUEUE_MEMBER() write.
ASTERISK-25215 #close
Reported by: Lorne Gaetz
Change-Id: I3a016be8dc94d63a9cc155295ff9c9afa5f707cb
2015-08-17 13:34 +0000 [ded51e3d77] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Fix error checking in QUEUE_MEMBER() read.
Change-Id: I7294e13d27875851c2f4ef6818adba507509d224
2015-08-17 11:00 +0000 [ab373f2cef] Scott Griepentrog <scott@griepentrog.com>
* CHAOS: prevent sorcery object with null id
When allocating a sorcery object, fail if the
id value was not allocated.
ASTERISK-25323
Reported by: Scott Griepentrog
Change-Id: I152133fb7545a4efcf7a0080ada77332d038669e
2015-08-14 15:46 +0000 [b719f56c72] Mark Michelson <mmichelson@digium.com>
* res_pjsip_sdp_rtp: Restore removed NULL check.
When sending an RTP keepalive, we need to be sure we're not dealing with
a NULL RTP instance. There had been a NULL check, but the commit that
added the rtp_timeout and rtp_hold_timeout options removed the NULL
check.
Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64
2015-08-13 12:30 +0000 [cea5dc7b8a] Richard Mudgett <rmudgett@digium.com>
* audiohook.c: Simplify variable usage in audiohook_read_frame_both().
Change-Id: I58bed58631a94295b267991c5b61a3a93c167f0c
2015-08-13 12:22 +0000 [b3a56bee83] Richard Mudgett <rmudgett@digium.com>
* audiohook.c: Fix MixMonitor crash when using the r() or t() options.
The built frame format in audiohook_read_frame_both() is now set to a
signed linear format before the rx and tx frames are duplicated instead of
only for the mixed audio frame duplication.
ASTERISK-25322 #close
Reported by Sean Pimental
Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538
2015-08-12 12:59 +0000 [25af2d71c8] Kevin Harwell <kharwell@digium.com>
* chan_sip.c: wrong peer searched in sip_report_security_event
In chan_sip, after handling an incoming invite a security event is raised
describing authorization (success, failure, etc...). However, it was doing
a lookup of the peer by extension. This is fine for register messages, but
in the case of an invite it may search and find the wrong peer, or a non
existent one (for instance, in the case of call pickup). Also, if the peers
are configured through realtime this may cause an unnecessary database lookup
when caching is enabled.
This patch makes it so that sip_report_security_event searches by IP address
when looking for a peer instead of by extension after an invite is processed.
ASTERISK-25320 #close
Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4
2015-08-13 05:26 +0000 [e18c300550] Joshua Colp <jcolp@digium.com>
* res_http_websocket: When shutting down a session don't close closed socket
Due to the use of ast_websocket_close in session termination it is
possible for the underlying socket to already be closed when the
session is terminated. This occurs when the close frame is attempted
to be written out but fails.
Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b
2015-08-11 05:24 +0000 [b4e9416138] Joshua Colp <jcolp@digium.com>
* res_http_websocket: Forcefully terminate on write errors.
The res_http_websocket module will currently attempt to close
the WebSocket connection if fatal cases occur, such as when
attempting to write out data and being unable to. When the
fatal cases occur the code attempts to write a WebSocket close
frame out to have the remote side close the connection. If
writing this fails then the connection is not terminated.
This change forcefully terminates the connection if the
WebSocket is to be closed but is unable to send the close frame.
ASTERISK-25312 #close
Change-Id: I10973086671cc192a76424060d9ec8e688602845
2015-08-10 13:43 +0000 [256bc52b66] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF.
Pressing DTMF digits on a phone to go out on a DAHDI channel can result in
the digit not being recognized or even heard by the peer.
Phone -> Asterisk -> DAHDI/channel
Turns out the DAHDI behavior with DTMF generation (and any other generated
tones) is exposed by the "buffers=" setting in chan_dahdi.conf. When
Asterisk requests to start sending DTMF then DAHDI waits until its write
buffer is empty before generating any samples for the DTMF tones. When
Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI
immediately stops generating the DTMF samples. As a result, the more
samples there are in the DAHDI write buffer the shorter the time DTMF
actually gets sent on the wire. If there are more samples in the write
buffer than the time DTMF is supposed to be sent then no DTMF gets sent on
the wire. With the "buffers=12,half" setting and each buffer representing
20 ms of samples then the DAHDI write buffer is going to contain around
120 ms of samples. For DTMF to be recognized by the peer the actual sent
DTMF duration needs to be a minimum of 40 ms. Therefore, the intended
duration needs to be a minimum of 160 ms for the peer to receive the
minimum DTMF digit duration to recognize it.
A simple and effective solution to work around the DAHDI behavior is for
Asterisk to flush the DAHDI write buffer when sending DTMF so the full
duration of DTMF is actually sent on the wire. When someone is going to
send DTMF they are not likely to be talking before sending the tones so
the flushed write samples are expected to just contain silence.
* Made dahdi_digit_begin() flush the DAHDI write buffer after requesting
to send a DTMF digit.
ASTERISK-25315 #close
Reported by John Hardin
Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a
2015-08-05 14:21 +0000 [800e0ea48d] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi.c: Lock private struct for ast_write().
There is a window of opportunity for DTMF to not go out if an audio frame
is in the process of being written to DAHDI while another thread starts
sending DTMF. The thread sending the audio frame could be past the
currently dialing check before being preempted by another thread starting
a DTMF generation request. When the thread sending the audio frame
resumes it will then cause DAHDI to stop the DTMF tone generation. The
result is no DTMF goes out.
* Made dahdi_write() lock the private struct before writing to the DAHDI
file descriptor.
ASTERISK-25315
Reported by John Hardin
Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb
2015-08-10 18:23 +0000 [c126afe18f] Richard Mudgett <rmudgett@digium.com>
* res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message.
If the saved SUBSCRIBE message is not parseable for whatever reason then
Asterisk could crash when libpjsip tries to parse the message and adds an
error message to the parse error list.
* Made ast_sip_create_rdata() initialize the parse error rdata list. The
list is checked after parsing to see that it remains empty for the
function to return successful.
ASTERISK-25306
Reported by Mark Michelson
Change-Id: Ie0677f69f707503b1a37df18723bd59418085256
2015-08-10 07:40 +0000 [f68c995bc9] Alexander Traud <pabstraud@compuserve.com>
* chan_sip: Fix negotiation of iLBC 30.
iLBC 20 was advertised in a SIP/SDP negotiation. However, only iLBC 30 is
supported. Removes "a=fmtp:x mode=y" from SDP. Because of RFC 3952 section 5,
only iLBC 30 is negotiated now.
ASTERISK-25309 #close
Change-Id: I92d724600a183eec3114da0ac607b994b1a793da
2015-08-09 18:42 +0000 [8e194047ac] Matt Jordan <mjordan@digium.com>
* res/res_format_attr_silk: Expose format attributes to other modules
This patch adds the .get callback to the format attribute module, such
that the Asterisk core or other third party modules can query for the
negotiated format attributes.
Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c
2015-08-09 17:56 +0000 [a0f451c35e] Matt Jordan <mjordan@digium.com>
* main/format: Add an API call for retrieving format attributes
Some codecs that may be a third party library to Asterisk need to have
knowledge of the format attributes that were negotiated. Unfortunately,
when the great format migration of Asterisk 13 occurred, that ability
was lost.
This patch adds an API call, ast_format_attribute_get, to the core
format API, along with updates to the unit test to check the new API
call. A new callback is also now available for format attribute modules,
such that they can provide the format attribute values they manage.
Note that the API returns a void *. This is done as the format attribute
modules themselves may store format attributes in any particular manner
they like. Care should be taken by consumers of the API to check the
return value before casting and dereferencing. Consumers will obviously
need to have a priori knowledge of the type of the format attribute as
well.
Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3
2015-08-07 22:11 +0000 [26f0559a94] David M. Lee <dlee@respoke.io>
* Replace htobe64 with htonll
We don't have a compatability function to fill in a missing htobe64; but
we already have one for the identical htonll.
Change-Id: Ic0a95db1c5b0041e14e6b127432fb533b97e4cac
2015-08-07 14:20 +0000 [df9ce36366] Scott Emidy <jemidy@digium.com>
* ARI: Retrieve existing log channels
An http request can be sent to get the existing Asterisk logs.
The command "curl -v -u user:pass -X GET 'http://localhost:8088
/ari/asterisk/logging'" can be run in the terminal to access the
newly implemented functionality.
* Retrieve all existing log channels
ASTERISK-25252
Change-Id: I7bb08b93e3b938c991f3f56cc5d188654768a808
2015-08-07 11:14 +0000 [e9f1bc08cb] Scott Emidy <jemidy@digium.com>
* ARI: Creating log channels
An http request can be sent to create a log channel
in Asterisk.
The command "curl -v -u user:pass -X POST
'http://localhost:088/ari/asterisk/logging/mylog?
configuration=notice,warning'" can be run in the terminal
to access the newly implemented functionality for ARI.
* Ability to create log channels using ARI
ASTERISK-25252
Change-Id: I9a20e5c75716dfbb6b62fd3474faf55be20bd782
2015-08-06 15:18 +0000 [78364132ce] Scott Emidy <jemidy@digium.com>
* ARI: Deleting log channels
An http request can be sent to delete a log channel
in Asterisk.
The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
/ari/asterisk/logging/mylog'" can be run in the terminal
to access the newly implemented functionally for ARI.
* Able to delete log channels using ARI
ASTERISK-25252
Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6
2015-08-06 12:48 +0000 [e25569ef95] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: More accurately persist packet.
The pjsip_rx_data structure has a pkt_info.packet field on it that is
the packet that was read from the transport. For datagram transports,
the packet read from the transport will correspond to the SIP message
that arrived. For streamed transports, however, it is possible to read
multiple SIP messages in one packet.
In a recent case, Asterisk crashed on a system where TCP was being used.
This is because at some point, a read from the TCP socket resulted in a
200 OK response as well as an incoming SUBSCRIBE request being stored in
rdata->pkt_info.packet. When the SUBSCRIBE was processed, the
combination 200 OK and SUBSCRIBE was saved in persistent storage. Later,
a restart of Asterisk resulted in the crash because the persistent
subscription recreation code ended up building the 200 OK response
instead of a SUBSCRIBE request, and we attempted to access
request-specific data.
The fix here is to use the pjsip_msg_print() function in order to
persist SUBSCRIBE requests. This way, rather than using the raw socket
data, we use the parsed SIP message that PJSIP has given us. If we
receive multiple SIP messages from a single read, we will be sure only
to save off the relevant SIP message. There also is a safeguard put in
place to make sure that if we do end up reconstructing a SIP response,
it will not cause a crash.
ASTERISK-25306 #close
Reported by Mark Michelson
Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2
2015-08-04 16:12 +0000 [8521a86367] Joshua Colp <jcolp@digium.com>
* res_pjsip: Ensure sanitized XML is NULL terminated.
The ast_sip_sanitize_xml function is used to sanitize
a string for placement into XML. This is done by examining
an input string and then appending values to an output
buffer. The function used by its implementation, strncat,
has specific behavior that was not taken into account.
If the size of the input string exceeded the available
output buffer size it was possible for the sanitization
function to write past the output buffer itself causing
a crash. The crash would either occur because it was
writing into memory it shouldn't be or because the resulting
string was not NULL terminated.
This change keeps count of how much remaining space is
available in the output buffer for text and only allows
strncat to use that amount.
Since this was exposed by the res_pjsip_pidf_digium_body_supplement
module attempting to send a large message the maximum allowed
message size has also been increased in it.
A unit test has also been added which confirms that the
ast_sip_sanitize_xml function is providing NULL terminated
output even when the input length exceeds the output
buffer size.
ASTERISK-25304 #close
Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302
2015-08-05 05:23 +0000 [9a12804e59] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Don't leak temporary key when enabling PFS.
A change recently went in which enabled perfect forward secrecy for
DTLS in res_rtp_asterisk. This was accomplished two different ways
depending on the availability of a feature in OpenSSL. The fallback
method created a temporary instance of a key but did not free it.
This change fixes that.
ASTERISK-25265
Change-Id: Iadc031b67a91410bbefb17ffb4218d615d051396
2015-08-04 09:47 +0000 [27dc2094e9] Mark Michelson <mmichelson@digium.com>
* res_http_websocket: Debug write lengths.
Commit 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee attempted to fix a
test failure observed on 32 bit test agents by ensuring that a cast from
a 32 bit unsigned integer to a 64 bit unsigned integer was happening in
a predictable place. As it turns out, this did not cause test runs to
succeed.
This commit adds several redundant debug messages that print the payload
lengths of websocket frames. The idea here is that this commit will not
cause tests to succeed for the faulty test agent, but we might deduce
where the fault lies more easily this way by observing at what point the
expected value (537) changes to some ungangly huge number.
If you are wondering why something like this is being committed to the
branch, keep in mind that in commit
39cc28f6ea2140ad6d561fd4c9e9a66f065cecee I noted that the observed test
failures only happen when automated tests are run. Attempts to run the
tests by hand manually on the test agent result in the tests passing.
Change-Id: I14a65c19d8af40dadcdbd52348de3b0016e1ae8d
2015-08-03 11:06 +0000 [39cc28f6ea] Mark Michelson <mmichelson@digium.com>
* res_http_websocket: Avoid passing strlen() to ast_websocket_write().
We have seen a rash of test failures on a 32-bit build agent. Commit
48698a5e21d7307f61b5fb2bd39fd593bc1423ca solved an obvious problem where
we were not encoding a 64-bit value correctly over the wire. This
commit, however, did not solve the test failures.
In the failing tests, ARI is attempting to send a 537 byte text frame
over a websocket. When sending a frame this small, 16 bits are all that
is required in order to encode the payload length on the websocket
frame. However, ast_websocket_write() thinks that the payload length is
greater than 65535 and therefore writes out a 64 bit payload length.
Inspecting this payload length, the lower 32 bits are exactly what we
would expect it to be, 537 in hex. The upper 32 bits, are junk values
that are not expected to be there.
In the failure, we are passing the result of strlen() to a function that
expects a uint64_t parameter to be passed in. strlen() returns a size_t,
which on this 32-bit machine is 32 bits wide. Normally, passing a 32-bit
unsigned value to somewhere where a 64-bit unsigned value is expected
would cause no problems. In fact, in manual runs of failing tests, this
works just fine. However, ast_websocket_write() uses the Asterisk
optional API, which means that rather than a simple function call, there
are a series of macros that are used for its declaration and
implementation. These macros may be causing some sort of error to occur
when converting from a 32 bit quantity to a 64 bit quantity.
This commit changes the logic by making existing ast_websocket_write()
calls use ast_websocket_write_string() instead. Within
ast_websocket_write_string(), the 64-bit converted strlen is saved in a
local variable, and that variable is passed to ast_websocket_write()
instead.
Note that this commit message is full of speculation rather than
certainty. This is because the observed test failures, while always
present in automated test runs, never occur when tests are manually
attempted on the same test agent. The idea behind this commit is to fix
a theoretical issue by performing changes that should, at the least,
cause no harm. If it turns out that this change does not fix the failing
tests, then this commit should be reverted.
Change-Id: I4458dd87d785ca322b89c152b223a540a3d23e67
2015-07-28 05:33 +0000 [aed068844c] Mark Duncan <mark@syon.co.jp>
* res/res_rtp_asterisk: Add ECDH support
This will add ECDH support to Asterisk. It will
detect auto ECDH support in OpenSSL
(1.0.2b and above) during ./configure. If this is
available, it will use it,
otherwise it will fall back to prime256v1 (this
behavior is consistent with
other projects such as Apache and nginx).
This fixes WebRTC being broken in Firefox 38+ due
to Firefox now only supporting
ciphers with perfect forward secrecy.
ASTERISK-25265 #close
Change-Id: I8c13b33a2a79c0bde2e69e4ba6afa5ab9351465b
2015-07-29 14:17 +0000 [1ae762634c] Benjamin Ford <bford@digium.com>
* ARI: Rotate log channels.
An http request can be sent to rotate a specified log channel.
If the channel does not exist, an error response will be
returned.
The command "curl -v -u user:pass -X PUT 'http://localhost:8088
/ari/asterisk/logging/logChannelName/rotate'" can be run in the
terminal to access this new functionality.
* Added the ability to rotate log files through ARI
ASTERISK-25252
Change-Id: Iaefa21cbbc1b29effb33004ee3d89c977e76ab01
2015-07-29 13:49 +0000 [aeeb170fc4] Richard Mudgett <rmudgett@digium.com>
* rtp_engine.c: Fix performance issue with several channel drivers that use RTP.
ast_rtp_codecs_get_payload() gets called once or twice for every received
RTP frame so it would be nice to not allocate an ao2 object to then have
it destroyed shortly thereafter. The ao2 object gets allocated only if
the payload type is not set by the channel driver as a negotiated value.
The issue affects chan_skinny, chan_unistim, chan_rtp, and chan_ooh323.
* Made static_RTP_PT[] an array of ao2 objects that
ast_rtp_codecs_get_payload() can return instead of an array of structs
that must be copied into a created ao2 object.
ASTERISK-25296 #close
Reported by: Richard Mudgett
Change-Id: Icb6de5cd90bfae07d44403a1352963db9109dac0
2015-07-29 17:00 +0000 [84262749d2] Richard Mudgett <rmudgett@digium.com>
* res_rtp_asterisk.c: Fix off-nominal crash potential.
ASTERISK-25296
Reported by: Richard Mudgett
Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b
2015-07-29 13:48 +0000 [1519eb44a7] Richard Mudgett <rmudgett@digium.com>
* rtp_engine.c: Must protect mime_types_len with mime_types_lock.
Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e
2015-07-24 18:42 +0000 [a93b7a927c] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_sdp_rtp.c: Fix processing wrong SDP media list.
Change-Id: I7c076826c2d3c6ae8c923ca73b7a71980cca11f2
2015-07-24 18:38 +0000 [741fa0d26d] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_sdp_rtp.c: Fixup some whitespace.
Change-Id: Ib4eb7ef7dcaf93ddc26538f0a498aaf110d7a973
2015-07-27 19:10 +0000 [89b21fd9a3] Richard Mudgett <rmudgett@digium.com>
* rtp_engine.h: No sense allowing payload types larger than RFC allows.
* Tweaked add_static_payload() to not use magic numbers.
Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b
2015-07-23 14:04 +0000 [7427c7f13b] Richard Mudgett <rmudgett@digium.com>
* rtp_engine.c: Minor tweaks.
* Fix off nominial ref leak of new_type in
ast_rtp_codecs_payloads_set_m_type().
* No need to lock static_RTP_PT_lock in
ast_rtp_codecs_payloads_set_m_type() and
ast_rtp_codecs_payloads_set_rtpmap_type_rate() before the payload type
parameter sanity check.
* No need to create ast_rtp_payload_type ao2 objects with a lock since the
lock is not used.
Change-Id: I64dd1bb4dfabdc7e981e3f61448beac9bb7504d4
2015-07-23 12:41 +0000 [e20f435b60] Richard Mudgett <rmudgett@digium.com>
* rtp_engine.h: Misc comment fixes.
Change-Id: If98139264d5d97427b4685ecbdc54518f725bc43
2015-07-17 16:23 +0000 [bc5d7f9c37] Richard Mudgett <rmudgett@digium.com>
* chan_sip.c: Tweak glue->update_peer() parameter nil value.
Change glue->update_peer() parameter from 0 to NULL to better indicate it
is a pointer.
Change-Id: I8ff2e5087f0e19f6998e3488a712a2470cc823bd
2015-07-30 17:05 +0000 [13eb491e35] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session.c: Fix crashes seen when call cancelled.
Two testsuite tests crashed in the same place as a result of an INVITE
being CANCELed.
tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified
tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp
The session pointer is no longer in the inv->mod_data[session_module.id]
location because the INVITE transaction has reached the terminated state.
ASTERISK-25297 #close
Reported by: Richard Mudgett
Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427
2015-07-29 14:35 +0000 [48698a5e21] Mark Michelson <mmichelson@digium.com>
* res_http_websocket: Properly encode 64 bit payload
A test agent was continuously failing all ARI tests when run against
Asterisk 13. As it turns out, the reason for this is that on those test
runs, for some reason we decided to use the super extended 64 bit
payload length for websocket text frames instead of the extended 16 bit
payload length. For 64-bit payloads, the expected byte order over the
network is
7, 6, 5, 4, 3, 2, 1, 0
However, we were sending the payload as
3, 2, 1, 0, 7, 6, 5, 4
This meant that we were saying to expect an absolutely MASSIVE payload
to arrive. Since we did not follow through on this expected payload
size, the client would sit patiently waiting for the rest of the payload
to arrive until the test would time out.
With this change, we use the htobe64() function instead of htonl() so
that a 64-bit byte-swap is performed instead of a 32 bit byte-swap.
Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a
2015-07-29 12:23 +0000 [10ba72a927] Mark Michelson <mmichelson@digium.com>
* Add a test event for inband ringing.
This event is necessary for the bridge_wait_e_options test to be able to
confirm that ringing is being played on the local channel that runs the
BridgeWait() application with the e(r) option.
ASTERISK-25292 #close
Reported by Kevin Harwell
Change-Id: Ifd3d3d2bebc73344d4b5310d0d55c7675359d72e
2015-07-16 12:16 +0000 [8458b8d441] Jonathan Rose <jrose@digium.com>
* holding_bridge: ensure moh participants get frames
Currently, if a blank musiconhold.conf is used, musiconhold will fail
to start for a channel going into a holding bridge with an anticipation
of getting music on hold. That being the case, no frames will be written
to the channel and that can pose a problem for blind transfers in PJSIP
which may rely on frames being written to get past the REFER framehook.
This patch makes holding bridges start a silence generator if starting
music on hold fails and makes it so that if no music on hold functions
are installed that the ast_moh_start function will report a failure so
that consumers of that function will be able to respond appropriately.
ASTERISK-25271 #close
Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99
2015-07-24 12:56 +0000 [f78a4b52b8] Matt Jordan <mjordan@digium.com>
* Bump the ARI version to 1.8.0
Due to backwards compatible changes, the ARI version should be bumped to
1.8.0 prior to the release of 13.5.0. Note that a previous patch already
bumped the version of AMI for this release.
Change-Id: I419033bfbbc0d3533a29ccb32b2981f39e0883e7
2015-07-18 11:16 +0000 [2749721791] Joshua Colp <jcolp@digium.com>
* pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options.
This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold'
endpoint options. These allow the channel to be hung up if RTP
is not received from the remote endpoint for a specified number of
seconds.
ASTERISK-25259 #close
Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9
2015-07-24 09:46 +0000 [b4e19e414a] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Add rtp_keepalive to sample config file.
Change-Id: I5f62d0c5684f8b2335f9f8ac2d79ee04fbdafb19
2015-07-23 13:11 +0000 [f635520527] Mark Michelson <mmichelson@digium.com>
* Local channels: Alternate solution to ringback problem.
Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a
specific scenario involving local channels and a native local RTP bridge
could result in ringback still being heard on a calling channel even
after the call is bridged.
That commit caused many tests in the testsuite to fail with alarming
consequences, such as not sending DialBegin and DialEnd events, and
giving incorrect hangup causes during calls.
This commit reverts the previous commit and implements and alternate
solution. This new solution involves only passing AST_CONTROL_RINGING
frames across local channels if the local channel is in AST_STATE_RING.
Otherwise, the frame does not traverse the local channels. By doing
this, we can ensure that a playtones generator does not get started on
the calling channel but rather is started on the local channel on which
the ringing frame was initially indicated.
ASTERISK-25250 #close
Reported by Etienne Lessard
Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39
2015-07-22 12:24 +0000 [f509730cb9] Joshua Colp <jcolp@digium.com>
* audiohook: Use manipulated frame instead of dropping it.
Previous changes to sample rate support in audiohooks accidentally
removed code responsible for allowing the manipulate audiohooks
to work. Without this code the manipulated frame would be dropped
and not used. This change restores it.
ASTERISK-25253 #close
Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13
2015-07-22 09:46 +0000 [54b25c80c8] Mark Michelson <mmichelson@digium.com>
* Local channels: Do not block control -1 payloads.
Control frames with a -1 payload are used as a special signal to stop
playtones generators on channels. This indication is sent both by
app_dial as well as by ast_answer() when a call is answered in case any
tones were being generated on a calling channel.
This control frame type was made to stop traversing local channel pairs
as an optimization, because it was thought that it was unnecessary to
send these indications, and allowing such unnecessary control frames to
traverse the local channels would cause the local channels to optimize
away less quickly.
As it turns out, through some special magic dialplan code, it is
possible to have a tones being played on a non-local channel, and it is
important for the local channel to convey that the tones should be
stopped. The result of having tones continue to be played on the
non-local channel is that the tones play even once the channel has been
bridged. By not blocking the -1 control frame type, we can ensure that
this situation does not happen.
ASTERISK-25250 #close
Reported by Etienne Lessard
Change-Id: I0bcaac3d70b619afdbd0ca8a8dd708f33fd2f815
2015-07-22 05:16 +0000 [f1493f900e] Joshua Colp <jcolp@digium.com>
* audiohook: Read the correct number of samples based on audiohook format.
Due to changes in audiohooks to support different sample rates the
underlying storage of samples is in the format of the audiohook
itself and not of the format being requested. This means that if a
channel is using G722 the samples stored will be at 16kHz. If
something subsequently reads from the audiohook at a format which
is not the same sample rate as the audiohook the number of samples
needs to be adjusted.
Given the following example:
1. Channel writing into audiohook at 16kHz (as it is using G722).
2. Chanspy reading from audiohook at 8kHz.
The original code would read 160 samples from the audiohook for
each 20ms of audio. This is incorrect. Since the audio in the
audiohook is at 16kHz the actual number needing to be read is 320.
Failure to read this much would cause the audiohook to reset
itself constantly as the buffer became full.
This change adjusts the requested number of samples by determining
the duration of audio requested and then calculating how many
samples that would be in the audiohook format.
ASTERISK-25247 #close
Change-Id: Ia91ce516121882387a315fd8ee116b118b90653d
2015-07-20 12:39 +0000 [62c64c3bd1] Rusty Newton <rnewton@digium.com>
* Documentation: A couple of trivial fixes in sip.conf.sample and func_cdr.c
* In sip.conf.sample fix sentence where we said that WS or WSS are supported
transports for use in an outbound register definition. They are not
supported in that case.
* In func_cdr.c made it clear that the Disable option for CDR_PROP can be used
to enable CDR on a channel.
ASTERISK-24867 #close
Reported by: Rusty Newton
ASTERISK-24853 #close
Reported by: PSDK
Change-Id: I3d698bc6302b9d00a0a995b5c4ad9a42d69b48ca
2015-07-09 14:17 +0000 [d9094ddd73] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Add rtp_keepalive endpoint option.
This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the
chan_sip option, this specifies an interval, in seconds, at which we
will send RTP comfort noise frames. This can be useful for keeping RTP
sessions alive as well as keeping NAT associations alive during lulls.
ASTERISK-25242 #close
Reported by Mark Michelson
Change-Id: I06660ba672c0a343814af4cec838e6025cafd54b
2015-07-16 09:13 +0000 [a23adcca3d] Michael Cargile <mikec@vicidial.com>
* res/res_musiconhold: Add a warning when MOH does not exist
Change-Id: Ifdfbd0b97cf31478d29923ec30aabce28d01740b
2015-07-19 09:11 +0000 [03064daeb2] Matt Jordan <mjordan@digium.com>
* res/res_sorcery_config: Prevent crash from misconfigured sorcery.conf
Misconfiguring sorcery.conf with a 'config' wizard with no extra data
will currently crash Asterisk on startup, as the wizard requires a comma
delineated list to parse. This patch updates res_sorcery_config to check
for the presence of the data before it starts manipulating it.
Change-Id: I4c97512e8258bc82abe190627a9206c28f5d3847
2015-07-16 09:46 +0000 [2c626ceb64] Joshua Colp <jcolp@digium.com>
* chan_pjsip: Don't change formats when frame of unsupported format is received.
Receipt of an RTP packet currently causes the formats on an PJSIP channel to
change to the format of the RTP packet. In some off-nominal cases it's possible
for this to be a format that has not been configured or negotiated. This change
makes it so only formats explicitly configured on the endpoint are allowed.
ASTERISK-25258 #close
Change-Id: If93d641fb6418a285928839300d7854cab8c1020
2015-07-17 04:59 +0000 [abb14ac5b8] Patric Marschall <patric.marschall@1und1.de>
* sig_pri.h: force_restart_unavailable_chans in wrong scope
In channels/sig_pri.h, struct sig_pri_span, the field
force_restart_unavailable_chans is only defined if
#if defined(HAVE_PRI_MCID) is true.
All other occurences of force_restart_unavailable_chans are outside of the
#if defined(HAVE_PRI_MCID)
endif
scope.
ASTERISK-25257 #close
Reported by: Patric Marschall
Change-Id: I071de89cc2cd0d85927a013036e235851f672549
2015-07-14 16:55 +0000 [875aee4c09] Richard Mudgett <rmudgett@digium.com>
* pbx.c: Post AMI VarSet event if delete a non-empty dialplan variable.
ASTERISK-25256 #close
Reported by: Richard Mudgett
Change-Id: I0b6be720b66fa956f6a798cd22ef8934eb0c0ff3
2015-07-08 16:39 +0000 [8bcf6d2801] Matt Jordan <mjordan@digium.com>
* ARI: Add support for push configuration of dynamic object
This patch adds support for push configuration of dynamic, i.e.,
sorcery, objects in Asterisk. It adds three new REST API calls to the
'asterisk' resource:
* GET /asterisk/{configClass}/{objectType}/{id}: retrieve the current
object given its ID. This returns back a list of ConfigTuples, which
define the fields and their present values that make up the object.
* PUT /asterisk/{configClass}/{objectType}/{id}: create or update an
object. A body may be passed with the request that contains fields to
populate in the object. The same format as what is retrieved using
the GET operation is used for the body, save that we specify that the
list of fields to update are contained in the "fields" attribute.
* DELETE /asterisk/{configClass}/{objectType}/{id}: remove a dynamic
object from its backing storage.
Note that the success/failure of these operations is somewhat
configuration dependent, i.e., you must be using a sorcery wizard that
supports the operation in question. If a sorcery wizard does not support
the create or delete mechanisms, then the REST API call will fail with a
403 forbidden.
ASTERISK-25238 #close
Change-Id: I28cd5c7bf6f67f8e9e437ff097f8fd171d30ff5c
2015-07-15 15:40 +0000 [e31cb6b248] Richard Mudgett <rmudgett@digium.com>
* strings.h: Fix issues with escape string functions.
Fixes for issues with the ASTERISK-24934 patch.
* Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is
an empty string. If it were an empty string the functions returned NULL
as if there were a memory allocation failure. This failure caused the AMI
VarSet event to not get posted if the new value was an empty string.
* Fixed dest buffer overwrite potential in ast_escape() and
ast_escape_c(). If the dest buffer size is smaller than the space needed
by the escaped s parameter string then the dest buffer would be written
beyond the end by the nul string terminator. The num parameter was really
the dest buffer size parameter so I renamed it to size.
* Made nul terminate the dest buffer if the source string parameter s was
an empty string in ast_escape() and ast_escape_c().
* Updated ast_escape() and ast_escape_c() doxygen function description
comments to reflect reality.
* Added some more unit test cases to /main/strings/escape to cover the
empty source string issues.
ASTERISK-25255 #close
Reported by: Richard Mudgett
Change-Id: Id77fc704600ebcce81615c1200296f74de254104
2015-07-14 14:29 +0000 [243c0d1609] Richard Mudgett <rmudgett@digium.com>
* parking_applications.c: Fix ast_verb() line terminator.
Change-Id: I8797238c71563e243c48c6145b4f1ae58f91f775
2015-07-14 14:36 +0000 [c782320c68] Richard Mudgett <rmudgett@digium.com>
* res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park.
setup_park_common_datastore() was assuming that a non-NULL string returned
for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty
strings. Things got crashy as a result.
* Made setup_park_common_datastore() treat the channel variable values the
same whether they are NULL or empty for ATTENDEDTRANSFER and
BLINDTRANSFER.
ASTERISK-25254 #close
Reported by: Richard Mudgett
Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2
2015-07-10 18:01 +0000 [2735dd5b2d] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session.c: Extract sip_session_defer_termination_stop_timer().
Change-Id: I9e115dee74bd72e06081d0ee73ecdeb886caa5fb
2015-07-10 10:42 +0000 [3d0ca343ca] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session.c: Add some helpful comments and minor tweaks.
Change-Id: I742aeeaf5f760593f323a00fb691affe22e35743
2015-07-10 10:43 +0000 [8d08bb179c] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session.c: Fix off nominal crash potential in debug message.
Change-Id: I09928297927ee85f7655289acee3a586816466bc
2015-07-15 10:31 +0000 [0a1a550593] Matt Jordan <mjordan@digium.com>
* apps/app_dictate: Fix typo in attribution
Last time I checked, it's "Sangoma", not "Samgoma". Thanks to Brian
(GameGamer43) for pointing that out.
Change-Id: I43d7b196f6d7a2b2517b84915e3a8dfbc2894106
2015-07-15 10:28 +0000 [3384e64ef6] Benjamin Ford <bford@digium.com>
* ARI: Fixed unload mode for unload module.
Changed the unload mode to AST_FORCE_SOFT from AST_FORCE_FIRM,
which would unload a module even if it was in use.
* Changed unload mode to proper mode
ASTERISK-25173
Change-Id: If2402487b5bce05d9770f25f65f5c8e292ad5533
2015-07-08 16:38 +0000 [0b6ff77afb] Matt Jordan <mjordan@digium.com>
* res/res_sorcery_astdb: Add a debugging message for when retrieval by ID fails
Having a debug message tell us that we attempted to look up an item but
failed is nice in circumstances when it isn't clear if the wizard was
queried correctly or not.
Change-Id: I2600c3bbea87f252196358f62e73f4c7da8632f7
2015-07-08 16:37 +0000 [2f0d6d346c] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_outbound_registration: Fix WARNING message
Newlines are nice.
Change-Id: Icf0d915db02882e47cd9077ed9009f5d44140d42
2015-07-08 16:35 +0000 [cd2213f1ae] Matt Jordan <mjordan@digium.com>
* res_pjsip/configuration: Fix a variety of default value problems
This patch fixes some bad default value handling in the following
settings:
* The 'message_context' and 'accountcode' settings are not mandatory. As
such, we can allow their stringfield values to be empty.
* The 'media_encryption' setting applies a default value of 'none' to
the setting, which it then can't parse or understand. Since the value
is documented to be 'no', this will now apply that as the default
value.
Change-Id: Ib9be7f97a7a5b9bc7aee868edf5acf38774cff83
2015-07-08 16:32 +0000 [2e4bdbd78a] Matt Jordan <mjordan@digium.com>
* main/sorcery: Provide log messages when a wizard does not support an operation
If a sorcery wizard does not support one of the 'optional' CRUD
operations (namely the CUD), log a WARNING message so we are aware of
why the operation failed. This also removes an assert in this case, as
the CUD operation may have been triggered by an external system, in
which case it is not a programming error but a configuration error.
Change-Id: Ifecd9df946d9deaa86235257b49c6e5e24423b53
2015-07-10 18:17 +0000 [653f2087e0] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session.c: Fix crash on call disconnect.
The crash fix for ASTERISK-25183 backported some code from master to try
to make sure that a BYE response is processed by the same serializer used
by the BYE request. The identified race condition causing that backport
was the BYE request code had not finished processing after sending the BYE
before the BYE response came in for processing under a different thread.
Unfortunately, there is still a race condition. Now the race condition is
between destroying the call session's serializer in
ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a
reference to the serializer for a BYE response. Even worse, the new race
condition is a design limitation of the taskprocessor implementation that
didn't matter in versions before v12. Back then, taskprocessors were only
destroyed when a module unloaded. Now res_pjsip can destroy them when a
call ends.
However, as noted on the ASTERISK-25183 commit,
session_inv_on_state_changed() is disassociating the dialog from the
session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED.
This is a tad too soon because our BYE request transaction has not
completed yet.
* Split session_end() that is called by session_inv_on_state_changed() to
hold off session destruction until the BYE transaction timeout occurs or a
failed initial INVITE transaction timeout occurs in
session_inv_on_tsx_state_changed().
ASTERISK-25201 #close
Reported by: Matt Jordan
Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961
2015-07-14 13:12 +0000 [1aafadf814] Benjamin Ford <bford@digium.com>
* ARI: Added new functionality to reload a single module.
An http request can be sent to reload an Asterisk module. If the
module can not be reloaded or is not already loaded, an error
response will be returned.
The command "curl -v -u user:pass -X PUT 'http://localhost:8088
/ari/asterisk/modules/{moduleName}'" (or something similar, based
on configuration) can be run in the terminal to access this new
functionality.
For more information, see:
https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
* Added new ARI functionality
* Asterisk modules can be reloaded through http requests
ASTERISK-25173
Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1
2015-07-14 08:55 +0000 [9dcae23cfc] Benjamin Ford <bford@digium.com>
* ARI: Added new functionality to unload a single module.
An http request can be sent to unload an Asterisk module. If the
module can not be unloaded or is already unloaded, an error response
will be returned.
The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
/ari/asterisk/modules/{moduleName}'" (or something similar, depending
on configuration) can be run in the terminal to access this new
functionality.
For more information, see:
https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
* Added new ARI functionality
* Asterisk modules can be unloaded through http requests
ASTERISK-25173
Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57
2015-07-13 16:00 +0000 [c219a98d2b] Benjamin Ford <bford@digium.com>
* ARI: Added new functionality to load a single module.
An http request can be sent to load an Asterisk module. If the
module can not be loaded or is loaded already, an error response
will be returned.
The command curl -v -u user:pass -X POST 'http://localhost:8088/ari
/asterisk/modules/{moduleName}'" (or something similar, depending on
configuration) can be run in the terminal to access this new
functionality.
For more information, see:
https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
* Added new ARI functionality
* Asterisk modules can be loaded through http requests
ASTERISK-25173
Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33
2015-07-13 10:54 +0000 [73e35d20de] Benjamin Ford <bford@digium.com>
* ARI: Added new functionality to get information on a single module.
An http request can be sent to retrieve information on a single
module, including the resource name, description, use count, status,
and support level.
The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari
/asterisk/modules/{moduleName}'" (or something similar, depending on
configuration) can be run in the terminal to access this new
functionality.
For more information, see:
https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
* Added new ARI functionality
* Information on a single module can now be retrieved
ASTERISK-25173
Change-Id: Ibce5a94e70ecdf4e90329cf0ba66c33a62d37463
2015-07-08 14:56 +0000 [97ee0ee6c6] Kevin Harwell <kharwell@digium.com>
* bridge.c: Fixed race condition during attended transfer
During an attended transfer a thread is started that handles imparting the
bridge channel. From the start of the thread to when the bridge channel is
ready exists a gap that can potentially cause problems (for instance, the
channel being swapped is hung up before the replacement channel enters the
bridge thus stopping the transfer). This patch adds a condition that waits
for the impart thread to get to a point of acceptable readiness before
allowing the initiating thread to continue.
ASTERISK-24782
Reported by: John Bigelow
Change-Id: I08fe33a2560da924e676df55b181e46fca604577
2015-07-08 16:28 +0000 [bb76b88baf] Matt Jordan <mjordan@digium.com>
* main/sorcery: Don't fail object set creation from JSON if field fails
Some individual fields may fail their conversion due to their default
values being invalid for their custom handlers. In particular,
configuration values that depend on others being enabled (and thus have
an empty default value) are notorious for tripping this routine up. An
example of this are any of the DTLS options for endpoints. Any of the
DTLS options will fail to be applied (as DTLS is not enabled), causing
the entire object set to be aborted.
This patch makes it so that we log a debug message when skipping a
field, and rumble on anyway.
ASTERISK-25238
Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76
2015-07-08 16:21 +0000 [5f13c2226a] Matt Jordan <mjordan@digium.com>
* main/format_cap: Parse capabilities generated by ast_format_cap_get_names
We have a strange relationship between the parsing of format
capabilities from a string and their representation as a string. We
expect the format capabilities to be expressed as a string in the
following format:
allow = !all,ulaw,alaw
disallow = g722
While we would generate the string representation of those formats as:
allow = (ulaw|alaw)
disallow = (ulaw|alaw|g729...)
When the configuration framework needs to store values as a string, it
generates the format capabilities using the second representation; this
representation however cannot be parsed when the entry is rehydrated.
This patch fixes that by updating
ast_format_cap_update_by_allow_disallow to parse an entry as if it were
in the generated format if it has a leading '(' and a trailing ')'.
ASTERISK-25238
Change-Id: I904d43caf4cf45af06f6aee0c9e58556eb91d6ca
2015-06-27 17:53 +0000 [2325b106fd] Matt Jordan <mjordan@digium.com>
* tests/test_devicestate: Add additional tests for the device state API
This patch adds more tests that exercise the device state API. This includes:
* Tests that cover adding a device state provider, as well as deleting a
device state provider. This also verifies that you cannot add an
already added device state provider, and cannot delete an already
deleted device state provider.
* A test that covers changing device state and receiving said updates
from a device state subscriber. This also covers hitting both the
device state cache as well as a custom device state provider.
* A test that covers converting device state to channel state and device
state values to a string representation and back.
* A test that covers obtaining device state from an active channel and a
channel driver that provides its own device state.
Change-Id: I2adca67ffb405cd8625a5d6df1e3f9b3d945c08d
2015-06-27 17:51 +0000 [328f0be806] Matt Jordan <mjordan@digium.com>
* main/devicestate: Prevent duplicate registration of device state providers
Currently, the device state provider API will allow you to register a
device state provider with the same case insensitive name more than
once. This could cause strange issues, as the duplicate device state
providers will not be queried when a device's state has to be polled.
This patch updates the API such that a device state provider with the
same name as one that has already registered will be rejected.
Change-Id: I4a418a12280b7b6e4960bd44f302e27cd036ceb2
2015-07-10 22:25 +0000 [bee41eec62] Matt Jordan <mjordan@digium.com>
* res/res_sorcery_memory_cache: Fix test registration issues
Again, tests now need to not end with a newline. This patch makes it so
the tests can register again, unit tests will actually pass, and we can
stop wasting time trying to figure out why builds are failing when they
really aren't failing.
Change-Id: Ide519fbeba89f413c733446c5ff7b224fc4ce840
2015-07-10 21:42 +0000 [4d738e9026] Matt Jordan <mjordan@digium.com>
* tests/test_sorcery_memory_cache_thrash: Fix test loading problems
Because unit tests now want descriptions to not end with a newline, the
sorcery memory cache thrash tests failed to register. This patch
corrects their descriptions.
Change-Id: Id004b1becfdeed8ee3c846f49beab76a5c0f68b6
2015-06-26 10:57 +0000 [47ea312b24] Benjamin Ford <bford@digium.com>
* ARI: Added new functionality to get all module information.
An http request can be sent to retrieve a list of all existing modules,
including the resource name, description, use count, status, and
support level.
The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari/
asterisk/modules" (or something similar, depending on configuration)
can be run in the terminal to access this new functionality.
For more information, see:
https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
* Added new ARI functionality
* Information on modules can now be retrieved
Change-Id: I63cbbf0ec0c3544cc45ed2a588dceabe91c5e0b0
2015-07-09 09:18 +0000 [d558b00c85] Joshua Colp <jcolp@digium.com>
* bridge_native_rtp.c: Don't start native RTP bridging after attended transfer.
The bridge_native_rtp module adds a frame hook to channels which are in
a native RTP bridge. This frame hook is used to intercept when a hold
or unhold frame traverses the bridge so native RTP can be stopped or
started as appropriate. This is expected but exposes a specific bug
when attended transfers are involved.
Upon completion of an attended transfer an unhold frame is queued up
to take one of the channels involved off hold. After this is done
the channel is moved between bridges.
When the frame hook is involved in this case for the unhold it
releases the channel lock and acquires the bridge lock. This
allows the bridge core to step in and move the channel
(potentially changing the bridging techology) from another thread.
Once completed the bridge lock is released by the bridge core.
The frame hook is then able to acquire the bridge lock and
wrongfully starts native RTP again, despite the channel no longer
being in the bridge or needing to start native RTP. In fact at
this point the frame hook is no longer attached to the channel.
This change makes it so the native RTP bridge data is available to
the frame hook when it is invoked. Whether the frame hook has
been detached or not is stored on the native RTP bridge data and
is checked by the frame hook before starting or stopping native
RTP bridging. If the frame hook has been detached it does nothing.
ASTERISK-25240 #close
Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2
2015-05-16 17:02 +0000 [b74b071369] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Backport to 13
Gerrit is complaining of conflicts when trying to create a patch series
of all of the cherry-picked master commits, so I have instead squashed
it all into one commit.
ASTERISK-25067 #close
Reported by: Matt Jordan
Change-Id: I6dda90343fae24a75dc5beec84980024e8d61eb9
2015-07-08 04:21 +0000 [7ff1ac8797] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Ensure DTLS timeout timer is -1 if DTLS is not used.
This change fixes a bug where the DTLS timeout timer would be
initialized to 0 if DTLS was not used for an RTP session.
ASTERISK-25103
Change-Id: If8d26bb054f1d300838850da5b8db9044c2fe2ac
2015-07-01 07:55 +0000 [05e8e14982] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Prevent simultaneous access to DTLS SSL context.
This change moves logic for setting up the DTLS SSL contexts to
when the SDP is done being processed instead of when ICE negotiation
completes. It also stops handshakes from being initiated when we
are acting as a server.
Manipulating the SSL context when ICE negotiation has completed
is problematic as the SSL context is not protected and if acting
as a client the remote side may have started DTLS negotiation
already.
The retransmission timeout timer code has also been split up
and simplified some. Both RTP and RTCP now have their own timers
and the points at which the timer is stopped and started is now
more specific. When a packet is sent the timer is started. When
a response is received but before it is processed the timer is
stopped. This provides a guarantee that the timeout is not
occurring while the response is processed.
ASTERISK-22805 #close
ASTERISK-24550 #close
ASTERISK-24651 #close
ASTERISK-24832 #close
ASTERISK-25103 #close
ASTERISK-25127 #close
Change-Id: Ib75ea2546f29d6efc3d2d37c58df6986c7bd9b91
2015-06-26 16:10 +0000 [38bace4fbb] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_t38.c: Fix always false if test.
Calling t38_change_state() sets the t38 state so it makes little sense to
then check the state right after the call for something else.
* Made the code in t38_interpret_parameters() reject or exit T.38 mode as
intended but not implemented.
Change-Id: Ib281263a6ed44da9448132c4e6df1e183b8a3df2
2015-06-30 11:17 +0000 [2f7688c788] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_mwi.c: Use safer loop coding in mwi_subscription_mailboxes_str().
Change-Id: I6f39d809a6d1b47b35bb32b298f5a12f35d6f907
2015-06-30 11:14 +0000 [74be3a50d7] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_mwi.c: Eliminate a simple RAII_VAR.
Change-Id: Ib1843f81e826a6c760c424c88eb70c350d9d61da
2015-06-30 11:11 +0000 [589e93617a] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_mwi.c: Fix mid-line log message line breaks.
* Add create_mwi_subscriptions_for_endpoint() doxygen comment.
Change-Id: I3c3f921f4ec749fb65b62d2f6fa0d4d1888b94e2
2015-06-26 18:48 +0000 [0d67e04359] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_mwi.c: Fix MWI subscription memory corruption crash.
MWI subscriptions can crash or corrupt memory when using the subscription
datastore to access the MWI subscription object because the datastore is
not holding a reference to the object.
* Give the subscription datastore a ref to the MWI subscription object.
It is unfortunate that the ref causes a circular ref chain that must be
explicitly broken to allow the memory to get released. The loop is broken
when the subscription is shutdown and if the subscription setup fails.
ASTERISK-25168 #close
Reported by: Carl Fortin
Change-Id: Ice4fa823f138ff10a6c74d280699c41a82836d4f
2015-07-02 14:51 +0000 [0422433f47] Richard Mudgett <rmudgett@digium.com>
* PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error.
When res_pjsip body generator modules were generating XML or XPIDF
response bodies, there was a chance that the generated body would be the
exact size of the supplied buffer. Adding the nul string terminator would
then write beyond the end of the buffer and potentially corrupt memory.
* Fix MALLOC_DEBUG high fence violations caused by adding a nul string
terminator on the end of a buffer for XML or XPIDF response bodies.
* Made calls to pj_xml_print() safer if the XML prolog is requested. Due
to a bug in pjproject, the return value could be -1 _or_
AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough.
* Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the
return value of pj_xml_print() when the supplied buffer is not large
enough.
ASTERISK-25168
Reported by: Carl Fortin
Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de
2015-06-26 10:36 +0000 [8ea214aed7] Richard Mudgett <rmudgett@digium.com>
* PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences.
When a caller calls a FAX number and then hangs up right after the call is
answered then the T.38 re-INVITE automatic reject timer may still be
running after the channel goes away.
* Added session NULL channel checks on the code paths that get executed by
t38_automatic_reject() to prevent a crash when the T.38 re-INVITE
automatic reject timer expires.
ASTERISK-25168
Reported by: Carl Fortin
Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403
2015-06-05 15:37 +0000 [ada7346792] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Need to use the same serializer for a pjproject SIP transaction.
All send/receive processing for a SIP transaction needs to be done under
the same threadpool serializer to prevent reentrancy problems inside
pjproject and res_pjsip.
* Add threadpool API call to get the current serializer associated with
the worker thread.
* Pick a serializer from a pool of default serializers if the caller of
res_pjsip.c:ast_sip_push_task() does not provide one.
This is a simple way to ensure that all outgoing SIP request messages are
processed under a serializer. Otherwise, any place where a pushed task is
done that would result in an outgoing out-of-dialog request would need to
be modified to supply a serializer. Serializers from the default
serializer pool are picked in a round robin sequence for simplicity.
A side effect is that the default serializer pool will limit the growth of
the thread pool from random tasks. This is not necessarily a bad thing.
* Made pjsip_distributor.c save the thread's serializer name on the
outgoing request tdata struct so the response can be processed under the
same serializer.
This is a cherry-pick from master.
**** ASTERISK-25115 Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a
NOTE: session_inv_on_state_changed() is disassociating the dialog from the
session when the invite dialog becomes PJSIP_INV_STATE_DISCONNECTED.
Unfortunately this is a tad too soon because our BYE request transaction
has not completed yet.
ASTERISK-25183 #close
Reported by: Matt Jordan
Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a
2015-07-04 18:22 +0000 [55137c3d12] Joshua Colp <jcolp@digium.com>
* res/res_http_websocket: Don't send HTTP response fragmented.
This change makes it so that when accepting a WebSocket
connection the HTTP response is sent as one packet instead of
fragmented. Browsers don't like it when you send it fragmented.
ASTERISK-25103
Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69
2015-06-27 18:47 +0000 [49f81ddb85] Matt Jordan <mjordan@digium.com>
* Makefile: Remove coverage files on 'make clean'
This patch updates a variety of Makefiles in Asterisk's build system to
remove .gcda and .gcno files when 'make clean' is executed. These files
are generated when '--enable-coverage' is passed to the Asterisk
configure script.
Change-Id: Ib70b41eea2ee2908885bff02e80faf9f40c84602
2015-07-02 09:08 +0000 [e0f565663b] Walter Doekes <walter+asterisk@wjd.nu>
* chan_sip: Fix early call pickup channel leak.
When handle_invite_replaces() was called, and either ast_bridge_impart()
failed or there was no bridge (because the channel we're picking up was
still ringing), chan_sip would leak a channel.
Thanks Matt and Corey for checking the bridge path.
ASTERISK-25226 #close
Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8
2015-07-02 06:19 +0000 [a5a262be78] Walter Doekes <walter+asterisk@wjd.nu>
* chan_mgcp: Don't call close on fd -1.
ASTERISK-25220 #close
Change-Id: Ic48f3a82f51ada87f2fb0e016c9efe0ad56f1ee3
2015-07-02 06:10 +0000 [b835312b4c] Walter Doekes <walter+asterisk@wjd.nu>
* rtp_engine: Skip useless self-assignment in ast_rtp_engine_unload_format.
When running valgrind on Asterisk, it complained about:
==32423== Source and destination overlap in memcpy(0x85a920, 0x85a920, 304)
==32423== at 0x4C2F71C: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/...)
==32423== by 0x55BA91: ast_rtp_engine_unload_format (rtp_engine.c:2292)
==32423== by 0x4EEFB7: ast_format_attr_unreg_interface (format.c:1437)
The code in question is a struct assignment, which may be performed by
memcpy as a compiler optimization. It is changed to only copy the struct
contents if source and destination are different.
ASTERISK-25219 #close
Change-Id: I6d3546c326b03378ca8e9b8cefd41c16e0088b9a
2015-07-02 05:16 +0000 [6551e16e03] Walter Doekes <walter+asterisk@wjd.nu>
* astfd: Fix buffer overflow in DEBUG_FD_LEAKS.
If DEBUG_FD_LEAKS was used and more file descriptors than the default of
1024 were available, some DEBUG_FD_LEAKS-patched functions would
overwrite memory past the fixed-size (1024) fdleaks buffer.
This change:
- adds bounds checks to __ast_fdleak_fopen and __ast_fdleak_pipe
- consistently uses ARRAY_LEN() instead of sizeof() or 1023 or 1024
- stores pointers to constants instead of copying the contents
- reorders the fdleaks struct for possibly tighter packing
- adds a tiny bit of documentation
ASTERISK-25212 #close
Change-Id: Iacb69e7701c0f0a113786bd946cea5b6335a85e5
2015-07-02 04:57 +0000 [f4dd9560cf] Walter Doekes <walter+asterisk@wjd.nu>
* res_timing: Don't close FD 0 when out of open files.
This fixes so a failure to get a timer file descriptor does not cascade
to closing FD 0.
On error, both res_timing_kqueue and res_timing_timerfd would call the
destructor before setting the file handle. The file handle had been
initialized to 0, causing FD 0 to be closed. This in turn, resulted in
floods of "CLI>" messages and an unusable terminal.
ASTERISK-19277 #close
Reported by: Barry Chern
For the 13 branch, this was already fixed. This patch only ensures that
we do not attempt to close a negative file descriptor.
Change-Id: I147d7e33726c6e5a2751928d56561494f5800350
2015-07-01 17:25 +0000 [78a1f4aa46] Richard Mudgett <rmudgett@digium.com>
* chan_vpb.cc: Fix compiler warning Jenkins found.
Change-Id: I0ec7fd10d56d90d5a60b12b5a7d6807f265ac5e0
2015-07-01 13:34 +0000 [6b16fbfc22] Scott Griepentrog <scott@griepentrog.com>
* Channel alert pipe: improve diagnostic error return
When a frame is queued on a channel, any failure in
ast_channel_alert_write is logged along with errno.
This change improves the diagnostic message through
aligning the errno value with actual failure cases.
ASTERISK-25224
Reported by: Andrey Biglari
Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b
2015-07-01 16:04 +0000 [8e07ab145d] Matt Jordan <mjordan@digium.com>
* sorcery/realtime: Add a bit of debug and warning messages for bad configs
When a mapping does not exist between a sorcery.conf defined object and
a realtime mapping in extconf, currently, the user will receive a slew
of ERROR messages that don't really tell what is happening. Some ERROR
messages may even be misleading, as they occur after the sorcery API has
already given up on the attempt to load and create the sorcery object.
This patch adds a bit of debug and a useful WARNING message for when a
wizard's open callback fails for a particular object type. In the bad
configurations that resulted in this patch, this provided a 'root cause'
WARNING message that pointed in the right direction of the configuration
problem.
Change-Id: I1cc7344f2b015b8b9c85a7e6ebc8cb4753a8f80b
2015-06-29 12:45 +0000 [156395e743] Mark Michelson <mmichelson@digium.com>
* res_sorcery_realtime: Fix leak of sorcery object type.
This prevents a leak of a sorcery object type when realtime sorcery
objects are retrieved by fields or when multiple objects are retrieved.
The extent of this leak is that sorcery object types would be leaked.
These are allocated whenever an object type is registered with sorcery,
meaning that on module shutdown, these objects would be leaked. This
could be problematic if many reloads were performed, but it is not as
severe as if every sorcery object retrieved from realtime were being
leaked.
ASTERISK-25165 #close
Reported by Corey Farrell
Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8
2015-06-26 22:02 +0000 [a5e9c4e9b2] Matt Jordan <mjordan@digium.com>
* res/res_corosync: Always decline module load, instead of failing
Returns a 'failure' from the module load routine indicates to Asterisk
that it should abort loading completely. This is rarely - in fact,
really, never - a good option. Aborting load of Asterisk from a dynamic
module implies that the core, and the rest of the dynamic modules, don't
matter: we should abandon all processing.
res_corosync is really not that important.
This patch updates the module such that, if it fails to load, it
politely declines (emitting ERROR messages along the way), and allows
Asterisk to continue to function.
Note that this issue was keeping Asterisk unit tests from running on
certain build agents.
Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f
2015-06-26 20:38 +0000 [399cd8bcd9] Matt Jordan <mjordan@digium.com>
* main/pbx: Resolve case sensitivity regression in PBX hints
When 8297136f was merged for ASTERISK-25040, a regression was introduced
surrounding the case sensitivity of device names within hints.
Previously, device names - such as 'sip/foo' - were compared in a case
insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After
that patch, only the case sensitive name would match, i.e., 'SIP/foo'.
As a result, some dialplan hints stopped working.
This patch re-introduces case insensitive matching for device names in
hints.
ASTERISK-25040
ASTERISK-25202 #close
Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c
(cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03)
2015-06-26 16:12 +0000 [24eec5a10b] Mark Michelson <mmichelson@digium.com>
* res_pjsip_nat: Adjust when contact should be rewritten.
A previous change made the contact only get rewritten if the dialog's
route set was not marked frozen. Unfortunately, while the intent of this
is correct, the dialog's route set actually gets marked as frozen
earlier than expected, especially for UAS dialogs.
Instead, the idea is that the contact needs to not be rewritten if there
is a pre-existing route set on the dialog. This is now accomplished by
checking the dialog's route set list instead of checking if the route
set is frozen.
Doing this causes some broken tests to begin passing again.
ASTERISK-25196
Reported by Mark Michelson
Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e
2015-06-19 18:27 +0000 [0ec461a637] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Add a serializer shutdown group.
The client_state objects contain a serializer used to send the outbound
REGISTER messages. Once all those message transactions are complete then
the module can shutdown.
ASTERISK-24907 #close
Reported by: Kevin Harwell
Change-Id: Ibb2fe558f98190f2a06da830e0fadfa25516f547
2015-06-26 10:41 +0000 [05a2cc1293] Mark Michelson <mmichelson@digium.com>
* res_pjsip_refer: Prevent sending duplicate headers.
res_pjsip_refer will attempt to add Referred-By or Replaces headers to
outbound INVITEs at times. If the INVITE gets challenged for
authentication, then we will resend the INVITE. Prior to this patch, the
Referred-By or Replaces header would be re-added to the outbound INVITE,
resulting in duplicated headers.
ASTERISK-25204 #close
Reported by Mark Michelson
Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d
2015-06-23 17:43 +0000 [028fa54620] Mark Michelson <mmichelson@digium.com>
* res_pjsip_nat: Rewrite route set when required.
When performing some provider testing, the rewrite_contact option was
interfering with proper construction of a route set when sending an ACK
after receiving a 200 OK response to an INVITE.
The initial INVITE was sent to address sip:foo. The 200 OK had a Contact
header with URI sip:bar. In addition, the 200 OK had Record-Route
headers for sip:baz and sip:foo, in that order. Since the Record-Route
headers had the lr parameter, the result should have been:
* Set R-URI of the ACK to sip:bar.
* Add Route headers for sip:foo and sip:baz, in that order.
However, the rewrite_contact option resulted in our rewriting the
Contact header on the 200 OK to sip:foo. The result was:
* R-URI remained sip:foo.
* We added Route headers for sip:foo and sip:baz, in that order.
The result was that sip:bar was not indicated in the ACK at all, so the
far end never received our ACK. The call eventually dropped.
The intention of rewrite_contact is to rewrite the most immediate
destination of our SIP request to be the same address on which we
received a request or response. In the case of processing a SIP response
with Record-Route headers, this means that instead of rewriting the
Contact header, we should instead rewrite the bottom-most Record-Route
header. In the case of processing a SIP request with Record-Route
headers, this means we rewrite the top-most Record-route header.
Like when we rewrite the Contact header, we also ensure to update
the dialog's route set if it exists.
ASTERISK-25196 #close
Reported by Mark Michelson
Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f
2015-06-19 16:16 +0000 [84c12f9e0c] Richard Mudgett <rmudgett@digium.com>
* threadpool, res_pjsip: Add serializer group shutdown API calls.
A module trying to unload needs to wait for all serializers it creates and
uses to complete processing before unloading.
ASTERISK-24907
Reported by: Kevin Harwell
Change-Id: I8c80b90f2f82754e8dbb02ddf3c9121e5e966059
2015-06-16 15:06 +0000 [602c4b74b5] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Fix handle_client_state_destruction() refs
* handle_client_state_destruction() must always be passed a ref to
client_state because it will always unref client_state.
handle_registration_response() was not passing a client_state ref.
* Made the final un-REGISTER message get sent normally using the pjproject
register control structure in handle_client_state_destruction(). The
previous code attempted to short circuit the response handling for the
module to unload. That doesn't work for a couple reasons. One,
pjsip_regc_send() may call the registered callback before it returns and
unbalance the client_state ref count. Two, the registered callback
handles any authentication for the un-REGISTER message.
* Made the distinction between internal registration state and external
registration status with sip_outbound_registration_status_str(). This is
necessary to avoid altering documented AMI messages with internal
changes.
* Removed references to client_state->client outside of the serializer
thread. When handle_client_state_destruction() destroys the pjproject
register control structure that memory is freed and cannot be referenced
anymore. These accesses were to provide information for debug and
off-nominal warning messages.
* In sip_outbound_registration_timer_cb() you should not access entry->id
after unrefing client_state because the passed in entry is normally
pointing to the timer entry in the client_state object.
ASTERISK-24907
Reported by: Kevin Harwell
Change-Id: Ia7b446d8644b6b4550ef5bea49527671de65183f
2015-06-15 15:28 +0000 [8c6a95a9ac] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Use ast_sorcery_object_unregister() API
The sorcery pjsip 'registration' config object needs to be destroyed on
module unload. Otherwise, a reload of res_pjsip could try to use
callbacks for a previously unloaded instance of the module provided by
ast_sorcery_object_register() or one of the variants. Also, if
res_pjsip_outbound_registration were subsequently reloaded, the sorcery
config field objects would be registered in sorcery twice.
ASTERISK-24907
Reported by: Kevin Harwell
Change-Id: I304fad13dece2604af48353f6c6d9d5c7b064697
2015-06-25 06:42 +0000 [e4a2ef9e4e] Joshua Colp <jcolp@digium.com>
* channel: Remove ignore of answer on non-outgoing channels.
Due to the way that channels can now be moved around inside of
Asterisk it is possible for the outgoing flag of a channel to get
cleared before it has been answered. This results in the bridge
not receiving notification that the outgoing leg has been answered.
This most easily exhibits itself with DTMF based blond transfers.
Since the answer of the outgoing leg is ignored the other party
continues to receive both a locally generated ringing and the
media stream of the outgoing leg upon its answer. This results
in no media being heard.
This change removes the ignore of the answer and allows it
to pass through.
ASTERISK-25171 #close
Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e
2015-06-15 15:28 +0000 [20f3d77ab9] Richard Mudgett <rmudgett@digium.com>
* sorcery: Add ast_sorcery_object_unregister() API call.
Find and unlink the specified sorcery object type to complement
ast_sorcery_object_register(). Without this function you cannot
completely unload individual modules that use sorcery for configuration.
ASTERISK-24907
Reported by: Kevin Harwell
Change-Id: I1c04634fe9a90921bf676725c7d6bb2aeaab1c88
2015-06-15 13:38 +0000 [4313f32969] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Reorder load_module() and unload_module().
It is best if the loading code creates and initializes the module's
infrastructure before letting the system know of its existence. The
unloading code needs to reverse the actions of the loading code and in the
reverse order.
ASTERISK-24907
Reported by: Kevin Harwell
Change-Id: I5d151383e9787b5b60aa5e1627b10f040acdded4
2015-06-23 14:34 +0000 [890c923786] Richard Mudgett <rmudgett@digium.com>
* AMI: Add Linkedid to the standard channel snapshot AMI event headers.
* The AMI version is bumped to 2.8.0.
ASTERISK-25189 #close
Reported by: John Hardin
Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac
2015-06-24 14:30 +0000 [2602a7484b] Richard Mudgett <rmudgett@digium.com>
* test.c: Add unit test registration checks for summary and description.
Added checks when a unit test is registered to see that the summary and
description strings do not end with a new-line '\n' for consistency.
The check generates a warning message and will cause the
/main/test/registrations unit test to fail.
* Updated struct ast_test_info member doxygen comments.
Change-Id: I295909b6bc013ed9b6882e85c05287082497534d
2015-06-24 14:39 +0000 [2b0482d699] Richard Mudgett <rmudgett@digium.com>
* Unit tests: Fix unit test description strings.
Analyzing the code shows that the unit test summary and description
strings should not end with a new-line character. Where these strings are
used in the code a new-line is provided for output.
Change-Id: I129284f5e7ca93d82532334076da4c462d3d9fba
2015-06-23 11:21 +0000 [e99e654d75] Joshua Colp <jcolp@digium.com>
* app_dial: Hold reference to calling channel formats when dialing outbound.
Currently when requesting a channel the native formats of the
calling channel are provided to the core for usage when dialing
the outbound channel. This occurs without holding the channel lock
or keeping a reference to the formats. This is problematic as
the channel driver may end up changing the formats during this time.
In the case of chan_sip this happens when an SDP negotiation
completes.
This change makes it so app_dial keeps a reference to the native
formats of the calling channel which guarantees that they will
remain valid for the period of time needed.
ASTERISK-25172 #close
Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db
2015-06-17 05:04 +0000 [80e82dc97f] Joshua Colp <jcolp@digium.com>
* res_pjsip_mwi: Set up unsolicited MWI upon registration.
The res_pjsip_mwi previously required a reload to set up the proper
subscriptions to allow unsolicited MWI to work. This change
makes it so the act of registering will also cause this to occur.
This is particularly useful if realtime is involved as no reload
needs to occur within Asterisk to cause the MWI information
to get sent.
ASTERISK-25180 #close
Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252
2015-06-22 15:11 +0000 [35a99b6394] Kevin Harwell <kharwell@digium.com>
* bridge.c: Hangup attended transfer target if bridged
After completing an attended transfer the transfer target channel was not being
hung up after leaving the bridge. Added an explicit softhangup to hangup said
channel, but only if it was previously bridged.
ASTERISK-24782 #close
Reported by: John Bigelow
Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada
2015-06-17 16:23 +0000 [036bc0012f] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Add missing line endings to CLI commands
Change-Id: I39ae612746d892d2dbe86f3ff2d7027fa1da57f7
2015-06-12 14:29 +0000 [bec7435945] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Eliminate simple RAII_VAR() usage.
Change-Id: I399cb9d61bbba706b48c98e0bf75e98984cd9a9e
2015-06-12 13:33 +0000 [c2519fdf1c] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Misc code cleanups.
* Break some long lines.
* Fix doxygen comment.
Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305
2015-06-22 09:26 +0000 [a419c69def] Alexander Traud (License 6520)
* chan_sip: Reload peer without its old capabilities.
On reload, previously allowed codecs were not removed. Therefore, it was not
possible to remove codecs while Asterisk was running. Furthermore, newly added
codecs got appended behind the previous codecs. Therefore, it was not possible
to add a codec with a priority of #1. This change removes the old capabilities
before the current ones are added.
ASTERISK-25182 #close
Reported by: Alexander Traud
patches:
asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520)
Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802
2015-06-20 19:38 +0000 [74616ae43d] Joshua Colp <jcolp@digium.com>
* chan_sip: Destroy peers without holding peers container lock.
Due to the use of stasis_unsubscribe_and_join in the peer destructor
it is possible for a deadlock to occur when an event callback is
occurring at the same time.
This happens because the peer may be destroyed while holding the
peers container lock. If this occurs the event callback will never
be able to acquire the container lock and the unsubscribe will
never complete.
This change makes it so the peers that have been removed from the
peers container are not destroyed with the container lock held.
ASTERISK-25163 #close
Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33
2015-06-18 13:16 +0000 [9015bb4c8c] Mark Michelson <mmichelson@digium.com>
* Resolve race conditions involving Stasis bridges.
This resolves two observed race conditions.
First, a bit of background on what the Stasis application does:
1a Creates a stasis_app_control structure. This structure is linked into
a global container and can be looked up using a channel's unique ID.
2a Puts the channel in an event loop. The event loop can exit either
because the stasis_app_control structure has been marked done, or
because of some other factor, such as a hangup. In the event loop, the
stasis_app_control determines if any specific ARI commands need to be
run on the channel and will run them from this thread.
3a Checks if the channel is bridged. If the channel is bridged, then
ast_bridge_depart() is called since channels that are added to Stasis
bridges are always imparted as departable.
4a Unlink the stasis_app_control from the container.
When an ARI command is received by Asterisk, the following occurs
1b A thread is spawned to handle the HTTP request
2b The stasis_app_control(s) that corresponds to the channel(s) in the
request is/are retrieved. If the stasis_app_control cannot be
retrieved, then it is assumed that the channel in question has exited
the Stasis app or perhaps was never in Stasis in the first place.
3b A command is queued onto the stasis_app_control, and the channel's
event loop thread is signaled to run the command.
4b While most ARI commands do nothing further, some, such as adding or
removing channels from a bridge, will block until the command they
issued has been completed by the channel's event loop.
The first race condition that is solved by this patch involves a crash
that can occur due to faulty detection of the channel's bridged status
in step 3a. What can happen is that in step 2a, the event loop may run
the ast_bridge_impart() function to asynchronously place the channel
into a bridge, then immediately exit the event loop because the channel
has hung up. In step 3a, we would detect that the channel was not
bridged and would not call ast_bridge_depart(). The reason that the
channel did not appear to be bridged was that the depart_thread that is
spawned by ast_bridge_impart() had not yet started. That is the thread
where the channel is marked as being bridged. Since we did not call
ast_bridge_depart(), the Stasis application would exit, and then the
channel would be destroyed Then the depart_thread would start up and
try to manipulate the destroyed channel, causing a crash.
The fix for this is to switch from using ast_channel_is_bridged() to
checking the NULLity of ast_channel_internal_bridge_channel() to
determine if ast_bridge_depart() needs to be called. The channel's
internal bridge_channel is set when ast_bridge_impart() is called and
is NULLed by the call to ast_bridge_depart(). If the channel's internal
bridge_channel is non-NULL, then the channel must have been imparted
into the bridge and needs to be departed, even if the actual bridging
operation has not yet started. By departing the channel when necessary,
the thread that is running the Stasis application will block until the
bridge gives the okay that the depart_thread has exited.
The second race condition that is solved by this patch involves a leak
of HTTP handler threads. The problem was that step 2b would successfully
retrieve a stasis_app_control structure. Then step 2a would exit the
channel from the event loop due to a hangup. Steps 3a and 4a would
execute, and then finally steps 3b and 4b would. The problem is that at
step 4b, when attempting to add a channel to a bridge, the thread would
block forever since the channel would never execute the queued command
since it was finished with the event loop. This meant that the HTTP
handling thread would be leaked, along with any references that thread
may have owned (in my case, I was seeing bridges leaked).
The fix for this is to hone in better on when the channel has exited the
event loop. The stasis_app_control structure has an is_done field that
is now set at each point where the channel may exit the event loop. If
step 2b retrieves a valid stasis_app_control structure but the control
is marked as done, then the attempted operation exits immediately since
there will be nothing to service the attempted command.
ASTERISK-25091 #close
Reported by Ilya Trikoz
Change-Id: If66265b73b4c9f8f58599124d777fedc54576628
2015-06-16 11:13 +0000 [723a9d4225] Mark Michelson <mmichelson@digium.com>
* Parking: Add documentation for AMI ParkedCallSwap event.
This event was added some time ago in order to clarify when a channel
took the place of another channel in a parking lot. However, there was
no XML documentation added for the event. This patch adds the XML
documentation.
ASTERISK-24900 #close
Reported by Rusty Newton
Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac
2015-06-15 16:40 +0000 [79bf56c78a] Corey Farrell <git@cfware.com>
* func_pjsip_aor: Fix leaked contact from iterator.
ASTERISK-25162 #close
Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e
2015-06-12 16:58 +0000 [31c77b157b] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Add option to force G.726 to be treated as AAL2 packed.
Some phones send g.726 audio packed for AAL2, which differs from what is
recommended by RFC 3351. If Asterisk receives audio formatted as such when
negotiating g.726 then it sounds a bit distorted. Added an option to
res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726
AAL2 packed.
ASTERISK-25158 #close
Reported by: Steve Pitts
Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615
2015-06-14 19:48 +0000 [de8c7f46ed] Matt Jordan <mjordan@digium.com>
* main/cdr: Carry over the disable flag when 'disable all' is specified
The CDR_PROP function (as well as the NoCDR application) set the
'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This
flag is supposed to be applied to all CDRs that are currently in the
chain, as well as all CDRs that may be created in the future. Currently,
however, the flag is only applied to the existing CDRs in the chain; new
CDRs do not receive the 'disable all' flag. In particular, this affects
parallel dials, which generate new CDRs for each pair of channels in
the dial attempt.
This patch carries over the 'disable all' flag when it is specified on a
CDR and a new CDR is generated for the chain.
ASTERISK-24344 #close
Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e
2015-06-12 14:28 +0000 [78ea356e78] Matt Jordan <mjordan@digium.com>
* main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines
When a parallel dial occurs, a new CDR will be created for each dial
attempt that is made. In most circumstances, the act of creating each
CDR in the chain will include a step that updates the Party A snapshot,
which causes the context/extension of the Party A to be copied onto the
CDR object.
However, when the Party A is in a subroutine, we explicitly do *not*
copy the context/extension onto the CDR. This prevents the Macro or
GoSub routine name from blowing away the context/extension that the
channel was originally executing in. For the original CDR, this is not a
problem: the original CDR already recorded the last known 'good' state
of the channel just prior to it going into the subroutine. However, for
newly generated CDRs in a chain, there is no context/extension set on
them. Since we are in a subroutine, we will never set the Party A's
context/extension on the CDR, and we end up with a CDR with no
destination recorded on it.
This patch updates the creation of a chained CDR such that it copies
over the original CDR's context/extension. This is the last known "good"
state of the CDR, and is a reasonable starting point for the newly
generated CDR. In the case where we are not in a subroutine, subsequent
code will update the location of the CDR from the Party A information;
in the case where we are in a subroutine, the context/extension on the
original CDR is the correct information.
ASTERISK-24443 #close
Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a
2015-06-11 08:18 +0000 [3f57f3f8ec] Damian Ivereigh <damo@launtel.net.au>
* chan_sip.c: Update dialog fromtag after request with auth
If a client sends and INVITE which is 401 rejected, then subsequently
sends a new INVITE with the auth info and uses a different fromtag
from the first INVITE, Asterisk will accept the new INVITE as part of
the original dialog - match_req_to_dialog() specifically ignores the
fromtag. However it does not update the stored dialog with the new
fromtag.
This results in Asterisk being unable to match future packets that are
part of this dialog (such as the ACK to the OK or the OK to the BYE),
and the call is dropped.
This problem was originally found when using an NEC-i SV8100-GE (NEC SIP
Card).
* After a successful match of a packet to the dialog, if the packet is
not a SIP_RESPONSE, authentication is present and the fromtags are
different, the stored fromtag is updated with the one from the recent
INVITE.
ASTERISK-25154 #close
Reported by: Damian Ivereigh
Tested by: Damian Ivereigh
Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e
2015-06-11 18:52 +0000 [30a0f2d9ac] Matt Jordan <mjordan@digium.com>
* chan_pjsip: Set the context and extension on the channel when created
Prior to this patch, chan_pjsip was failing to pass the endpoint's
context and the desired extension to the ast_channel_alloc_* routine.
This caused a new channel snapshot to be issued without a context and
extension, which can cause some reporting issues for users of AMI, CEL,
and other APIs. The channel driver would later set the context and
extension on the channel such that the channel would start in the
correct location in the dialplan, but the information reported in the
initial event would be incorrect.
This patch modifies the channel driver such that it now passes the
context and extension directly into the allocation routine. This
provides the information in the new channel snapshot published over
Stasis.
ASTERISK-25156 #close
Reported by: cloos
Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e
2015-06-10 18:28 +0000 [dbb067279e] Joshua Colp <jcolp@digium.com>
* bridge: When performing a blonde transfer update connected line information.
When performing a blonde transfer the code uses the old masquerade
mechanism to move a channel around. As a result of this certain information,
such as connected line, is moved between the channels involved. Upon
completion of the move a frame is queued which is supposed to update the
connected line information on the channel. This does not occur as the
code considers it a redundant update since the masquerade operation
updated the channel (but did not inform it of the new connected line
information). The code also does not queue a connected line update
to be handled by the thread handling the channel. Without this any
other channel that may be loosely involved does not know it is
talking to a different caller.
This change does the following to resolve this:
1. The indicated connected line information is cleared upon
completion of the masquerade operation when doing a blonde transfer.
This prevents the connected line update from being considered
redundant.
2. A connected line update frame is now queued upon the completion
of the masquerade operation so any other channel loosely involved
knows that there is a different caller.
ASTERISK-25157 #close
Reported by: Joshua Colp
Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20
2015-06-11 14:39 +0000 [a2f4d03c87] Richard Mudgett <rmudgett@digium.com>
* app_directory: Fix crash when using the alias option 'a'.
The voicemail.conf mailbox key/value pair is defined as:
<mailbox>=[<password>[,<full-name>[,<email>[,<pager>[,<options>]]]]]
Where all fields in the value including the field values are optional.
Since the parsing code for the mailbox key/value pair is sloppy, this
patch tightens the parsing for the directory information.
* Renamed the 'pos' and 'bufptr' variables to 'name' and 'options'
respectively in search_directory_sub(). Those names make more sense.
* Made sure that search_directory_sub() is dealing with the voicemail.conf
mailbox options field if it even exists when looking for the 'hidefromdir'
and 'alias' options.
* Fix crash if a voicemail.conf mailbox is just
<mailbox>=<password>,<name> when the 'a' option is used. If there were no
fields after the name then the 'options' pointer was not checked for NULL.
* Fix users.conf alias processing if the 'a' option is used. The wrong
variable was used.
ASTERISK-25087 #close
Reported by: Chet Stevens
Change-Id: I86052ea77307beddddba5279824d39dc0d593374
2015-06-09 15:31 +0000 [a2b718f4f6] Richard Mudgett <rmudgett@digium.com>
* res_pjsip.h: Fix some doxygen comments.
Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976
2015-06-05 13:46 +0000 [32ddf6d86b] Richard Mudgett <rmudgett@digium.com>
* taskprocessor.c: Remove extra unref from off-nominal path.
Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60
2015-04-20 16:00 +0000 [cf98c744d5] Yousf Ateya <y.ateya@starkbits.com>
* chan_iax2: Prevent deadlock between hangup and sending lagrq/ping
channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/
send_ping. This deadlock happens because the scheduled task send_lagrq(or
send_ping) starts execution after the call hangup procedure starts but before
it deletes the tasks in the scheduler.
The solution is to delete scheduled lagrq (and ping) task asynchronously
(i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will
be called in a new context (doesn't have callno locked).
This commit also cleans up the procedure of sending LAGRQ and PING.
main/sched.c: Do not assert when deleting non existant entry from scheduler.
This assert seems to be the reason for a lot of awkward code to avoid it.
ASTERISK-24983 #close
Reported by: Y Ateya
Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c
2015-05-31 12:37 +0000 [8af6c9cf6b] Ivan Poddubny <ivan.poddubny@gmail.com>
* res_pjsip_transport_websocket: Fix use-after-free bugs.
This patch fixes use-after-free bugs caught by AddressSanitizer.
1. PJSIP transport manager may decide to destroy transport on its own.
For example, when the contact registered via websocket has not renewed
its registration in time. The transport was destoyed, but the websocket
listener thread was still active until the socket closes, and then tried
to call transport_shutdown on transport that has been freed.
Also, the transport destructor accessed wstransport->rdata.tp_info.pool
right after freeing memory that contained wstransport itself.
This patch converts transport to an ao2 object, allowing it to be
refcounted, so that it is available until both websocket listener and
pjsip transport manager are finished with it.
2. The websocket listener deletes the last reference on websocket session
when the tcp connection is closed, and it gets destroyed, but
the transport manager may still use it, for example when disconnect
happens in the middle of a SIP transaction.
A new reference to websocket session has been added that is released
with the transport to prevent this.
ASTERISK-25096 #close
Reported by: Josh Kitchens
ASTERISK-24963 #close
Reported by: Badalian Vyacheslav
Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b
2015-06-09 13:41 +0000 [3046bc17ed] ibercom <ibercom123@gmail.com>
* weakref attribute detection broken with gcc 4.6 and higher
GCC 4.7 Manual:
http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html
weakref ("target")
A weak reference is an alias that does not by itself require a definition
to be given for the target symbol.
ASTERISK-22559 #close
Reported by: Ibercom
Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf
2015-06-08 10:09 +0000 [55c8daf88b] Corey Farrell <git@cfware.com>
* Fix unsafe uses of ast_context pointers.
Although ast_context_find, ast_context_find_or_create and
ast_context_destroy perform locking of the contexts table,
any context pointer can become invalid at any time that the
contexts table is unlocked. This change adds locking around
all complete operations involving these functions.
Places where ast_context_find was followed by ast_context_destroy
have been replaced with calls ast_context_destroy_by_name.
ASTERISK-25094 #close
Reported by: Corey Farrell
Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa
2015-06-04 07:14 +0000 [e0090216db] ibercom <ibercom123@gmail.com>
* CLI: Cosmetic issue - core show uptime
Show uptime information ends with an unnecessary space.
Now NEEDCOMMA is better defined.
Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1
2015-06-03 17:41 +0000 [88212ccb7f] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Prevent access of NULL channels.
It is possible to receive incoming requests or responses after the channel
on an ast_sip_session has been destroyed and NULLed out. Handlers of these
sorts of requests or responses need to be prepared for the possibility
that the channel is NULL or else they could cause a crash.
While several places have been amended to deal with NULL channels, there
were still a couple of places that needed updating.
res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to
return early if there is no channel on the session.
res_pjsip_session.c: When handling a 302 response, we need to stop the
redirecting attempt if there is no channel on the session.
ASTERISK-25148 #close
reported by Mark Michelson
Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9
2015-06-01 11:45 +0000 [f5d5aa67dc] Kevin Harwell <kharwell@digium.com>
* AMI: Escape string values.
So this issue is a bit complicated. Since it is possible to pass values to AMI
that contain a '\r\n' (or other similar sequences) these values need to be
escaped. One way to solve this is to escape the values and then pass the escaped
values to the AMI variable parameter string building function. However, this
puts the onus on the pre-build function to escape all string values. This
potentially requires a fair amount of changes along with a lot of string
allocations/freeing for all values.
Surely there is a way to push this complexity down a level into the string
building function itself? This of course is possible, but ends up requiring a
way to distinguish between strings that need to be escaped and those that don't.
The best way to handle this is by introducing a new format specifier in the
format string. For instance a %s (no escape) and %S (escape). However, that is
a bit weird and unexpected.
So faced with those possibilities this patch implements a limited version of the
first option. Instead of attempting to escape all string values this patch only
escapes those values that make sense. This approach limits the number of changes
and doesn't suffer from the odd format specifier problem.
ASTERISK-24934 #close
Reported by: warren smith
Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0
2015-06-03 13:17 +0000 [5dc9fb4198] gtjoseph <george.joseph@fairview5.com>
* res_pjsip/location: Fix ref leak in contact_apply_handler
contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status
to force the creation of a contact_status object whenever a new
contact is added but it didn't unref the returned object.
Added an ao2_cleanup(status) to plug the leak.
ASTERISK-25141
Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40
Reported-by: Corey Farrell
2015-06-02 15:07 +0000 [d908272b7e] David M. Lee <dlee@respoke.io>
* Fixes for OS X
* Add some type casting so tv_usec can really be a long, instead of
some strange platform specific type.
* Add some .dylib style files to .gitignore.
* Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer
versions of GCC, when compiling the Homebrew formula for Asterisk,
are not properly passing the -Xlinker options to the linker. Given
that -Wl, does exactly the [same thing][], and does it properly, this
patch changes the -Xlinker options to use -Wl, instead.
[reasons unknown]: http://bit.ly/1SUbEYx
[same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd
2015-05-30 20:22 +0000 [9e7827e3ac] Corey Farrell <git@cfware.com>
* pjsip_configuration: Fix leak in persistent_endpoint_update_state.
The loop to find the first available contact of an endpoint grabbed
contact from the iterator, then checked for offline state. This
caused the first contact after the state was found to leak a reference.
ASTERISK-25141
Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08
2015-05-31 11:33 +0000 [888bb49618] Ivan Poddubny <ivan.poddubny@gmail.com>
* Fix buffer overflow in slin sample frames generation.
The length of frames retured by sample functions was twice as large as
real, what caused global buffer overflow caught by AddressSanitizer.
ASTERISK-24717 #close
Reported by: Badalian Vyacheslav
Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6
2015-05-29 16:19 +0000 [857166b5e5] gtjoseph <george.joseph@fairview5.com>
* res_pjsip/location: Fix memory leak in permanent_uri_handler
When permanent_uri_handler was creating the contact status
object for each contact, it wasn't unreffing it at the
end of the loop.
ASTERISK-25141 #close
Reported-by: Corey Farrell
Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12
2015-05-29 14:52 +0000 [1558a89129] gtjoseph <george.joseph@fairview5.com>
* Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change"
This reverts commit 35c699086ae2fd81b2473307ccb2ae79ad32375a.
Change-Id: Ia98c2b4820cf579a5b9bb75e9e05d7a233205fb7
2015-05-27 13:22 +0000 [35c699086a] gtjoseph <george.joseph@fairview5.com>
* endpoint/stasis: Eliminate duplicate events on endpoint status change
When an endpoint was created, it's messages were being forwarded to
both the tech endpoint topic and the all endpoints topic. Since
the tech topic was also forwarded to all, this was resulting in
duplicate messages whenever an endpoint published. This patch
causes the endpoint to only forward to the tech topic and lets
the tech topic forward to all.
To accomplish this, the existing stasis_cp_single_create function
(which both creates and forwards) was cloned and split into 2
functions, one that creates the topic and one that sets up the
forwarding. This allows endpoint_internal_create to create
the topic from the endpoint_all cache without forwarding it there,
then allows it to do the forward to the tech's topic.
ASTERISK-25137 #close
Reported-by: Vitezslav Novy
ASTERISK-25116 #close
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c
2015-05-26 13:56 +0000 [fe21f2e52f] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session: Fix in-dialog authentication.
When the remote peer requires authentication for in-dialog requests then
re-INVITEs to the peer cause the call to be disconnected and other
in-dialog requests to the peer like MESSAGE just don't go through.
* Made session_inv_on_tsx_state_changed() handle in-dialog authentication
for re-INVITEs and other methods. Initial INVITEs cannot be handled here
because the INVITE transaction must be restarted earlier.
* Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in
preparation for removing the file. The generic outbound authentication
code did not work as well as anticipated.
* Created outbound_invite_auth() to only handle initial outbound INVITEs.
Re-INVITEs cannot be handled here. The re-INVITE transaction is still in
progress and the PJSIP library cannot handle the overlapping INVITE
transactions. Other method types should not be handled here as this code
only works on outgoing calls and we need to handle incoming and outgoing
calls.
ASTERISK-25131 #close
Reported by: Richard Mudgett
Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0
2015-05-21 17:21 +0000 [262d590819] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes
Add a new ContactStatus AMI event.
Publish the following status/state changes:
Created
Removed
Reachable
Unreachable
Unknown
Contact URI, new status/state, aor and endpoint names, and the
last qualify rtt result are included in the event.
ASTERISK-25114 #close
Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-05-26 07:44 +0000 [5a42397018] Joshua Colp <jcolp@digium.com>
* sorcery: Fix cache creation callback.
The cache creation callback function expects to receive a sorcery_details
structure and not just a standalone object.
Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450
2015-05-24 13:47 +0000 [97a6ce1717] Ivan Poddubny <ivan.poddubny@gmail.com>
* Astobj2: Correctly treat hash_fn returning INT_MIN
The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0.
However, abs(INT_MIN) = INT_MIN and is still negative, as well as
abs(INT_MIN) % num_buckets, and as a result this led to a crash.
One way to trigger the bug is using host=::80 or 0.0.0.128 in peer
configuration section in chan_sip or chan_iax.
This patch takes the remainder before applying abs, so that bucket
number is always in range.
ASTERISK-25100 #close
Reported by: Mark Petersen
Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899
2015-05-23 04:36 +0000 [554bd1e39c] Ivan Poddubny <ivan.poddubny@gmail.com>
* res_pjsip_transport_websocket: Fix crash on receiving large SIP packets
Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves
truncated before passing to pjsip_tpmgr_receive_packet, but the length
was passed unaltered, thus causing memory corruption and segfault.
ASTERISK-25122 #close
Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab
2015-05-22 21:50 +0000 [0d266cbe02] Corey Farrell <git@cfware.com>
* Stasis: Fix unsafe use of stasis_unsubscribe in modules.
Many uses of stasis_unsubscribe in modules can be reached through unload.
These have been switched to stasis_unsubscribe_and_join.
Some subscription callbacks do nothing, for these I've created a noop
callback function in stasis.c. This is used by some modules that monitor
MWI topics in order to enable cache, since the callback does not become
invalid after dlclose it is safe to use stasis_unsubscribe on these, even
during module unload.
ASTERISK-25121 #close
Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c
2015-05-22 12:22 +0000 [51ffed5e61] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS
In addition to specifying lists of 'presence' and 'message-summary',
users can also create lists of type 'dialog'. These should be treated in
the same fashion as 'presence'.
Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e
2015-05-22 12:18 +0000 [7950b65e4f] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_exten_state: Fix confusing NOTICE message
When a SUBSCRIBE request is made to a dialplan hint that doesn't exist,
the current NOTICE message informing users of this swaps the context and
extension parameters. This can cause a bit of confusion.
Thanks to CptBurger in #asterisk for helping to point this out.
Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43
2015-05-17 20:36 +0000 [5ac65ddfb4] Matt Jordan <mjordan@digium.com>
* res/ari: Register Stasis application on WebSocket attempt
Prior to this patch, when a WebSocket connection is made, ARI would not
be informed of the connection until after the WebSocket layer had
accepted the connection. This created a brief race condition where the
ARI client would be notified that it was connected, a channel would be
sent into the Stasis dialplan application, but ARI would not yet have
registered the Stasis application presented in the HTTP request that
established the WebSocket.
This patch resolves this issue by doing the following:
* When a WebSocket attempt is made, a callback is made into the ARI
application layer, which verifies and registers the apps presented in
the HTTP request. Because we do not yet have a WebSocket, we cannot
have an event session for the corresponding applications. Some
defensive checks were thus added to make the application objects
tolerant to a NULL event session.
* When a WebSocket connection is made, the registered application is
updated with the newly created event session that wraps the WebSocket
connection.
ASTERISK-24988 #close
Reported by: Joshua Colp
Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636
2015-05-20 11:11 +0000 [60e2fbfe62] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Refactor endpt_send_transaction (qualify_timeout)
This patch refactors the transaction timeout processing to eliminate
calling the lower level public pjsip functions and reverts to calling
pjsip_endpt_send_request again. This is the result of me noticing
a possible incompatibility with pjproject-2.4 which was causing
contact status flapping.
The original version of this feature used the lower level calls to
get access to the tsx structure in order to cancel the transaction
when our own timer expires. Since we no longer have that access,
if our own timer expires before the pjsip timer, we call the callbacks
and just let the pjsip transaction take it's own course. When the
transaction ends, it discovers the callbacks have already been run
and just cleans itself up.
A few messages in pjsip_configuration were also added/cleaned up.
ASTERISK-25105 #close
Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-05-20 00:45 +0000 [42476e6633] demon-ru <serov.d.p@gmail.com>
* res_pjsip_outbound_registration: Check request URI for line.
When an inbound call is received the To header is checked
for the "line" option. Some remote servers will place this
in the request URI instead. This adds an additional check for
the option in the request URI.
ASTERISK-25072 #close
Reported by: Dmitriy Serov
Change-Id: Id4e44debbb80baad623b914a88574371575353c8
2015-05-21 17:51 +0000 [e7edb59db6] Corey Farrell <git@cfware.com>
* res_mwi_external_ami: Use module version of AMI registration.
Use ast_manager_register_xml for res_mwi_external_ami manager
actions. This ensures the module is held open while any of
the actions are being run.
ASTERISK-25117 #close
Reported by: Corey Farrell
Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7
2015-05-21 13:05 +0000 [9d8a462356] Matt Jordan <mjordan@digium.com>
* ARI: Update version to 1.7.0
This patch updates the version of ARI to 1.7.0 to reflect the backwards
compatible changes that will be introduced in 13.4.0.
Change-Id: I6c36e6144da426412f25828a868e4df916bff60a
2015-05-20 20:53 +0000 [9b6e228419] Corey Farrell <git@cfware.com>
* Logger: Reset defaults before processing config.
Reset options to default values before reloading config. This ensures
that if a setting is removed or commented out of the configuration file
it is unset on reload.
ASTERISK-25112 #close
Reported by: Corey Farrell
Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd
2015-05-20 19:05 +0000 [7fcf0a97b8] gtjoseph <george.joseph@fairview5.com>
* app_playback: Suppress warnings on playback if channel hung up
If a channel hangs up while an audio file is playing, there's
no need to clutter up the logs with a warning so suppress it
if ast_check_hangup returns true.
Also, change warning to debug/2 in file.c if writing a frame
fails. Same reasoning.
Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-05-14 15:21 +0000 [b1e8c0b9eb] Kevin Harwell <kharwell@digium.com>
* audiohook.c: Difference in read/write rates caused continuous buffer resets
Currently, everytime a sample rate change occurs (on read or write) the
associated factory buffers are reset. If the requested sample rate on a
read differed from that of a write then the buffers are continually reset
on every read and write. This has the side effect of emptying the buffer,
thus there being no data to read and then write to a file in the case of
call recording.
This patch fixes it so that an audiohook_list's rate always maintains the
maximum sample rate among hooks and formats. Audiohook sample rates are
only overwritten by this value when slin native compatibility is turned on.
Also, the audiohook sample rate can only overwrite the list's sample rate
when its rate is greater than that of the list or if compatibility is
turned off. This keeps the rate from constantly switching/resetting.
ASTERISK-24944 #close
Reported by: Ronald Raikes
Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f
2015-05-19 13:01 +0000 [17d6ede337] Corey Edwards <tensai@zmonkey.org>
* main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits
ASTERISK-24887 #close
Reported by: Makoto Dei
Tested by: tensai
Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf
2015-05-13 09:55 +0000 [31cc24aad6] Matt Jordan <mjordan@digium.com>
* res/res_http_websocket: Add a pre-session established callback
This patch updates http_websocket and its corresponding implementation
with a pre-session established callback. This callback allows for
WebSocket server consumers to be notified when a WebSocket connection is
attempted, but before we accept it. Consumers can choose to reject the
connection, if their application specific logic allows for it.
As a result, this patch pulls out the previously private
websocket_protocol struct and makes it public, as
ast_websocket_protocol. In order to preserve backwards compatibility
with existing modules, the existing APIs were left as-is, and new APIs
were added for the creation of the ast_websocket_protocol as well as for
adding a sub-protocol to a WebSocket server.
In particular, the following new API calls were added:
* ast_websocket_add_protocol2 - add a protocol to the core WebSocket
server
* ast_websocket_server_add_protocol2 - add a protocol to a specific
WebSocket server
* ast_websocket_sub_protocol_alloc - allocate a sub-protocol object.
Consumers can populate this with whatever callbacks they wish to
support, then add it to the core server or a specified server.
ASTERISK-24988
Reported by: Joshua Colp
Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2
2015-05-14 22:05 +0000 [f9114179e6] snuffy <snuffy22@gmail.com>
* chan_pjsip: Fix crash during off-nominal when no endpoint specified.
Add missing return -1 when no endpoint name is specified.
ASTERISK-25086 #close
Reported by: snuffy
Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e
2015-05-14 18:01 +0000 [dd78ab42e4] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard/config: Fix template processing
The config wizard was always pulling the first occurrence of
a variable from an ast_variable list but this gets the template
value from the list instead of any overridden value. This patch
creates ast_variable_find_last_in_list() in config.c and updates
res_pjsip_config_wizard to use it instead of
ast_variable_find_in_list. Now the overridden values, where they
exist, are used instead of template variables.
Updated test_config to test the new API.
ASTERISK-25089 #close
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4
2015-05-15 01:54 +0000 [091b436007] snuffy <snuffy22@gmail.com>
* cdr: Fix 'core show channel' CDR variable truncation.
When the new Bridging API was implemented, the workspace variable
changed to a malloc'd string, causing sizeof() to always be 8 (char).
Revert back to stored on stack string for workspace.
ASTERISK-25090 #close
Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7
2015-05-14 00:06 +0000 [6b7282ca40] Corey Farrell <git@cfware.com>
* Fix potential crash after unload of func_periodic_hook or test_message.
These modules save a pointer to the context they create on load, and
use that pointer to destroy the context at unload. It is not safe
to save this pointer, it is replaced during load of pbx_config,
pbx_lua or pbx_ael.
This change causes the modules to pass NULL to ast_context_destroy,
a safer way to perform the unregistration since it does not use
a pointer that could become invalid.
ASTERISK-25085 #close
Reported by: Corey Farrell
Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835
2015-05-13 15:41 +0000 [02c5130589] Jonathan Rose <jrose@digium.com>
* Message.c: Clear message channel frames on cleanup
The message channel is a special channel that doesn't actually process frames.
However, certain actions can cause frames to be placed in the channel's read
queue including the Hangup application which is called on the channel after
each message is processed. Since the channel will continually be reused for
many messages, it's necessary to flush these frames at some point.
ASTERISK-25083 #close
Reported by: Jonathan Rose
Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f
2015-05-12 17:45 +0000 [d49d64b79c] Jonathan Rose <jrose@digium.com>
* app_voicemail: fix moving when old messages full
When completing voicemail playback of a message in the 'INBOX', the
message gets moved to the 'Old' messages folder. Without this patch, if
the 'Old' folder is already at its set limit, then the 'INBOX' message will
simply be deleted. With this patch, the flag to delete the message will be
removed if the save_to_folder function indicates that the message could
not be moved due to a full folder.
ASTERISK-25082 #close
Reported by: Jonathan Rose
Review: https://gerrit.asterisk.org/#/c/448/
Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f
2015-05-04 20:11 +0000 [9b13536fed] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* main/manager.c: Bugfix sort action_manager by alphabetically
Fix the alphabetic order added on ast_manager_register_struct. The order
for struct manager_action added is not working, this change fixes the
problem.
Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b
2015-05-08 18:01 +0000 [e67e8d5c7f] Alexandre Fournier <alexandre.fournier@kiplink.fr>
* res_config_mysql: Fix broken column type checking
MySQL configuration engine contains a bug in require_mysql(). This
function is used for column type checking in tables. This bug only
affects DATETIME, DATE and FLOAT types.
It came from mixing the first condition (switch-case-like
if/then/else), to check the expected column type, with the second
condition, to check the actual column type against the expected column
type. Both conditions must be checked separately in order to avoid the
execution of the wrong block.
ASTERISK-18252 #comment This patch might fix the issue
Reported by: Gareth Blades
ASTERISK-25041 #close
Reported by: Alexandre Fournier
Tested by: Alexandre Fournier
Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa
2015-05-10 07:37 +0000 [16f602f5c2] Yousf Ateya <y.ateya@starkbits.com>
* res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS.
First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC
https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values.
Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31
2015-05-12 17:34 +0000 [c780b6e431] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision.
If an ISDN call is hungup by both sides at the same time a crash could
happen.
* Added missing NULL checks for the owner channel after calling
pri_queue_pvt_cause_data() in two places. Code after those calls need to
check the owner channel pointer for NULL before use because
pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the
owner and the owner may get hung up.
ASTERISK-21893 #close
Reported by: Alexandr Gordeev
Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a
2015-05-10 02:26 +0000 [6627de830b] Sebastian Kemper <sebastian_ml@gmx.net>
* General: Fix recent menuselect-related cross compile regression
MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the
target platform. But menuselect is to be run on the build system, so
BUILD_CC needs to be used instead - like it was in the past, before the
recent changes (https://reviewboard.asterisk.org/r/4370/). This is the
patch for ASTERISK-25074.
ASTERISK-25074 #close
Reported by: Sebastian Kemper
Tested by: Sebastian Kemper
Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8
2015-05-05 15:32 +0000 [637c8f065e] gtjoseph <george.joseph@fairview5.com>
* sorcery: Add API to insert/remove a wizard to/from an object type's list
Currently you can 'apply' a wizard to an object type but the wizard
always goes at the end of the object type's wizard list. This patch
adds a new ast_sorcery_insert_wizard_mapping function that allows
you to insert a wizard anyplace in the list. I.E. You could
add a caching wizard to an object type and place it before all
wizards.
ast_sorcery_get_wizard_mapping_count and
ast_sorcery_get_wizard_mapping were added to allow examination
of the mapping list.
ast_sorcery_remove_mapping was added to remove a mapping by name.
As part of this patch, the object type's wizard list was converted
from an ao2_container to an AST_VECTOR_RW.
A new test was added to test_sorcery for this capability.
ASTERISK-25044 #close
Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57
2015-05-12 01:31 +0000 [3cdb7950f0] Corey Farrell <git@cfware.com>
* Fix processing of asterisk.conf debug=yes.
The code which reads asterisk.conf supports processing the debug
option with ast_true, but ast_true returns -1. This causes debug
to still be off, convert to 1 so debug will be on as requested.
ASTERISK-25042
Reported by: Corey Farrell
Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6
2015-05-01 23:43 +0000 [6553a00770] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* cdr_pgsql: Use PQescapeStringConn for escaping names.
Use function PQescapeStringConn for escaping the name
of the table and schema instead of doing it manually.
Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599
2015-05-09 16:58 +0000 [ea917fefaf] gtjoseph <george.joseph@fairview5.com>
* vector: Add REMOVE, ADD_SORTED and RESET macros
Based on feedback from Corey Farrell and Y Ateya, a few new
macros have been added...
AST_VECTOR_REMOVE which takes a parameter to indicate if
order should be preserved.
AST_VECTOR_ADD_SORTED which adds an element to
a sorted vector.
AST_VECTOR_RESET which cleans all elements from the vector
leaving the storage intact.
Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14
2015-05-11 07:07 +0000 [d5864a358c] Ivan Poddubny <ivan.poddubny@gmail.com>
* pbx/pbx_spool: Fix issue when call files were executed too early
pbx_spool used to delete/move the call file upon successful outgoing
call completion, but did not delete it from in-memory list of files
(dirlist, used only when compiled with inotify/kqueue support).
That resulted in an extra attempt to process that filename after
retrytime seconds.
Then, if a new file with the same name appears that is scheduled
in future further than the completed one plus its retrytime,
then it gets executed earlier than expected.
This patch fixes remove_from_queue function to also remove the entry
from the dirlist.
ASTERISK-17069 #close
Reported by: Jeremy Kister
ASTERISK-24442 #close
Reported by: tootai
Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b
2015-05-08 14:47 +0000 [4dbd4021c9] Rusty Newton <rnewton@digium.com>
* configs/basic-pbx: Modified main IVR to play new Allison prompt.
The main IVR was playing demo-congrats. I've switched it over to the
basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt
has Allison prompting the user with the actual IVR menu.
ASTERISK-24892 #close
Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d
2015-05-08 10:39 +0000 [613a461c3d] Sean Bright <sean@malleable.com>
* res_rtp_asterisk: Issue ERROR if res_srtp is not found.
While trying to get WebRTC working with chan_pjsip, I was running
into the following error:
Attempted to set an invalid DTLS-SRTP configuration on RTP
instance...
Josh helpfully pointed out that res_srtp.so might not be loaded, and
sure enough, it wasn't. This patch adds a ERROR indiciating as much
to hopefully help others having a similar problem.
Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f
2015-05-07 17:49 +0000 [394fcb5eab] Rusty Newton <rnewton@digium.com>
* sounds: Add Swedish sounds to Makefile and XML
Added the necessary lines to the Makefile and sounds.xml so we'll have the
Swedish sounds in all available formats in menuselect.
See also: Swedish sounds were added into the core sounds release 1.4.27.
ASTERISK-24744 #close
Reported by: Tove Hjelm
Tested by: Rusty Newton
Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908
2015-05-05 11:35 +0000 [2115f11b54] Alexander Traud (License 6520)
* tcptls: Avoiding ERR_remove_state in OpenSSL.
ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by
ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were
called by SSL_load_error_strings already and got removed. These changes allow
OpenSSL forks like BoringSSL to be used with Asterisk.
ASTERISK-25043 #close
Reported by: Alexander Traud
patches:
asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520)
Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629
(cherry picked from commit 247fef66537b59649e7571d64e2c574a106dbd65)
2015-05-07 14:54 +0000 [5392e970d0] gtjoseph <george.joseph@fairview5.com>
* doc: Make progdocs play nice with git
Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in
Changed /Makefile to copy asterisk-ng-doxygen.in to
asterisk-ng-doxygen then modify it with version instead of
modifying asterisk-ng-doxygen directly. Updated clean
targets as well.
Updated /.gitignore and doc/.gitignore.
Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622
2015-05-04 14:43 +0000 [608f0a94ee] Ivan Poddubny <ivan.poddubny@gmail.com>
* contrib/editors: Fix vim syntax highlighting of comments in config files
* Added a lookbehind to one-line comment matcher to skip escaped
semicolons.
* Added support for block comments.
Change-Id: Id17dfaeda8ed4be572e8107a0c010066584aaee7
2015-05-06 13:24 +0000 [d649d682c4] Joshua Colp <jcolp@digium.com>
* res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination
The res_pjsip_exten_state module currently has a race condition between
processing the extension state callback from the PBX core and processing
the subscription shutdown callback from res_pjsip_pubsub. There is currently
no synchronization between the two. This can present a problem as while
the SIP subscription will remain valid the tree it points to may not.
This is in particular a problem as a task to send a NOTIFY may get queued
which will try to use the tree that may no longer be valid.
This change does the following to fix this problem:
1. All access to the subscription tree is done within the task that
sends the NOTIFY to ensure that no other thread is modifying or
destroying the tree. This task executes on the serializer for the
subscriptions.
2. A reference to the subscription serializer is kept to ensure it
remains valid for the lifetime of the extension state subscription.
3. The NOTIFY task has been changed so it will no longer attempt
to send a NOTIFY if the subscription has already been terminated.
ASTERISK-25057 #close
Reported by: Matt Jordan
Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643
2015-05-05 20:22 +0000 [5f9aea8e3c] gtjoseph <george.joseph@fairview5.com>
* vector: Additional enhancements and fixes
After using the new vector stuff for real I found...
A bug in AST_VECTOR_INSERT_AT that could cause a seg fault.
The callbacks needed to be closer to ao2_callback in behavior
WRT to CMP_MATCH and CMP_STOP behavior and the ability to return
a vector of matched entries.
A pre-existing issue with APPEND and REPLACE was also fixed.
I also added a new macro to test.h that acts like ast_test_validate
but also accepts a return code variable and a cleanup label. As well
as printing the error, it sets the rc variable to AST_TEST_FAIL and
does a goto to the specified label on error. I had a local version
of this in test_vector so I just moved it.
ASTERISK-25045
Change-Id: I05e5e47fd02f61964be13b7e8942bab5d61b29cc
2015-05-04 17:28 +0000 [68513e00f7] Kevin Harwell <kharwell@digium.com>
* res_stasis_snoop: Spying on a single direction continually increases CPU
Creating a snoop channel in ARI and spying only on a single direction (in or
out) results in CPU utilization continually increasing until the CPU is fully
consumed. This occurs because frames are being put in the opposing direction's
slin factory queue, but not being removed.
Fixed the problem by always reading and disposing of frames from the opposite
queue of the direction selected.
ASTERISK-24938 #closes
Change-Id: I935bfd15f1db958f364d9d6b3b45582c0113dd60
2015-05-06 16:00 +0000 [904f5d98f6] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi: Improve force_restart_unavailable_chans option description.
ASTERISK-25034
Reported by: Richard Mudgett
Change-Id: I1ff8f02124d2f4abd632a050da52c64285bb7f30
2015-05-05 18:17 +0000 [be1260a35f] Richard Mudgett <rmudgett@digium.com>
* features: Fix crash when transferee hangs up during DTMF attended transfer.
A crash happens with this sequence of steps:
1) Party A is connected to party B.
2) Party B starts a DTMF attended transfer.
3) Party A hangs up while party B is dialing party C.
When party A hangs up the bridge that party A and party B are in is
dissolved and party B is kicked out of the bridge. When party B finishes
dialing party C he attempts to move to the new bridge with party C. Since
party B is no longer in a bridge the attempted move dereferences a NULL
bridge_channel pointer and crashes.
* Made the hold(), unhold(), ringing(), and the bridge_move() functions
tolerant of the channel not being in a bridge. The assertion that party B
is always in a bridge is not true if the bridged peer of party B hangs up
and dissolves the bridge. Being tolerant of not being in a bridge allows
the peer hangup stimulus to be processed by the FSM.
* Made the bridge_move() function return void since where the return value
for a failed move was checked generated a FSM coding ERROR message for a
normal off-nominal condition.
* Eliminated most uses of RAII_VAR in bridge_basic.c.
ASTERISK-25003 #close
Reported by: Artem Volodin
Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada
2015-05-05 15:40 +0000 [8b0f85ac06] gtjoseph <george.joseph@fairview5.com>
* test_vector: Fix build breakage caused by ASTERISK_REGISTER_FILE
My 13 version of test_vector had an ASTERISK_REGISTER_FILE() macro
call at the top which is only supported in master. Once removed
builds are successful.
Change-Id: I7cac8b669bed6de543bbf4e2eec3cffc9741acdd
2015-05-05 14:48 +0000 [87263b47b5] Ivan Poddubny <ivan.poddubny@gmail.com>
* app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter
This patch fixes EXITWITHTIMEOUT queue_log entry to always come with 3
parameters: position, original position and waiting time.
ASTERISK-25038 #close
Reported by: Etienne Lessard
Change-Id: I0c62045922e26bee2125e93aee1dee17eee79618
2015-05-05 09:47 +0000 [366ea63438] Corey Farrell <git@cfware.com>
* res_ari_bridges: Add missing dependencies.
Missed this module in the previous commit. res_ari_bridges uses symbols
from res_stasis_playback and res_stasis_recording.
ASTERISK-25027 #close
Reported by: Corey Farrell
Change-Id: I90bf756abd25adfc4920d2869ebe7feb636b8c5f
2015-05-05 09:27 +0000 [69ae8cf0a4] Corey Farrell <git@cfware.com>
* pbx_config: Register manager actions with module version of macro.
Switch manager actions in pbx_config to use the registration macro that
passes the module pointer, allowing pbx_config reference to be bumped
while the manager actions run.
ASTERISK-25061 #close
Reported by: Corey Farrell
Change-Id: I422c50dd74814616ac10c5e9c6598a0b1bc2c44e
2015-05-04 12:16 +0000 [181ae3b8d9] Joshua Colp <jcolp@digium.com>
* stasis: Fix dial masquerade datastore lifetime
A recent change went into Asterisk which added reference counts to the
channels stored in a dial masquerade datastore. Unfortunately this
included a reference to the caller in a dialing operation. While all
of the dialed targets have the datastore removed from them upon dialing
completion this did not occur for the caller, causing it to have a
reference to itself that could go never go away (as it depended on
the destruction of the datastore which only happened when the channel
was destroyed). This resulted in the caller channel remaining on the
system despite it having hung up.
This change does the following to fix this issue:
1. The dial masquerade datastore is now removed from the caller upon
dialing completion, just like the dialed targets.
2. Upon destruction of the caller all the dialed targets are also
removed from the dial masquerade datastore (just in case).
3. The reference to the caller has been removed as it should not be
possible for the datastore to now be valid/useful after the lifetime
of the caller has ended.
ASTERISK-25025 #close
Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f
2015-05-01 19:25 +0000 [7a7e9733c2] gtjoseph <george.joseph@fairview5.com>
* vector: Traversal, retrieval, insert and locking enhancements
Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really
does replace not insert. The few users of AST_VECTOR_INSERT were
refactored. Because these are macros, there should be no ABI
compatibility issues.
Added AST_VECTOR_INSERT_AT that actually inserts an element into the
vector at a specific index pushing existing elements to the right.
Added AST_VECTOR_GET_CMP that can retrieve from the vector based
on a user-provided compare function.
Added AST_VECTOR_CALLBACK function that will execute a function
for each element in the vector. Similar to ao2_callback and
ao2_callback_data functions although the vector callback can take
a variable number of arguments. This should allow easy migration
to a vector where a container might be too heavy.
Added read/write locked vector and lock manipulation macros.
Added unit tests.
ASTERISK-25045 #close
Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0
2015-05-03 13:55 +0000 [040d2f8558] Corey Farrell <git@cfware.com>
* main/test.c: Add test to verify there were no registration errors.
This adds a test that will fail if any test failed to register. Also fail
if any test registration produced a warning about missing a leading or
trailing slash.
ASTERISK-25053 #close
Reported by: Corey Farrell
Change-Id: I93e50b8fcbcfa7f1f5b41b2c44a51685c09529c3
2015-04-21 11:52 +0000 [3dcec04ab5] Martin Tomec <tomec.martin@gmail.com>
* res_odbc: Use negative connection cache for all connections
Apply the negative connection cache setting to all connections,
even those that are not pooled. This ensures that the connection
will not be re-established before the negative connection cache
time is met.
ASTERISK-22708 #close
Change-Id: I431cc2e8584ab0b6908b3523d0a0e18c9a527271
2015-05-03 21:03 +0000 [f38066fcad] Corey Farrell <git@cfware.com>
* Format Interfaces: Prevent unload except by shutdown.
Format interfaces cannot be unregistered, so the modules that provide them
need to be held open except by shutdown.
ASTERISK-25054 #close
Reported by: Corey Farrell
Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3
2015-05-03 20:28 +0000 [e76a6a97bf] Matt Jordan <mjordan@digium.com>
* contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update
The upgrade script for auto DTMF mode (31cd4f4891ec) added in 88b0fa7755
failed to add ENUM support for Postgres databases. This requires a
specific import from the sqlalchemy.dialects.postgresql package. This
patch corrects this error, which allows for Postgres update scripts to
be generated.
ASTERISK-24706
Change-Id: I4742ac8efa533cd6f18e0bdd907b339a9aedf015
2015-05-01 19:50 +0000 [92120247e9] D Tucny <d@tucny.com>
* term: send proper reset sequence when black background is forced
When using the force black background command-line option or configuration
option an invalid reset sequence is sent following a coloured output item
in the CLI, the result is that the colour is not 'turned off' and continues
until the next non-default coloured text output.
A reset sequence is already defined in term.c, but the ast_term_reset
function doesn't use it, instead building it's own invalid sequence and
returning that.
This patch changes that behaviour, removing the building of a reset sequence
and instead using the pre-built constant 'enddata' which is a suitable reset
sequence for this purpose.
ASTERISK-24896 #close
Reported by: Dan Tucny
Change-Id: I56323899123ae3264900389cae1f5b252aa3bf43
2015-05-02 18:58 +0000 [ad6ea29697] Corey Farrell <git@cfware.com>
* Remove unneeded uses of optional_api providers.
A few cases exist where headers of optional_api provders are included but
not needed. This causes unneeded calls to ast_optional_api_use.
* Don't include optional_api.h from sip_api.h.
* Move 'struct ast_channel_monitor' to channel.h.
* Don't include monitor.h from chan_sip.c, channel.c or features.c.
The move of struct ast_channel_monitor is needed since channel.c depends on
it. This has no effect on users of monitor.h since channel.h is included
from monitor.h.
ASTERISK-25051 #close
Reported by: Corey Farrell
Change-Id: I53ea65a9fc9693c89f8bcfd6120649bfcfbc3478
2015-04-30 02:07 +0000 [525c8c8689] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* include/asterisk/channel.h: Fix typo
Change-Id: Ie584b85e16a94c255e60d0b1732ef9686464fef3
2015-05-02 02:15 +0000 [63196a8256] Corey Farrell <git@cfware.com>
* res_pjsip_dlg_options: Fix MODULEINFO section.
Removed the extra space before "MODULEINFO" in res_pjsip_dlg_options.
This extra space prevented any of the dependencies from being seen by
menuselect, so building with default options would fail if PJSIP was
not installed.
This also makes the tool that extracts information for menuselect
tolerant of multiple spaces in the future.
ASTERISK-25033 #close
Reported by: Peter Whisker
Change-Id: Iccd54846f70c4a7a50cb5bf70b7bb5cb4bab3698
2015-04-29 03:03 +0000 [ac1f0090eb] Corey Farrell <git@cfware.com>
* Build System: Prevent unneeded changes to asterisk/buildopts.h.
* Add AST_DEVMODE to BUILDOPTS
* Remove CFLAGS that do not effect ABI from BUILDOPTS.
* Use BUILDOPTS to generate AST_BUILDOPT_SUM.
* Remove loop that defined AST_MODULE_*
These changes ensure that only ABI effecting options are considered for
AST_BUILDOPT_SUM. This also reduces unneeded full system rebuilds caused
by enabling or disabling one module that another is dependent on.
ASTERISK-25028
Reported by: Corey Farrell
Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2
2015-05-01 13:22 +0000 [5875bf183c] Corey Farrell <git@cfware.com>
* Astobj2: Fix initialization order of refdebug and AO2_DEBUG.
This ensures that refdebug is initialized before AO2_DEBUG if
both are enabled, since AO2_DEBUG allocates a container.
This change also makes AO2_DEBUG initialization critical, a
failure will abort Asterisk startup. This is needed since
the failure would be caused by reg_containers allocation
failure, and that would result in a segmentation fault by
ao2_container_register later in startup.
ASTERISK-25048 #close
Reported by: Corey Farrell
Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244
2015-04-29 14:49 +0000 [1b19c15f17] Matt Jordan <mjordan@digium.com>
* main/pbx: Improve performance of dialplan reloads with a large number of hints
The PBX core maintains two hash tables for hints: a container of the
actual hints (hints), along with a container of devices that are watching that
hint (hintdevices). When a dialplan reload occurs, each hint in the hints
container is destroyed; this requires a lookup in the container of devices to
find the device => hint mapping object. In the current code, this performs an
ao2_callback, iterating over each of the device to hint objects in the
hintdevices container. For a large number of hints, this is extremely
expensive: dialplan reloads with 20000 hints could take several minutes
in just this phase.
This patch improves the performance of this step in the dialplan reloads
by caching which devices are watching a hint on the hint object itself.
Since we don't want to create a circular reference, we just cache the
name of the device. This allows us to perform a smarter ao2_callback on
the hintdevices container during hint removal, hashing on the name of the
device and returning an iterator to the matching names. The overall
performance improvement is rather large, taking this step down to a number of
seconds as opposed to minutes.
In addition, this patch also registers the hint containers in the PBX
core with the astobj2 library. This allows for reasonable debugging to
hash collisions in those containers.
ASTERISK-25040 #close
Reported by: Matt Jordan
Change-Id: Iedfc97a69d21070c50fca42275d7b3e714e59360
2015-04-30 15:54 +0000 [3efe0df044] Corey Farrell <git@cfware.com>
* Sample Configs: Fix syntax error in pjsip.conf
The sample pjsip.conf has a few comment lines that are missing the
semicolons at the start of the comment, causing the config to fail
load.
Change-Id: I776a38c916a7df7ee3e072fd0b21dbf4cc457352
2015-04-30 15:20 +0000 [077979618b] Mark Michelson <mmichelson@digium.com>
* Prevent potential crash on blond transfer.
Scenario:
Alice calls Bob. Bob performs a blond transfer to Carol. Carol rejects
the incoming call (or some other immediate circumstance causes Carol not
to answer the call)
What occurs in this case is that when the bridge between Alice and Bob
breaks, Alice is told to masquerade into Bob's channel that had placed
the call to Carol. The actual masquerade goes down without a hitch.
However, a channel fixup callback that attempts to publish dial events
over Stasis has a crash. The reason for this crash is that the datastore
on Bob's channel that placed the outbound call to Carol only had a bare
pointer to Carol's channel. Since Carol rejected the incoming call,
Carol's channel has been hung up and freed, meaning accessing her
channel results in a crash.
The fix here is simple. The dial fixup code has been altered to hold
references to the involved channels and to drop those references when
freeing data.
ASTERISK-25025 #close
Reported by Chet Stevens
Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197
2015-04-30 14:09 +0000 [4b8cddfb36] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback.
The Asterisk 13 version of the fix for outbound registration was missing
a key component that set the outbound authenticator's callback that
creates an authenticated request based on an old request. This was
picked up by some outbound registration tests failing in the testsuite.
Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3
2015-04-30 13:42 +0000 [415a0d0745] Joshua Colp <jcolp@digium.com>
* res_ari_device_states: Fix dependency on res_stasis_device_state.
The res_ari_device_states module depends on res_stasis_device_state,
not res_stasis_device_states.
Change-Id: I26e02ad37f9e36bcc859867e2fad1b90452ec3de
2015-04-29 14:29 +0000 [d3c310a28c] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option.
Some telco switches occasionally ignore ISDN RESTART requests. The fix
for ASTERISK-19608 added an escape clause for B channels in the restarting
state if the telco ignores a RESTART request. If the telco fails to
acknowledge the RESTART then Asterisk will assume the telco acknowledged
the RESTART on the second call attempt requesting the B channel by the
telco. The escape clause is good for dealing with RESTART requests in
general but it does cause the next call for the restarting B channel to be
rejected if the telco insists the call must go on that B channel.
chan_dahdi doesn't really need to issue a RESTART request in response to
receiving a cause 44 (Requested channel not available) code. Sending the
RESTART in such a situation is not required (nor prohibited) by the
standards. I think chan_dahdi does this for historical reasons to deal
with buggy peers to get channels unstuck in a similar fashion as the
chan_dahdi.conf resetinterval option.
* Add the chan_dahdi.conf force_restart_unavailable_chans compatability
option that when disabled will prevent chan_dahdi from trying to RESTART
the channel in response to a cause 44 code.
ASTERISK-25034 #close
Reported by: Richard Mudgett
Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65
2015-04-30 06:38 +0000 [7f611fa0e8] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8
This patch adds a new option to cdr.conf, 'newcdrcolumns', that will handle CDR
columns added in Asterisk 1.8. The columns are:
* peeraccount
* linkedid
* sequence
When enabled, the columns in the database entry will be populated with the data
from the CDR.
ASTERISK-24976 #close
Change-Id: I51a57063f4ae5e194a9d933a8df45dc8a4534f0b
2015-04-30 06:04 +0000 [e332c7ed5e] Joshua Colp <jcolp@digium.com>
* res_pjsip_outbound_registration: Fix double unref on error return.
When the PJSIP pjsip_regc_send function is invoked and an error
status returned the caller currently decrements the reference count
of the client state that it just incremented, assuming the
registration callback would not have been invoked. In practice
this is not correct. If the failure happens after the transaction
has been set up the callback will still be invoked. This will
cause the reference count to be incorrectly decremented twice, once
by the registration callback and second by the caller of
pjsip_regc_send.
This change makes it so that whether the callback is invoked or
not is known by the caller of pjsip_regc_send. Depending on
this it can know whether it is responsible for decrementing the
reference count of the client state or not.
ASTERISK-25037 #close
Reported by: Joshua Colp
Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de
2015-04-20 13:03 +0000 [9c3ed42875] Diederik de Groot <ddegroot@talon.nl>
* Update configure.ac/Makefile for clang
Created autoconf/ast_check_raii.m4: contains AST_CHECK_RAII which
checks compiler requirements for RAII:
gcc: -fnested-functions support
clang: -fblocks (and if required -lBlocksRuntime)
The original check was implemented in configure.ac and now has it's
own file. This function also sets C_COMPILER_FAMILY to either gcc or
clang for use by makefile
Created autoconf/ast_check_strsep_array_bounds.m4 (contains
AST_CHECK_STRSEP_ARRAY_BOUNDS):
which checks if clang is able to handle the optimized strsep & strcmp
functions (linux). If not, the standard libc implementation should be
used instead. Clang + the optimized macro's work with:
strsep(char *, char []), but not with strsepo(char *, char *).
Instead of replacing all the occurences throughout the source code,
not using the optimized macro version seemed easier
See 'define __strcmp_gc(s1, s2, l2) in bits/string2.h':
llvm-comment: Normally, this array-bounds warning are suppressed for
macros, so that unused paths like the one that accesses __s1[3] are
not warned about. But if you preprocess manually, and feed the
result to another instance of clang, it will warn about all the
possible forks of this particular if statement. Instead of switching
of this optimization, another solution would be to run the preproces-
sing step with -frewrite-includes, which should preserve enough
information so that clang should still be able to suppress the diag-
nostic at the compile step later on.
See also "https://llvm.org/bugs/show_bug.cgi?id=20144"
See also "https://llvm.org/bugs/show_bug.cgi?id=11536"
Makefile.rules: If C_COMPILER_FAMILY=clang then add two warning
suppressions:
-Wno-unused-value
-Wno-parentheses-equality
In an earlier review (reviewboard: 4550 and 4554), they were deemed a
nuisace and less than benefitial.
configure.ac:
Added AST_CHECK_RAII() see earlier
Added AST_CHECK_STRSEP_ARRAY_BOUNDS() see earlier
Removed moved content
ASTERISK-24917
Change-Id: I12ea29d3bda2254ad3908e279b7effbbac6a97cb
2015-04-29 16:15 +0000 [d4e207e27e] Matt Jordan <mjordan@digium.com>
* main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8
The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS
structures in the RTP engine. However, when a 'core reload' is issued, a
double free of the memory pointed to by the char *'s in the DTLS
configuration struct can occur, as ast_rtp_dtls_cfg_free does not set
the pointers to NULL when they are freed.
This patch sets those pointers to NULL, preventing a second call to
ast_rtp_dtls_cfg_free from corrupting memory.
ASTERISK-25022
Change-Id: I820471e6070a37e3c26f760118c86770e12f6115
2015-04-29 13:05 +0000 [3fb6daeb55] Kevin Harwell <kharwell@digium.com>
* res_fax: allow 2400 transmission rate according to v.27ter standard
A previous set of patches (see: ASTERISK-22790 & ASTERISK-23231) made it so
a v.27 modem was not allowed to have a minimum transmission rate of 2400 bits
per second. This reverts all or some of those patches since according to the
v.27ter standard a rate of 2400 bits per second is also supported.
One of the original patches also added 9600 bits per second support for v.27.
This patch also removes that since v.27ter only supports 2400/4800 bits per
second.
Also, since Asterisk specifically supports v.27ter the enum was renamed to
better reflect this.
ASTERISK-24955 #close
Reported by: Matt Jordan
Change-Id: I4b9dfb6bf7eff08463ab47ee1a74224f27cae733
2015-04-29 10:46 +0000 [49ef81c15c] Joshua Colp <jcolp@digium.com>
* res_sorcery_config: Fix build issue due to syntax error.
Change-Id: Ic8322f04e37842848ad72cf2871bd0378f67c4ac
2015-04-28 00:29 +0000 [3278fe5327] Ashley Sanders <asanders@digium.com>
* chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR
Sections Exist in pjsip.conf
This patch modifies the current loading strategy of the pjsip configuration. If
duplicate sections (e.g. sections containing the same [id/type]) are defined in
[pjsip.conf], the loader will consider the configuration for the given type as
invalid when the duplicate section is encountered. The entire configuration
(including what was previously loaded) for the duplicate [id/type] sections
will be rejected and destroyed, an error message is logged and the load
processing for the given stops.
ASTERISK-24996
Reported By: Ashley Sanders
Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef
2014-11-04 06:03 +0000 [89f6719f7a] Joshua Colp <jcolp@digium.com>
* res_pjsip_outbound_registration: Add virtual line support.
Virtual line support establishes a relationship between messages
related to an outbound registration and a local endpoint. This is
accomplished by attaching a parameter to the Contact of the outbound
registration and looking for it on any received requests. If the
parameter exists and can be matched to an outbound registration
the configured endpoint is associated with the request.
ASTERISK-24949 #close
Reported by: Joshua Colp
Change-Id: I7df909d2625479110a83fdd354c21ac539e8615d
2015-04-29 06:39 +0000 [d61f03c4f9] Corey Farrell <git@cfware.com>
* ARI: Fix missing dependencies.
ARI modules that are generated by 'make ari-stubs' are all dependent on
res_ari_model. Additionally some of the same modules depend on one or more
res_stasis_* modules.
ASTERISK-25027 #close
Reported by: Corey Farrell
Change-Id: I8e07fe7e81fedacb87232f2b6f8b5f47927b4153
2015-04-29 06:26 +0000 [3e4624ad21] Corey Farrell <git@cfware.com>
* res_pjsip: Remove incorrect MODULEINFO from presence_xml.c.
Remove incorrect MODULEINFO block and unneeded header includes
from presence_xml.c.
ASTERISK-25027
Reported by: Corey Farrell
Change-Id: I977c609ab9d1fe05373027c4138900f6985990eb
2015-04-29 06:17 +0000 [fed9faab8d] Corey Farrell <git@cfware.com>
* Git Migration: Create doc/rest-api when needed.
Create the directory './doc/rest-api' at the start of 'make ari-stubs'
to prevent an error when documentation is generated. The directory is
also added to git ignores.
ASTERISK-25027
Reported by: Corey Farrell
Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b
2015-04-29 05:17 +0000 [df23c8a86b] Joshua Colp <jcolp@digium.com>
* res_pjsip_outbound_registration: Fix build due to removal of transaction.
Change-Id: I7a8a7beec3334cec304943f2dd7597eabe2e3150
2015-04-27 16:56 +0000 [e39bd6ba46] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_registration: Don't fail on delayed processing: 13.
This is the Asterisk 13 version of a change to master that allows for
registration responses to be processed successfully potentially after
the original transaction has timed out. The main difference between this
and the master change is that the master version has API changes that
are unacceptable for 13. For 13, this is worked around by adding a new
API call that the outbound registration code uses instead.
The following is the text from the master version of this commit:
Odd behaviors have been observed during outbound registrations. The most
common problem witnessed has been one where a request with
authentication credentials cannot be created after receiving a 401
response. Other behaviors include apparently processing an incorrect SIP
response.
Inspecting the code led to an apparent issue with regards to how we
handle transactions in outbound registration code. When a response to a
REGISTER arrives, we save a pointer to the transaction and then push a
task onto the registration serializer. Between the time that we save the
pointer and push the task, it's possible for the transaction to be
destroyed due to a timeout. It's also possible for the address to be
reused by the transaction layer for a new transaction.
To allow for authentication of a REGISTER request to be authenticated
after the transaction has timed out, we now also hold a reference to the
original REGISTER request instead of the transaction. The function for
creating a request with authentication has been altered to take the
original request instead of the transaction where the original request
was sent.
ASTERISK-25020
Reported by Mark Michelson
Change-Id: If1ee5f601be839479a219424f0358a229f358f7c
2015-04-27 14:44 +0000 [1bf008fc76] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_registration: Add debugging messages.
When problems occur regarding outbound registrations, it currently
is difficult to debug. Most off-nominal paths had warning messages,
but sometimes we want to know what's going on before hitting the
off-nominal path. This patch adds lots of debugging output that
should give a clearer picture of what is happening with regards
to outbound registrations.
ASTERISK-25020
Reported by Mark Michelson
Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45
2015-04-28 05:38 +0000 [0b6410c4f8] Steve Davies <steve@one47.co.uk>
* res_rtp_asterisk: Resolve 2 discrete memory leaks in DTLS
ao2 ref leak in res_rtp_asterisk.c when a DTLS policy is created.
The resources are linked into a table, but the original alloc refs
are never released. ast_strdup leak in rtp_engine.c. If
ast_rtp_dtls_cfg_copy() is called twice on the same destination struct,
a pointer to an alloc'd string is overwritten before the string is free'd.
ASTERISK-25022
Reported by: one47
Change-Id: I62a8ceb8679709f6c3769136dc6aa9a68202ff9b
2015-04-27 12:11 +0000 [99fb87ae13] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Fix SEGV on pending-qualify contacts
Permanent contacts that hadn't been qualified yet were missing
their contact_status entries causing SEGVs when running CLI
commands.
This patch makes sure that contact_statuses are created for
both dynamic and permanent contacts when they are created.
It also adds checks in the CLI code to make sure there's a
contact_status, just in case.
ASTERISK-25018 #close
Reported-by: Ivan Poddubny
Tested-by: Ivan Poddubny
Tested-by: George Joseph
Change-Id: I3cc13e5cedcafb24c400368b515b02d7fb81e029
2015-04-15 18:55 +0000 [d5dd43856e] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version
Add new column to INSERT new columns added in cdr 1.8 version. The columns are:
* peeraccount
* linkedid
* sequence
This feature is configurable in cdr_odbc.conf using a new configuration
option, 'newcdrcolumns'.
ASTERISK-24976 #close
Change-Id: Ibe0c7540a88305c6012786f438a0813ad8b19127
2015-04-26 17:21 +0000 [e9788056e9] Matt Jordan <mjordan@digium.com>
* channels/chan_skinny: Fix compilation error introduced in f8e21a1adf
A typo in commit f8e21a1adf resulted in a compilation error in
chan_skinny. This patch fixes the typo.
ASTERISK-24917
Change-Id: Id7f4ad1fe948eb2408622e80c27936ce4516c33c
2015-04-23 15:11 +0000 [7e5056b393] Kevin Harwell <kharwell@digium.com>
* app_confbridge: Default the template option to a compatible default profile.
Confbridge dynamic profiles did not have a default profile unless you
explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a
template was not set prior to the bridge being created then some
options were left with no default values set. This patch makes it so
the default templates are set to the default bridge and user profiles.
ASTERISK-24749 #close
Reported by: philippebolduc
Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a
2015-04-24 09:17 +0000 [1da9ec969d] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_authenticator: Increase CSeq on authed requests.
The way PJSIP generates an authenticated request is to use a previous
request as a template. This means that the authenticated request will
have the same Call-ID, From header (including tag), and CSeq as the
original request. PJSIP generates a new branch on the Via header to
indicate that this is a new transaction, though.
There are some SIP implementations, though, that do not notice the
change in the branch and therefore will match the authed request to the
original request's transaction. Since the CSeq is the same, the server
will repeat the response it sent to the original request.
This patch aids interoperability by increasing the CSeq of the authed
request by one.
ASTERISK-24845 #close
Reported by: Carl Fortin
Tested by: Carl Fortin
Change-Id: I39c4ca52e688a9f83bcc1878371334becdc5be01
2015-04-20 13:06 +0000 [cb318f3960] Diederik de Groot <ddegroot@talon.nl>
* Example script for scan-build (the llvm static analyzer)
- Added Pre-amble (Options / Flags / Usage Example / GNU License)
- Extended Configurability
- Made Executable
ASTERISK-24917
Change-Id: I70405fe54e4be7dbfbcb62e291690069b88617a8
2015-04-23 12:54 +0000 [eabf3b5a3c] Mark Michelson <mmichelson@digium.com>
* res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX.
When Asterisk originates a channel to an application, the channel is
hung up once the application finishes executing. When the application
in question is SendFax, the Asterisk PJSIP code will attempt to reinvite
the T.38 session to audio after the FAX completes. The hangup of the
channel happens in the midst of this reinvite transaction. In most
circumstances, this works out okay because the BYE is delayed until the
reinvite transaction can complete.
However, if the reinvite that Asterisk sends receives a 401/407
response, then Asterisk's attempt to re-send the reinvite with
authentication will fail. This is because the session supplement in
res_pjsip_t38 makes the assumption that the channel on the session will
always be non-NULL. Since the channel has been hung up, though, the
channel is now NULL. Attempting to operate on the channel causes a
crash.
This patch fixes the issue by ensuring that the channel on the session
is not NULL before attempting to mess with the T.38 framehook.
This patch also contains some corrections for comments that were
incorrect and really confused me when I first started looking at the
code.
ASTERISK-25004 #close
Reported by Mark Michelson
Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0
2015-04-23 09:16 +0000 [f70d21b2cf] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Validate that contact uris start with sip: or sips:
Currently we use pjsip_parse_hdr to validate contact uris but it
appears that it allows uris without a scheme if there's a port
supplied. I.E myexample.com will fail but myexample.com:5060 will
pass even though it has no scheme. This causes SEGVs later on
whenever the uri is used.
To prevent this, permanent_contact_validate has been updated to check
that the scheme is either 'sip' or 'sips'.
2 uses of possibly-null endpoint have also been fixed in
create_out_of_dialog_request.
ASTERISK-24999
Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2
Reported-by: Brad Latus
2015-04-23 08:00 +0000 [1bb16bedc7] Diederik de Groot <ddegroot@talon.nl>
* Clang: change previous tautological-compare fixes.
clang can warn about a so called tautological-compare, when it finds
comparisons which are logically always true, and are therefor deemed
unnecessary.
Exanple:
unsigned int x = 4;
if (x > 0) // x is always going to be bigger than 0
Enum Case:
Each enumeration is its own type. Enums are an integer type but they
do not have to be *signed*. C leaves it up to the compiler as an
implementation option what to consider the integer type of a particu-
lar enumeration is. Gcc treats an enum without negative values as
an int while clang treats this enum as an unsigned int.
rmudgett & mmichelson: cast the enum to (unsigned int) in assert.
The cast does have an effect. For gcc, which seems to treat all enums
as int, the cast to unsigned int will eliminate the possibility of
negative values being allowed. For clang, which seems to treat enums
without any negative members as unsigned int, the cast will have no
effect. If for some reason in the future a negative value is ever
added to the enum the assert will still catch the negative value.
ASTERISK-24917
Change-Id: I0557ae0154a0b7de68883848a609309cdf0aee6a
2015-04-22 16:22 +0000 [1474bb05f6] gtjoseph <george.joseph@fairview5.com>
* res_corosync: Add check for config file before calling corosync apis
On some systems, res_corosync isn't compatible with the installed version of
corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE,
and Asterisk terminates. The work around has been to remember to add
res_corosync as a noload in modules.conf. A better solution though is to have
res_corosync check for its config file before attempting to call corosync apis
and return LOAD_DECLINE if there's no config file. This lets Asterisk loading
continue.
If you have a res_corosync.conf file and res_corosync fails, you get the same
behavior as today and the fatal error tells you something is wrong with the
install.
ASTERISK-24998
Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889
2015-04-22 15:17 +0000 [73efb093b8] Corey Farrell <git@cfware.com>
* Astobj2: Ensure all calls to __adjust_lock pass a valid object.
__adjust_lock doesn't check for invalid objects, and doesn't have an
appropriate return value for invalid objects. Most callers of
__adjust_lock pass objects that have already been confirmed valid,
this change adds checks before the remaining calls.
ASTERISK-24997 #close
Reported by: Corey Farrell
Change-Id: I669100f87937cc3f867cec56a27ae9c01292908f
2015-04-22 16:32 +0000 [b0e929219b] gtjoseph <george.joseph@fairview5.com>
* .gitignore: Add .gcno and .gcda
Products of --enable-coverage
Change-Id: Ie20882d64b60692e2c941ea8872ab82a86ce77a3
2015-04-22 04:17 +0000 [d6dfc85666] Diederik de Groot <ddegroot@talon.nl>
* Clang: Fix some more tautological-compare warnings.
clang can warn about a so called tautological-compare, when it finds
comparisons which are logically always true, and are therefor deemed
unnecessary.
Exanple:
unsigned int x = 4;
if (x > 0) // x is always going to be bigger than 0
Enum Case:
Each enumeration is its own type. Enums are an integer type but they
do not have to be *signed*. C leaves it up to the compiler as an
implementation option what to consider the integer type of a particu-
lar enumeration is. Gcc treats an enum without negative values as
an int while clang treats this enum as an unsigned int.
rmudgett & mmichelson: cast the enum to (unsigned int) in assert.
The cast does have an effect. For gcc, which seems to treat all enums
as int, the cast to unsigned int will eliminate the possibility of
negative values being allowed. For clang, which seems to treat enums
without any negative members as unsigned int, the cast will have no
effect. If for some reason in the future a negative value is ever
added to the enum the assert will still catch the negative value.
ASTERISK-24917
Change-Id: Ief23ef68916192b9b72dabe702b543ecfeca0b62
2015-04-14 14:04 +0000 [7b57116833] Joshua Colp <jcolp@digium.com>
* res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers.
Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon
a mailbox state change (such as a new message being left, or one being deleted).
In practice this is not sufficient to keep clients aware of the current MWI status.
This change makes the module send unsolicited MWI NOTIFY on startup so that
clients are guaranteed to have the most up to date MWI information. It also makes
clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware
of the current MWI status they receive it.
ASTERISK-24982 #close
Reported by: Joshua Colp
Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58
2015-04-21 15:17 +0000 [ad1a118632] Corey Farrell <git@cfware.com>
* Check for ao2_alloc failure in __ast_channel_internal_alloc.
Fix a crash that could occur in __ast_channel_internal_alloc if
ao2_alloc fails.
ASTERISK-24991 #close
Change-Id: I4ca89189eb22f907408cb87d0a1645cfe1314a90
2015-04-20 14:30 +0000 [3327560cb2] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs.
When SUBSCRIBE dialogs were established, we never associated
the endpoint that created the subscription with the dialog
we end up creating. In most cases, this ended up not causing
any problems.
The actual bug that was observed was that when a device that
was behind NAT established a subscription with Asterisk, Asterisk
would end up sending in-dialog NOTIFY requests to the device's
private IP addres instead of the public address of the NAT router.
When Asterisk receives the initial SUBSCRIBE from the device,
res_pjsip_nat rewrites the contact to the public address on which the
SUBSCRIBE was received. This allows for the dialog to have its target
address set to the proper public address. Asterisk then would send a 200
OK response to the SUBSCRIBE, then a NOTIFY with the initial
subscription state. The device would then send a 200 OK response to
Asterisk's NOTIFY.
Here's where things went wrong. When the 200 OK arrived, res_pjsip_nat
did not rewrite the address in the Contact header. Then, when the PJSIP
dialog layer processed the 200 OK, PJSIP would perform a comparison
between the IP address in the Contact header and its saved target
address for the dialog. Since they differed, PJSIP would update the
target dialog address to be the address in the Contact header. From this
point, if Asterisk needed to send a NOTIFY to the device, the result was
that the NOTIFY would be sent to the private address that the device
placed in the Contact header.
The reason why res_pjsip_nat did not rewrite the address when it
received the 200 OK response was that it could not associate the
incoming response with a configured endpoint. This is because on a
response, the only way to associate the response to an endpoint is by
finding the dialog that the response is associated with and then finding
the endpoint that is associated with that dialog. We do not perform
endpoint lookups on responses. res_pjsip_pubsub skipped the step of
associating the endpoint with the dialog we created, so res_pjsip_nat
could not find the associated endpoint and therefore couldn't rewrite
the contact.
This commit message is like 50x longer than the actual fix.
ASTERISK 24981 #close
Reported by Mark Michelson
Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd
2015-04-20 18:00 +0000 [d08446ec36] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi/sig_pri: Make post AMI HangupRequest events on PRI channels.
The chan_dahdi channel driver is a very old driver. The ability for it to
support ISDN was added well after the initial analog support. Setting the
softhangup flags is a carry over from the original analog code. The
driver was not updated to call ast_queue_hangup() which will post the AMI
HangupRequest event.
* Changed sig_pri.c to call ast_queue_hangup() instead of setting the
softhangup flag when the remote party initiates a hangup.
ASTERISK-24895 #close
Reported by: Andrew Zherdin
Change-Id: I5fe2e48556507785fd8ab8e1c960683fd5d20325
2015-04-20 13:01 +0000 [2be9cc2643] Diederik de Groot <ddegroot@talon.nl>
* Fix/Update clang-RAII macro implementation
- When you need to refer to 'variable XXX' outside a block, it needs
to be declared as '__block XXX', otherwise it will not be available with-
in the block, making updating that variable hard to do, and ast_free
lead to issues.
- Removed the #error message
because it creates complications when compiling external projects
against asterisk For example when using a different compiler than the
one used to compile asterisk. The warning/error should be generated
during the configure process not the compilation process
ASTERISK-24917
Change-Id: I12091228090e90831bf2b498293858f46ea7a8c2
2015-04-20 09:53 +0000 [b74b2cdcda] gtjoseph <george.joseph@fairview5.com>
* pjsip_options: Fix format specifier for int64_t rtt.
Contact status rtt is an int64_t and needs the PRId64 macro to
properly create the format specifier on 32-bit systems.
Change-Id: I4b8ab958fc1e9a179556a9b4ffa49673ba9fdec7
2015-04-18 13:36 +0000 [63169e00ff] gtjoseph <george.joseph@fairview5.com>
* pjsip_options: Fix non-qualified contacts showing as unavailable
The "Add qualify_timeout processing and eventing" patch introduced
an issue where contacts that had qualify_frequency set to 0 were
showing Unavailable instead Unknown. This patch checks for
qualify_frequency=0 and create an "Unknown" contact_status
with an RTT = 0.
Previously, the lack of contact_status implied Unknown but since
we're now changing endpoint state based on contact_status, I've
had to add new UNKNOWN status so that changes could trigger the
appropriate contact_status observers.
ASTERISK-24977: #close
Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7
2015-04-19 15:49 +0000 [f0c82a173a] Matt Jordan <mjordan@digium.com>
* main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple
When a PBX registrar is unloaded, it will fail to remove its extension from
the context root_table if a dialplan application used by that extension is
still loaded. This can be the case for AGI, which can be unloaded after several
of the standard PBX providers. Often, this is harmless; however, if the
extension's priorities are removed during the failed unloading *and* the
dialplan application later unregisters, it leaves a ticking timebomb for the
next PBX provider that attempts to iterate over the extensions. When that
occurs, the peer_table pointer on the extension will already be set to NULL.
The current code does not check to see if the pointer is NULL before passing
it to a hashtab function this is not NULL tolerant.
Since it is possible for the peer_table to be NULL when we normally would not
expect that to be the case, the solution in this patch is to simply skip over
processing an extension's priorities if peer_table is NULL.
Prior to this patch, the tests/pbx/callerid_match test would crash during
module unload. With this patch, the test no longer crashes after running.
ASTERISK-24774 #close
Reported by: Corey Farrell
Change-Id: I2bbeecb7e0f77bac303a1b9135e4cdb4db6d4c40
2015-04-17 18:05 +0000 [82bc0fd3ad] Richard Mudgett <rmudgett@digium.com>
* res_fax: Fix latent bug exposed by ASTERISK-24841 changes.
Three fax related tests started failing as a result of changes made for
ASTERISK-24841:
tests/fax/pjsip/gateway_t38_g711
tests/fax/sip/gateway_mix1
tests/fax/sip/gateway_mix3
Historically, ast_channel_make_compatible() did nothing if the channels
were already "compatible" even if they had a sub-optimal translation path
already setup. With the changes from ASTERISK-24841 this is no longer
true in order to allow the best translation paths to always be picked. In
res_fax.c:fax_gateway_framehook() code manually setup the channels to go
through slin and then called ast_channel_make_compatible(). With the
previous version of ast_channel_make_compatible() this was always a
no-operation.
* Remove call to ast_channel_make_compatible() in fax_gateway_framehook()
that now undoes what was just setup when the framehook is attached.
* Fixed locking around saving the channel formats in
fax_gateway_framehook() to ensure that the formats that are saved are
consistent.
* Fix copy pasta errors in fax_gateway_framehook() that confuses read and
write when dealing with saved channel formats.
ASTERISK-24841
Reported by: Matt Jordan
Change-Id: I6fda0877104a370af586a5e8cf9e161a484da78d
2015-04-17 16:19 +0000 [c59a800707] Corey Farrell <git@cfware.com>
* Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled.
When DEBUG_THREADLOCALS is enabled it causes the threadlocal cleanup to be
called as a function. This causes a compile error with raw threadstorage as
it uses NULL for cleanup. This fix uses a macro that provides NULL when
DEBUG_THREADLOCALS is disabled, and replaces the call to "c_cleanup(data);"
with "{};" when DEBUG_THREADLOCALS is enabled.
ASTERISK-24975 #close
Reported by: Ashley Sanders
Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402
2015-04-15 10:38 +0000 [4f1a8dbe92] Mark Michelson <mmichelson@digium.com>
* Detect potential forwarding loops based on count.
A potential problem that can arise is the following:
* Bob's phone is programmed to automatically forward to Carol.
* Carol's phone is programmed to automatically forward to Bob.
* Alice calls Bob.
If left unchecked, this results in an endless loops of call forwards
that would eventually result in some sort of fiery crash.
Asterisk's method of solving this issue was to track which interfaces
had been dialed. If a destination were dialed a second time, then
the attempt to call that destination would fail since a loop was
detected.
The problem with this method is that call forwarding has evolved. Some
SIP phones allow for a user to manually forward an incoming call to an
ad-hoc destination. This can mean that:
* There are legitimate use cases where a device may be dialed multiple
times, or
* There can be human error when forwarding calls.
This change removes the old method of detecting forwarding loops in
favor of keeping a count of the number of destinations a channel has
dialed on a particular branch of a call. If the number exceeds the
set number of max forwards, then the call fails. This approach has
the following advantages over the old:
* It is much simpler.
* It can detect loops involving local channels.
* It is user configurable.
The only disadvantage it has is that in the case where there is a
legitimate forwarding loop present, it takes longer to detect it.
However, the forwarding loop is still properly detected and the
call is cleaned up as it should be.
Address review feedback on gerrit.
* Correct "mfgium" to "Digium"
* Decrement max forwards by one in the case where allocation of the
max forwards datastore is required.
* Remove irrelevant code change from pjsip_global_headers.c
ASTERISK-24958 #close
Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23
2015-04-11 16:56 +0000 [674b18bdf0] gtjoseph <george.joseph@fairview5.com>
* pjsip_options: Add qualify_timeout processing and eventing
This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the
discussion at
http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html
The basic issues are that changes in contact status don't cause events to be
emitted for the associated endpoint. Only dynamic contact add/delete actions
update the endpoint. Also, the qualify timeout is fixed by pjsip at 32 seconds
which is a long time.
This patch makes use of the new transaction timeout feature in r4585 and
provides the following capabilities...
1. A new aor/contact variable 'qualify_timeout' has been added that allows the
user to specify the maximum time in milliseconds to wait for a response to an
OPTIONS message. The default is 3000ms. When the timer expires, the contact is
marked unavailable.
2. Contact status changes are now propagated up to the endpoint as follows...
When any contact is 'Available', the endpoint is marked as 'Reachable'. When
all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'. The
existing endpoint events are generated appropriately.
ASTERISK-24863 #close
Change-Id: Id0ce0528e58014da1324856ea537e7765466044a
Tested-by: Dmitriy Serov
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-04-16 10:51 +0000 [b56c1914fa] Kevin Harwell <kharwell@digium.com>
* bridge.c: NULL app causes crash during attended transfer
Due to a race condition there was a chance that during an attended transfer the
channel's application would return NULL. This, of course, would cause a crash
when attempting to access the memory. This patch retrieves the channel's app
at an earlier time in processing in hopes that the app name is available.
However, if it is not then "unknown" is used instead. Since some string value
is now always present the crash can no longer occur.
ASTERISK-24869 #close
Reported by: viniciusfontes
Review:
Change-Id: I5134b84c4524906d8148817719d76ffb306488ac
2015-04-16 13:20 +0000 [8d4ce7cc2b] Scott Griepentrog <scott@griepentrog.com>
* res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced
This change makes the send_notify of the sub_tree
not happen when the sub_tree has been deleted due
to the notify call failing, which avoids a crash.
ASTERISK-24970 #close
Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf
2015-04-11 16:39 +0000 [bf46799f0e] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Refactor endpt_send_request to include transaction timeout
This is the first follow-on to https://reviewboard.asterisk.org/r/4572/ and the
discussion at
http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html
Since we currently have no control over pjproject transaction timeout, this
patch pulls the pjsip_endpt_send_request function out of pjproject and into
res_pjsip/endpt_send_transaction in order to implement that capability.
Now when the transaction is initiated, we also schedule our own pj_timer with
our own desired timeout.
If the transaction completes before either timeout, pjproject cancels its timer,
and calls our tsx callback where we cancel our timer and run the app callback.
If the pjproject timer times out first, pjproject calls our tsx callback where
we cancel our timer and run the app callback.
If our timer times out first, we terminate the transaction which causes
pjproject to cancel its timer and call our tsx callback where we run the app
callback.
Regardless of the scenario, pjproject is calling the tsx callback inside the
group_lock and there are checks in the callback to make sure it doesn't run
twice.
As part of this patch ast_sip_send_out_of_dialog_request was created to replace
its similarly named private function. It takes a new timeout argument in
milliseconds (<= 0 to disable the timeout).
ASTERISK-24863 #close
Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
Change-Id: I0778dc730d9689c5147a444a04aee3c1026bf747
2015-04-11 17:04 +0000 [1b6f6ff841] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Add global option to limit the maximum time for initial qualifies
Currently when Asterisk starts initial qualifies of contacts are spread out
randomly between 0 and qualify_timeout to prevent network and system overload.
If a contact's qualify_frequency is 5 minutes however, that contact may be
unavailable to accept calls for the entire 5 minutes after startup. So while
staggering the initial qualifies is a good idea, basing the time on
qualify_timeout could leave contacts unavailable for too long.
This patch adds a new global parameter "max_initial_qualify_time" that sets the
maximum time for the initial qualifies. This way you could make sure that all
your contacts are initialy, randomly qualified within say 30 seconds but still
have the contact's ongoing qualifies at a 5 minute interval.
If max_initial_qualify_time is > 0, the formula is initial_interval =
min(max_initial_interval, qualify_timeout * random(). If not set,
qualify_timeout is used.
The default is "0" (disabled).
ASTERISK-24863 #close
Change-Id: Ib80498aa1ea9923277bef51d6a9015c9c79740f4
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-04-15 16:08 +0000 [5d218cde87] gtjoseph <george.joseph@fairview5.com>
* More .gitignore updates
Added .pyc and .sha1 to the top-level .gitignore.
Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-04-14 13:16 +0000 [abd56db3e0] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* cel_pgsql: Fix name string for log on unable allocate memory.
The LOG_ERROR has reference to CDR instead of CEL for LENGTHEN_BUF1 and
LENGTHEN_BUF2.
ASTERISK-24965 #close
Reported by: Rodrigo Ramirez Norambuena
Change-Id: Icc818697d7d66d34bfe3048cdd15ca2b06c89744
2015-04-14 13:48 +0000 [222fbe1d9a] Corey Farrell <git@cfware.com>
* Build System: Replace comment about setting menuselect defaults.
The Makefile claims that you can set default menuselect options by creating
~/.asterisk.makeopts or /etc/asterisk.makeopts, but those files have never
been respected in Asterisk 11 or 13. This changes the comment to accurately
reflect that these files are not automatically used by the build system.
ASTERISK-13721 #close
Reported by: pj
Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2
2015-04-12 09:08 +0000 [07e729cc7b] Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
* cdr_pgsql: Fix CLI "cdr show pgsql status" command.
The command always showed the usage information.
* Fix the error in command validation for CLI_SHOWUSAGE.
ASTERISK-24959 #close
Reported by: Rodrigo Ramirez Norambuena
Change-Id: I584f0936bb01001336a468a55c1d05d79fe795d5
(cherry picked from commit 23a180cade51e84b9def65b05759c3cb9feba225)
2015-04-13 19:06 +0000 [7d43d85bea] gtjoseph <george.joseph@fairview5.com>
* .gitignore updates for master/13
Added products of ./bootstrap
Added nmenuselect and gmenuselect to menuselect/
Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35
2015-04-13 14:41 +0000 [3d27c223a5] David M. Lee <dlee@respoke.io>
* Fixing extconf compile
During the mass code deletion for clang support, a stray backslash was
left behind that was causing utils to fail to compile.
Change-Id: I60e5fa58c9a5b248bde23aaada79ff663f87a2a1
2015-04-13 09:54 +0000 [e996d8f728] Matt Jordan <mjordan@digium.com>
* build_tools/make_version: Update version parsing for Git migration
External systems - such as the Asterisk Test Suite - require knowledge of the
upstream branch. Unfortunately, after moving to Git, the Asterisk version
currently consists of only a 'GIT" prefix followed by an object blob,
e.g., GIT-as08d7. This makes it difficult for such systems to know what
features are available in a particular check out of Asterisk.
This patch fixes this by hardcoding the branch in a variable in the
make_version script. Since the mainline branches are not changed often -
typically only once a year - this is a reasonable approach to solving
the problem, and is more reliable than parsing the output of 'git branch
-vv'. Branches that track off of an upstream primary branch will then get the
benefit of knowing which mainline branch they are currently based off
of.
ASTERISK-24954 #close
Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799
2015-04-12 12:59 +0000 [d1a6f1a9f9] Matt Jordan <mjordan@digium.com>
* git migration: Remove support for file versions
Git does not support the ability to replace a token with a version
string during check-in. While it does have support for replacing a
token on clone, this is somewhat sub-optimal: the token is replaced
with the object hash, which is not particularly easy for human
consumption. What's more, in practice, the source file version was often
not terribly useful. Generally, when triaging bugs, the overall version
of Asterisk is far more useful than an individual SVN version of a file.
As a result, this patch removes Asterisk's support for showing source file
versions.
Specifically, it does the following:
* main/asterisk:
- Refactor the file_version structure to reflect that it no longer
tracks a version field.
- Alter the "core show file version" CLI command such that it always
reports the version of Asterisk. The file version is no longer
available.
* main/manager: The Version key now always reports the Asterisk version.
* UPGRADE: Add notes for:
- Modification to the ModuleCheck AMI Action.
- Modification of the "core show file version" CLI command.
Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28
2015-04-13 06:19 +0000 [0e4b997cd7] Corey Farrell <git@cfware.com>
* res_monitor: Add dependency on func_periodic_hook.
OPTIONAL_API has conditionals to define AST_OPTIONAL_API and
AST_OPTIONAL_API_ATTR differently based on if AST_API_MODULE is defined.
Unfortunately this is inside the include protection block, so only the
first status of AST_API_MODULE is respected. For example res_monitor
is an optional API provider, but uses func_periodic_hook. This makes
func_periodic_hook non-optional to res_monitor.
ASTERISK-17608 #close
Reported by: Warren Selby
Change-Id: I8fcf2a5e7b481893e17484ecde4f172c9ffb5679
2015-04-12 06:12 +0000 [a77c31b99c] Corey Farrell <git@cfware.com>
* main/editline: Add .gitignore.
This patch adds a .gitignore for main/editline to ignore all build results.
Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d
2015-04-11 23:22 +0000 [d918c3b78e] Matt Jordan <mjordan@digium.com>
* .gitignore: Ignore tarballs (*.gz)
This patch updates the root .gitignore file to ignore files with a .gz
extension. This will cause git to ignore downloaded sound tarballs in
the the sounds/ directory.
Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa
2015-04-11 13:20 +0000 [555b5f5d30] gtjoseph <george.joseph@fairview5.com>
* Add .gitignore and .gitreview files
Add the .gitignore and .gitreview files to the asterisk repo.
NB: You can add local ignores to the .git/info/exclude file
without having to do a commit.
Common ignore patterns are in the top-level .gitignore file.
Subdirectory-specific ignore patterns are in their own .gitignore
files.
Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696
Tested-by: George Joseph
2015-04-11 10:35 +0000 [5807ca519c] Matt Jordan <mjordan@digium.com>
* Blocked revisions 434708
........
main/event: Remove unnecessary assignment of negative value to enum
When cleaning up some clang compiler warnings, the comparison of a negative
value to an unsigned enum was removed. However, the initial assignment of a
negative value to said enum remained in the variable declaration. This patch
removes that assignment.
Thanks to ibercom in #asterisk-bugs for pointing it out.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-11 10:26 +0000 [d0d78d5732] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix various warnings for tests
This patch fixes a variety of clang compiler warnings for unit tests. This
includes autological comparison issues, ignored return values, and
interestingly enough, one embedded function. Fun!
Review: https://reviewboard.asterisk.org/r/4555
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4555.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434705 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434706 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-11 10:10 +0000 [4cf7d0bf01] Juergen Spies (License 6698)
* res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram
Prior to this patch, the far_max_datagram value on the UDPTL structure would
remain -1 if the remote endpoint fails to provide the SDP media attribute
T38FaxMaxDatagram. This can result in the INVITE request being rejected. With
this patch, we will now properly initialize the value with either the default
value or with the value provided by pjsip.conf's t38_udptl_maxdatagram
parameter.
Review: https://reviewboard.asterisk.org/r/4589
ASTERISK-24928 #close
Reported by: Juergen Spies
Tested by: Juergen Spies
patches:
pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 18:29 +0000 [13cd99682d] Richard Mudgett <rmudgett@digium.com>
* chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices.
With this patch, chan_pjsip/res_pjsip now sets the native formats to the
codecs negotiated by a call.
* The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native
formats to include all the negotiated audio codecs instead of only the
initial preferred audio codec and later the currently received audio
codec.
* The audio frame handling in channel.c:ast_read() is more streamlined and
will automatically adjust to changes in received frame formats. The new
policy is to remove translation and pass the new frame format to the
receiver except if the translation was to a signed linear format. A more
long winded version is commented in ast_read() along with some caveats.
* The audio frame handling in channel.c:ast_write() is more streamlined
and will automatically adjust any needed translation to changes in the
frame formats sent. Frame formats sent can change for many reasons such
as a recording is being played back or the bridged peer changed the format
it sends. Since it is a normal expectation that sent formats can change,
the codec mismatch warning message is demoted to a debug message.
* Removed the short circuit check in
channel.c:ast_channel_make_compatible_helper(). Two party bridges need to
make channels compatible with each other. However, transfers and moving
channels among bridges can result in otherwise compatible channels having
sub-optimal translation paths if the make compatible check is short
circuited. A result of forcing the reevaluation of channel compatibility
is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc
options take effect consistently now. It is unfortunate that these two
options are enabled by default and negate some of the benefits to the
changes in channel.c:ast_read() by forcing translation through signed
linear on a two party bridge.
* Improved the softmix bridge technology to better control the translation
of frames to the bridge. All of the incoming translation is now normally
handled by ast_read() instead of splitting any translation steps between
ast_read() and the slin factory. If any frame comes in with an unexpected
format then the translation path in ast_read() is updated for the next
frame and the slin factory handles the current frame translation.
This is the final patch in a series of patches aimed at improving
translation path choices. The other patches are on the following reviews:
https://reviewboard.asterisk.org/r/4600/
https://reviewboard.asterisk.org/r/4605/
ASTERISK-24841 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4609/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434671 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 16:03 +0000 [af458e2e60] Kevin Harwell <kharwell@digium.com>
* chan_sip: make progressinband default to no
After the "progressinband" value setting of "never" was updated to never send a
183 this separated its use from the "no" value. Since "never" was the default,
but most users probably expect "no" this patch updates the default for the
"progressinband" setting to "no."
ASTERISK-24835 #close
Reported by: Andrew Nagy
Review: https://reviewboard.asterisk.org/r/4606/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434654 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 12:53 +0000 [88b0fa7755] yaron nahum (License 6676)
* res_pjsip: Add an 'auto' option for DTMF Mode
This patch adds support for automatically detecting the type of DTMF that a
PJSIP endpoint supports. When the 'dtmf_mode' endpoint option is set to 'auto',
the channel created for an endpoint will attempt to determine if RFC 4733
DTMF is supported. If so, it will use that DTMF type. If not, the DTMF type
for the channel will be set to inband.
Review: https://reviewboard.asterisk.org/r/4438
ASTERISK-24706 #close
Reported by: yaron nahum
patches:
yaron_patch_3_Feb.diff submitted by yaron nahum (License 6676)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 11:59 +0000 [16afee4651] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: Cleanup load unload
While investigating other unload issues I realized that the load/unload process
for the config wizard was pretty ugly so I've refactored it as follows...
When the res_pjsip sorcery instance is created the config_wizard bumps it's own
module reference to prevent it from unloading while the sorcery instance is
still active. When res_pjsip unloads and it's sorcery instance is destroyed,
the config wizard unrefs itself which then allows itself to unload cleanly.
Since the config wizard now can't load after res_pjsip or unload before it
(which should have been the correct behavior all along), I was able to remove
the chunks of code in both load_module and unload_module that handled that case.
Ran the testsuite tests to insure there were no functional changes and REF_DEBUG
to insure that Asterisk was shutting down cleanly with no FRACKs or leaks.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4610/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 11:37 +0000 [125acc52fe] Richard Mudgett <rmudgett@digium.com>
* bridge_softmix.c,channel.c: Minor code simplification and cleanup.
* Made code easier to follow in bridge_softmix.c:analyse_softmix_stats()
and made some debug messages more helpful.
* Made some debug and warning messages more helpful in
channel.c:set_format().
Review: https://reviewboard.asterisk.org/r/4607/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434617 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 11:28 +0000 [a63f7ad04a] Richard Mudgett <rmudgett@digium.com>
* translate.c: Only select audio codecs to determine the best translation choice.
Given a source capability of h264 and ulaw, a destination capability of
h264 and g722 then ast_translator_best_choice() would pick h264 as the
best choice even though h264 is a video codec and Asterisk only supports
translation of audio codecs. When the audio starts flowing, there are
warnings about a codec mismatch when the channel tries to write a frame to
the peer.
* Made ast_translator_best_choice() only select audio codecs.
* Restore a check in channel.c:set_format() lost after v1.8 to prevent
trying to set a non-audio codec.
This is an intermediate patch for a series of patches aimed at improving
translation path choices for ASTERISK-24841.
This patch is a complete enough fix for ASTERISK-21777 as the v11 version
of ast_translator_best_choice() does the same thing. However, chan_sip.c
still somehow tries to call ast_codec_choose() which then calls
ast_best_codec() with a capability set that doesn't contain any audio
formats for the incoming call. The remaining warning message seems to be
a benign transient.
ASTERISK-21777 #close
Reported by: Nick Ruggles
ASTERISK-24380 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4605/
........
Merged revisions 434614 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434615 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 09:55 +0000 [c9791dba1f] Matt Jordan <mjordan@digium.com>
* res/ari: Fix model validation for ChannelHold event
When the ChannelHold event was added, the 'musicclass' parameter was
erroneously removed. This caused the ChannelHold events to be rejected as
they failed model validation. This patch updates the Swagger schema such that
it now properly reflects the event that is being created.
Hooray for tests that catch things like this.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-10 07:39 +0000 [c39faa4729] Y Ateya (License 6693)
* channels/chan_iax2: Improve POKE expiration time calculation for lossy networks
POKE is used to check for peer availability; however, in networks with packet
loss, the current calculations may result in POKE expiration times that are too
short. This patch alters the expiration/retry time logic to take into account
the last known qualify round trip time, as opposed to always using a static
value for each peer.
Review: https://reviewboard.asterisk.org/r/4536
ASTERISK-22352 #close
Reported by: Frederic Van Espen
ASTERISK-24894 #close
Reported by: Y Ateya
patches:
poke_noanswer_duration.diff submitted by Y Ateya (License 6693)
........
Merged revisions 434564 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 17:35 +0000 [75c2c85962] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_phoneprov_provider: Fix reference leak on unload
res_pjsip_phoneprov_provider was leaking references to phoneprov objects due to
a missing OBJ_NODATA in an ao2_callback in load_users(). Rather than adding the
OBJ_NODATA, I changed load_users to use a more straightforward ao2_iterator.
This plugged the leak but exposed an unload order issue between
res_pjsip_phoneprov_provider, res_phoneprov and res_pjsip.
res_pjsip_phoneprov_provider unloads first, then res_phoneprov, then res_pjsip.
Since res_pjsip_phoneprov_provider uses res_pjsip's sorcery instance, when it
unloads, it's objects are still in the sorcery instance. When res_pjsip
unloads, it destroys all its objects including res_pjsip_phoneprov_provider's.
The phoneprov destructor then attempts to unregister the extension from
res_phoneprov but because res_phoneprov is already cleaned up, its users
container is gone and we get a FRACK.
Simple solution, check for the NULL users container before attempting to remove
the entry. Duh.
Ran tests/res_phoneprov/res_phoneprov_provider. No leaks in
res_pjsip_phoneprov_provider and no FRACKs.
Reported-by: Corey Farrell
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4608/
ASTERISK-24935 #close
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434545 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 17:31 +0000 [73c286a393] gtjoseph <george.joseph@fairview5.com>
* loader/main: Don't set ast_fully_booted until deferred reloads are processed
Until we have a true module management facility it's sometimes necessary for one
module to force a reload on another before its own load is complete. If
Asterisk isn't fully booted yet, these reloads are deferred. The problem is
that asterisk reports fully booted before processing the deferred reloads which
means Asterisk really isn't quite ready when it says it is.
This patch moves the report of fully booted after the processing of the deferred
reloads is complete.
Since the pjsip stack has the most number of related modules, I ran the
channels/pjsip testsuite to make sure there aren't any issues. All tests
passed.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4604/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434544 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 17:03 +0000 [5737650a67] Kevin Harwell <kharwell@digium.com>
* res_pjsip: add CLI command to show global and system configuration
Added a new CLI command for res_pjsip that shows both global and system
configuration settings: pjsip show settings
ASTERISK-24918 #close
Reported by: Scott Griepentrog
Review: https://reviewboard.asterisk.org/r/4597/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434527 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 11:07 +0000 [1695a5b85f] Richard Mudgett <rmudgett@digium.com>
* chan_iax2.c: Fix ref leak in iax2_request().
* Increased warning message format capability string buffer size in
iax2_request().
Review: https://reviewboard.asterisk.org/r/4601/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434510 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 10:54 +0000 [92c1688edb] Richard Mudgett <rmudgett@digium.com>
* bridge_native_rtp.c: Defer allocation and check if it fails in native_rtp_bridge_compatible().
Review: https://reviewboard.asterisk.org/r/4601/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434508 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 10:42 +0000 [2679d0100a] yaron nahum (License 6676)
* res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests
This patch adds a new session supplement that handles in-dialog OPTIONS
requests. Said OPTIONS requests are sent a 200 OK, as an endpoint lookup
for the OPTIONS request would already have been done by the time the
session supplement receives the inbound request.
ASTERISK-24862 #close
Reported by: yaron nahum
patches:
res_pjsip_dlg_options.c submitted by yaron nahum (License 6676)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434506 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-09 07:56 +0000 [6ba6e3dffd] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix autological comparisons
This fixes autological comparison warnings in the following:
* chan_skinny: letohl may return a signed or unsigned value, depending on the
macro chosen
* func_curl: Provide a specific cast to CURLoption to prevent mismatch
* cel: Fix enum comparisons where the enum can never be negative
* enum: Fix comparison of return result of dn_expand, which returns a signed
int value
* event: Fix enum comparisons where the enum can never be negative
* indications: tone_data.freq1 and freq2 are unsigned, and hence can never be
negative
* presencestate: Use the actual enum value for INVALID state
* security_events: Fix enum comparisons where the enum can never be negative
* udptl: Don't bother to check if the return value from encode_length is less
than 0, as it returns an unsigned int
* translate: Since the parameters are unsigned int, don't bother checking
to see if they are negative. The cast to unsigned int would already blow
past the matrix bounds.
* res_pjsip_exten_state: Use a temporary value to cache the return of
ast_hint_presence_state
* res_stasis_playback: Fix enum comparisons where the enum can never be
negative
* res_stasis_recording: Add an enum value for the case where the recording
operation is in error; fix enum comparisons
* resource_bridges: Use enum value as opposed to -1
* resource_channels: Use enum value as opposed to -1
Review: https://reviewboard.asterisk.org/r/4533
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4533.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434470 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 21:05 +0000 [e05c8ae68e] Stefan Engström (License 6691)
* apps/app_queue: Prevent possible crash when evaluating queue penalty rules
Although it only occurred once, a crash occurred when a queue attempted to
evaluate a queue penalty rule that appeared to have already been destroyed.
In many locations in app_queue, a test is done to see if qe->pr is NULL;
however, when we dispose of a queue's penalty rules, we don't set the pointer
to NULL after free'ing it. This patch does that to prevent any dangling
pointers from lingering on the queue object.
Review: https://reviewboard.asterisk.org/r/4522
ASTERISK-23319 #close
Reported by: Vadim
patches:
rb4552.patch submitted by Stefan Engström (License 6691)
........
Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 13:15 +0000 [f21b45db49] Jonathan Rose <jrose@digium.com>
* res_pjsip_t38: Fix FAX failures when using PJSIP with authentication
Without this patch, if a PJSIP endpoint with udptl enabled and authentication
set attempted to use sendFax, the FAX session would fail during setup. This
was because the invite issued in response to being auth challenged would cause
the PJSIP channel performing the FAX to receive a second T38 framehook and
this would cause frames to be consumed in an inappropriate manner.
ASTERISK-24933 #close
Reported by: Jonathan Rose
Review: https://reviewboard.asterisk.org/r/4577/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 13:14 +0000 [4441bb6a25] Richard Mudgett <rmudgett@digium.com>
* Bridging: Eliminate the unnecessary make channel compatible with bridge operation.
When a channel enters the bridging system it is first made compatible with
the bridge and then the bridge technology makes the channel compatible
with the technology. For all but the DAHDI native and softmix bridge
technologies the make channel compatible with the bridge step is an
effective noop because the other technologies allow all audio formats.
For the DAHDI native bridge technology it doesn't matter because it is not
an initial bridge technology and chan_dahdi allows only one native format
per channel. For the softmix bridge technology, it is a noop at best and
harmful at worst because the wrong translation path could be setup if the
channel's native formats allow more than one audio format.
This is an intermediate patch for a series of patches aimed at improving
translation path choices.
* Removed code dealing with the unnecessary step of making the channel
compatible with the bridge.
ASTERISK-24841
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4600/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 11:40 +0000 [f767440906] Maciej Szmigiero <mail@maciej.szmigiero.name> (license 6085)
* Security/tcptls: MitM Attack potential from certificate with NULL byte in CN.
When registering to a SIP server with TLS, Asterisk will accept CA signed
certificates with a common name that was signed for a domain other than the
one requested if it contains a null character in the common name portion of
the cert. This patch fixes that by checking that the common name length
matches the the length of the content we actually read from the common name
segment. Some certificate authorities automatically sign CA requests when
the requesting CN isn't already taken, so an attacker could potentially
register a CN with something like www.google.com\x00www.secretlyevil.net
and have their certificate signed and Asterisk would accept that certificate
as though it had been for www.google.com - this is a security fix and is
noted in AST-2015-003.
ASTERISK-24847 #close
Reported by: Maciej Szmigiero
Patches:
asterisk-null-in-cn.patch submitted by mhej (license 6085)
........
Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434384 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 11:23 +0000 [1712d16825] Richard Mudgett <rmudgett@digium.com>
* format_cache.c: Add missing slin12 format to ast_format_cache_is_slinear().
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434357 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 07:33 +0000 [ae39dd1f46] Matt Jordan <mjordan@digium.com>
* chan_iax2: Fix compilation issue due to funky merge
Don't mix declarations and code
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 07:00 +0000 [05397ad01e] Jaco Kroon (License 5671)
* chan_iax2: Fix crash caused by unprotected access to iaxs[peer->callno]
This patch fixes an access to the peer callnumber that is unprotected by a
corresponding mutex. The peer->callno value can be changed by multiple threads,
and all data inside the iaxs array must be procted by a corresponding lock
of iaxsl.
The patch moves the unprotected access to a location where the mutex is
safely obtained.
Review: https://reviewboard.asterisk.org/r/4599/
ASTERISK-21211 #close
Reported by: Jaco Kroon
patches:
asterisk-11.2.1-iax2_poke-segfault.diff submitted by Jaco Kroon (License 5671)
........
Merged revisions 434291 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434292 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 06:53 +0000 [be13c72142] Valentin Vidić (License 6697)
* chan_sip: Handle IPv4 mapped IPv6 clients when NAT is enabled
When udpbindaddr is set to the IPv6 bind all address of '::', Asterisk will
attempt to handle both IPv4 and IPv6 addresses, although the information will
be stored in a struct with an AF_INET6 address type. However, the current
NAT handling code won't handle the IPv4 mapped IPv6 addresses correctly.
This patch adds an additional check for the mapped address case, allowing
the NAT code to handle clients even when the address is IPv6.
Review: https://reviewboard.asterisk.org/r/4563/
ASTERISK-18032 #close
Reported by: Christoph Timm
patches:
nat_with_ipv6.diff submitted by Valentin Vidić (License 6697)
........
Merged revisions 434288 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434289 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 06:44 +0000 [f324870dab] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix pointer-bool-converesion warnings
This patch fixes several warnings pointed out by the clang compiler.
* chan_pjsip: Removed check for data->text, as it will always be non-NULL.
* app_minivm: Fixed evaluation of etemplate->locale, which will always
evaluate to 'true'. This patch changes the evaluation to use
ast_strlen_zero.
* app_queue:
- Fixed evaluation of qe->parent->monfmt, which always evaluates to
true. Instead, we just check to see if the dereferenced pointer
evaluates to true.
- Fixed evaluation of mem->state_interface, wrapping it with a call to
ast_strlen_zero.
* res_smdi: Wrapped search_msg->mesg_desk_term with calls to ast_strlen_zero.
Review: https://reviewboard.asterisk.org/r/4541
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4541.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434285 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-07 14:38 +0000 [a6aed7f6f6] Scott Griepentrog <sgriepentrog@digium.com>
* Revert accidental change in r434261
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434262 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-07 14:35 +0000 [0584e29300] Scott Griepentrog <sgriepentrog@digium.com>
* pjsip: resolve compatibility problem with ast_sip_session
A change in r430179 inserted a variable near the top of a
structure caused a problem when running DPMA in a version
of Asterisk compiled across the change. This patch moves
the new variable to the end of the structure, eliminating
the problem.
Review: https://reviewboard.asterisk.org/r/4574/
........
Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-07 11:40 +0000 [d754f70239] Kevin Harwell <kharwell@digium.com>
* bridge.c: Hangup attended transfer target after it has been swapped out
After completing an attended transfer the transfer target channel (the one that
gets swapped out) was not being hung up after leaving the bridge. This resulted
in a channel possibly being left around. Added an explicit softhangup for the
channel in question after the transfer is successfully completed in order to
make sure the channel is hung up.
ASTERISK-24782 #close
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/4575/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434240 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-07 10:33 +0000 [c516981dc7] Mark Michelson <mmichelson@digium.com>
* Do not queue message requests that we do not respond to.
If we receive a MESSAGE request that we cannot send a response
to, we should not send the incoming MESSAGE to the dialplan.
This commit should help the bouncing message_retrans test to
pass consistently.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-07 10:21 +0000 [ab803ec342] Matt Jordan <mjordan@digium.com>
* ARI: Add the ability to intercept hold and raise an event
For some applications - such as SLA - a phone pressing hold should not behave
in the fashion that the Asterisk core would like it to. Instead, the hold
action has some application specific behaviour associated with it - such as
disconnecting the channel that initiated the hold; only playing MoH to channels
in the bridge if the channels are of a particular type, etc.
One way of accomplishing this is to use a framehook to intercept the
hold/unhold frames, raise an event, and eat the frame. Tasty. This patch
accomplishes that using a new dialplan function, HOLD_INTERCEPT.
In addition, some general cleanup of raising hold/unhold Stasis messages was
done, including removing some RAII_VAR usage.
Review: https://reviewboard.asterisk.org/r/4549/
ASTERISK-24922 #close
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 21:09 +0000 [488f093e97] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix sometimes-initialized warning in func_math
This patch fixes a bug in a unit test in func_math where a variable could be
passed to ast_free that wasn't allocated. This patch corrects the issue and
ensures that we only attempt to free a variable if we previously allocated
it.
Review: https://reviewboard.asterisk.org/r/4552
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4552.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434190 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 21:03 +0000 [c027133f6d] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix non-literal-null-conversion warnings
Clang will flag errors when a char pointer is set to '\0', as opposed to a
value that the char pointer points to. This patch fixes this warning
in a variety of locations.
Review: https://reviewboard.asterisk.org/r/4551
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4551.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434187 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 14:23 +0000 [2270c40d33] Kevin Harwell <kharwell@digium.com>
* res_pjsip: config option 'timers' can't be set to 'no'
When setting the configuration option 'timers' equal to 'no' the bit flag was
not properly negated. This patch clears all associated flags and only sets the
specified one. pjsip will handle any necessary flag combinations. Also went
ahead and did similar for the '100rel' option.
ASTERISK-24910 #close
Reported by: Ray Crumrine
Review: https://reviewboard.asterisk.org/r/4582/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434131 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 14:02 +0000 [95de71f247] gtjoseph <george.joseph@fairview5.com>
* build: Fixes for gcc 5 compilation
These are fixes for compilation under gcc 5.0...
chan_sip.c: In parse_request needed to make 'lim' unsigned.
inline_api.h: Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99
inline semantics (same as clang).
ccss.c: In ast_cc_set_parm, needed to fix weird comparison.
dsp.c: Needed to work around a possible compiler bug. It was throwing
an array-bounds error but neither
sgriepentrog, rmudgett nor I could figure out why.
manager.c: In action_atxfer, needed to correct an array allocation.
This patch will go to 11, 13, trunk.
Review: https://reviewboard.asterisk.org/r/4581/
Reported-by: Jeffrey Ollie
Tested-by: George Joseph
ASTERISK-24932 #close
........
Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434114 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 13:18 +0000 [d54ccda3b1] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Remove large chunks of unused code from extconf
This patch fixes a warning caught by clang, in which it detected that large
chunks of extconf were unused. Frankly, I wish we could pretend that all of
extconf was unused, but alas, that is not yet the case.
A few extraneous functions in the parking tests were removed as well, for
the same reason.
Review: https://reviewboard.asterisk.org/r/4553
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4553.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434093 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 13:03 +0000 [0ecd472e4f] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix sometimes-uninitialized warning in pbx_config
This patch fixes a warning caught by clang, in which a char pointer could be
assigned to before it was initialized. The patch re-organizes the code to
ensure that the pointer is always initialized, even on off nominal paths.
Review: https://reviewboard.asterisk.org/r/4529
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4529.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434090 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434091 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 12:52 +0000 [4e7be5b2dc] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix format specified in framehook
This patch fixes an invalid format specifier used in the formatting of an
ERROR message in the framehook code. The format specifier specifies a
type of 'unsigned short', but the argument passed to it is of type 'int'.
The patch changes the format specifier to 'i'.
Review: https://reviewboard.asterisk.org/r/4540
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4535.patch submitted by dkdegroot (License 6600)
........
Merged revisions 434087 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 11:02 +0000 [2443b40341] Mark Michelson <mmichelson@digium.com>
* Ensure that a non-zero sample rate is returned for all formats.
Versions of Asterisk prior to 12 defaulted to 8000 as a sample rate
if one was not provided by a format. In Asterisk 13, this was removed.
The result was that some calculations which involve dividing by the
sample rate resulted in dividing by 0. The fix being put in place
here is to have the same default fallback that was present in previous
versions of Asterisk.
Asterisk-24914 #close
Reported by Marcello Ceschia
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434046 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 10:16 +0000 [b1102cd642] Corey Farrell <git@cfware.com>
* res_pjsip_phoneprov_provider: Revert 433996 / 433997.
res_pjsip_phoneprov_provider is using ao2_callback with OBJ_MULTIPLE, then
ignoring the return. OBJ_NODATA flag was to prevent a reference leak, but
this caused the module to FRACK on unload. Revert change until this can
be investigated further.
ASTERISK-24935
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4578/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434025 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-06 09:50 +0000 [0f25076f67] Mark Michelson (license #5049)
* ParkedCall: Don't allow dialplan fallthrough after retrieving parked call.
This is a change to align behavior with that of Asterisk 11 and previous versions.
In those versions, if a parked call were retrieved, and the call ended, the parked
call retriever would be hung up after the ParkedCall application ran. Prior to this
patch, in Asterisk 13, the same situation would result in the parked call retriever
falling through to additional priorities in the extension where the ParkedCall
application was called. With this patch, the behavior between Asterisk 11 and 13
aligns.
ASTERISK-24899 #close
Reported by Malcolm Davenport
Patches:
ASTERISK-24899.patch uploaded by Mark Michelson(license #5049)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434022 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-05 07:53 +0000 [709fa14b44] Corey Farrell <git@cfware.com>
* res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator.
res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then
ignoring the return. Added OBJ_NODATA flag to prevent a reference leak.
ASTERISK-24935 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4578/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433996 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-03 16:53 +0000 [1ee8424f27] Mark Michelson <mmichelson@digium.com>
* res_pjsip_messaging: Serialize outbound SIP MESSAGEs
Outbound SIP MESSAGEs had the potential to be sent out
of order from how they were specified in a set of
dialplan steps.
This change creates a serializer for sending outbound
MESSAGE requests on. This ensures that the MESSAGEs are
sent by Asterisk in the same order that they were sent
from the dialplan.
ASTERISK-24937 #close
Reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/4579
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433968 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-02 09:56 +0000 [169e57d2e0] Scott Griepentrog <sgriepentrog@digium.com>
* pjsip: resolve compatibility problem with ast_sip_session
A change in r430179 inserted a variable near the top of a
structure caused a problem when running DPMA in a version
of Asterisk compiled across the change. This patch moves
the new variable to the end of the structure, eliminating
the problem.
Review: https://reviewboard.asterisk.org/r/4574/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433944 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-02 05:31 +0000 [1eb0c5f4e8] Corey Farrell <git@cfware.com>
* Tell menuselect that MALLOC_DEBUG conflicts with DEBUG_CHAOS.
DEBUG_CHAOS was marked as conflicting with MALLOC_DEBUG, but
for this to work correctly MALLOC_DEBUG must also be marked
as conflicting with DEBUG_CHAOS.
Review: https://reviewboard.asterisk.org/r/4557/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433923 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-01 11:25 +0000 [e301185983] Ashley Sanders <asanders@digium.com>
* stasis: set a channel variable on websocket disconnect error
Resolve compile errors caused by r433863 by fixing the
documentation xml to comply with the schema.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-31 22:26 +0000 [a1f12d9231] Ashley Sanders <asanders@digium.com>
* stasis: set a channel variable on websocket disconnect error
Resolve compile errors caused by r433839 by included the missing
header file, pbx.h.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-31 17:00 +0000 [7293ecd90b] Ashley Sanders <asanders@digium.com>
* stasis: set a channel variable on websocket disconnect error
When an error occurs while writing to a web socket, the web socket is
disconnected and the event is logged. A side-effect of this, however, is that
any application on the other side waiting for a response from Stasis is left
hanging indefinitely (as there is no mechanism presently available for
notifying interested parties about web socket error states in Stasis).
To remedy this scenario, this patch introduces a new channel variable:
STASISSTATUS.
The possible values for STASISSTATUS are:
SUCCESS - The channel has exited Stasis without any failures
FAILED - Something caused Stasis to croak. Some (not all) possible
reasons for this:
- The app registry is not instantiated;
- The app requested is not registered;
- The app requested is not active;
- Stasis couldn't send a start message
ASTERISK-24802
Reported By: Kevin Harwell
Review: https://reviewboard.asterisk.org/r/4519/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433839 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-31 11:55 +0000 [94949e7f2f] Richard Mudgett <rmudgett@digium.com>
* chan_sip: Fix expression in unit test /channels/chan_sip/test_sip_rtpqos.
Fix misplaced parentheses in original fabs() expression.
........
Merged revisions 433816 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-31 06:47 +0000 [9967739669] Corey Farrell <git@cfware.com>
* Re-add _ast_mem_backtrace_buffer variable for ABI compatibility.
Modules built prior to commit of r4502 expect to link at runtime
to the variable _ast_mem_backtrace_buffer. This change re-adds
the variable to the C file only.
Review: https://reviewboard.asterisk.org/r/4558/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433795 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-30 06:42 +0000 [2d39bc5528] Corey Farrell <git@cfware.com>
* Fix an ABI compatibility issue with ast_log_safe for modules.
Binary modules are sometimes built against the latest release of
Asterisk in each branch, and need to be compatible with all
releases of that branch. This change ensures that utils.h only
uses ast_log_safe from the core. For modules and utilities ast_log
is used instead.
Review: https://reviewboard.asterisk.org/r/4548/
........
Merged revisions 433772 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-29 21:44 +0000 [5f8faf16af] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix -Wabsolute-value warnings
This patch fixes several warnings caught by clang - in this case, usage of the
abs function on non-integer values. This patch uses labs and fabs, as
appropriate, in the various affected files.
Review: https://reviewboard.asterisk.org/r/4525
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4525.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433749 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433750 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-29 21:39 +0000 [09b681e344] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix invalid enum conversion
This patch fixes some invalid enum conversion warnings caught by clang. In
particular:
* chan_sip: Several functions mixed usage of the st_refresher_param
enum and st_refresher enum. This patch corrects the functions to use the
right enum.
* chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state.
* strings: Fixed incorrect usage of AO2 flags with strings container.
* res_stasis: Change a return enumeration to stasis_app_user_event_res.
Review: https://reviewboard.asterisk.org/r/4535
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4535.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-29 21:29 +0000 [7f33abb827] Matt Jordan <mjordan@digium.com>
* main/stdtime/localtime: Fix warning introduced in r433720
The patch in r433720 caused a warning to be kicked back by gcc. It occurred
due to this check in unistd.h:
if (__nbytes > __bos0 (__buf))
return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf));
That is, if __nbytes is greater than the result of GCC's built-in object size
for the struct, we'll kick back a warning.
As it turns out, this is because there is an error in the code in the patch.
We are passing the address of the pointer to the struct, not iev, which is a
pointer to the struct. Hence, the number of bytes is probably going to be lot
larger than the number of bytes that make up a pointer! This patch changes
the code just read from the pointer to the struct - which fixes the warning.
ASTERISK-24917
........
Merged revisions 433743 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433744 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-29 20:56 +0000 [47eeb67e14] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Ignore -Wunused-command-line-argument
Asterisk's build system has a tendency to pass include directives for libraries
to everything compiled within a particular group of source files. This means
we pass the header for libxml2 to things that don't necessarily need it. As a
result, we ignore this particular warning.
Review: https://reviewboard.asterisk.org/r/4545/
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4545.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433720 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-29 20:52 +0000 [dbb4d6f9e7] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end
This patch fixes a warning caught by clang, wherein a variable sized struct is
not located at the end of a struct. While the code in question actually
expected this, this is a good warning to watch for. Hence, this patch refactors
the code in question to not have two variable length elements in the same
struct.
Review: https://reviewboard.asterisk.org/r/4530/
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4530.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433718 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-28 07:56 +0000 [e126ab9eeb] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix a variety of "unused" warnings
This patch fixes the -Wunused-value -Wunused-variable -Wunused-const-variable
errors caught by clang. Specifically:
* apps/app_queue.c: removed unused qpm_cmd_usage[], qum_cmd_usage[],
qsmp_cmd_usage[]
* cel/cel_sqlite3_custom.c: removed unused name[] = "cel_sqlite3_custom"
* channels/chan_pjsip.c: removed unused desc[] = "PJSIP Channel"
* codecs/gsm/src/gsm_create.c: removed unused ident[] = "$Header$"
* funcs/func_env.c:729: Fixed ast_str_append_substr.
* main/editline/np/strlcat.c: removed unused rcsid variable
* main/editline/np/strlcpy.c: removed unused rcsid variable
* main/security_events.c: removed unused TIMESTAMP_STR_LEN
* utils/conf2ael.c: removed unused cfextension_states
* utils/extconf.c: removed unused cfextension_states
Review: https://reviewboard.asterisk.org/r/4526
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4526.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433693 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-28 07:48 +0000 [2f6534527d] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix -Wself-assign
Assigning a variable to itself isn't super useful. However, the WAV format
modules make use of this in order to perform byte endian checks. This patch
works around the warning by only performing the self assignment if we are
going to do more than just assign it to ourselves. Which is odd, but true.
Review: https://reviewboard.asterisk.org/r/4544/
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4544.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433690 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433691 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-28 07:40 +0000 [eb70993a50] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix -Wparantheses-equality warnings
Clang will treat ((a == b)) as a warning, as it reasonably expects that the
developer may have intended to write (a == b) or ((a = b)). This patch cleans
up all instances where equality, not assignment, was intended between two
parantheses.
Review: https://reviewboard.asterisk.org/r/4531/
ASTERISK-24917
Repoted by: dkdegroot
patches:
rb4531.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433687 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-28 07:31 +0000 [c0ff16036a] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix -Wbitfield-constant-conversion warning
In chan_iax2, we attempt to assign a -1 to a bitfield. This gets caught by
clang, as it will truncate the -1 to a 1 implicitly.
Instead, we just assign the value a '1'.
Review: https://reviewboard.asterisk.org/r/4537/
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4537.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433683 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433684 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-28 07:27 +0000 [844bc76bef] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix -Winitializer-overrides
This patch fixes clange compiler warnings for initializer overrides.
Specifically:
res_pjsip/config_transport maps PJSIP_TLSV1_METHOD to the same enumeration
value as PJSIP_SSL_DEFAULT_METHOD. When initializing an array containing
those enum values, we therefore initialize the value twice to two different
values, "tlsv1" and "default". This patch changes it to just initialize
the index in the array to "tlsv1".
Review: https://reviewboard.asterisk.org/r/4539/
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4539.patch submitted by dkdegroot (License 6600)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-28 07:19 +0000 [5e204042d9] Diederik de Groot <dkgroot@talon.nl> (License 6600)
* clang compiler warnings: Fix -Wunused-function; make inline function static
This patch fixes clang compilers warnings for unused functions. Specifically:
* channels/chan_iax2: removed user_ref function
* main/dsp.c: removed goertzel_update function
* main/config.c: made variable_list_switch static
Review: https://reviewboard.asterisk.org/r/4527
ASTERISK-24917
Reported by: dkdegroot
patches:
rb4527.patch submitted by dkdegroot (License 6600)
........
Merged revisions 433678 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433680 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 17:34 +0000 [cfbf5fbe91] Jonathan Rose <jrose@digium.com>
* SAC: Add a few basic queues
Review: https://reviewboard.asterisk.org/r/4503/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 17:25 +0000 [1a50d8d4c2] Jonathan Rose <jrose@digium.com>
* SAC: Add conferencing extensions and configuration
Review: https://reviewboard.asterisk.org/r/4504/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 16:15 +0000 [c6c08d755d] Rusty Newton <rnewton@digium.com>
* configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 2
Example configuration files for a "basic PBX" deployment for the fictitious
Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4488/
and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company
Patch 4488 includes all functionality needed for SAC's outside connectivity
and some externally accessed features, as well as outbound dialing.
Reported by: Malcolm Davenport
Tested by: Rusty Newton
Review: https://reviewboard.asterisk.org/r/4488/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433624 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 16:04 +0000 [13557675d4] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_registrar_expire.c: Made use ao2 container template routines and eliminated some RAII_VAR() usage.
* Converted the contact_autoexpire container to use the ao2 template hash
and cmp functions. Also made use the OBJ_SEARCH_xxx names instead of the
deprecated names.
* Eliminates several unnecessary uses of RAII_VAR().
Review: https://reviewboard.asterisk.org/r/4524/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 15:30 +0000 [85feac857c] Mark Michelson <mmichelson@digium.com>
* Add stateful PJSIP response API call, and use it for out-of-dialog responses.
Asterisk had an issue where retransmissions of MESSAGE requests resulted in
Asterisk processing the retransmission as if it were a new MESSAGE request.
This patch fixes the issue by creating a transaction in PJSIP on the incoming
request. This way, if a retransmission arrives, the PJSIP transaction layer
will resend the response and Asterisk will not ever see the retransmission.
ASTERISK-24920 #close
Reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/4532/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 12:50 +0000 [dc2cf21144] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown.
Contact expiration object refs were leaked when the module was unloaded.
* Made empty the scheduler of entries before destroying it to release the
object ref held by the scheduler entry.
Review: https://reviewboard.asterisk.org/r/4523/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 09:41 +0000 [6e6f5b3a1f] Justin T. Gibbs <gibbs@scsiguy.org> (License 6692)
* res/res_timing_kqueue: Update the module to conform to current timer API
This patch updates the kqueue timing module to conform to current timer API.
This fixes issues with using the kqueue timing source on Asterisk 13 on
FreeBSD 10. These issues include:
- Remove support for kevent64(). The values used to support Asterisk timers
fit within 32bits and so can be handled on all platforms via kevent().
- Provide debug logging for, but do not track, unacked events. This matches
the behavior of all other timer implementations.
- Implement continuous mode by triggering and leaving active, a user event.
This ensures that the file descriptor for the timer returns immediately from
poll(), without placing the load of a high speed timer on the kernel.
- In kqueue_timer_get_max_rate(), don't overstate the capability of the timer.
On some platforms, UINT_MAX is greater than INTPTR_MAX, the largest integer
type kqueue supports for timers.
- In kqueue_timer_get_event(), assume the caller woke up from poll() and just
return the mode the timer is currently in. This matches all other timer
implementations.
- Adjust the test code now that unacked events are not tracked.
Review: https://reviewboard.asterisk.org/r/4465/
ASTERISK-24857 #close
Reported by: scsiguy
Tested by: Ed Hynan
patches:
rb4465.patch submitted by scsiguy (License 6692)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 07:26 +0000 [b0df413fb2] Corey Farrell <git@cfware.com>
* Fix link error for utils/aelparse.
Use the standard ast_log instead of ast_log_safe for STANDALONE programs.
Review: https://reviewboard.asterisk.org/r/4538/
........
Merged revisions 433549 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 02:09 +0000 [d01706ce1e] Corey Farrell <git@cfware.com>
* Improved and portable ast_log recursion avoidance
This introduces a new logger routine ast_log_safe. This routine should be
used for all error messages in code that can be run as a result of ast_log.
ast_log_safe does nothing if run recursively. All error logging in
astobj2.c, strings.c and utils.h have been switched to ast_log_safe.
This required adding support for raw threadstorage. This provides direct
access to the void* pointer in threadstorage. In ast_log_safe, NULL is used
to signify that this thread is not already running ast_log_safe, (void*)1 when
it is already running. This was done since it's critical that ast_log_safe
do nothing that could log during recursion checking.
ASTERISK-24155 #close
Reported by: Timo Teräs
Review: https://reviewboard.asterisk.org/r/4502/
........
Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433523 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-26 18:07 +0000 [4b225e2104] Corey Farrell <git@cfware.com>
* Fix compile errors caused by r4500 / r4501.
* Add ast_register_cleanup to utils/clicompat.c to deal with
any utils that copy sources from main.
* Asterisk 13+: remove unused variables from core_local.c.
Review: https://reviewboard.asterisk.org/r/4534/
........
Merged revisions 433499 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433500 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-26 17:19 +0000 [6adf26f14d] Corey Farrell <git@cfware.com>
* Replace most uses of ast_register_atexit with ast_register_cleanup.
Since 'core stop now' and 'core restart now' do not stop modules,
it is unsafe for most of the core to run cleanups. Originally all
cleanups used ast_register_atexit, and were only changed when it
was shown to be unsafe. ast_register_atexit is now used only when
absolutely required to prevent corruption and close child processes.
Exceptions that need to use ast_register_atexit:
* CDR: Flush records.
* res_musiconhold: Kill external applications.
* AstDB: Close the DB.
* canary_exit: Kill canary process.
ASTERISK-24142 #close
Reported by: David Brillert
ASTERISK-24683 #close
Reported by: Peter Katzmann
ASTERISK-24805 #close
Reported by: Badalian Vyacheslav
ASTERISK-24881 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4500/
Review: https://reviewboard.asterisk.org/r/4501/
........
Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-26 12:46 +0000 [d0df545a44] Corey Farrell <git@cfware.com>
* res_pjsip: Enable unload of all modules at shutdown.
* Move most of res_pjsip:module_unload to unload_pjsip to resolve crashes
caused by running PJSIP functions from non-PJSIP threads.
* Remove call to pjsip_endpt_destroy(ast_pjsip_endpoint), it was causing
crashes in some cases. In theory pj_shutdown() should take care of this.
* Mark res_pjsip_keepalive and res_pjsip_session as allowed to unload at
shutdown.
* Resolve leaked config global in res_pjsip_notify.
* Unregister pubsub pjsip service module.
* Implement cleanup for res_pjsip_session.
ASTERISK-24731 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4498/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-26 12:04 +0000 [fd434a210f] Kevin Harwell <kharwell@digium.com>
* app_confbridge: file playback blocks dtmf
Attempting to execute DTMF in a confbridge while file playback (prompt,
announcement, etc) is occurring is not allowed. You have to wait until
the sound file has completed before entering DTMF. This patch fixes it
so that app_confbridge now monitors for dtmf key presses during menu
driven file playback. If a key is pressed playback stops and it executes
the matched menu option.
ASTERISK-24864 #close
Reported by: Steve Pitts
Review: https://reviewboard.asterisk.org/r/4510/
........
Merged revisions 433445 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-25 13:37 +0000 [dea885a607] Richard Mudgett <rmudgett@digium.com>
* A couple minor cleanup tweaks.
* In res/res_sorcery_realtime.c: Broke long line.
* In main/bucket.c: Eliminated unnecessary NULL check as
ast_sorcery_unref() is NULL tolerant and set the global object to NULL
after unref in the system shutdown bucket_cleanup().
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-25 10:30 +0000 [05de9082a5] Simon Arlott (License 5756)
* res_xmpp: Buddies are always auto-registered when processing the roster
Due to a quirk in the configuration handling of res_xmpp, the 'autoregister'
setting was never actually processed. This was due to not properly copying
over the global settings to the client settings when applying the
configuration to the run-time object.
Review: https://reviewboard.asterisk.org/r/4496/
ASTERISK-14233
ASTERISK-24780 #close
Reported by: Simon Arlott
patches:
asterisk-13.1.0-24780 uploaded by Simon Arlott (License 5756)
........
Merged revisions 433395 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433396 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-24 14:26 +0000 [b1e9552b08] Richard Mudgett <rmudgett@digium.com>
* chan_pjsip: Add "rpid_immediate" option to prevent unnecessary "180 Ringing" messages.
Incoming PJSIP call legs that have not been answered yet send unnecessary
"180 Ringing" or "183 Progress" messages every time a connected line
update happens. If the outgoing channel is also PJSIP then the incoming
channel will always send a "180 Ringing" or "183 Progress" message when
the outgoing channel sends the INVITE.
Consequences of these unnecessary messages:
* The caller can start hearing ringback before the far end even gets the
call.
* Many phones tend to grab the first connected line information and refuse
to update the display if it changes. The first information is not likely
to be correct if the call goes to an endpoint not under the control of the
first Asterisk box.
When connected line first went into Asterisk in v1.8, chan_sip received an
undocumented option "rpid_immediate" that defaults to disabled. When
enabled, the option immediately passes connected line update information
to the caller in "180 Ringing" or "183 Progress" messages as described
above.
* Added "rpid_immediate" option to prevent unnecessary "180 Ringing" or
"183 Progress" messages. The default is "no" to disable sending the
unnecessary messages.
ASTERISK-24781 #close
Reported by: Richard Mudgett
Review: https://reviewboard.asterisk.org/r/4473/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433338 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-22 18:58 +0000 [a3fe43fbdc] snuffy <snuffy22@gmail.com> (License 5024)
* Fix compilations errors on 64-bit OpenBSD systems
In versiong 5.5, OpenBSD went to 64-bit time values. This requires a cast to
(long) when printing members of certain time structs.
Review: https://reviewboard.asterisk.org/r/4507
ASTERISK-24879 #close
Reported by: snuffy
Tested by: snuffy
patches:
openbsd-time64.diff uploaded by snuffy (License 5024)
........
Merged revisions 433268 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-22 18:04 +0000 [08a88aab15] snuffy <snuffy22@gmail.com> (License 5024)
* Fix compilation issues for OpenBSD
This patch addresses compilation issues for OpenBSD. Specifically, it
addresses:
* It allows including <sys/vmmeter.h> in asterisk.c
* Provides a needed (size_t) cast in xmldoc.c
In 13+, it also addresses a conditional inclusion in loader.c.
Review: https://reviewboard.asterisk.org/r/4506
ASTERISK-24880 #close
Reported by: snuffy
Tested by: snuffy
patches:
misc-openbsd.diff uploaded by snuffy (License 5024)
........
Merged revisions 433245 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433247 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-20 14:52 +0000 [6ca98524bf] Richard Mudgett <rmudgett@digium.com>
* Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks.
Valgrind found some memory leaks associated with
ast_pjsip_rdata_get_endpoint(). The leaks would manifest when sending
responses to OPTIONS requests, processing MESSAGE requests, and
res_pjsip supplements implementing the incoming_request callback.
* Fix ast_pjsip_rdata_get_endpoint() endpoint ref leaks in
res/res_pjsip.c:supplement_on_rx_request(),
res/res_pjsip/pjsip_options.c:send_options_response(),
res/res_pjsip_messaging.c:rx_data_to_ast_msg(), and
res/res_pjsip_messaging.c:send_response().
* Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in
res/res_pjsip_nat.c:nat_on_rx_message().
* Fixed inconsistent but benign return value in
res/res_pjsip/pjsip_options.c:options_on_rx_request().
Review: https://reviewboard.asterisk.org/r/4511/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433222 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-20 13:23 +0000 [1c09028171] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively.
Valgrind found a memory leak and invalid access.
* Fix invalid access by sscanf() being fed a non-nul terminated string of
digits in res/res_pjsip_sdp_rtp.c:get_codecs().
* Fix memory leak in main/sorcery.c:sorcery_object_field_destructor().
* Fix potential NULL pointer dereference in
main/xmldoc.c:xmldoc_get_syntax_config_option().
Review: https://reviewboard.asterisk.org/r/4513/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433199 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-19 14:19 +0000 [73dcea59bd] Matt Jordan <mjordan@digium.com>
* funcs/func_env: Fix regression caused in FILE read operation
When r432935 was merged, it did correctly fix a situation where a FILE read
operation on the middle of a file buffer would not read the requested length
in the parameters passed to the FILE function. Unfortunately, it would also
allow the FILE function to append more bytes than what was available in the
buffer if the length exceeded the end of the buffer length.
This patch takes the minimum of the remaining bytes in the buffer along with
the calculated length to append provided by the original patch, and uses
that as the length to append in the return result. This patch also updates
the unit tests with the scenarios that were originally pointed out in
ASTERISK-21765 that the original implementation treated incorrectly.
ASTERISK-21765
........
Merged revisions 433173 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433174 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-19 05:20 +0000 [4c84dca2d8] Corey Farrell <git@cfware.com>
* logger: Apply default console logging when configuration cannot be loaded.
When logger.conf is missing or invalid enable console logging and display
an error message.
ASTERISK-24817 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4497/
........
Merged revisions 433122 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433126 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-19 04:53 +0000 [958bc84caf] Corey Farrell <git@cfware.com>
* chan_sip: Simplify dialog/peer references, improve REF_DEBUG output.
* Replace functions for ref/undef of dialogs and peers with macro's
to call ao2_t_bump/ao2_t_cleanup.
* Enable passthough of REF_DEBUG caller information to sip_alloc and
find_call.
ASTERISK-24882 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4189/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433115 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-19 04:44 +0000 [7fddae99dd] Corey Farrell <git@cfware.com>
* chan_sip: Fix dialog reference leaked to scheduler for reinvite_timeout.
Release the scheduler reference to the dialog for reinvite timeout during
dialog_unlink_all.
ASTERISK-24876 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4491/
........
Merged revisions 433112 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433113 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 21:34 +0000 [dba0f1ad67] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session: Fix off-nominal extra unref of session.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 17:15 +0000 [2c7b945149] Scott Griepentrog <sgriepentrog@digium.com>
* Various: bugfixes found via chaos
Using DEBUG_CHAOS several instances of a null
pointer crash, and one uninitialized variable
were uncovered and fixed. Also added details
on why Asterisk failed to initialize.
Review: https://reviewboard.asterisk.org/r/4468/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 16:57 +0000 [1fb1c81923] Scott Griepentrog <sgriepentrog@digium.com>
* core: Introduce chaos into memory allocations
Locate potential crashes by exercising seldom
used code paths. This patch introduces a new
define DEBUG_CHAOS, and mechanism to randomly
return an error condition from functions that
will seldom do so. Functions that handle the
allocation of memory get the first treatment.
Review: https://reviewboard.asterisk.org/r/4463/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433060 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 16:49 +0000 [2122c205e6] Richard Mudgett <rmudgett@digium.com>
* Audit ast_sockaddr_resolve() usage for memory leaks.
Valgrind found some memory leaks associated with ast_sockaddr_resolve().
Most of the leaks had already been fixed by earlier memory leak hunt
patches. This patch performs an audit of ast_sockaddr_resolve() and found
one more.
* Fix ast_sockaddr_resolve() memory leak in
apps/app_externalivr.c:app_exec().
* Made main/netsock2.c:ast_sockaddr_resolve() always set the addrs
parameter for safety so the pointer will never be uninitialized on return.
The same goes for res/res_pjsip_acl.c:extract_contact_addr().
* Made functions that call ast_sockaddr_resolve() with RAII_VAR()
controlling the addrs variable use ast_free instead of ast_free_ptr to
provide better MALLOC_DEBUG information.
Review: https://reviewboard.asterisk.org/r/4509/
........
Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433057 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 13:34 +0000 [94fe4a9178] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Allow configuration of endpoint identifier query order
Updated some documentation stating that endpoint identifiers registered without
a name are place at the front of the lookup list. Also renamed register method
'ast_sip_register_endpoint_identifier_by_name' to
'ast_sip_register_endpoint_identifier_with_name'
ASTERISK-24840
Reported by: Mark Michelson
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433031 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 13:20 +0000 [1f428f25f0] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Allow configuration of endpoint identifier query order
This patch fixes previously reverted code that caused binary incompatibility
problems with some modules. And like the original patch it makes sure that
no matter what order the endpoint identifier modules were loaded, priority is
given based on the ones specified in the new global 'endpoint_identifier_order'
option.
ASTERISK-24840
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4489/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433028 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 11:10 +0000 [522f063186] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Add reason comment.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433005 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 21:28 +0000 [5c03a5f2e7] Matt Jordan <mjordan@digium.com>
* main/frame: Don't report empty disallow values as an error
In realtime, it is normal to have a database with both 'allow' and 'disallow'
columns in the schema. It is perfectly valid to have an 'allow' value of
'!all,g722,ulaw,alaw' and no 'disallow' value. Unlike in static conf files,
you can't *not* provide the disallow value. Thus, the empty disallow value
causes a spurious WARNING message, which is kind of annoying.
This patch makes it so that a 'disallow' value with no ... value ... is
ignored. Granted, you can still screw this up as well, as technically
specifying 'disallow=all,!ulaw' allows only ulaw, and then you would have no
'allow' value in your database. But really, why would you do that? WHY?
ASTERISK-16779 #close
Reported by: Atis Lezdins
........
Merged revisions 432970 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432971 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 21:00 +0000 [f7c6bedb06] Joshua Colp <jcolp@digium.com>
* func_curl: Don't hold exclusive lock when performing HTTP request.
This code originally kept a lock held when performing the HTTP
request to ensure that the options provided to curl remain valid.
This doesn't seem to be necessary these days and holding the lock
caused requests to happen sequentially instead of in parallel.
ASTERISK-18708 #close
Reported by: Dave Cabot
........
Merged revisions 432948 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432949 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 20:36 +0000 [287a22435f] Joshua Colp <jcolp@digium.com>
* core: Fix tab completion of "core set debug channel" CLI command.
The "core set debug channel" CLI command mistakenly had source filenames
added to its tab completion. This occurred because the CLI generator fell back
to the "core set debug" command which permits setting debug at a source
filename level.
ASTERISK-21038 #close
Reported by: Richard Kenner
........
Merged revisions 432944 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 20:21 +0000 [37d33ed997] Di-Shi Sun (License 5076)
* FILE: fix retrieval of file contents when offset is specified
The loop that reads in a file was not correctly using the offset when
determining what bytes to append to the output. This patch corrects
the logic such that the correct portion of the file is extracted when an
offset is specified.
ASTERISK-21765
Reported by: John Zhong
Tested by: Matt Jordan, Di-Shi Sun
patches:
file_read_390821.patch uploaded by Di-Shi Sun (License 5076)
........
Merged revisions 432935 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432938 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 19:18 +0000 [a4c27baf47] Matt Jordan <mjordan@digium.com>
* apps/app_amd: Document maximum_word_length option; fix AMDCAUSE documentation
This patch corrects the documentation for the AMD application. Specifically:
* It documents the maximum_word_length option, which limits the maximum allowed
length of a single utterance.
* It clarifies the AMDCAUSE values MAXWORDS and MAXWORDLENGTH. MAXWORDLENGTH
was documented as MAXWORDS, while MAXWORDS was undocumented.
Thanks to the issue reporter, Frank DiGennaro, for pointing out the issues.
ASTERISK-19470 #close
Reported by: Frank DiGennaro
........
Merged revisions 432918 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 12:04 +0000 [a3292230b8] Richard Mudgett <rmudgett@digium.com>
* chan_pjsip: AMI action PJSIPShowEndpoint closes AMI connection on error.
Also fixed similar problem with AMI action PJSIPShowEndpoints.
ASTERISK-24872 #close
Reported by: Dmitriy Serov
Review: https://reviewboard.asterisk.org/r/4487/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 11:26 +0000 [34aa0214eb] Richard Mudgett <rmudgett@digium.com>
* chan_pjsip/res_pjsip_callerid: Make Party ID handling simpler and consistent.
The res_pjsip modules were manually checking both name and number
presentation values when there is a function that determines the combined
presentation for a party ID struct. The function takes into account if
the name or number components are valid while the manual code rarely
checked if the data was even valid.
* Made use ast_party_id_presentation() rather than manually checking party
ID presentation values.
* Ensure that set_id_from_pai() and set_id_from_rpid() will not return
presentation values other than what is pulled out of the SIP headers. It
is best if the code doesn't assume that AST_PRES_ALLOWED and
AST_PRES_USER_NUMBER_UNSCREENED are zero.
* Fixed copy paste error in add_privacy_params() dealing with RPID
privacy.
* Pulled the id->number.valid test from add_privacy_header() and
add_privacy_params() up into the parent function add_id_headers() to skip
adding PAI/RPID headers earlier.
* Made update_connected_line_information() not send out connected line
updates if the connected line number is invalid. Lower level code would
not add the party ID information and thus the sent message would be
unnecessary.
* Eliminated RAII_VAR usage in send_direct_media_request().
Review: https://reviewboard.asterisk.org/r/4472/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432892 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 09:48 +0000 [0497b7b155] Kevin Harwell <kharwell@digium.com>
* Revert - res_pjsip: Allow configuration of endpoint identifier query order
Due to a break in binary compatibility with some other modules these changes
are being reverted until the issue can be resolved.
ASTERISK-24840
Reported by: Mark Michelson
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-12 07:58 +0000 [b9fd61f2c7] Matt Jordan <mjordan@digium.com>
* main/audiohook: Update internal sample rate on reads
When an audiohook is created (which is used by the various Spy applications
and Snoop channel in Asterisk 13+), it initially is given a sample rate of
8kHz. It is expected, however, that this rate may change based on the media
that passes through the audiohook. However, the read/write operations on the
audiohook behave very differently.
When a frame is written to the audiohook, the format of the frame is checked
against the internal sample rate. If the rate of the format does not match
the internal sample rate, the internal sample rate is updated and a new SLIN
format is chosen based on that sample rate. This works just fine.
When a frame is read, however, we do something quite different. If the format
rate matches the internal sample rate, all is fine. However, if the rates
don't match, the audiohook attempts to "fix up" the number of samples that
were requested. This can result in some seriously large number of samples
being requested from the read/write factories.
Consider the worst case - 192kHz SLIN. If we attempt to read 20ms worth of
audio produced at that rate, we'd request 3840 samples (192000 / (1000 / 20)).
However, if the audiohook is still expecting an internal sample rate of 8000,
we'll attempt to "fix up" the requested samples to:
samples_converted = samples * (ast_format_get_sample_rate(format) /
(float) audiohook->hook_internal_samp_rate);
which is:
92160 = 3840 * (192000 / 8000)
This results in us attempting to read 92160 samples from our factories, as
opposed to the 3840 that we actually wanted. On a 64-bit machine, this
miraculously survives - despite allocating up to two buffers of length 92160
on the stack. The 32-bit machines aren't quite so lucky. Even in the case where
this works, we will either (a) get way more samples than we wanted; or (b) get
about 3840 samples, assuming the timing is pretty good on the machine.
Either way, the calculation being performed is wrong, based on the API users
expectations.
My first inclination was to allocate the buffers on the heap. As it is,
however, there's at least two drawbacks with doing this:
(1) It's a bit complicated, as the size of the buffers may change during the
lifetime of the audiohook (ew).
(2) The stack is faster (yay); the heap is slower (boo).
Since our calculation is flat out wrong in the first place, this patch fixes
this issue by instead updating the internal sample rate based on the format
passed into the read operation. This causes us to read the correct number of
samples, and has the added benefit of setting the audihook with the right
SLIN format.
Note that this issue was caught by the Asterisk Test Suite as a result of
r432195 in the 13 branch. Because this issue is also theoretically possible
in Asterisk 11, the change is being made here as well.
Review: https://reviewboard.asterisk.org/r/4475/
........
Merged revisions 432810 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432811 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-12 07:39 +0000 [f5bc032567] Diederik de Groot (License 6600)
* Add support for the clang compiler; update RAII_VAR to use BlocksRuntime
RAII_VAR, which is used extensively in Asterisk to manage reference counted
resources, uses a GCC extension to automatically invoke a cleanup function
when a variable loses scope. While this functionality is incredibly useful
and has prevented a large number of memory leaks, it also prevents Asterisk
from being compiled with clang.
This patch updates the RAII_VAR macro such that it can be compiled with clang.
It makes use of the BlocksRuntime, which allows for a closure to be created
that performs the actual cleanup.
Note that this does not attempt to address the numerous warnings that the clang
compiler catches in Asterisk.
Much thanks for this patch goes to:
* The folks on StackOverflow who asked this question and Leushenko for
providing the answer that formed the basis of this code:
http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang
* Diederik de Groot, who has been extremely patient in working on getting this
patch into Asterisk.
Review: https://reviewboard.asterisk.org/r/4370/
ASTERISK-24133
ASTERISK-23666
ASTERISK-20399
ASTERISK-20850 #close
Reported by: Diederik de Groot
patches:
RAII_CLANG.patch uploaded by Diederik de Groot (License 6600)
........
Merged revisions 432807 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-11 11:38 +0000 [bd029688cd] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Move internal init/destroy prototypes to private header file.
Done as a separate commit from a finding in
https://reviewboard.asterisk.org/r/4467/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432787 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-11 10:24 +0000 [c24a294f0b] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Fix pjsip.conf type=global object default value handling.
When a type=global section is not defined in pjsip.conf the global
defaults are not applied. As a result the mandatory Max-Forwards header
is not added to SIP messages for res_pjsip/chan_pjsip.
The handling of pjsip.conf type=global objects has several problems:
1) If the global object is missing the defaults are not applied.
2) If the global object is missing the default_outbound_endpoint's default
value is not returned by ast_sip_global_default_outbound_endpoint().
3) Defines are needed so default values only need to be changed in one
place.
* Added a sorcery instance observer callback to check if there were any
type=global sections loaded. If there were more than one then issue an
error message. If there were none then apply the global defaults.
* Fixed ast_sip_global_default_outbound_endpoint() to return the
documented default when no type=global object is defined.
* Made defines for the global default values.
* Increased the default_useragent[] size because SVN version strings can
get lengthy and 128 characters may not be enough.
* Fixed an off-nominal code path ref leak in global_alloc() if the string
fields fail to initialize.
* Eliminated RAII_VAR in get_global_cfg() and
ast_sip_global_default_outbound_endpoint().
ASTERISK-24807 #close
Reported by: Anatoli
Review: https://reviewboard.asterisk.org/r/4467/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432766 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-11 10:18 +0000 [737064bfa4] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Fixed invalid empty Server and User-Agent SIP headers.
Setting pjsip.conf useragent to an empty string results in an empty SIP
header being sent.
* Made not add an empty SIP header item to the global SIP headers list.
Review: https://reviewboard.asterisk.org/r/4467/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432764 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-10 18:09 +0000 [bc357c1d7e] Joshua Colp <jcolp@digium.com>
* core: Don't create snapshots with locks.
Snapshots are immutable and are never changed. Allocating them
with a lock is wasteful.
Review: https://reviewboard.asterisk.org/r/4469/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-10 16:33 +0000 [afea98dc73] Javier Acosta (License 6690)
* res/res_config_odbc: Fix improper escaping of backslashes with MySQL
When escaping backslashes with MySQL, the proper way to escape the characters
in a LIKE clause is to escape the '\' four times, i.e., '\\\\'. To quote the
MySQL manual:
"Because MySQL uses C escape syntax in strings (for example, “\n” to represent
a newline character), you must double any “\” that you use in LIKE strings.
For example, to search for “\n”, specify it as “\\n”. To search for “\”,
specify it as “\\\\”; this is because the backslashes are stripped once by the
parser and again when the pattern match is made, leaving a single backslash to
be matched against."
ASTERISK-24808 #close
Reported by: Javier Acosta
patches:
res_config_odbc.diff uploaded by Javier Acosta (License 6690)
........
Merged revisions 432720 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-10 13:13 +0000 [055001716c] Graham Barnett (License 6685)
* app_voicemail: Fix crash with IMAP backends when greetings aren't present
When an IMAP backend is in use and greetings are set to be used, but aren't
present for a user in their IMAP folder, Asterisk will crash. This occurs
due to the mailstream being set to the 'greetings' folder and being left
in that particular state, regardless of the success/failure of the attempt
to access the folder the mailstream points to. Later access of the mailstream
assumes that it points to the 'INBOX' (or some other folder), resulting in
either a crash (if the greetings folder didn't exist and the mailstream is
invalid) or an inability to read messages from the 'INBOX' folder.
This patch restores the mailstream to its correct state after accessing the
greetings. This fixes the crash, and sets the mailstream to the state that
VoiceMailMain expects.
Note that while ASTERISK-23390 also contained a patch for this issue, the
patch on ASTERISK-24786 is the one being merged here.
Review: https://reviewboard.asterisk.org/r/4459/
ASTERISK-23390 #close
Reported by: Ben Smithurst
ASTERISK-24786 #close
Reported by: Graham Barnett
Tested by: Graham Barnett
patches:
app_voicemail.c.patch.SIGSEGV3rev2 uploaded by Graham Barnett (License 6685)
........
Merged revisions 432695 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-10 12:47 +0000 [92178247ee] Ed Hynan (Licnese 6680)
* localtime: Fix file descriptor leak on kqueue(2) systems
The localtime management in the Asterisk core contains a thread that watches
for changes in the local timezone. On systems where the directory containing
/etc/localtime is modified frequently, the thread monitoring the changes will
be woken up to determine if any changes in timezone have occurred. When using
kqueue(2), this can cause a leak of file descriptors due to some improper
management of resources.
This patch updates the kqueue(2) handling in localtime, such that is no longer
leaks resources.
Review: https://reviewboard.asterisk.org/r/4450/
ASTERISK-24739 #close
Reported by: Ed Hynan
patches:
11.15.0-u.diff uploaded by Ed Hynan (Licnese 6680)
11.7.0-u.diff uploaded by Ed Hynan (License 6680)
svn-trunk-Jan-26-2015-u.diff uploaded by Ed Hynan (License 6680)
........
Merged revisions 432691 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-10 11:04 +0000 [cae712d986] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_refer: Fix occasional unexpected BYE sent after receiving a REFER.
A race condition happened between initiating a transfer and requesting
that a dialog termination be delayed. Occasionally, the transferrer
channels would exit the bridge and hangup before the dialog termination
delay was requested.
* Made request dialog termination delay before initiating the transfer
action. If the transfer fails then cancel the delayed dialog termination
request.
ASTERISK-24755 #close
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/4460/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432668 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-09 11:12 +0000 [110b99646c] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Allow configuration of endpoint identifier query order
It's possible to have a scenario that will create a conflict between endpoint
identifiers. For instance an incoming call could be identified by two different
endpoint identifiers and the one chosen depended upon which identifier module
loaded first. This of course causes problems when, for example, the incoming
call is expected to be identified by username, but instead is identified by ip.
This patch adds a new 'global' option to res_pjsip called
'endpoint_identifier_order'. It is a comma separated list of endpoint
identifier names that specifies the order by which identifiers are processed
and checked.
ASTERISK-24840 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4455/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432638 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-07 19:46 +0000 [714cb27000] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Fix wrongful use of USE_PJPROJECT define.
As pjproject is now used as a shared library a different define,
HAVE_PJPROJECT, is used to specify if pjproject is present.
ASTERISK-24830 #close
Reported by: Stefan Engström
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432614 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-06 16:50 +0000 [e158517a9c] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_refer: Make safely get the context for a blind transfer.
Made safely get the TRANSFER_CONTEXT channel value while the channel is
locked in refer_incoming_attended_request() and
refer_incoming_blind_request(). The pointer returned by
pbx_builtin_getvar_helper() is only valid while the channel is locked.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432594 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-06 16:12 +0000 [5d16d80b59] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_refer: Made refer_attended_alloc() not create the ao2 object with a lock.
The lock is unused.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-06 15:11 +0000 [772793f18e] Jonathan Rose <jrose@digium.com>
* app: Add functions to swap voicemail function table for testing purposes
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432556 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-06 14:18 +0000 [8cced7767c] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi/sig_analog: Fix distinctive ring detection to suck less.
The distinctive ring feature interferes with detecting Caller ID and
appears to have been broken for years. What happens is if you have a
ring-ring cadence as used in the UK you get too many DAHDI events for the
distinctive ring pattern array and Caller ID detection is aborted. I
think when Zapata/DAHDI added the ring begin event it broke distinctive
ring. More events happen than before and the code does no filtering of
which event times are recorded in the pattern array.
* Made distinctive ring only record the ringt count when the ring ends
instead of on just any DAHDI event. Distinctive ring can be ring,
ring-ring, ring-ring-ring, or different ring durations for the up to three
rings.
* Fixed the distinctive ring detection enable (chan_dahdi.conf option
usedistinctiveringdetection) to be per port instead of somewhat per port
and somewhat global. This has been broken since v1.8.
* Fixed using the default distinctive ring context when the detected
pattern does not match any configured dringX patterns. The default
context did not get set when the previous call was a matched distinctive
ring pattern and the current call is not matched. This has been broken
since v1.8.
* Made distinctive ring have no effect on Caller ID detection when it is
disabled. Caller ID detection just monitors for 10 seconds before giving
up.
* Fixed leak of struct callerid_state memory when a polarity reversal
during Caller ID detection causes the incoming call to be aborted.
DAHDI-1143
AST-1545
ASTERISK-24825 #close
Reported by: Richard Mudgett
ASTERISK-17588
Reported by: Daniel Flounders
Review: https://reviewboard.asterisk.org/r/4444/
........
Merged revisions 432530 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432534 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-06 13:31 +0000 [13e715b30c] Richard Mudgett <rmudgett@digium.com>
* chan_sip: Fix realtime locking inversion when poking a just built peer.
When a realtime peer is built it can cause a locking inversion when the
just built peer is poked. If the CLI command "sip show channels" is
periodically executed then a deadlock can happen because of the locking
inversion.
* Push the peer poke off onto the scheduler thread to avoid the locking
inversion of the just built realtime peer.
AST-1540
ASTERISK-24838 #close
Reported by: Richard Mudgett
Review: https://reviewboard.asterisk.org/r/4454/
........
Merged revisions 432526 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-05 10:38 +0000 [06fa8db864] gtjoseph <george.joseph@fairview5.com>
* app_voicemail: Fix compile breaking in app_voicemail with IMAP_STORAGE.
There is a leftover "assert" in app_voicemail/__messagecount that references
variables that don't exist. This causes the compile to fail when
--enable-dev-mode and IMAP_STORAGE are selected.
This patch removes the assert.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4461/
........
Merged revisions 432484 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432485 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-04 12:52 +0000 [999d96d405] Matt Jordan <mjordan@digium.com>
* translate: Prevent invalid memory accesses on fast shutdown
When a 'core restart now' or 'core stop now' is executed and a channel is
currently in a media operation, the translator matrix can be destroyed while a
channel is currently blocked on getting the best translation choice
(see ast_translator_best_choice). When the channel gets the mutex, the
translation matrix now has invalid memory, and Asterisk crashes.
This patch does two things:
(1) We now only clean up the translation matrix on a graceful shutdown. In that
case, there are no channels, and so there is no risk of this occurring.
(2) We also now set the __matrix and __indextable to NULL. In some initial
backtraces when this occurred, it looked as if there was a memory corruption
occurring, and it wasn't until we determined that something had restarted
Asterisk that the issue became clear. By setting these to NULL on shutdown,
it becomes a bit easier to determine why a crash is occurring.
Note that we could litter the code with NULL checks on the __matrix, but the
act of making the translation matrix cleaned up on shutdown should preclude
this issue from occurring in the first place, and this part of the code needs
to be as fast as possible.
Review: https://reviewboard.asterisk.org/r/4457/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-02 13:14 +0000 [9cdadc168c] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_sdp_rtp: Revert portion of r432195
Unfortunately, while initial testing with ConfBridge did not reproduce the
audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing
did show that bridge_softmix and/or ConfBridge has a severe problem bridging
two or more participants at different sampling rates. Sometimes, it even picks
odd sampling rates that cause hideous audio problems.
This patch backs out the offending portion of the code until the issues in
the affected bridging modules can be more properly analyzed.
ASTERISK-24841
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-27 12:23 +0000 [9d85e855de] Richard Mudgett <rmudgett@digium.com>
* ARI: Fix crash if integer values used in JSON payload 'variables' object.
Sending the following ARI commands caused Asterisk to crash if the JSON
body 'variables' object passes values of types other than strings.
POST /ari/channels
POST /ari/channels/{channelid}
PUT /ari/endpoints/sendMessage
PUT /ari/endpoints/{tech}/{resource}/sendMessage
* Eliminated RAII_VAR usage in ast_ari_channels_originate_with_id(),
ast_ari_channels_originate(), ast_ari_endpoints_send_message(), and
ast_ari_endpoints_send_message_to_endpoint().
ASTERISK-24751 #close
Reported by: jeffrey putnam
Review: https://reviewboard.asterisk.org/r/4447/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-26 12:52 +0000 [c33c5183a5] Scott Griepentrog <sgriepentrog@digium.com>
* Dial API: add self destruct option when complete
This patch adds a self-destruction option to the
dial api. The usefulness of this is mostly when
using async mode to spawn a separate thread used
to handle the new call, while the calling thread
is allowed to go on about other business.
The only alternative to this option would be the
calling thread spawning a new thread, or hanging
around itself waiting to destroy the dial struct
after completion.
Example of use (minus error checking):
struct ast_dial *dial = ast_dial_create();
ast_dial_append(dial, "PJSIP", "200", NULL);
ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC, "Echo");
ast_dial_option_global_enable(dial, AST_DIAL_OPTION_SELF_DESTROY, NULL);
ast_dial_run(dial, NULL, 1);
The dial_run call will return almost immediately
after spawning the new thread to run and monitor
the dial. If the call is answered, it is placed
into the echo app. When completed, it will call
ast_dial_destroy() on the dial structure.
Note that any allocations made to pass values to
ast_dial_set_user_data() or dial options must be
free'd in a state callback function on any of:
AST_DIAL_RESULT_UNASWERED,
AST_DIAL_RESULT_ANSWERED,
AST_DIAL_RESULT_HANGUP, or
AST_DIAL_RESULT_TIMEOUT.
Review: https://reviewboard.asterisk.org/r/4443/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-26 11:07 +0000 [169058e73f] Kevin Harwell <kharwell@digium.com>
* app_chanspy, channel: fix frame leaks
Fixed a couple of frame leaks that were found during testing.
ASTERISK-24828 #close
Reported by: John Hardin
Review: https://reviewboard.asterisk.org/r/4445/
........
Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432363 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 22:58 +0000 [de86b30dba] Matt Jordan <mjordan@digium.com>
* make: Remove 'res_features' from libraries to link against with cygwin/mingw32
Both the apps and channels Makefiles still listed 'res_features' as modules to
link against when compiling for cygwin or mingw32. This module hasn't existed
for quite some time.
ASTERISK-18105 #close
Reported by: feyfre
........
Merged revisions 432341 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 21:03 +0000 [34989bd9c8] Makoto Dei (License 5027)
* channels/chan_sip: Don't send a BYE after final response when PBX thread fails
When Asterisk fails to start a PBX thread for a new channel - for example, when
the maxcalls setting in asterisk.conf is exceeded - we currently send a final
response, and then attempt to send a BYE request to the UA. Since that's all
sorts of wrong, this patch fixes that by setting sipalreadygone on the sip_pvt
such that we don't get stuck sending BYE requests to something that does not
want it.
Note that this patch is a slight modification of the one on ASTERISK-15434.
For clarity, it explicitly calls sipalreadygone with the calls to transmit a
final response.
ASTERISK-21845
ASTERISK-15434 #close
Reported by: Makoto Dei
Tested by: Matt Jordan
patches:
sip-pbxstart-failed.patch uploaded by Makoto Dei (License 5027)
........
Merged revisions 432320 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432321 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 17:48 +0000 [53aec7a969] Rusty Newton <rnewton@digium.com>
* configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 1
Example configuration files for a "basic PBX" deployment for the fictitious
Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4379/
and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company
Reported by: Malcolm Davenport
Tested by: Rusty Newton
Review: https://reviewboard.asterisk.org/r/4379/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432301 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 17:09 +0000 [474fec4f92] Matt Jordan <mjordan@digium.com>
* configure: Promote SQLite3 "not installed" warning to error
Since Asterisk won't build without the library, not having it is definitely
an error. Thanks to Kyle Kurz for pointing this out.
........
Merged revisions 432280 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432281 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 17:02 +0000 [ddff640f94] Matt Jordan <mjordan@digium.com>
* channels/chan_sip: Clarify WARNING message in mismatched SRTP scenario
When we receive an SDP as part of an offer/answer for a peer/friend has been
configured to require encryption, and that SDP offer/answer failed to provide
acceptable crypto attributes, we currently issue a WARNING that uses the phrase
"we" and "requested". In this case, both of those terms are ambiguous - the
user will probably think "we" is Asterisk (it most likely isn't) and it may
not be a "request", so much as an SDP that was received in some fashion.
This patch makes the WARNING messages slightly less bad and a bit more
accurate as well.
ASTERISK-23214 #close
Reported by: Rusty Newton
........
Merged revisions 432277 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432278 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 15:42 +0000 [dd8ac00f24] Olle Johansson <oej@edvina.net> (License 5267)
* channels/sip/sdp_crypto: Handle SRTP keys negotiated with key lifetime/MKI
Prior to this patch, SDP offers negotiating SDES-SRTP crypto attributes would
be rejected if those crypto attributes contained either a key lifetime or a
MKI parameter. While from a theoretical point of view this was defensible -
Asterisk does not support key lifetimes or multiple crypto keys - from a
practical point of view, this is quite a problem. A large number of endpoints
offer lifetimes/MKI, which Asterisk can tolerate so long as it doesn't actually
have to support anything more than a single key or refresh the key.
In reality, this is (so far as we've seen) always the case.
This patch is a forward port of Olle's work in the lingon-srtp-key-lifetime-1.8
branch. To quote Olle from ASTERISK-17721, it handles lifetime/MKI parameters
in the following fashion:
> The Lingon branch now handle lifetime and MKI parameters.
>
> We only accept lifetimes up to max for the crypto and higher than 10 hours
> for packetization of 20 ms (50 pps).
>
> We only handle MKI with index 1.
>
> We do not really bother with counting packets and reinviting at end of
> lifetime, so the min of 10 hours kind of takes care of most calls. If there
> are longer ones, we rely on the other side for re-invites.
>
> It's still not perfect, but I personally think this is an improvement. A
> configuration option for minimum lifetime accepted could be added.
When the patch was ported forward, I decided against adding a configuration
option as Olle's handling was more than sufficient for every case I've seen
come through the issue tracker or through interoperability testing. We can
revisit that decision if it proves to be false.
A few small other tweaks were made to the surrounding code to reduce
indentation and provide better type safety for the 'tag' parameter.
Review: https://reviewboard.asterisk.org/r/4419/
Review: https://reviewboard.asterisk.org/r/4418/
ASTERISK-17721 #close
Reported by: Terry Wilson
ASTERISK-17899 #close
Reported by: Dwayne Hubbard
patches:
lingon-srtp-key-lifetime-1.8.diff uploaded by oej (License 5267)
ASTERISK-20233
Reported by: tootai
ASTERISK-22748
Reported by: Alejandro Mejia
........
Merged revisions 432239 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432258 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-25 14:44 +0000 [43a3e80be1] David M. Lee <dlee@digium.com>
* Increase WebSocket frame size and improve large read handling
Some WebSocket applications, like [chan_respoke][], require a larger
frame size than the default 8k; this patch bumps the default to 16k.
This patch also fixes some problems exacerbated by large frames.
The sanity counter was decremented on every fread attempt in
ws_safe_read(), regardless of whether data was read from the socket or
not. For large frames, this could result in loss of sanity prior to
reading the entire frame. (16k frame / 1448 bytes per segment = 12
segments).
This patch changes the sanity counter so that it only decrements when
fread() doesn't read any bytes. This more closely matches the original
intention of ws_safe_read(), given that the error message is
"Websocket seems unresponsive".
This patch also properly logs EOF conditions, so disconnects are no
longer confused with unresponsive connections.
[chan_respoke]: https://github.com/respoke/chan_respoke
Review: https://reviewboard.asterisk.org/r/4431/
........
Merged revisions 432236 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432237 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-24 16:14 +0000 [978649a568] Matt Jordan <mjordan@digium.com>
* channels/chan_sip: Fix crash when transmitting packet after thread shutdown
When the monitor thread is stopped, its pthread ID is set to a specific value
(AST_PTHREADT_STOP) so that later portions of the code can determine whether
or not it is safe to manipulate the thread. Unfortunately, __sip_reliable_xmit
failed to check for that value, checking instead only for AST_PTHREAD_STOP.
Passing the invalid yet very specific value to pthread_kill causes a crash.
This patch adds a check for AST_PTHREADT_STOP in __sip_reliable_xmit such that
it doesn't attempt to poke the thread if the thread has already been stopped.
ASTERISK-24800 #close
Reported by: JoshE
........
Merged revisions 432198 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432199 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-24 15:58 +0000 [3d1a1533bf] Matt Jordan <mjordan@digium.com>
* ARI/PJSIP: Apply requesting channel's format cap to created channels
This patch addresses the following problems:
* ari/resource_channels: In ARI, we currently create a format capability
structure of SLIN and apply it to the new channel being created. This was
originally done when the PBX core was used to create the channel, as there
was a condition where a newly created channel could be created without any
formats. Unfortunately, now that the Dial API is being used, this has two
drawbacks:
(a) SLIN, while it will ensure audio will flows, can cause a lot of
needless transcodings to occur, particularly when a Local channel is
created to the dialplan. When no format capabilities are available, the
Dial API handles this better by handing all audio formats to the requsted
channels. As such, we defer to that API to provide the format
capabilities.
(b) If a channel (requester) is causing this channel to be created, we
currently don't use its format capabilities as we are passing in our own.
However, the Dial API will use the requester channel's formats if none
are passed into it, and the requester channel exists and has format
capabilities. This is the "best" scenario, as it is the most likely to
create a media path that minimizes transcoding.
Fixing this simply entails removing the providing of the format capabilities
structure to the Dial API.
* chan_pjsip: Rather than blindly picking the first format in the format
capability structure - which actually *can* be a video or text format - we
select an audio format, and only pick the first format if that fails. That
minimizes the weird scenario where we attempt to transcode between video/audio.
* res_pjsip_sdp_rtp: Applied the joint capapbilites to the format structure.
Since ast_request already limits us down to one format capability once the
format capabilities are passed along, there's no reason to squelch it here.
* channel: Fixed a comment. The reason we have to minimize our requested
format capabilities down to a single format is due to Asterisk's inability
to convey the format to be used back "up" a channel chain. Consider the
following:
PJSIP/A => L;1 <=> L;2 => PJSIP/B
g,u,a g,u,a g,u,a u
That is, we have PJSIP/A dialing a Local channel, where the Local;2 dials
PJSIP/B. PJSIP/A has native format capabilities g722,ulaw,alaw; the Local
channel has inherited those format capabilities down the line; PJSIP/B
supports only ulaw. According to these format capabilities, ulaw is
acceptable and should be selected across all the channels, and no
transcoding should occur. However, there is no way to convey this: when L;2
and PJSIP/B are put into a bridge, we will select ulaw, but that is not
conveyed to PJSIP/A and L;1. Thus, we end up with:
PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B
g g X u u
Which causes g722 to be written to PJSIP/B.
Even if we can convey the 'ulaw' choice back up the chain (which through
some severe hacking in Local channels was accomplished), such that the chain
looks like:
PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B
u u u u
We have no way to tell PJSIP/A's *channel driver* to Answer in the SDP back
with only 'ulaw'. This results in all the channel structures being set up
correctly, but PJSIP/A *still* sending g722 and causing the chain to fall
apart.
There's a lot of difficulty just in setting this up, as there are numerous
race conditions in the act of bridging, and no clean mechanism to pass the
selected format backwards down an established channel chain. As such, the
best that can be done at this point in time is clarifying the comment.
Review: https://reviewboard.asterisk.org/r/4434/
ASTERISK-24812 #close
Reported by: Matt Jordan
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432195 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-24 12:32 +0000 [5b73246a9d] Kevin Harwell <kharwell@digium.com>
* bridge_softmix: G.729 codec license held
When more than one call using the same codec type enters into a softmix bridge
and no audio is present for a channel the bridge optimizes the out frame by
using the same one for all channels with the same codec type. Unfortunately,
when that number (channels with same codec type) dropped to <= 1 the codec
was not dereferenced. At least not until all parties left the bridge. Thus in
the case of G.729 the license was not released. This patch ensures that the
codec is dereferenced immediately when the optimization no longer applies.
ASTERISK-24797 #close
Reported by: Luke Hulsey
Review: https://reviewboard.asterisk.org/r/4429/
........
Merged revisions 432174 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432175 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-21 14:47 +0000 [f726304283] Joshua Colp <jcolp@digium.com>
* res_ari_channels: Return a 404 response when a requested channel variable does not exist.
This change makes it so that if a channel variable is requested and it does not exist
a 404 response will be returned instead of an allocation failed response. This makes
it easier to debug and figure out what is going on for a user.
ASTERISK-24677 #close
Reported by: Joshua Colp
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432154 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-21 13:26 +0000 [7a507ae31a] Joshua Colp <jcolp@digium.com>
* res_pjsip_registrar: Add Expires header to 200 OK if present in REGISTER.
Some implementations don't pay attention to the expires for individual contacts.
In this case they may consider the lack of an Expires header in the 200 OK as
unregistered. This change makes it so if an Expires header is present in the REGISTER
we will add one in the 200 OK.
ASTERISK-24785 #close
Reported by: Ross Beer
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432136 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-21 12:51 +0000 [f0d018e249] Joshua Colp <jcolp@digium.com>
* res_pjsip: Add a log message when creating a UAC dialog to a target URI that is invalid.
ASTERISK-24499 #close
Reported by: Rusty Newton
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432118 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-21 11:35 +0000 [c40d78c31e] Graham Barnett (License 6685)
* apps/app_voicemail: Demote an ERROR message to a WARNING message
When using IMAP voicemail with FreePBX, you will often get ERROR messages
complaining about not being able to find a mailbox. This is due to how FreePBX
handles voicemail mailboxes. Unfortunately, app_voicemail has to consider this
a configuration error, as in any other system it would be indicative of
someone misconfiguring their system.
Regardless, a misconfiguration is a WARNING, and not an ERROR. This patch
demotes the message so that system administrators can hopefully reduce some
of the noise in their log files.
Note that in the original patch this was made into a NOTICE, but that's a
too forgiving.
ASTERISK-24790 #close
Reported by: Graham Barnett
patches:
app_voicemail.c.patch_noise uploaded by Graham Barnett (License 6685)
........
Merged revisions 432098 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432099 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-21 08:05 +0000 [bf9d416536] Joshua Colp <jcolp@digium.com>
* http: Add missing html tag to 'httpstatus' functionality.
ASTERISK-24724 #close
Reported by: Ashley Sanders
........
Merged revisions 432078 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432079 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-20 20:56 +0000 [93c9c3af2f] Corey Farrell <git@cfware.com>
* Allow shutdown to unload modules that register bucket scheme's or codec's.
* Change __ast_module_shutdown_ref to be NULL safe (11+).
* Allow modules that call ast_bucket_scheme_register or ast_codec_register
to be unloaded during graceful shutdown only (13+ only).
ASTERISK-24796 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4428/
........
Merged revisions 432058 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-20 20:46 +0000 [54a699fb64] Corey Farrell <git@cfware.com>
* asterisk/lock.h: Fix syntax errors for non-gcc OSX with 64-bit integers.
Add a couple of missing closing brackets / parenthesis.
ASTERISK-24814 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4436/
........
Merged revisions 432054 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-20 11:51 +0000 [89b48af3e5] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi/sig_analog: Put log message strings on one line.
With the log messages on one line, you can search for the log message seen
in the log and expect to find it.
........
Merged revisions 432032 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-20 11:46 +0000 [8e806f9e12] Matt Hoskins (license 6688)
* ASTERISK-24811: Add ast_sorcery_apply_config() to res_pjsip_publish_asterisk.
Matt Hoskins reported that res_pjsip_publish_asterisk wouldn't pull config from
realtime. Turns out it was just missing a call ast_sorcery_apply_config().
res_pjsip_acl was missing it as well, so I added it. The other pjsip modules
looked OK.
ASTERISK-24811 #close
Reported-by: Matt Hoskins
Tested-by: George Joseph
Tested-by: Matt Hoskins
patches:
res_pjsip_publish_asterisk.c.patch submitted by Matt Hoskins (license 6688)
Review: https://reviewboard.asterisk.org/r/4433/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432033 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-20 09:47 +0000 [c7bdf62a95] Graham Barnett (License 6685)
* apps/app_voicemail: Fix IMAP header compatibility issue with Microsoft Exchange
When interfacing with Microsoft Exchange, custom headers will be returned as
all lower case. Currently, the IMAP header code will fail to parse the returned
custom headers, as it will be performing a case sensitive comparison. This can
cause playback of messages to fail, as needed information - such as origtime -
will not be present.
This patch updates app_voicemail's header parsing code to perform a case
insensitive lookup for the requested custom headers. Since the headers are
specific to Asterisk, e.g., 'x-asterisk-vm-orig-time', and headers should be
unique in an IMAP message, this should cause no issues with other systems.
ASTERISK-24787 #close
Reported by: Graham Barnett
patches:
app_voicemail.c.patch_MSExchange uploaded by Graham Barnett (License 6685)
........
Merged revisions 432012 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432013 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-19 15:25 +0000 [e0ff83c272] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi: Remove some dead code.
........
Merged revisions 431992 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431993 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-19 12:25 +0000 [40547e7210] Richard Mudgett <rmudgett@digium.com>
* ISDN AOC: Fix crash from an AOC-E message that doesn't have a channel association.
Processing an AOC-E event that does not or no longer has a channel
association causes a crash.
The problem with posting AOC events to the channel topic is that AOC-E
events don't always have a channel association and posting the event to
the all channels topic is just wrong. AOC-E events do however have their
own charging association method to refer to the agreement with the
charging entity.
* Changed the AOC events to post to the AMI manager topic instead of the
channel topics. If a channel is associated with the event then channel
snapshot information is supplied with the AMI event.
* Eliminated RAII_VAR() usage in aoc_to_ami() and ast_aoc_manager_event().
This patch supercedes the patch on Review: https://reviewboard.asterisk.org/r/4427/
ASTERISK-22670 #close
Reported by: klaus3000
ASTERISK-24689 #close
Reported by: Marcel Manz
ASTERISK-24740 #close
Reported by: Panos Gkikakis
Review: https://reviewboard.asterisk.org/r/4430/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431974 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-19 11:30 +0000 [2181c9443f] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_refer: Handle INVITE with Replaces failure after answer.
* Fixed hangup handling of the session->channel after answer if the
ast_channel_move() or ast_bridge_impart() fails. We are still the thread
controlling the session->channel so we need to call ast_hangup() to kill
the channel.
* Fixed debug messages in refer_incoming_invite_request() referencing
incorrect channnels on success. Code comments now say why the
session->channel cannot be used.
Review: https://reviewboard.asterisk.org/r/4422/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431956 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-19 09:28 +0000 [374013d817] Alexander Traud (License 6520)
* tcptls: Handle new OpenSSL compile time option to disable SSLv3
Some distributions are going to disable SSLv3 at compile time. This option can
be checked using the directive OPENSSL_NO_SSL3_METHOD. This patch updates the
TCP/TLS handling in Asterisk to look for that directive before attempting to
use the SSLv3 specific methods.
ASTERISK-24799 #close
Reported by: Alexander Traud
patches:
no-ssl3-method.patch uploaded by Alexander Traud (License 6520)
........
Merged revisions 431936 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431937 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-18 20:01 +0000 [eb9448a1ae] Corey Farrell <git@cfware.com>
* Create work around for scheduler leaks during shutdown.
* Added ast_sched_clean_by_callback for cleanup of scheduled events
that have not yet fired.
* Run all pending peercnt_remove_cb and replace_callno events in chan_iax2.
Cleanup of replace_callno events is only run 11, since it no longer
releases any references or allocations in 13+.
ASTERISK-24451 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4425/
........
Merged revisions 431916 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431917 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-17 09:31 +0000 [6d3fcfc3c2] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_refer: Fix crash from a REFER and BYE collision.
Analyzing a one-off crash on a busy system showed that processing a REFER
request had a NULL session channel pointer. The only way I can think of
that could cause this is if an outgoing BYE transaction overlapped the
incoming REFER transaction in a collision. Asterisk sends a BYE while the
phone sends a REFER to complete an attended transfer.
* Made check the session channel pointer before processing an incoming
REFER request in res_pjsip_refer.
* Fixed similar crash potential for res_pjsip supplement incoming request
processing for res_pjsip_sdp_rtp INFO, res_pjsip_caller_id INVITE/UPDATE,
res_pjsip_messaging MESSAGE, and res_pjsip_send_to_voicemail REFER
messages.
* Made res_pjsip_messaging respond to a message body too large with a 413
instead of ignoring it.
ASTERISK-24700 #close
Reported by: Zane Conkle
Review: https://reviewboard.asterisk.org/r/4417/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431898 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-16 15:29 +0000 [562b7bf6f0] Matt Jordan <mjordan@digium.com>
* res/res_rtp_asterisk: Fix crash in debug from RTCP reports without report block
When RTCP debugging was enabled, an RTCP report without a report block would
cause a crash. This was due to the verbose output not checking to see if the
report_block pointer was NULl before dereferencing it.
This patch adds the necessary check to prevent printing any verbose output
if the far side hasn't provided us the information they should have.
ASTERISK-24791 #close
Reported by: JoshE
Tested by: JoshE
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-15 13:00 +0000 [7890d0ad07] Joshua Colp <jcolp@digium.com>
* pjsip: Remove "contact" type from pjsip.conf.sample
The "contact" object is not meant to be configured from the pjsip.conf
configuration file. It is meant to be created as a result of a registration
and stored elsewhere.
ASTERISK-24085 #close
Reported by: Rusty Newton
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431860 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-15 11:59 +0000 [cbe63ab283] Joshua Colp <jcolp@digium.com>
* install_prereq: Tweak flags when configuring pjproject.
This change does two things:
1. Disables debugging so assertions which can return an error do,
instead of asserting.
2. Enables IPv6 support.
ASTERISK-24632 #close
Reported by: Rusty Newton
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431843 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-15 11:42 +0000 [c8f3074cc4] Joshua Colp <jcolp@digium.com>
* res_sorcery_config: Improve object lookup times.
The res_sorcery_config module currently uses a fixed bucket
size of 53. This means that depending on the number of objects
you either end up with excess buckets or a lot of collisions.
Due to the way that res_sorcery_config is implemented it's actually
possible to make the bucket size dynamic based on the number of
objects. This is due to the fact that each loading of the config file
produces a new container and does not modify the existing one.
This change uses the number of expected objects and finds a prime
number near it. In practice depending on the number of objects this
can speed up lookups anywhere from 2X to 15X. This change also removes
the lock from the container as it is not needed.
Review: https://reviewboard.asterisk.org/r/4423/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431841 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-15 10:00 +0000 [a3044cbf02] Joshua Colp <jcolp@digium.com>
* res_pjsip: Add "pjsip show version" CLI command.
When debugging things it can be useful to know absolutely what
version of pjproject res_pjsip is running against. This change
adds a "pjsip show version" CLI command which can be used to
query for this.
ASTERISK-24685 #close
Reported by: Joshua Colp
Review: https://reviewboard.asterisk.org/r/4424/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431824 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-15 06:39 +0000 [ce70587ba6] Matthias Urlichs (license 5508)
* res_timing_pthread: Fix leaky pipes.
During some refactoring the way private information for timers
was stored was changed. As a result of this the action which normally
removed the timer upon closure in res_timing_pthread was also removed
causing the timer to remain after it should using up resources.
This change ensures that the timer is removed upon closure.
ASTERISK-24768 #close
Reported by: Matthias Urlichs
patches:
timer.patch submitted by Matthias Urlichs (license 5508)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431807 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-14 18:32 +0000 [4f4d03fdd1] Matt Jordan <mjordan@digium.com>
* apps/app_mixmonitor: Move Test Event for MIXMONITOR_END to after it finishes
The Test Event for MIXMONITOR_END - which signals that a MixMonitor has
completed - technically fired before the filestream was closed. If a test
used this to trigger a condition to verify that the file was written, it
could result in a race condition where the file size would not be what the
test expected.
Luckily, no tests were using this (although they should have been). Since the
test event needed to be moved after the point where the MixMonitor autochan has
been destroyed, the test event no longer emits the channel name. Luckily,
nothing needs it.
........
Merged revisions 431788 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431789 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-14 13:45 +0000 [758a897876] Joshua Colp <jcolp@digium.com>
* sorcery: Output an error message if a wizard is specified for an object type and it isn't found.
ASTERISK-24612 #close
Reported by: Joshua Colp
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-14 12:30 +0000 [8c6e3ad3b4] Joshua Colp <jcolp@digium.com>
* res_pjsip_exten_state: Improve log message when a subscription is attempted to a non-existent extension.
ASTERISK-24716 #close
Reported by: Rusty Newton
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431754 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-14 12:20 +0000 [3543a36362] Joshua Colp <jcolp@digium.com>
* 'information' ends with an 'n'.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431752 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-14 12:19 +0000 [5d26236758] Joshua Colp <jcolp@digium.com>
* chan_pjsip: Fix crash when CHANNEL dialplan function is invoked with pjsip argument and no type.
ASTERISK-24771 #close
Reported by: Niklas Larsson
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431751 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-13 11:21 +0000 [4d797f17c5] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session: Fix double re-INVITE collision crash.
A multi-asterisk box setup with direct media enabled would occasionally
crash when two re-INVITE collisions on a call leg happen in a row.
The re-INVITE logic only had one timer struct to defer the re-INVITE.
When the second collision happens the timer struct is overwritten and put
into the timer heap again. Resources for the first timer are leaked and
the heap has two positions occupied by the same timer struct. Now the
heap ordering is potentially corrupted, the timer will fire twice, and any
resources allocated for the second timer will be released twice.
* The solution is to put the collided re-INVITE into the delayed requests
queue with all the other delayed requests and cherry pick the next request
that can come off the queue when an event happens.
* Changed to put delayed BYE requests at the head of the delayed queue.
There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE
has been requested.
* Made the start of a BYE request flush the delayed requests queue to
prevent a delayed request from overlapping the BYE transaction. I saw a
few cases where a delayed re-INVITE got started after the BYE transaction
started.
* Changed the delayed_request struct to use an enum instead of a string
for the request method. Cherry picking the queue is easier with an enum
than string comparisons and the compiler can warn if a switch statement
does not cover all defined enum values.
* Improved the debug output to give more information. It helps to know
which channel is involved with an endpoint. Trunks can have many channels
associated with the endpoint at the same time.
ASTERISK-24727 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4414/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-12 14:32 +0000 [1995baad71] Matt Jordan <mjordan@digium.com>
* ARI/PJSIP: Add the ability to redirect (transfer) a channel in a Stasis app
This patch adds a new feature to ARI to redirect a channel to another server,
and fixes a few bugs in PJSIP's handling of the Transfer dialplan
application/ARI redirect capability.
*New Feature*
A new operation has been added to the ARI channels resource, redirect. With
this, a channel in a Stasis application can be redirected to another endpoint
of the same underlying channel technology.
*Bug fixes*
In the process of writing this new feature, two bugs were fixed in the PJSIP
stack:
(1) The existing .transfer channel callback had the limitation that it could
only transfer channels to a SIP URI, i.e., you had to pass
'PJSIP/sip:foo@my_provider.com' to the dialplan application. While this is
still supported, it is somewhat unintuitive - particularly in a world full
of endpoints. As such, we now also support specifying the PJSIP endpoint to
transfer to.
(2) res_pjsip_multihomed was, unfortunately, trying to 'help' a 302 redirect by
updating its Contact header. Alas, that resulted in the forwarding
destination set by the dialplan application/ARI resource/whatever being
rewritten with very incorrect information. Hence, we now don't bother
updating an outgoing response if it is a 302. Since this took a looong time
to find, some additional debug statements have been added to those modules
that update the Contact headers.
Review: https://reviewboard.asterisk.org/r/4316/
ASTERISK-24015 #close
Reported by: Private Name
ASTERISK-24703 #close
Reported by: Matt Jordan
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431717 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 12:02 +0000 [e8ec15a9ef] Kevin Harwell <kharwell@digium.com>
* res_pjsip: dtls_handler causes Asterisk to crash
There have been a couple of times where a crash occurred in the dtls_handler
section of the code for res_pjsip. Unfortunately, in working this issue the
problem was unable to be reproduced. After looking at the backtraces and
through the code the current best guess as to why this happened might be due
to a reentrance problem and the strtok function. So, the current fix is to
convert the strtok function into the reentrant version of the function,
strtok_r.
ASTERISK-24741 #close
Reported by: Zane Conkle
Review: https://reviewboard.asterisk.org/r/4409/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431698 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 11:36 +0000 [e64d151fae] Kevin Harwell <kharwell@digium.com>
* ari_websockets: removed extra check on websocket session read
When merging the websocket timeout issue (ASTERISK-24701) an extra, almost
duplicate, check was left in the code that should not have been. This removes
it.
ASTERISK-24701 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4412/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 11:28 +0000 [feddab7944] Richard Mudgett <rmudgett@digium.com>
* HTTP: Stop accepting requests on final system shutdown.
There are three CLI commands to stop and restart Asterisk each.
1) core stop/restart now - Hangup all calls and stop or restart Asterisk.
New channels are prevented while the shutdown request is pending.
2) core stop/restart gracefully - Stop or restart Asterisk when there are
no calls remaining in the system. New channels are prevented while the
shutdown request is pending.
3) core stop/restart when convenient - Stop or restart Asterisk when there
are no calls in the system. New calls are not prevented while the
shutdown request is pending.
ARI has made stopping/restarting Asterisk more problematic. While a
shutdown request is pending it is desirable to continue to process ARI
HTTP requests for current calls. To handle the current calls while a
shutdown request is pending, a new committed to shutdown phase is needed
so ARI applications can deal with the calls until the system is fully
committed to shutdown.
* Added a new shutdown committed phase so ARI applications can deal with
calls until the final committed to shutdown phase is reached.
* Made refuse new HTTP requests when the system has reached the final
system shutdown phase. Starting anything while the system is actively
releasing resources and unloading modules is not a good thing.
* Split the bridging framework shutdown to not cleanup the global bridging
containers when shutting down in a hurry. This is similar to how other
modules prevent crashes on rapid system shutdown.
* Moved ast_begin_shutdown(), ast_cancel_shutdown(), and
ast_shutting_down(). You should not have to include channel.h just to
access these system functions.
ASTERISK-24752 #close
Reported by: Matthew Jordan
Review: https://reviewboard.asterisk.org/r/4399/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431692 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 11:12 +0000 [29f3ff0b61] Richard Miller (License 5685)
* channels/chan_sip: Fix RealTime error during SIP unregistration with MariaDB
When a SIP device that has its registration stored in RealTime unregisters,
the entry for that device is updated with blank values, i.e., "", indicating
that it is no longer registered. Unfortunately, one of those values that is
'blanked' is the device's port. If the column type for the port is not a
string datatype (the recommended type is integer), an ODBC or database error
will be thrown. MariaDB does not coerce empty strings to a valid integer value.
This patch updates the query run from chan_sip such that it replaces the port
value with a value of '0', as opposed to a blank value. This is the value that
other database backends coerce the empty string ("") to already, and the
handling of reading a RealTime registration value from a backend already
anticipates receiving a port of '0' from the backends.
ASTERISK-24772 #close
Reported by: Richard Miller
patches:
chan_sip.diff uploaded by Richard Miller (License 5685)
........
Merged revisions 431673 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431674 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 10:51 +0000 [72e5ba2ce8] Kevin Harwell <kharwell@digium.com>
* res_http_websocket: websocket write timeout fails to fully disconnect
When writing to a websocket if a timeout occurred the underlying socket did not
get closed/disconnected. This patch makes sure the websocket gets disconnected
on a write timeout. Also a notice is logged stating that the websocket was
disconnected.
ASTERISK-24701 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4412/
........
Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431670 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 09:51 +0000 [2531f75057] Corey Farrell <git@cfware.com>
* Enable REF_DEBUG for ast_module_ref / ast_module_unref.
Add ast_module_shutdown_ref for use by modules that can
only be unloaded during graceful shutdown.
When REF_DEBUG is enabled:
* Add an empty ao2 object to struct ast_module.
* Allocate ao2 object when the module is loaded.
* Perform an ao2_ref in each place where mod->usecount is manipulated.
* ao2_cleanup on module unload.
ASTERISK-24479 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4141/
........
Merged revisions 431662 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-10 17:16 +0000 [4d8ab20a8a] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: Add ability to auto-create hints.
Looking at the Super Awesome Company sample reminded me that creating hints is
just plain gruntwork. So you can now have the pjsip conifg wizard auto-create
them for you.
Specifying 'hint_exten' in the wizard will create
'exten => <hint_exten>,hint/PJSIP/<wizard_id>'
in whatever is specified for 'hint_context'.
Specifying 'hint_application' in the wizard will create
'exten => <hint_exten>,1,<hint_application>'
in whatever is specified for 'hint_context'.
The default for 'hint_context' is the endpoint's context.
There's no default for 'hint_application'. If not specified, no app is added.
There's no default for 'hint_exten'. If not specified, neither the hint itself
nor the application will be created.
Some may think this is the slippery slope to users.conf but hints are a basic
necessity for phones unlike voicemail, manager, etc that users.conf creates.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4383/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431643 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-08 21:10 +0000 [32e42e50cc] Ben Merrills (License 6678)
* res/ari/resource_channels: Add missing 'no_answer' reason to DELETE /channels
One of the canonical reasons for hanging up a channel is because the far end
failed to answer - or because someone else answered, and we want to get rid of
this channel. This patch adds the missing value to the 'reason' query parameter
for the DELETE /channels operation.
Review: https://reviewboard.asterisk.org/r/4400
ASTERISK-24745 #close
Reported by: Ben Merrills
patches:
add_no_answer_ari_hangup_cause.diff uploaded by Ben Merrills (License 6678)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-08 21:01 +0000 [03445a147e] Jeremiah Gowdy (License 6358)
* Blocked revisions 431620
While it may not be obvious, r431620 should not occur in Asterisk 13.
* We no longer set the SIP_DEFER_BYE_ON_TRANSFER flag during the handling of
the INVITE with Replaces. This is now set and handled explicitly in the
attended transfer and blind transfer code.
* An INVITE with Replaces replacing a channel in a Bridge will now safely eject
the channel being replaced. No masquerade occurs.
* An INVITE with Replaces replacing a channel not in a Bridge will masquerade,
but will do so in such a fashion that we can ensure that we are hanging up
the channel when completed.
Since the code the patch fixes no longer exists due to core framework changes,
we should send a BYE naturally without the need for the flag.
........
channels/chan_sip: Ensure that a BYE is sent during INVITE w/Replaces transfer
Consider a scenario where Alice and Bob have an established dialog with each
other external to Asterisk. Bob decides to perform an attended transfer of
Alice to Asterisk. In this case, Alice will send an INVITE with Replaces
to Asterisk, where the Replaces specifies Bob's dialog with Asterisk. In this
particular scenario, Asterisk will complete the transfer, but - since Bob's
channel has had Alice masqueraded into it and is now a Zombie - a BYE
request will not be sent.
This patch fixes that issue by adding a new flag to chan_sip that tracks
whether or not we have an INVITE with Replaces. If we do, the flag is used
on the sip_pvt to ensure that a BYE request is sent, even if the channel has
been masqueraded away.
Review: https://reviewboard.asterisk.org/r/4362/
ASTERISK-22436 #close
Reported by: Eelco Brolman
Tested by: Jeremiah Gowdy, Kristian Høgh
patches:
asterisk-11-hangup-replaced-3.diff uploaded by Jeremiah Gowdy (License 6358)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431621 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-08 20:34 +0000 [8582411344] ibercom <ibercom123@gmail.com> (License 6599)
* res/res_odbc: Remove unneeded queries when determining if a table exists
This patch modifies the ast_odbc_find_table function such that it only performs
a lookup of the requested table if the table is not already known. Prior to
this patch, a queries would be executed against the database even if the table
was already known and cached.
Review: https://reviewboard.asterisk.org/r/4405/
ASTERISK-24742 #close
Reported by: ibercom
patches:
patch.diff uploaded by ibercom (License 6599)
........
Merged revisions 431617 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-08 11:24 +0000 [675b2b8103] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_sdp_rtp: Fix leak of local ICE candidates when applying to SDP
When an SDP is created for an outgoing request/response, the ICE candidates
obtained from the RTP instance are currently leaked. This causes the ao2
container that holds the candidates to never properly be reclaimed when the
RTP instance is destroyed.
This patch properly decrements the ICE candidates' container if it is
successfully obtained.
ASTERISK-24769 #close
Reported by: Matt Jordan
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431600 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-06 15:26 +0000 [323c0927ac] Scott Griepentrog <sgriepentrog@digium.com>
* various: cleanup issues found during leak hunt
In this collection of small patches to prevent
Valgrind errors are: fixes for reference leaks
in config hooks, evaluating a parameter beyond
bounds, and accessing a structure after a lock
where it could have been already free'd.
Review: https://reviewboard.asterisk.org/r/4407/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431583 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-03 19:27 +0000 [18c8c1bae3] Joshua Colp <jcolp@digium.com>
* res_pjsip_keepalive: Don't crash if PJSIP module is not loaded.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431555 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-03 18:58 +0000 [2f2eb1931a] Joshua Colp <jcolp@digium.com>
* sorcery: Don't try to load object types which haven't been defined.
The act of defining wizards for an object type in sorcery.conf will
create a minimal object type. This can cause a problem when a module
has multiple sorcery instances (which all get the wizards from sorcery.conf
applied) but the sorcery instances do not all contain full information
about the object types. Upon loading errors will occur stating that
the objects can not be created. This is confusing and is actually
perfectly fine.
This change makes it so that only object types which have been fully
defined will be loaded.
ASTERISK-24748 #close
Reported by: Joshua Colp
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431538 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-31 10:27 +0000 [f67402a52a] Joshua Colp <jcolp@digium.com>
* res_format_attr_h264: Fix crash when determining joint capability.
The res_format_attr_h264 module currently incorrectly attempts to
copy SPS and PPS information from the wrong attribute. This change
fixes that.
ASTERISK-24616 #close
Reported by: Yura Kocyuba
Review: https://reviewboard.asterisk.org/r/4392/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431521 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-30 11:44 +0000 [05e2832b35] Richard Mudgett <rmudgett@digium.com>
* app_agent_pool: Fix initial module load agent device state reporting.
When the app_agent_pool module initially loads there is a race condition
between the thread loading agents.conf and the device state internal
processing thread. If the device state internal processing thread handles
the agent creation state updates before the thread that loaded agents.conf
registers the device state provider callback then the cached agent state
is "Invalid". When a consumer module like app_queue asks for the agent state
it gets the cached "Invalid" state instead of the real state from the provider.
* Moved loading the agents.conf configuration to the last thing setup by
app_agent_pool in load_module(). Now the device state provider callback
is registered before the config is loaded so the agent creation state
updates are guaranteed to get the initial device state.
* Removed some now redundant config cleanup on error in load_config().
* Added lock protection when accessing the device state in
agent_pvt_devstate_get() and eliminated the RAII_VAR() usage.
ASTERISK-24737 #close
Reported by: Steve Pitts
Review: https://reviewboard.asterisk.org/r/4390/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-30 11:38 +0000 [6583b4de98] Kevin Harwell <kharwell@digium.com>
* res_pjsip_outbound_publish: eventually crashes when no response is ever received
When Asterisk attempts to send SIP outbound publish information and no response
is ever received (no 200 okay, 412, 423) the system eventually crashes. A
response is never received because the system Asterisk is attempting to send
publish information to is not available. The underlying pjsip framework attempts
to send publish information. After several attempts it calls back into the
Asterisk outbound publish code. At this point if the "client->queue" is empty
Asterisk attempts to schedule a refresh which utilizes "rdata" and since no
response was received the given "rdata" struture is NULL. Attempting to
dereference a NULL object of course results in a crash.
The fix here removes the dependency on rdata for schedule_publish_refresh.
Instead param->expiration is now passed to it as this is set to -1 if no
response is received. Also added a notification when no response is received.
ASTERISK-24635 #close
Reported by: Marco Paland
Review: https://reviewboard.asterisk.org/r/4384/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431490 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-30 10:52 +0000 [112d23c73e] Ashley Sanders <asanders@digium.com>
* HTTP: For httpd server, need option to define server name for security purposes
Added a new config property [servername] to the http.conf file; updated the http server to use the new property when sending responses, for showing http status through the CLI and when reporting status through the 'httpstatus' webpage.
ASTERISK-24316 #close
Reported By: Andrew Nagy
Review: https://reviewboard.asterisk.org/r/4374/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431471 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-30 10:47 +0000 [43dd42d8ae] Mark Michelson <mmichelson@digium.com>
* Fix some memory leaks.
These memory leaks were found and fixed by John Hardin. I'm just
committing them for him.
ASTERISK-24736 #close
Reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/4389
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431468 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-29 17:02 +0000 [f7d23dfcc6] Scott Griepentrog <sgriepentrog@digium.com>
* stasis transfer: fix stasis bridge push race part two
When swapping a Local channel in place of one already
in a bridge (to complete a bridge attended transfer),
the channel that was swapped out can actually be hung
up before the stasis bridge push callback executes on
the independant transfer thread. This results in the
stasis app loop dropping out and removing the control
that has the the app name which the local replacement
channel needs so it can re-enter stasis.
To avoid this race condition a new push_peek callback
has been added, and called from the ast_bridge_impart
thread before it launches the independant thread that
will complete the transfer. Now the stasis push_peek
callback can copy the stasis app name before the swap
channel can hang up.
ASTERISK-24649
Review: https://reviewboard.asterisk.org/r/4382/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431450 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-29 14:58 +0000 [e8896ac008] Mark Michelson <mmichelson@digium.com>
* Use SIPS URIs in Contact headers when appropriate.
RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific
scenarios when we are required to use SIPS URIs in Contact
headers. Asterisk's non-compliance with this could actually
cause calls to get dropped when communicating with clients
that are strict about checking the Contact header.
Both of the SIP stacks in Asterisk suffered from this issue.
This changeset corrects the behavior in res_pjsip/chan_pjsip.c
Review: https://reviewboard.asterisk.org/r/4345
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431426 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-29 14:44 +0000 [22fc3359da] Mark Michelson <mmichelson@digium.com>
* Use SIPS URIs in Contact headers when appropriate.
RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific
scenarios when we are required to use SIPS URIs in Contact
headers. Asterisk's non-compliance with this could actually
cause calls to get dropped when communicating with clients
that are strict about checking the Contact header.
Both of the SIP stacks in Asterisk suffered from this issue.
This changeset corrects the behavior in chan_sip.
ASTERISK-24646 #close
Reported by Stephan Eisvogel
Review: https://reviewboard.asterisk.org/r/4346
........
Merged revisions 431423 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-29 13:52 +0000 [b8ea23b0d1] Mark Michelson <mmichelson@digium.com>
* Allow disabling of 100rel support on PJSIP endpoints.
Due to an inversion error, setting 100rel=no would not actually
change the current value of the setting (which defaulted to "yes").
With this fix, the inversion is corrected.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-29 10:46 +0000 [6e5eb9af88] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_exten_state: Reduce log clutter... change a WARNING to a VERBOSE/2
Reduce log clutter by changing the "Watcher for hint %s (removed|deactivated)"
message from WARNING to VERBOSE/2.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4387/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-29 06:09 +0000 [e0461290d0] Joshua Colp <jcolp@digium.com>
* res_rtp_asterisk: Fix DTLS when used with OpenSSL 1.0.1k
A recent security fix for OpenSSL broke DTLS negotiation for many
applications. This was caused by read ahead not being enabled when it
should be. While a commit has gone into OpenSSL to force read ahead
on for DTLS it may take some time for a release to be made and the
change to be present in distributions (if at all). As enabling read
ahead is a simple one line change this commit does that and fixes
the issue.
ASTERISK-24711 #close
Reported by: Jared Biel
........
Merged revisions 431384 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-28 11:37 +0000 [8c068fc096] Mark Michelson <mmichelson@digium.com>
* Fix file descriptor leak in RTP code.
SIP requests that offered codecs incompatible with configured values
could result in the allocation of RTP and RTCP ports that would not get
reclaimed later.
ASTERISK-24666 #close
Reported by Y Ateya
Review: https://reviewboard.asterisk.org/r/4323
AST-2015-001
........
Merged revisions 431300 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-28 11:34 +0000 [25a67d561c] Mark Michelson <mmichelson@digium.com>
* Multiple revisions 431297-431298
........
r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan 2015) | 17 lines
Mitigate possible HTTP injection attacks using CURL() function in Asterisk.
CVE-2014-8150 disclosed a vulnerability in libcURL where HTTP request injection
can be performed given properly-crafted URLs.
Since Asterisk makes use of libcURL, and it is possible that users of Asterisk may
get cURL URLs from user input or remote sources, we have made a patch to Asterisk
to prevent such HTTP injection attacks from originating from Asterisk.
ASTERISK-24676 #close
Reported by Matt Jordan
Review: https://reviewboard.asterisk.org/r/4364
AST-2015-002
........
r431298 | mmichelson | 2015-01-28 11:12:49 -0600 (Wed, 28 Jan 2015) | 3 lines
Fix compilation error from previous patch.
........
Merged revisions 431297-431298 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 431299 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431301 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-28 06:18 +0000 [c3add776af] Sean Bright <sean@malleable.com>
* media formats: update res_format_attr_opus & silk
In r419044, we changed how formats were handled, but the return value
of the format_parse_sdp_fmtp functions in res_format_attr_opus and
res_format_attr_silk were not updated, causing calls to fail. Ran
into this when getting codec_opus working with Asterisk 13.
Once the return value was corrected, we were crashing in opus_getjoint
because of NULL format attributes. I've fixed this as well in this
patch.
Review: https://reviewboard.asterisk.org/r/4371/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431267 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 22:09 +0000 [88fbe4e917] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration: Fix reload race condition.
Performing a CLI "module reload" command when there are new pjsip.conf
registration objects defined frequently failed to load them correctly.
What happens is a race condition between res_pjsip pushing its reload into
an asynchronous task processor task and the thread that does the rest of
the reloads when it gets to reloading the res_pjsip_outbound_registration
module. A similar race condition happens between a reload and the CLI/AMI
show registrations commands. The reload updates the current_states
container and the CLI/AMI commands call get_registrations() which builds a
new current_states container.
* Made res_pjsip.c reload_module() use ast_sip_push_task_synchronous()
instead of ast_sip_push_task() to eliminate two threads processing config
reloads at the same time.
* Made get_registrations() not replace the global current_states container
so the CLI/AMI show registrations command cannot interfere with reloading.
You could never add/remove objects in the container without the
possibility of the container being replaced out from under you by
get_registrations().
* Added a registration loaded sorcery instance observer to purge any dead
registration objects since get_registrations() cannot do this job anymore.
The struct ast_sorcery_instance_observer callbacks must be used because
the callback happens inline with the load process. The struct
ast_sorcery_observer callbacks are pushed to a different thread.
* Added some global current_states NULL pointer checks in case the
container disappears because of unload_module().
* Made sorcery's struct ast_sorcery_instance_observer.object_type_loaded
callbacks guaranteed to be called before any struct
ast_sorcery_observer.loaded callbacks will be called.
* Moved the check for non-reloadable objects to before the sorcery
instance loading callbacks happen to short circuit unnecessary work.
Previously with non-reloadable objects, the sorcery instance
loading/loaded callbacks would always happen, the individual wizard
loading/loaded would be prevented, and the non-reloadable type logging
message would be logged for each associated wizard.
ASTERISK-24729 #close
Review: https://reviewboard.asterisk.org/r/4381/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431243 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 16:56 +0000 [61822e78ae] Kevin Harwell <kharwell@digium.com>
* tcptls: Bad file descriptor error when reloading chan_sip
While running through some scenarios using chan_sip and tcp a problem would
occur that resulted in a flood of bad file descriptor messages on the cli:
tcptls.c:712 ast_tcptls_server_root: Accept failed: Bad file descriptor
The message is received because the underlying socket has been closed, so is
valid. This is probably happening because unloading of chan_sip is not atomic.
That however is outside the scope of this patch. This patch simply stops the
logging of multiple occurrences of that message.
ASTERISK-24728 #close
Reported by: Thomas Thompson
Review: https://reviewboard.asterisk.org/r/4380/
........
Merged revisions 431218 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 13:21 +0000 [e2b493b8f0] Kevin Harwell <kharwell@digium.com>
* chan_sip: stale nonce causes failure
When refreshing (with a small expiration) a registration that was sent to
chan_sip the nonce would be considered stale and reject the registration.
What was happening was that the initial registration's "dialog" still existed
in the dialogs container and upon refresh the dialog match algorithm would
choose that as the "dialog" instead of the newly created one. This occurred
because the algorithm did not check to see if the from tag matched if
authentication info was available after the 401. So, it ended up assuming
the original "dialog" was a match and stopped the search. The old "dialog"
of course had an old nonce, thus the stale nonce message.
This fix attempts to leave the original functionality alone except in the case
of a REGISTER. If a REGISTER is received if searches for an existing "dialog"
matching only on the callid. If the expires value is low enough it will reuse
dialog that is there, otherwise it will create a new one.
ASTERISK-24715 #close
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/4367/
........
Merged revisions 431187 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431194 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 13:08 +0000 [9e3d316dd1] Corey Farrell <git@cfware.com> (license 5909)
* res_pjsip: make it unloadable (take 2)
Due to the original patch causing memory corruptions it was removed until the
problem could be resolved. This patch is the original patch plus some added
locking around stasis router subcription that was needed to avoid the memory
corruption.
Description of the original problem and patch (still applicable):
The res_pjsip module was previously unloadable. With this patch it can now
be unloaded.
This patch is based off the original patch on the issue (listed below) by Corey
Farrell with a few modifications. Namely, removed a few changes not required to
make the module unloadable and also fixed a bug that would cause asterisk to
crash on unloading.
This patch is the first step (should hopefully be followed by another/others at
some point) in allowing res_pjsip and the modules that depend on it to be
unloadable. At this time, res_pjsip and some of the modules that depend on
res_pjsip cannot be unloaded without causing problems of some sort.
The goal of this patch is to get res_pjsip and only res_pjsip to be able to
unload successfully and/or shutdown without incident (crashes, leaks, etc...).
Other dependent modules may still cause problems on unload.
Basically made sure, with the patch applied, that res_pjsip (with no other
dependent modules loaded) could be succesfully unloaded and Asterisk could
shutdown without any leaks or crashes that pertained directly to res_pjsip.
ASTERISK-24485 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4363/
patches:
pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431179 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 11:36 +0000 [eda125f98d] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Repeatedly starting and stopping recording ref leaks the recording channel.
Starting and stopping conference recording more than once causes the
recording channels to be leaked. For v13 the channels also show up in the
CLI "core show channels" output.
* Reworked and simplified the recording channel code to use
ast_bridge_impart() instead of managing the recording thread in the
ConfBridge code. The recording channel's ref handling easily falls into
place and other off nominal code paths get handled better as a result.
ASTERISK-24719 #close
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/4368/
Review: https://reviewboard.asterisk.org/r/4369/
........
Merged revisions 431135 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431160 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 11:32 +0000 [b64f4bb6ee] Joshua Colp <jcolp@digium.com>
* bridge / res_pjsip_sdp_rtp: Fix issues with media not being reinvited during direct media.
This change fixes two issues:
1. During a swap operation bridging added the new channel before having the swap channel
leave. This was not handled in bridge_native_rtp and could result in a channel not getting
reinvited back to Asterisk. After this change the swap channel will leave first and the
new channel will then join.
2. If a re-invite was received after a session had been established any upstream elements
(such as bridge_native_rtp) were not notified that they may want to re-evaluate things.
After this change an UPDATE_RTP_PEER control frame is queued when this situation occurs
and upstream can react.
AST-1524 #close
Review: https://reviewboard.asterisk.org/r/4378/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 11:22 +0000 [a620b287bd] Jonathan Rose <jrose@digium.com>
* Manager: Fix Manager Action ModuleLoad to give correct response when reloading
Prior to this patch, ModuleLoad would respond with an error indicating that
the requested module wasn't found in spite of finding and reloading the
module.
Review: https://reviewboard.asterisk.org/r/4373/
ASTERISK-24721 #close
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 11:20 +0000 [7f9b28b0c6] Matt Jordan <mjordan@digium.com>
* ARI: Improve wiki documentation
This patch improves the documentation of ARI on the wiki. Specifically, it
addresses the following:
* Allowed values and allowed ranges weren't documented. This was particularly
frustrating, as Asterisk would reject query parameters with disallowed values
- but we didn't tell anyone what the allowed values were.
* The /play/id operation on /channels and /bridges failed to document all of
the added media resource types.
* Documentation for creating a channel into a Stasis application failed to
note when it occurred, and that creating a channel into Stasis conflicts with
creating a channel into the dialplan.
* Some other minor tweaks in the mustache templates, including italicizing the
parameter type, putting the default value on its own sub-bullet, and some
other nicities.
Review: https://reviewboard.asterisk.org/r/4351
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 11:10 +0000 [1a17693789] Matt Jordan <mjordan@digium.com>
* app_confbridge: Restore user's menu name to CLI output of 'confbridge list'
When issuing a 'confbridge list XXXX' CLI command, the resulting output no
longer displays the menu associated with a ConfBridge participant.
The issue was caused by ASTERISK-22760. When that patch was done, it removed
the copying of the menu name associated with the user from the actual user
profile.
This patch fixes the issue by copying the menu name over to the user profile
when the menu hooks are applied to the user. Since that function now does a
little bit more than just apply the hooks, the name of the function has been
changed to cover the copying of the menu name over as well.
In addition, there is a disparity between the menu name length as it is stored
on the conf_menu structure and the confbridge_user structure; this patch makes
the lengths match so that a strcpy can be used.
Review: https://reviewboard.asterisk.org/r/4372/
ASTERISK-24723 #close
Reported by: Steve Pitts
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431134 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-27 05:47 +0000 [ceedd40370] Joshua Colp <jcolp@digium.com>
* res_parking: Fix crash due to race condition when unloading.
There is currently a race condition when unloading the res_parking
module. Depending on the will of the universe the subscription
invocation may occur AFTER the module is unloaded. This is because
the module does NOT use stasis_unsubscribe_and_join when terminating
the subscription. It merely uses stasis_unsubscribe.
This change makes it use stasis_unsubscribe_and_join which is documented
for usage in this exact scenario.
AST-1520 #close
Review: https://reviewboard.asterisk.org/r/4375/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431114 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-26 08:49 +0000 [702d79de2a] David M. Lee <dlee@digium.com>
* Various fixes for OS X
This patch addresses compilation errors on OS X. It's been a while, so
there's quite a few things.
* Fixed __attribute__ decls in route.h to be portable.
* Fixed htonll and ntohll to work when they are defined as macros.
* Replaced sem_t usage with our ast_sem wrapper.
* Added ast_sem_timedwait to our ast_sem wrapper.
* Fixed some GCC 4.9 warnings using sig*set() functions.
* Fixed some format strings for portability.
* Fixed compilation issues with res_timing_kqueue (although tests still fail
on OS X).
* Fixed menuconfig /sbin/launchd detection, which disables res_timing_kqueue
on OS X).
ASTERISK-24539 #close
Reported by: George Joseph
ASTERISK-24544 #close
Reported by: George Joseph
Review: https://reviewboard.asterisk.org/r/4327/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-25 07:42 +0000 [1fc823c770] Matt Jordan <mjordan@digium.com>
* dynamic realtime: Updates fail to work due to update fields being passed over
When a crash was fixed due to usage of the REALTIME function in r423003, a
regression was introduced into ast_update2_realtime where the update fields
passed to the function would be skipped and the lookup field processed twice.
The use of this function is a bit interesting: A variable argument list is
used with two sentinel values - the first marks the end of the lookup
fields/values; the second marks the end of the update fields/values.
Unfortunately, ast_update2_realtime parses over the lookup fields twice, as
opposed to parsing over the update fields. This causes the lookups to succeed,
but the updates itself to have no effect.
Note that the most common instance of this problem occurred in app_voicemail
during the updating of a mailbox password.
Thanks to the issue reporter, Paddy Grice, for pointing out the problem.
Review: https://reviewboard.asterisk.org/r/4356/
ASTERISK-24231
ASTERISK-24626 #close
Reported by: Paddy Grice
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431072 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-23 14:13 +0000 [e302116e40] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Make CBRec channel names more unique.
Channel names should be different from other channels in the system while
the channel exists.
* Use a sequence number for CBRec channels instead of a random number
because the same random number could be picked again for the next CBRec
channel.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-23 13:44 +0000 [f8b3fb6e2f] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Whitespace
Because there is sometimes no sence to any whitespace.
........
Merged revisions 431049 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-23 11:08 +0000 [197265438e] David M. Lee <dlee@digium.com>
* Add depend on pjproject to res_pjsip_config_wizard.c
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431030 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-23 09:12 +0000 [630eea087d] Kevin Harwell <kharwell@digium.com>
* Investigate and fix memory leaks in Asterisk
Fixed memory leaks that were found in Asterisk.
ASTERISK-24693 #close
Reported by: Kevin Harwell
Review: https://reviewboard.asterisk.org/r/4347/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430999 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-23 09:03 +0000 [e23f07beb8] Walter Doekes <walter+asterisk@wjd.nu>
* Fix typo's (retrieve, specified, address).
........
Merged revisions 430996 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430998 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-23 08:38 +0000 [9210648bbe] HZMI8gkCvPpom0tM (License 6658)
* chan_sip: Case insensitive comparison of "defaultuser" parameter.
All the other configuration options are case insensitive, so this one
should be too.
ASTERISK-24355 #close
Reported by: HZMI8gkCvPpom0tM
patches:
ast.patch uploaded by HZMI8gkCvPpom0tM (License 6658)
........
Merged revisions 430993 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430994 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-22 13:24 +0000 [355eb9d22f] Richard Mudgett <rmudgett@digium.com>
* Bridge core: Pass a ref with the swap channel when joining a bridge.
When code imparts a channel into a bridge to swap with another channel, a
ref needs to be held on the swap channel to ensure that it cannot
dissapear before finding it in the bridge.
* The ast_bridge_join() swap channel parameter now always steals a ref for
the swap channel. This is the only change to the bridge framework's
public API semantics.
* bridge_channel_internal_join() now requires the bridge_channel->swap
channel to pass in a ref.
ASTERISK-24649
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/4354/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430975 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-22 13:13 +0000 [c73b4b2a46] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Minor code cleanup.
* Add an allocation failure check and assert in
sip_outbound_registration_response_cb().
* Made sip_outbound_registration_state_destroy() handle partially created
state objects from sip_outbound_registration_state_alloc().
Review: https://reviewboard.asterisk.org/r/4366/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430957 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-22 12:09 +0000 [bdfdb01bcf] Scott Griepentrog <sgriepentrog@digium.com>
* stasis transfer: fix a race condition on stasis bridge push
After a bridge transfer completes where a local replacement
channel is used, a stasis transfer message with the details
of the transfer is sent. This is processed by stasis which
then sets the stasis app name and replaced channel snapshot
on the replacement channel.
However, since a separate thread was already started to run
stasis on the new replacement channel, a race was on to see
if the message processing would be completed before the app
name was needed, otherwise the channel would be hung up.
This change moves the calls used to set the stasis app name
and the replace snapshot to the bridge_stasis_push function
callback from the bridge transfer logic, allowing the steps
to be completed earlier and more deterministically, and the
race elimianted.
NOTE: the swap channel parameter to bridge_stasis_push (and
thus all bridge push callbacks) must always be present when
performing a swap with another channel.
ASTERISK-24649 #close
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/4341/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430939 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-22 08:23 +0000 [beb20440e0] Gareth Palmer (License 5169)
* apps/app_voicemail: Trigger MWI notification with MixMonitor m() option
The MixMonitor m() option allows a recording to be pushed to a specific
voicemail mailbox. If the message is delivered to the mailbox's INBOX, however,
no MWI notification is currently raised.
This patch corrects the issue by properly calling notify_new_state from the
msg_create_from_file function. This will cause MWI to be triggered if the
message was placed in the mailbox's INBOX.
ASTERISK-24709 #close
Reported by: Gareth Palmer
patches:
app_voicemail-430919.patch uploaded by Gareth Palmer (License 5169)
........
Merged revisions 430920 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430921 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-21 15:53 +0000 [5e10007dbd] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_outbound_registration.c: Move unref to a better place.
Move an unconditional unref of client_state so it doesn't look like it
could be used after the last ref has destroyed it.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430902 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-21 07:33 +0000 [74a13629e2] Matt Jordan <mjordan@digium.com>
* channels/chan_sip: Fix registration leak during reload
When the SIP registrations were migrated to using ao2 in what was then trunk,
the explicit destruction of the registrations on module reload was removed and
not replaced with an ao2 equivalent. Debugging done by Stefan Engström, the
issue reporter, on ASTERISK-24673 confirmed that the reference in the
registry_list container was being leaked.
Since the purpose of cleanup_all_regs is to prep a registration for
destruction, this function now calls an ao2_callback function callback with the
OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the registrations.
This cleans up each registration, and also removes it from the registration
container registry_list.
Review: https://reviewboard.asterisk.org/r/4355/
ASTERISK-24640 #close
Reported by: Max Man
ASTERISK-24673 #close
Reported by: Stefan Engström
Tested by: Stefan Engström
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-21 07:27 +0000 [452f0eeb57] Matt Jordan <mjordan@digium.com>
* AMI: Add documentation for the missing Cdr/CEL events.
This patch adds AMI event documentation for the Cdr and CEL AMI events.
Note that while these events do share fields with each other and with other
channel related events, they do not contain all of the fields in a standard
channel snapshot, nor is the description of the fields identical. As such,
the patch opts for documentation for each field, for each event.
Review: https://reviewboard.asterisk.org/r/4350/
ASTERISK-24671 #close
Reported by: Dan Jenkins
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430862 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-21 07:10 +0000 [894d4d781c] Matt Jordan <mjordan@digium.com>
* apps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values
The Dial application has some interesting options with the mid-call Macro (M)
and GoSub (U) options. If the MACRO_RESULT/GOSUB_RESULT returns specific
values, the Dial application will take some action upon the channels involved
in the dial operation (such as hanging up a particular party, etc.) The Dial
application ensures that a Stasis message is published in the event that
MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial operation, so
that there is a corresponding DialEnd event published in AMI/ARI for the
DialBegin event that preceeded it.
A bug exists where that same DialEnd event will be published on Stasis even if
the value returned in MACRO_RESULT/GOSUB_RESULT is not one that the Dial
application cares about. This causes two DialEnd events to be published - one
with the MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is all
sorts of wrong.
This patch fixes the bug by ensuring that we only publish a DialEnd message to
Stasis if the Dial application's mid-call Macro/GoSub returns something that
Dial cares about.
Review: https://reviewboard.asterisk.org/r/4336
ASTERISK-24682 #close
Reported by: Matt Jordan
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430842 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-21 06:56 +0000 [98c3983c89] Matt Jordan <mjordan@digium.com>
* main/rtp_engine: Format NTP timestamps as unsigned longs
When the RTCP reports are created, the NTP timestamps are stored as strings,
as JSON does not have an integer type long enough to store the value. However,
on 32-bit systems, a signed long may overflow for some portion of the
timestamp.
This patch corrects the overflow by formatting the timestamps as unsigned
longs.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430840 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-20 10:51 +0000 [a7ba8a58a8] Ashley Sanders <asanders@digium.com>
* ARI: Fixed crash that occurred when updating a bridge when the optional query parameter 'name' was not supplied.
Prior to this changeset, posting to the: /ari/bridges/{bridgeId} endpoint without specifying a value for the [name] query parameter, would crash Asterisk if the bridge you are attempting to create (or update) had the same ID as an existing bridge. The internal mechanism of the POST operation interpreted a null value for name, thus resulting in an error condition that crashed Asterisk.
ASTERISK-24560 #close
Reported By: Kinsey Moore
Review: https://reviewboard.asterisk.org/r/4349/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430818 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-20 10:46 +0000 [6af6a216a1] Richard Mudgett <rmudgett@digium.com>
* CHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across a bridge.
Calling ast_channel_bridge_peer() cannot be done while holding any channel
locks. The reported issue hit the deadlock in chan_iax2, but an audit of
the ast_channel_bridge_peer() calls found three more locations where the
same deadlock can occur.
* Made CHANNEL(peer), res_fax, and the SNMP agent not call
ast_channel_bridge_peer() with any channel locked. For CHANNEL(peer) I
had to rework the logic to not hold the channel lock.
* Made chan_iax2 no longer call ast_channel_bridge_peer(). It was done
for legacy reasons that no longer apply.
* Removed the iax.conf forcejitterbuffer option. It is now always enabled
when the jitterbuffer option is enabled. If you put a jitter buffer on a
channel it will be on the channel.
ASTERISK-24600 #close
Reported by: Jeff Collell
Review: https://reviewboard.asterisk.org/r/4342/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-19 20:39 +0000 [072db5e1b9] Ben Klang (License 5876)
* contrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts
On Debian based systems, the install_prereq tool uses a search command on
Debian that results in selecting both 64-bit and 32-bit packages. Besides the
waste of disk space, this can actually cause aptitude use 100% of memory on a
VM with 1GB of RAM as it tried to work out all of the 32-bit package
dependencies.
This patch filters out the 32-bit packages on a 64-bit machine, and leaves
32-bit machines alone.
ASTERISK-24048 #close
Reported by: Ben Klang
Tested by: Ben Klang, Matt Jordan
patches:
install_prereq_64-bit_compat.patch uploaded by Ben Klang (License 5876)
........
Merged revisions 430798 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-19 20:32 +0000 [e659b3e53d] LEI FU (License 6640)
* app_voicemail: Temp message left after review/hangup with ODBC/IMAP backend
When using ODBC or IMAP storage, temporary files created on the file system
must be disposed of using the DISPOSE macro. The DELETE macro will map to a
deletion function for the backend storage, but does not clean up any local
files created as a result of the operation.
When using voicemail with the operator and review options enabled, pressing
0 to enter the menu, followed by 1 to save the message, followed by any
other DTMF press to delete the message, will result in the temporary file
lingering on the file system.
This patch properly calls DISPOSE after the DELETE. This causes the local
file to be disposed of.
ASTERISK-24288 #close
Reported by: LEI FU
patches:
voicemail_odbc_review_fix.diff uploaded by LEI FU (License 6640)
........
Merged revisions 430795 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430796 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-19 12:05 +0000 [ab5af1f3d8] Mark Michelson <mmichelson@digium.com>
* Call extension state callbacks at hint creation.
When a hint gets created, any subsequent device or presence
state changes result in extension status events getting sent
out to interested parties. However, at the time of hint creation,
no such event gets sent out, so watchers of extension state are
potentially left in the dark until the first state change after
hint creation.
Patch contributed by John Hardin (License #6512)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430776 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-19 07:18 +0000 [643b81d98e] Joshua Colp <jcolp@digium.com>
* res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions.
The first thing this patch fixes is UAS dialogs. Previously if a transport was
configured on an endpoint and an inbound session was created there was no guarantee
that requests sent on the dialog would use the correct transport and address
information. This has now been fixed so an explicitly configured transport
is taken into account.
The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed
module attempts to determine what transport a message should go out on and what
addressing information should go into the message itself. In a scenario where
multiple transports exist bound to the same IP address but a different port the
code would incorrectly alter the transport and change the message to the wrong
transport. This change makes the res_pjsip_multihomed module smarter so it will
only change the transport and address information in the message when it is
possible and makes sense.
ASTERISK-24615 #close
Reported by: David Justl
Review: https://reviewboard.asterisk.org/r/4331/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430755 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-16 18:31 +0000 [34c220203f] Kevin Harwell <kharwell@digium.com>
* REVERTING res_pjsip: make it unloadable
Due to the original patch causing memory corruptions the patch is
being removed until the problem can be resolved.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-16 16:13 +0000 [e257244bbb] Mark Michelson <mmichelson@digium.com>
* Change PJProject version requirement for ca_list_path transport option in CHANGES file.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430716 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-16 16:12 +0000 [821c15ae53] Mark Michelson <mmichelson@digium.com>
* Fix problem where a hung channel could occur on a failed blind transfer.
Different clients react differently to being told that a blind transfer
has failed. Some will simply send a BYE and be done with it. Others will
attempt to reinvite themselves back onto the call.
In the latter case, we were creating a new channel and then leaving it to
sit forever doing nothing. With this code change, that new channel will
not be created and the dialog with the transferring channel will be cleaned
up properly.
ASTERISK-24624 #close
Reported by Zane Conkle
Review: https://reviewboard.asterisk.org/r/4339
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430714 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-16 11:45 +0000 [8bc4a89e1f] cloos <cloos@jhcloos.com> (License #5956)
* Add support for the ca_list_path option for PJSIP transports.
This allows for a path to be specified that has a collection of CA
certificates in it.
ASTERISK-24575 #close
Reported by cloos
Patches:
pj-ca-path-trunk.diff uploaded by cloos (License #5956)
Review: https://reviewboard.asterisk.org/r/4344
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-15 11:35 +0000 [fa80d9658d] Richard Mudgett <rmudgett@digium.com>
* res_fax.c, res_fax_spandsp.c: Remove redundant locking.
When FAX was developed, apparently the faxregistry.container used to be a
linked list that was converted to an ao2 container. Some of the
replacement ao2 container operations still had explicit lock/unlocks
around them.
Three off nominal code paths in res_fax.c and res_fax_spandsp.c unlock the
channel even though the routine did not lock the channel and other code
paths in the routine do not unlock the channel.
Review: https://reviewboard.asterisk.org/r/4340/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430687 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-15 11:18 +0000 [6c426e86bd] Richard Mudgett <rmudgett@digium.com>
* res_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430685 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-15 06:09 +0000 [c95391f23c] Joshua Colp <jcolp@digium.com>
* res_pjsip_outbound_registration: Fix race condition when reloading and listing registrations.
Due to the split of outbound registration state from configuration it is possible during
a reload for a "pjsip show registrations" CLI command to be executed which gets an older
snapshot of the configuration. This configuration may include outbound registrations which
have been removed due to a reload operation occurring at the same time. The code for
printing the outbound registration did not take this into account but now it does.
AST-1506 #close
Review: https://reviewboard.asterisk.org/r/4338/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430664 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-14 20:18 +0000 [f6630e2481] abelbeck <lonnie@abelbeck.com> (License 5903)
* configure: If cross-compiling, assume we have working semaphores
The Asterisk 13 configure.ac checks for HAS_WORKING_SEMAPHORE but does not have
an option for cross-compiling so it fails with an exit. Since we're cross-
compiling, we can't exactly go looking for the header. The semaphore.h header
is relatively common:
* It's part of the POSIX standard
* It's part of GNU C Library
As such, we assume that it will be present when cross-compiling.
As such, this patch defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling
is detected.
If you're cross-compiling to a platform that doesn't support this, then make
sure you re-define this to 0.
ASTERISK-24663 #close
Reported by: abelbeck
patches:
asterisk-13-anonymous-semaphores.patch uploaded by abelbeck (License 5903)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430646 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-14 17:14 +0000 [77a036bf3f] Corey Farrell <git@cfware.com> (license 5909)
* res_pjsip: make it unloadable
The res_pjsip module was previously unloadable. With this patch it can now
be unloaded.
This patch is based off the original patch on the issue (listed below) by Corey
Farrell with a few modifications. Namely, removed a few changes not required to
make the module unloadable and also fixed a bug that would cause asterisk to
crash on unloading.
This patch is the first step (should hopefully be followed by another/others at
some point) in allowing res_pjsip and the modules that depend on it to be
unloadable. At this time, res_pjsip and some of the modules that depend on
res_pjsip cannot be unloaded without causing problems of some sort.
The goal of this patch is to get res_pjsip and only res_pjsip to be able to
unload successfully and/or shutdown without incident (crashes, leaks, etc...).
Other dependent modules may still cause problems on unload.
Basically made sure, with the patch applied, that res_pjsip (with no other
dependent modules loaded) could be succesfully unloaded and Asterisk could
shutdown without any leaks or crashes that pertained directly to res_pjsip.
ASTERISK-24485 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4311/
patches:
pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-14 14:27 +0000 [e370c9e68e] Mark Michelson <mmichelson@digium.com>
* Prevent slow graceful shutdown when outbound publications never started.
The code was missing the case for explicitly destroying an outbound publication
when Asterisk had never actually published anything. The result was that Asterisk
would hang for a while on a graceful shutdown.
With this change, the case is taken into account, and on a graceful shutdown, these
publications are destroyed without the need to actually send a PUBLISH request.
ASTERISK-24655 #close
Reported by Kevin Harwell
Review: https://reviewboard.asterisk.org/r/4325
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-14 09:39 +0000 [89a431df84] Diederik de Groot (License 6600)
* build_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc
The mkpkgconfig script incorrectly concatenates Cflags options together. As an
example, the following:
Cflags: -I/usr/include/libxml2 -g3
Is instead generated as:
Cflags: -I/usr/include/libxml2-g3
This patch corrects the generation of Cflags in mkpkgconfig such that the
Cflags options are output correctly.
Review: https://reviewboard.asterisk.org/r/3707/
ASTERISK-23991 #close
Reported by: Diederik de Groot
patches:
fix_mkpkgconfig.diff uploaded by Diederik de Groot (License 6600)
........
Merged revisions 430589 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430590 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-13 12:16 +0000 [1f94b96749] Richard Mudgett <rmudgett@digium.com>
* app_macro: Don't restore the calling location on a channel redirect.
v11: If a channel redirect to a macro exten of a macro that is active
happens, the redirect location doesn't get executed. Instead the original
macro location is restored and gets reexecuted.
v13: An additional effect happens if a parked call times out to an
extension in the macro that parked the call then the macro is reexecuted
instead of the expected park return location.
* Made not restore the macro calling location on an
AST_SOFTHANGUP_ASYNCGOTO.
* Increased the locked channel range when setting up the macro execution
environment to cover things that should be done while the channel is
locked.
* Removed unnecessary NULL tests before calling ast_free() in
_macro_exec().
ASTERISK-23850 #close
Reported by: Andrew Nagy
Review: https://reviewboard.asterisk.org/r/4292/
........
Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-13 06:06 +0000 [056f11ac65] Joshua Colp <jcolp@digium.com>
* chan_pjsip: Add configure check for 'pjsip_get_dest_info' function.
The 'pjsip_get_dest_info' function is used to determine if the signaling transport
of the dialog is secure or not. This function was added in PJSIP 2.3 and does not
exist in earlier versions.
This configure check allows Asterisk to build and run with older versions at the
loss of the 'secure' argument for the PJSIP CHANNEL dialplan function. Usage of
this argument will require upgrading to PJSIP 2.3.
ASTERISK-24665 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4329/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-12 12:34 +0000 [368ecf13bf] Richard Mudgett <rmudgett@digium.com>
* AMI: Revert non-backwards compatible changes from earlier commit.
* Reverted the change to astman_send_listack() to not use the listflag
parameter and always set the value to "Start" so the start capitalization
is consistent. Unfortunately changing the case of a returned value is not
a backward compatible change so for now FAXSessions is going to have to
remain inconsistent with all of the other AMI list actions.
* Reverted the minor protocol error fix in action_getconfig() when no
requested categories are found. Each line needs to be formatted as
"Header: text".
Caught by the testsuite.
ASTERISK-24049
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-12 12:28 +0000 [7d606d87bf] Niklas Larsson (License 5068)
* configs/samples/features.conf.sample: Document attended transfer DTMF options
The sample config was missing the configuration options for DTMF attended
transfer completion scenarios. The configuration options 'atxferabort',
'atxfercomplete', 'atxferthreeway', and 'atxferswap' are now documented in the
appropriate configuration file.
ASTERISK-24678 #close
Reported by: Niklas Larsson
patches:
features.conf.sample.diff uploaded by Niklas Larsson (License 5068)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430526 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-12 12:01 +0000 [4e2be8fb8f] Michael L. Young (license 5026)
* main/syslog: Allow dynamic logs, such as security events, to log to the syslog
The security event log uses a dynamic log level (SECURITY) that is registered
with the Asterisk logging core. Unfortunately, the syslog would ignore log
statements that had a dynamic log level associated with them. Because the
syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic
log entries sent to the syslog as logs with a level of NOTICE.
ASTERISK-20744 #close
Reported by: Michael Keuter
Tested by: Michael L. Young, Jacek Konieczny
patches:
asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026)
........
Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430507 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-12 09:18 +0000 [dc993db55c] Kristian Hogh (License 6639)
* funcs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed
When the channel datastore associated with the usage of CURLOPT on a specific
channel is freed, the underlying structure holding the list of options is not
disposed of. This patch properly frees the structure in the datastore .destroy
callback.
ASTERISK-24672 #close
Reported by: Kristian Hogh
patches:
func_curl-memory-leak.diff uploaded by Kristian Hogh (License 6639)
........
Merged revisions 430487 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430488 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-09 16:08 +0000 [4791d629d1] Scott Griepentrog <sgriepentrog@digium.com>
* sip_to_pjsip: improve ability to parse input files
General improvements to SIP to PJSIP conversion utility:
1) track default section of input file to allow parsing
an include file that doesn't specify a [section]
2) informatively handle case of assignment without [section]
3) correctly handle getting sections from included files
- [section]'s are inherited by included file
4) provide null string as default transport bind ip
5) gracefully handle missing portions of registration string
6) denote steps of operation during conversion and confirm
top level files as a convenience
ASTERISK-24474 #close
Review: https://reviewboard.asterisk.org/r/4280/
Reported by: John Kiniston
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-09 15:44 +0000 [2b0d522dbb] Scott Griepentrog <sgriepentrog@digium.com>
* app_bridge: return to the next dialplan priority
When app_bridge grabs a channel and puts it into
a bridge, the channel should then continue where
it left off in the dialplan after the bridge has
ended. Although it stores the current dialplan
location as an after bridge goto on the channel,
it was executing the same priority again instead
of going to the next priority. By swapping the
"specific" version of bridge_set_after_goto with
bridge_set_after_go_on, the next priority in the
dialplan is executed instead.
ASTERISK-24637 #close
Review: https://reviewboard.asterisk.org/r/4322/
Reported by: John Bigelow
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430467 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-09 11:54 +0000 [4b363688d4] Richard Mudgett <rmudgett@digium.com>
* AMI: Make AMI actions that generate event lists consistent.
* Made the following AMI actions use list API calls for consistency:
Agents
BridgeInfo
BridgeList
BridgeTechnologyList
ConfbridgeLIst
ConfbridgeLIstRooms
CoreShowChannels
DAHDIShowChannels
DBGet
DeviceStateList
ExtensionStateList
FAXSessions
Hangup
IAXpeerlist
IAXpeers
IAXregistry
MeetmeList
MeetmeListRooms
MWIGet
ParkedCalls
Parkinglots
PJSIPShowEndpoint
PJSIPShowEndpoints
PJSIPShowRegistrationsInbound
PJSIPShowRegistrationsOutbound
PJSIPShowResourceLists
PJSIPShowSubscriptionsInbound
PJSIPShowSubscriptionsOutbound
PresenceStateList
PRIShowSpans
QueueStatus
QueueSummary
ShowDialPlan
SIPpeers
SIPpeerstatus
SIPshowregistry
SKINNYdevices
SKINNYlines
Status
VoicemailUsersList
* Incremented the AMI version to 2.7.0.
* Changed astman_send_listack() to not use the listflag parameter and
always set the value to "Start" so the start capitalization is consistent.
i.e., The FAXSessions used "Start" while the rest of the system used
"start". The corresponding complete event always used "Complete".
* Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the
AMI ActionID for all of its list events.
* Fixed off-nominal AMI protocol error in manager_bridge_info(),
manager_parking_status_single_lot(), and
manager_parking_status_all_lots(). Use of astman_send_error() after
responding to the original AMI action request violates the action response
pattern by sending two responses.
* Fixed minor protocol error in action_getconfig() when no requested
categories are found. Each line needs to be formatted as "Header: text".
* Fixed off-nominal memory leak in manager_build_parked_call_string().
* Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail().
ASTERISK-24049 #close
Reported by: Jonathan Rose
Review: https://reviewboard.asterisk.org/r/4315/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430434 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-09 08:51 +0000 [eb9ce791d8] Kinsey Moore <kmoore@digium.com>
* res_fax: Add T.38 negotiation timeout option
This change makes the T.38 negotiation timeout configurable via
't38timeout' in res_fax.conf or FAXOPT(t38timeout). It was previously
hard coded to be 5000 milliseconds.
This change also handles T.38 switch failures by aborting the fax since
in the case where this can happen, both sides have agreed to switch to
T.38 and Asterisk is unable to do so.
Review: https://reviewboard.asterisk.org/r/4320/
........
Merged revisions 430415 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-08 15:40 +0000 [b937438c17] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown
If you do a 'core (shutdown|restart) graceful' persistent subscriptions won't
survive. If you do a 'core (shutdown|restart) now' or asterisk terminates for
some reason, they do. Here's why...
When asterisk shuts down gracefully, it sends a 'NOTIFY/terminated' to
subscribers for each subscription. This not only tells the subscribers that the
dialog/state machine is done, it also frees the last reference to the
subscription tree which causes the persistent subscription to get deleted from
astdb. When asterisk restarts, nothing's left. Just preventing the delete from
astdb doesn't work because we already told the subscriber to terminate the
dialog so we can't restart it even if it was still in astdb. Everything works
OK if asterisk terminates unexpectedly because we never send the 'terminated'
message so on restart, the subscription is still in astdb and the subscriber is
none the wiser.
This patch suppresses the sending of 'NOTIFY/terminated' on shutdown for
persistent connections.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4318/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430397 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-08 15:37 +0000 [143bec54ee] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_outbound_registration: Fix reference leak.
Every time a registration started, sip_outbound_registration_response_cb bumps
the ref count on client_state then pushes a handle_registration_response task.
handle_registration_response never unreffed it though. So every time a
registration goes out, the ref count goes up by one.
This patch adds the unreffs to handle_registration_response.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4303/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430395 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-08 11:48 +0000 [6e59bf6491] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_outbound_registration: Fix several reload issues
There are 2 issues with reloading registrations...
1. The 'can_reuse_registration' test wasn't considering the intervals or
expiration in its determination of whether a registration changed or not so if
you changed any of the intervals or the expiration and reloaded, the object
would get reloaded but the actual timers wouldn't change.
can_reuse_registration now does a sorcery diff on the old and new objects
instead of discretely testing certain fields. Now if you change expiration for
instance, and reload, the timer is updated and re-registration will occur on the
new value.
2. If you mung up your password on an outbound registration you get a permanent
failure. If you fix the password (on the outbound_auth object) and reload,
nothing tells outbound_registration to try again because the registration itself
didn't change. This patch adds an observer on the "auth" object type and if any
auth changes, existing registration states are searched and those in a
REJECTED_PERMANENT state are retried.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4304/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430373 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 15:25 +0000 [8f3c60cee7] Kinsey Moore <kmoore@digium.com>
* ARI: Allow usage of ASYNCGOTO with Stasis()
When the AMI Redirect action is used with a channel bridged inside
Stasis() and not running a pbx, the channel is hung up instead of
proceeding to the desired location in dialplan. This change allows
such channels to be Redirected properly by detecting the operation
used by Redirect (ASYNCGOTO) and using the code already established
for functionality of the ARI channel continue operation.
ASTERISK-24591 #close
Review: https://reviewboard.asterisk.org/r/4271/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 12:53 +0000 [42b342c6e2] Mark Michelson <mmichelson@digium.com>
* Add the ability to continue and originate using priority labels.
With this patch, the following two ARI commands
POST /channels
POST /channels/{id}/continue
Accept a new parameter, label, that can be used to continue to or originate
to a priority label in the dialplan.
Because this is adding a new parameter to ARI commands, the API version of
ARI has been bumped from 1.6.0 to 1.7.0.
This patch comes courtesy of Nir Simionovich from Greenfield Tech. Thanks!
ASTERISK-24412 #close
Reported by Nir Simionovich
Review: https://reviewboard.asterisk.org/r/4285
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 12:17 +0000 [a10d2966b6] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_exten_state: Change 'does not exist' warning to notice
The 'new_subscribe: Extension <> does not exist or has no associated hint'
is a config issue and doesn't need to clutter up logs with warnings.
Changed to notice.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4307/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 12:14 +0000 [13ed8f73ed] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice
The "MWI Subscription failed" message means the client is trying to subscribe
to a mailbox that doesn't exist. There's no need to clutter up logs with
warnings for a client misconfiguration so I changed it to a notice.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4306/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430317 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 11:51 +0000 [42e4cb7174] gtjoseph <george.joseph@fairview5.com>
* func_config: Add ability to retrieve specific occurrence of a variable
I guess nobody uses templates with AST_CONFIG because today if you have a
context that inherits from a template and you call AST_CONFIG on the context,
you'll get the value from the template even if you've overridden it in the
context. This is because AST_CONFIG only gets the first occurrence which is
always from the template.
This patch adds an optional 'index' parameter to AST_CONFIG which lets you
specify the exact occurrence to retrieve, or '-1' to retrieve the last.
The default behavior is the current behavior.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4313/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430315 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 11:35 +0000 [9ea8dd036f] Mark Michelson <mmichelson@digium.com>
* Fix ability to perform a remote attended transfer with PJSIP.
This fix has two parts:
* Corrected an error message to properly state that external_replaces is an extension. The
error message also prints what dialplan context the external_replaces extension was being
looked for in.
* Corrected the printing of the Replaces: header in an INVITE request. We were duplicating
"Replaces: " in the header.
ASTERISK-24376 #close
Reported by Matt Jordan
Review: https://reviewboard.asterisk.org/r/4296
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430313 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-07 10:55 +0000 [75cd302b0a] gtjoseph <george.joseph@fairview5.com>
* config: Add option to NOT preserve effective context when changing a template
Let's say you have a template T with variable VAR1 = ON and you have a
context C(T) that doesn't specify VAR1. If you read C, the effective value
of VAR1 is ON. Now you change T VAR1 to OFF and call
ast_config_text_file_save. The current behavior is that the file gets
re-written with T/VAR1=OFF but C/VAR1=ON is added. Personally, I think this
is a bug. It's preserving the effective state of C even though I didn't
specify C/VAR1 in th first place. I believe the behavior should be that if
I didn't specify C/VAR1 originally, then the effective value of C/VAR1 should
continue to follow the inherited state. Now, if I DID explicitly specify
C/VAR1, the it should be preserved even if the template changes.
Even though I think the existing behavior is a bug, it's been that way forever
so I'm not changing it. Instead, I've created ast_config_text_file_save2()
that takes a bitmask of flags, one of which is to preserve the effective context
(the current behavior). The original ast_config_text_file_save calls *2 with
the preserve flag. If you want the new behavior, call *2 directly without a
flag.
I've also updated Manager UpdateConfig with a new parameter
'PreserveEffectiveContext' whose default is 'yes'. If you want the new behavior
with UpdateConfig, set 'PreserveEffectiveContext: no'.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4297/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430295 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-06 20:52 +0000 [e17a1a8ba1] Kinsey Moore <kmoore@digium.com>
* Fix dev-mode build on recent gcc
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-06 16:46 +0000 [dd42e92e7a] Matt Jordan <mjordan@digium.com>
* contrib/ast-db-manage: Correct down_revision path for user_eq_phone
When the user_eq_phone patch was backported to 13, it referenced the downward
revision that the PJSIP optimistic encryption option also references. This
creates a multi-path upgrade Exception when generating the SQL files.
This patch corrects this in the 13 branch. Note that trunk, which already
contained both of these features, is unaffected by this problem.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430252 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-06 11:52 +0000 [4becfae3b1] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_mwi: Change warning to notice
When res_pjsip loads and an endpoint auto-subscribes a mailbox for mwi,
if a contact hasn't registered yet, res_pjsip_mwi spits out a warning.
This is a perfectly normal situation though and doesn't require something
as serious as a warning. It's also self correcting. The device will start
getting mwi as soon as it registers.
This patch changes the warning to a notice.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4314/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430227 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-06 11:46 +0000 [9d457fe5c2] gtjoseph <george.joseph@fairview5.com>
* bridge_native_rtp: Change local/remote message from debug/2 to verb/4
Change the "Locally bridged"/"Remotely bridged" messages from dbg/2 to verb/4.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4300/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430225 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-06 11:35 +0000 [0fa6c34dc6] gtjoseph <george.joseph@fairview5.com>
* outbound_registration: Add 'pjsip send register' and update 'send unregister'
The current behavior of 'pjsip send unregister' is to send the unregister
(REGISTER with 0 exp) but let the next scheduled register proceed normally.
I don't think that's a good idea. If you unregister, it should stay
unregistered until you decide to start registrations again. So this patch
just adds a cancel_registration call to the current unregister_task to
cancel the timer.
Of course, now you need a way to start registration again so I've added
a 'pjsip send register' command that unregisters and cancels any existing
registration (the same as send unregister), then sends an immediate
registration and starts the timer back up again.
Both changes also ripple to AMI. There's a new PJSIPRegister command.
There's no harm in calling either command repeatedly. They don't care
about the actual state.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4301/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430223 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-06 11:28 +0000 [d873b09075] gtjoseph <george.joseph@fairview5.com>
* pjsip cli: Fix sorting of contacts for 'pjsip list contacts'
For some reason I was using a hash container instead of a list to gather the
contacts for 'pjsip list/show contacts' so even though I had a sort function,
the output wasn't sorted. This patch just changes the hash container to a
list container and the contacts now appear sorted in the CLI.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4305/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-05 16:49 +0000 [566907fabd] Scott Griepentrog <sgriepentrog@digium.com>
* bridge: avoid leaking channel during blond transfer pt2
A blond transfer to a failed destination, when followed
by a recall attempt, lead to a leak of the reference to
the destination channel. In addition to correcting the
regression on the previous attempt (r429826) this fixes
the leak and two additional reference leaks on failures
of bridge_import.
ASTERISK-24513 #close
Review: https://reviewboard.asterisk.org/r/4302/
........
Merged revisions 430199 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-05 11:56 +0000 [b9a7875dd6] Joshua Colp <jcolp@digium.com>
* pjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430181 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-01-05 11:51 +0000 [a7c38428af] Joshua Colp <jcolp@digium.com>
* pjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions.
The PJSIP_AOR dialplan function allows inspection of configured AORs including
what contacts are currently bound to them.
The PJSIP_CONTACT dialplan function allows inspection of contacts in existence.
These can include both externally added (by way of registration) or permanent
ones.
ASTERISK-24341
Reported by: xrobau
Review: https://reviewboard.asterisk.org/r/4308/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430179 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-29 07:10 +0000 [cca262e7d3] Kinsey Moore <kmoore@digium.com>
* PJSIP: Update transport method documentation
This updates the documentation for the 'method' configuration option to
be more verbose about the behaviors of values 'unspecified' and
'default'. They do exactly the same thing which is to select the
default as defined by PJSIP which is currently TLSv1.
Review: https://reviewboard.asterisk.org/r/4264/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-24 15:27 +0000 [1a0979d437] Kevin Harwell <kharwell@digium.com>
* app_queue: Update sample conf documenation
Updated the queues.conf.sample file to explicitly state which channel queue
variables are propagated to.
ASTERISK-24267
Reported by: Mitch Claborn
........
Merged revisions 430126 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430127 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-24 09:26 +0000 [b521c612fc] Matt Jordan <mjordan@digium.com>
* res_pjsip: Backport missing commits for user_eq_phone
This backports the following from trunk, which were missed:
r427257 | file | 2014-11-04 16:31:16 -0600 (Tue, 04 Nov 2014) | 2 lines
res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled.
r427259 | file | 2014-11-04 16:51:32 -0600 (Tue, 04 Nov 2014) | 2 lines
res_pjsip: Apply the 'user_eq_phone' setting to the To header as well.
It also adds the Alembic script for the option.
ASTERISK-24643
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-24 07:25 +0000 [915bb88d3e] Matt Jordan <mjordan@digium.com>
* res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriented transports.
Note that this is backport from trunk of r425825.
This change adds a module which is configurable using the keep_alive_interval setting in the
global section that will send a CRLF keep alive to all active connection-oriented transports at
the provided interval. This is useful because it can help keep connections open through NATs.
This functionality also exists within PJSIP but can not be controlled at runtime and requires
recompiling it.
Review: https://reviewboard.asterisk.org/r/4084/
ASTERISK-24644 #close
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430084 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-24 07:20 +0000 [006ffdcfb2] Matt Jordan <mjordan@digium.com>
* res_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable.
Note that this is a backport of r425804 from trunk.
This change adds a configuration option which adds a 'user=phone' parameter if the user
portion of the request URI or the From URI is determined to be a number.
Review: https://reviewboard.asterisk.org/r/4073/
ASTERISK-24643 #close
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430083 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-23 17:18 +0000 [d1c532034b] gtjoseph <george.joseph@fairview5.com>
* pjsip_options: Fix continued qualifies after endpoint/aor deletion
If you remove an endpoint/aor from pjsip.conf then do a core reload,
qualifies will continue even though the object are gone. This happens
because nothing clears out the qualify tasks.
This patch unschedules all existing qualify tasks before scheduling
new ones on reload.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4290/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-23 17:15 +0000 [0a3dd7589e] gtjoseph <george.joseph@fairview5.com>
* test_astobj2: Fix warning for missing trailing slash in category
This patch adds a trailing slash to the category for this test.
No more warning.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4295/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-22 15:18 +0000 [7a356232bd] Richard Mudgett <rmudgett@digium.com>
* DTMF atxfer: Setup recall channels as if the transferee initiated the call.
After the initial DTMF atxfer call attempt to the transfer target fails to
answer during a blonde transfer, the recall callback channels do not get
setup with information from the initial transferrer channel. As a result,
the recall callback to the transferrer does not have callid, channel
variables, datastores, accountcode, peeraccount, COLP, and CLID setup. A
similar situation happens with the recall callback to the transfer target
but it is less visible. The recall callback to the transfer target does
not have callid, channel variables, datastores, accountcode, peeraccount,
and COLP setup.
* Added missing information to the recall callback channels before
initiating the call. callid, channel variables, datastores, accountcode,
peeraccount, COLP, and CLID
* Set callid of the transferrer channel on the DTMF atxfer controller
thread attended_transfer_monitor_thread().
* Added missing channel unlocks and props unref to off nominal paths in
attended_transfer_properties_alloc().
ASTERISK-23841 #close
Reported by: Richard Mudgett
Review: https://reviewboard.asterisk.org/r/4259/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-22 13:44 +0000 [fca0be57d9] Richard Mudgett <rmudgett@digium.com>
* queue_log: Post QUEUESTART entry when Asterisk fully boots.
The QUEUESTART log entry has historically acted like a fully booted event
for the queue_log file. When the QUEUESTART entry was posted to the log
was broken by the change made by ASTERISK-15863.
* Made post the QUEUESTART queue_log entry when Asterisk fully boots.
This restores the intent of that log entry and happens after realtime has
had a chance to load.
AST-1444 #close
Reported by: Denis Martinez
Review: https://reviewboard.asterisk.org/r/4282/
........
Merged revisions 430009 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-22 09:40 +0000 [9735a13429] Karsten Wemheuer (License 5930)
* chan_sip: Send CANCEL via original INVITE destination even after UPDATE request
Given the following scenario:
* Three SIP phones (A, B, C), all communicating via a proxy with Asterisk
* A call is established between A and B. B performs a SIP attended transfer of
A to C. B sets the call on hold (A is hearing MOH) and dials the extension of
C. While phone C is ringing, B transfers the call (that is, what we typically
call a 'blond transfer').
* When the transfer completes, A hears the ringing of phone C, while B is idle.
In the SIP messaging for the above scenario, a REFER request is sent to
transfer the call. When "sendrpid=yes" is set in sip.conf, Asterisk may send an
UPDATE request to phone C to update party information. This update is sent
directly to phone C, not through the intervening proxy. This has the unfortunate
side effect of providing route information, which is then set on the sip_pvt
structure for C. If someone (e.g. B) is trying to get the call back (through a
directed pickup), Asterisk will send a CANCEL request to C. However, since we
have now updated the route set, the CANCEL request will be sent directly to C
and not through the proxy. The phone ignores this CANCEL according to RFC3261
(Section 9.1).
This patch updates reqprep such that the route is not updated if an UPDATE
request is being sent while the INVITE state is INV_PROCEEDING or
INV_EARLY_MEDIA. This ensures that a subsequent CANCEL request is still sent
to the correct location.
Review: https://reviewboard.asterisk.org/r/4279
ASTERISK-24628 #close
Reported by: Karsten Wemheuer
patches:
issue.patch uploaded by Karsten Wemheuer (License 5930)
........
Merged revisions 429982 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429983 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-21 18:17 +0000 [fc79cf6428] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_phoneprovi_provider: Fix reload
Reloading wasn't working correctly because on a reload, the sorcery apply
handler was never being called for unchanged users. So, instead of using
an apply handler, I'm now iterating over all users. Works much more reliably.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4288/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429914 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-20 14:57 +0000 [f88460115f] Joshua Colp <jcolp@digium.com>
* acl: Fix reloading of configuration if configuration file does not exist at startup.
The named ACL code incorrectly destroyed the config options information if loading
of the configuration file failed at startup. This would result in reloading
also failing even if a valid configuration file was put in place.
ASTERISK-23733 #close
Reported by: Richard Kenner
........
Merged revisions 429893 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-19 14:54 +0000 [4b054bdc6d] Richard Mudgett <rmudgett@digium.com>
* res_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write().
This won't fix the reported issue but it is an incorrect use of sizeof.
ASTERISK-24566
Reported by: Badalian Vyacheslav
........
Merged revisions 429867 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-19 11:31 +0000 [7074bf956b] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi: Don't ignore setvar when using configuration section scheme.
When the configuration section scheme of chan_dahdi.conf is used (keyword
dahdichan instead of channel) all setvar= options are completely ignored.
No variable defined this way appears in the created DAHDI channels.
* Move the clearing of setvar values to after the deferred processing of
dahdichan.
AST-1378 #close
Reported by: Guenther Kelleter
Patch by: Guenther Kelleter
........
Merged revisions 429825 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429829 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-19 11:26 +0000 [6a99df47c0] Scott Griepentrog <sgriepentrog@digium.com>
* bridge: avoid leaking channel during blond transfer
After a blond transfer (start attended and hang up)
to a destination that also hangs up without answer,
the Local;1 channel was leaked and would show up on
core show channels. This was happening because the
attended state blond_nonfinal_enter() resetting the
props->transfer_target to null while releasing it's
own reference, which would later prevent props from
releasing another reference during destruction. The
change made here is simply to not assign the target
to NULL.
ASTERISK-24513 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4262/
........
Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429827 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-18 16:38 +0000 [b22c833c12] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5.
ASTERISK-24337 #close
Reported by: Rusty Newton
........
Merged revisions 429804 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429805 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-18 14:03 +0000 [e603fbe04a] Richard Mudgett
* chan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode.
For the featdmf signaling mode the incoming MF Caller-ID information is
formatted as follows: *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}#
Rather than discarding the ani2 digits, populate the CALLERID(ani2) value
with what is received instead.
AST-1368 #close
Reported by: Denis Martinez
Patches:
extract_ani2_for_featdmf_v11.patch (license #5621) patch uploaded by Richard Mudgett
........
Merged revisions 429783 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429784 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-18 09:50 +0000 [4fad85f9bf] Kevin Harwell <kharwell@digium.com>
* res_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible
A native rtp bridge was being chosen (it shouldn't have been) when using two
pjsip channels with incompatible DTMF modes. This patch sets the rtp instance
property, AST_RTP_PROPERTY_DTMF, for the appropriate DTMF mode(s) for pjsip.
It was not being set before, meaning all DTMF modes for pjsip were being treated
as compatible, thus native bridging would be chosen as the bridge type when it
shouldn't have been.
ASTERISK-24459 #close
Reported by: Yaniv Simhi
Review: https://reviewboard.asterisk.org/r/4265/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429763 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-18 09:34 +0000 [14d2f8f20f] Mark Michelson <mmichelson@digium.com>
* Prevent potential infinite outbound authentication loops in registration.
Prior to this patch, Asterisk would always respond to 401 responses to
registration attempts by trying to provide a registration with authentication
credentials. Even if subsequent attempts were rejected with 401 responses,
Asterisk would continue this behavior. If authentication credentials were
incorrect, this could continue forever.
With this patch, we keep track of whether we have attempted authentication
on an outbound registration attempt. If we already have, we don not try
again until the next attempt. This prevents the infinite loop scenario.
Review: https://reviewboard.asterisk.org/r/4273
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429761 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-18 09:05 +0000 [c1582929f9] Mark Michelson <mmichelson@digium.com>
* Prevent possible race condition on dual redirect of channels in the same bridge.
The AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent bridges from
prematurely acting on orphaned channels in bridges. The problem with the AMI
redirect action was that it was setting this flag on channels based on the presence
of a PBX, not whether the channel was in a bridge. Whether a channel has a PBX
is irrelevant, so the condition has been altered to check if the channel is in a
bridge.
ASTERISK-24536 #close
Reported by Niklas Larsson
Review: https://reviewboard.asterisk.org/r/4268
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429741 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-18 08:43 +0000 [5bd5f580c1] Mark Michelson <mmichelson@digium.com>
* Ensure the correct value is returned for CHANNEL(pjsip, secure)
Prior to this patch, we were using the PJSIP dialog's secure flag
to determine if a secure transport was being used. Unfortunately,
the dialog's secure flag was only set if a SIPS URI were in use,
as required by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested
in is not dialog security, but transport security. This code change
switches to a model where we use the dialog's target URI to determine
what transport would be used to communicate, and then check if that
transport is secure.
AST-1450 #close
Reported by John Bigelow
Review: https://reviewboard.asterisk.org/r/4277
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429739 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-17 18:10 +0000 [b4621cd0f5] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: fix unload SEGV
If certain pjsip modules aren't loaded, the wizard causes a SEGV
when it unloads. Added a check for the presense of the object
type wizard before trying to clean it up.
Tested-by: George Joseph
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429719 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-17 17:05 +0000 [105f224cfd] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination
The module now applies the FILEUNCHANGED flag when both reloaded is
specified AND there's no last_config for the object type.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4276/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429699 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-17 03:54 +0000 [9ae57e0dd6] Walter Doekes <walter+asterisk@wjd.nu>
* Fix printf problems with high ascii characters after r413586 (1.8).
In r413586 (1.8) various casts were added to silence gcc 4.10 warnings.
Those fixes included things like:
-out += sprintf(out, "%%%02X", (unsigned char) *ptr);
+out += sprintf(out, "%%%02X", (unsigned) *ptr);
That works for low ascii characters, but for the high range that yields
e.g. FFFFFFC3 when C3 is expected.
This changeset:
- fixes those casts to use the 'hh' unsigned char modifier instead
- consistently uses %02x instead of %2.2x (or other non-standard usage)
- adds a few 'h' modifiers in various places
- fixes a 'replcaes' typo
- dev/urandon typo (in 13+ patch)
Review: https://reviewboard.asterisk.org/r/4263/
ASTERISK-24619 #close
Reported by: Stefan27 (on IRC)
........
Merged revisions 429673 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 429674 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429675 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-16 11:53 +0000 [a3534b7c05] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: fix test breakage
Fix test breakage caused by not checking for res_pjsip before
calling ast_sip_get_sorcery.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4269/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429653 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-16 10:38 +0000 [f26d4618eb] Andreas Steinmetz (license 6523)
* chan_sip: Allow T.38 switch-over when SRTP is in use.
Previously when SRTP was enabled on a channel it was not possible
to switch to T.38 as no crypto attributes would be present.
This change makes it so it is now possible. If a T.38 re-invite
comes in SRTP is terminated since in practice you can't encrypt
a UDPTL stream. Now... if we were doing T.38 over RTP (which
does exist) then we'd have a chance but almost nobody does that so
here we are.
ASTERISK-24449 #close
Reported by: Andreas Steinmetz
patches:
udptl-ignore-srtp-v2.patch submitted by Andreas Steinmetz (license 6523)
........
Merged revisions 429632 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429633 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-16 09:43 +0000 [ad85e54fd9] Joshua Colp <jcolp@digium.com>
* res_pjsip_t38: Fix T.38 failure when peer reinvites immediately.
If a remote endpoint reinvites to T.38 immediately the state machine
will go into a peer reinvite state. If a T.38 capable application
(such as ReceiveFax) queries it will receive this state. Normally
the application will then indicate so that the channel driver will
queue up the T.38 offer previously received. Once it receives this
offer the application will act normally and negotiate.
The res_pjsip_t38 module incorrectly partially squashed this indication.
This would cause the application to think the request had failed when
in reality it had actually worked.
This change makes it so that no T.38 control frames (or indications)
are squashed.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429612 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-15 11:07 +0000 [89617370ec] gtjoseph <george.joseph@fairview5.com>
* res_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios
res_pjsip_config_wizard
------------------
* This is a new module that adds streamlined configuration capability for
chan_pjsip. It's targetted at users who have lots of basic configuration
scenarios like 'phone' or 'agent' or 'trunk'. Additional information
can be found in the sample configuration file at
config/samples/pjsip_wizard.conf.sample.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4190/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429592 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-15 09:36 +0000 [b85f79c0c1] Mark Michelson <mmichelson@digium.com>
* Activate persistent subscriptions when they are recreated.
Prior to this change, recreating persistent subscriptions would
create the subscription but would not activate it. This led to subscriptions
being listed in the "NULL" state by diagnostics and not sending NOTIFYs
when expected.
Review: https://reviewboard.asterisk.org/r/4261
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429571 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 17:54 +0000 [2b8c441096] gtjoseph <george.joseph@fairview5.com>
* loader: Move definition of ast_module_reload from _private.h to module.h
No functionality change. Just move the definition of ast_module_reload
from _private.h to module.h so it can be public.
Also removed the include of _private.h from manager.c since ast_module_load
was the only reason for including it.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4251/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429542 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 17:40 +0000 [8f12ded887] Richard Mudgett <rmudgett@digium.com>
* DEBUG_THREADS: Fix regression and lock tracking initialization problems.
This patch started with David Lee's patch at
https://reviewboard.asterisk.org/r/2826/ and includes a regression fix
introduced by the ASTERISK-22455 patch.
The initialization of a mutex's lock tracking structure was not protected
in a critical section. This is fine for any mutex that is explicitly
initialized, but a static mutex may have its lock tracking double
initialized if multiple threads attempt the first lock simultaneously.
* Added a global mutex to properly serialize initialization of the lock
tracking structure. The painful global lock can be mitigated by adding a
double checked lock flag as discussed on the original review request.
* Defer lock tracking initialization until first use.
* Don't be "helpful" and initialize an uninitialized lock when
DEBUG_THREADS is enabled. Debug code is not supposed to fix or change
normal code behavior. We don't need a lock initialization race that would
force a re-setup of lock tracking. Lock tracking already handles
initialization on first use.
* Properly handle allocation failures of the lock tracking structure.
* No need to initialize tracking data in __ast_pthread_mutex_destroy()
just to turn around and destroy it.
The regression introduced by ASTERISK-22455 is the result of manipulating
a pthread_mutex_t struct outside of the pthread library code. The
pthread_mutex_t struct seems to have a global linked list pointer member
that can get changed by other threads. Therefore, saving and restoring
the contents of a pthread_mutex_t struct is a bad thing.
Thanks to Thomas Airmont for finding this obscure regression.
* Don't overwrite the struct ast_lock_track.reentr_mutex member to restore
tracking data in __ast_cond_wait() and __ast_cond_timedwait(). The
pthread_mutex_t struct must be treated as a read-only opaque variable.
Miscellaneous other items fixed by this patch:
* Match ast_suspend_lock_info() with ast_restore_lock_info() in
__ast_cond_timedwait().
* Made some uninitialized lock sanity checks return EINVAL and try a
DO_THREAD_CRASH.
* Fix bad canlog initialization expressions.
ASTERISK-24614 #close
Reported by: Thomas Airmont
Review: https://reviewboard.asterisk.org/r/4247/
Review: https://reviewboard.asterisk.org/r/2826/
........
Merged revisions 429539 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429540 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 16:53 +0000 [8c019b1a6b] Matt Jordan <mjordan@digium.com>
* res/res_agi: Make Verbose message for 'stream file' match other playbacks
The Verbose message displayed when a file is played back via 'stream file'
was formatted differently than other playbacks:
* It didn't include the channel name
* It didn't include the channel language
It does, however, include the playback offset as well as any escape digits.
That information was kept; however, this patch updates the formatting to more
closely match the Verbose messages displayed when a file is played back by
'control stream file', Playback, ControlPlayback, or any other file playback
operation.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 16:49 +0000 [7ff0d266a6] Matt Jordan <mjordan@digium.com>
* Add 11 merge properties
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429518 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 10:57 +0000 [439e6e1c5d] Joshua Colp <jcolp@digium.com>
* media: Fix crash when determining sample count of a frame during shutdown.
When shutting down Asterisk the codecs are cleaned up. As a result anything
attempting to get a codec based on ID or details will find that no codec
exists. This currently occurs when determining the sample count of a frame.
This code did not take this situation into account.
This change fixes this by getting the codec directly from the format and
eliminates the lookup. This is both faster and also provides a guarantee
that the codec will exist and will be valid.
ASTERISK-24604 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4260/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 09:30 +0000 [01c4e76c4e] Kevin Harwell <kharwell@digium.com>
* chan_pjsip: Race between channel answer and bridge setup when using direct media
When direct media is enabled and a pjsip channel is answered a race would occur
between the handling of the answer and bridge setup. Sometimes the media
negotiation would take place after the native bridge was setup. This resulted
in a NULL media address, which in turn resulted in Asterisk using its address
as the remote media address when sending a reinvite. This patch makes the
chan_pjsip answer handler synchronous thus alleviating the race condition (the
bridge won't start setting things up until after it returns).
ASTERISK-24563 #close
Reported by: Steve Pitts
Review: https://reviewboard.asterisk.org/r/4257/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429477 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 09:00 +0000 [49386cf568] David M. Lee <dlee@digium.com>
* Fix crash for sorcery misconfigs
res_pjsip_outbound_publish was missing the CHECK_PJSIP_MODULE_LOADED()
call in load_module, and would crash with a segfault if res_pjsip
declined to load.
Review: https://reviewboard.asterisk.org/r/4258/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429457 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 08:12 +0000 [3b0c40f337] Kinsey Moore <kmoore@digium.com>
* PJSIP: Allow use of 'inactive' streams for hold
This allows use of the 'inactive' stream direction identifier to be
used for hold where 'sendonly' is normally used. Some Seimens phones
use 'inactive' and this change allows music on hold to operate
properly.
Review: https://reviewboard.asterisk.org/r/4252/
Reported by: Steve Pitts
........
Merged revisions 429432 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 08:03 +0000 [15af40180a] Kinsey Moore <kmoore@digium.com>
* Sorcery: Log when old config remains in use
This adds a log message notifying the user that a stale configuration
is in place upon reload when a config object fails to load. This
situation can end up causing confusion when the object failed to load
but exists from a previous config load especially when the old config
is significantly different from the new config.
Review: https://reviewboard.asterisk.org/r/4250/
Reported by: Thomas Thompson
........
Merged revisions 429429 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429430 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 07:05 +0000 [0c9fbb449f] Joshua Colp <jcolp@digium.com>
* res_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress.
Given the scenario where a PJSIP channel is in a native RTP bridge with direct
media and the channel is then hung up the code will currently re-INVITE the channel
back to Asterisk and send a BYE at the same time. Many SIP implementations dislike
this greatly.
This change makes it so that if a re-INVITE transaction is in progress the BYE
is queued to occur after the completion of the transaction (be it through normal
means or a timeout).
Review: https://reviewboard.asterisk.org/r/4248/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429409 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-12 06:31 +0000 [61fe4f10d2] Joshua Colp <jcolp@digium.com>
* res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation.
In the past the SDP negotiation within res_pjsip_session was made more tolerant of
certain situations. The only case where SDP negotiation will fail is when a major
error occurs during negotiation. Receiving an already declined media stream is
not considered a major error.
When producing the local SDP the logic took this into account so on the initial INVITE
the declined media stream did not cause an SDP negotiation failure. Unfortunately
the logic for handling media streams with a handler did not mirror this logic and
considered an already declined media stream an error and thus failed the SDP
negotiation.
This change makes the logic between both situations match so only under major
errors will the SDP negotiation fail.
ASTERISK-24607 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4254/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429407 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-11 14:31 +0000 [8237bd357d] Kevin Harwell <kharwell@digium.com>
* ARI/AMI: Include language in standard channel snapshot output
The CHANGES verbiage for the "language" addition had been put under the wrong
release. This moves it to be under 13.1 to 13.2 changes.
ASTERISK-24553
Reported by: Matt Jordan
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429387 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-11 11:21 +0000 [2288f910ea] Kinsey Moore <kmoore@digium.com>
* Recorded merge of revisions 429378 from http://svn.asterisk.org/svn/asterisk/branches/12
........
Fix incorrect patch applied in r429354
The patch that was applied was another pending patch. This swaps them out.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-11 07:56 +0000 [b7f7d045ac] Kinsey Moore <kmoore@digium.com>
* Recorded merge of revisions 429354 from http://svn.asterisk.org/svn/asterisk/branches/12
........
Stasis: Update unittest for channel snapshots
This adjusts the unit test for channel snapshots to take the new
language key into account.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-11 07:49 +0000 [50f6517296] Kinsey Moore <kmoore@digium.com>
* Stasis: Update unittest for channel snapshots
This adjusts the unit test for channel snapshots to take the new
language key into account.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429352 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-10 09:42 +0000 [d4a05879d6] Kevin Harwell <kharwell@digium.com>
* ARI/AMI: Include language in standard channel snapshot output
Adding information about including "language" in the standard channel snapshot
output to the CHANGES file. Note the actual source changes have already been
previously committed.
ASTERISK-24553
Reported by: Matt Jordan
........
Merged revisions 429325 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429326 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-10 07:34 +0000 [fb768ec33a] Joshua Colp <jcolp@digium.com>
* res_http_websocket: Fix crash due to double freeing memory when receiving a payload length of zero.
Frames with a payload length of 0 were incorrectly handled in res_http_websocket.
Provided a frame with a payload had been received prior it was possible for a double
free to occur. The realloc operation would succeed (thus freeing the payload) but be
treated as an error. When the session was then torn down the payload would be
freed again causing a crash. The read function now takes this into account.
This change also fixes assumptions made by users of res_http_websocket. There is no
guarantee that a frame received from it will be NULL terminated.
ASTERISK-24472 #close
Reported by: Badalian Vyacheslav
Review: https://reviewboard.asterisk.org/r/4220/
Review: https://reviewboard.asterisk.org/r/4219/
........
Merged revisions 429270 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 429272 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-10 07:14 +0000 [a220a08777] Kinsey Moore <kmoore@digium.com>
* PJSIP: Fix assert on initial mass qualify
This fixes the MWI test regressions caused by r429127 and ensures that
contacts have non-zero qualify_frequency before attempting scheduling.
........
Merged revisions 429245 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429246 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-09 14:46 +0000 [22a91bf698] Scott Griepentrog <sgriepentrog@digium.com>
* core: avoid possible asterisk -r crash from long id
When connecting to the remote console, an id string
is first provided that consts of the hostname, pid,
and version. This is parsed by the remote instance
using a buffer that may be too short, and can allow
a buffer overrun because it is not terminated. This
patch adds termination and a larger buffer.
Review: https://reviewboard.asterisk.org/r/4182/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429223 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-09 14:19 +0000 [2f21f85c37] Kevin Harwell <kharwell@digium.com>
* ARI/AMI: Include language in standard channel snapshot output
The channel "language" was already part of a channel snapshot, however is was
not sent out over AMI or ARI. This patch makes it so the channel "language" is
included in the appropriate AMI or ARI events.
ASTERISK-24553 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4245/
........
Merged revisions 429204 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429206 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-09 14:02 +0000 [525c823b4b] Kevin Harwell <kharwell@digium.com>
* Direct Media calls within private network sometimes get one way audio
When endpoints with direct_media enabled, behind a firewall (Asterisk on a
separate network) and were bridged sometimes Asterisk would send the ip
address of the firewall in the sdp to one of the phones in the reinvite
resulting in one way audio. When sending the reinvite Asterisk will retrieve
the media address from the associated rtp instance, but if frames were being
read this can be overwritten with another address (in this case the
firewall's). This patch ensures that Asterisk uses the original device
address when using direct media.
ASTERISK-24563
Reported by: Steve Pitts
Review: https://reviewboard.asterisk.org/r/4216/
........
Merged revisions 429195 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-09 12:35 +0000 [664067e318] Kevin Harwell <kharwell@digium.com>
* res_pjsip_outbound_publish: stack overflow when using non-default sorcery wizard
When using a non-default sorcery wizard (in this instance realtime) for outbound
publishes Asterisk will crash after a stack overflow occurs due to the code
infinitely recursing. The fix entails removing the outbound publish state
dependency from the outbound publish sorcery object and instead keeping an in
memory container that can be used to lookup the state when needed.
ASTERISK-24514 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4178/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429175 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-09 09:44 +0000 [74b032bb03] Joshua Colp <jcolp@digium.com>
* ari: Add support for specifying an originator channel when originating.
If an originator channel is specified when originating a channel the linked ID
of it will be applied to the newly originated outgoing channel. This allows
an association to be made between the two so it is known that the originator
has dialed the originated channel.
ASTERISK-24552 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4243/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-12-09 08:00 +0000 [64581d894d] Kinsey Moore <kmoore@digium.com>
* PJSIP: Stagger outbound qualifies
This change staggers initiation of outbound qualify (OPTIONS) attempts
to reduce instantaneous server load and prevent network congestion.
Review: https://reviewboard.asterisk.org/r/4246/
ASTERISK-24342 #close
Reported by: Richard Mudgett
........
Merged revisions 429127 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429128 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2016-02-11 18:31 +0000 Asterisk Development Team <asteriskteam@digium.com>
* asterisk certified/13.1-cert4 Released.
2016-02-11 12:31 +0000 [7df413fbb3] Kevin Harwell <kharwell@lunkwill.digium.internal>
* Release summaries: Remove previous versions
2016-02-11 12:31 +0000 [1423445b23] Kevin Harwell <kharwell@lunkwill>
* .version: Update for certified/13.1-cert4
2016-02-11 12:31 +0000 [9a8b627f26] Kevin Harwell <kharwell@lunkwill>
* .lastclean: Update for certified/13.1-cert4
2016-02-11 12:31 +0000 [d424452711] Kevin Harwell <kharwell@lunkwill>
* realtime: Add database scripts for certified/13.1-cert4
2016-02-04 16:17 +0000 [59ccc89054] Mark Michelson <mmichelson@digium.com>
* Check for OpenSSL defines before trying to use them.
The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior
to OpenSSL version 1.0.1. A recent commit attempts to, by default, set
these options, which can cause problems on systems with older OpenSSL
installations.
This commit adds a configure script check for those defines and will not
attempt to make use of those if they do not exist. We will print a
warning urging the user to upgrade their OpenSSL installation if those
defines are not present.
Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d
2016-02-04 11:39 +0000 [bffd954a63] Mark Michelson <mmichelson@digium.com>
* res_stasis_device_state: Fix refcounting error.
Device state subscription lifetimes were governed by when the
subscription was established and unsubscribed from. However, it is
possible that at the time of unsubscription, there could be device state
events still in flight. When those device state events occur, the device
state callback could attempt to dereference a freed pointer. Crash.
This change ensures that the lifetime of the device state subscription
does not end until the underlying stasis subscription has confirmed that
its final message has been sent.
Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2
2016-01-25 15:48 +0000 [0eb43ea9ee] Richard Mudgett <rmudgett@digium.com>
* app_confbridge: Make non-admin users join a muted conference muted.
ASTERISK-20987 #close
Reported by: hristo
Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38
2016-02-03 22:14 +0000 Asterisk Development Team <asteriskteam@digium.com>
* asterisk certified/13.1-cert3 Released.
2016-02-03 16:05 +0000 [2142c74a02] Kevin Harwell <kharwell@lunkwill>
* .version: Update for certified/13.1-cert3
2016-02-03 16:04 +0000 [07c95d33bd] Kevin Harwell <kharwell@lunkwill>
* .lastclean: Update for certified/13.1-cert3
2016-02-03 16:04 +0000 [ce314be09d] Kevin Harwell <kharwell@lunkwill>
* realtime: Add database scripts for certified/13.1-cert3
2016-02-03 12:05 +0000 [b50d584022] Joshua Colp <jcolp@digium.com>
* AST-2016-001 http: Provide greater control of TLS and set modern defaults.
This change exposes the configuration of various aspects of the TLS
support and sets the default to the modern standards.
The TLS cipher is now set to the best values according to the
Mozilla OpSec team, different TLS versions can now be disabled, and
the cipher order can be forced to be that of the server instead of
the client.
ASTERISK-24972 #close
Change-Id: I8635470e722ce6d47951a5045ae9ef348271d395
2015-12-07 12:46 +0000 [4fe2aa9a20] Richard Mudgett <rmudgett@digium.com>
* AST-2016-003 udptl.c: Fix uninitialized values.
Sending UDPTL packets to Asterisk with the right amount of missing
sequence numbers and enough redundant 0-length IFP packets, can make
Asterisk crash.
ASTERISK-25603 #close
Reported by: Walter Doekes
ASTERISK-25742 #close
Reported by: Torrey Searle
Change-Id: I97df8375041be986f3f266ac1946a538023a5255
2015-09-28 17:07 +0000 [c7ab026196] Richard Mudgett <rmudgett@digium.com>
* AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow.
Setting the sip.conf timert1 value to a value higher than 1245 can cause
an integer overflow and result in large retransmit timeout times. These
large timeout times hold system file descriptors hostage and can cause the
system to run out of file descriptors.
NOTE: The default sip.conf timert1 value is 500 which does not expose the
vulnerability.
* The overflow is now detected and the previous timeout time is
calculated.
ASTERISK-25397 #close
Reported by: Alexander Traud
Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290
2016-01-25 09:35 +0000 [7d581b32e9] Joshua Colp <jcolp@digium.com>
* config: Allow options to register when documentation is unavailable.
The config options framework is strict in that configuration options must
be documented unless XML documentation support is not available. In
practice this is useful as it ensures documentation exists however in
off-nominal cases this can cause strange problems.
If it is expected that a config option has a non-zero or non-empty
default value but the config option documentation is unavailable
this reasonable expectation will not be met. This can cause obscure
crashes and weirdness depending on how the code handles it.
This change tweaks the behavior to ensure that the config option
is still allowed to register, apply default values, and be set when
devmode is not enabled. If devmode is enabled then the option can
NOT be set.
This also does not remove the initial documentation error message that
is output on load when registering the configuration option.
ASTERISK-25725 #close
Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8
(cherry picked from commit f22074e5d9ed1882be976299311b8e093d25e1da)
2016-01-25 16:51 +0000 [22eb1b48c0] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Prevent crash from AMI command on freed subscription.
A test recently uncovered that running an ill-timed AMI command to show
inbound subscriptions could cause a crash since Asterisk will try to
operate on a freed subscription.
The fix for this is to remove the subscription tree from the list of
subscriptions at the time that we are sending our final NOTIFY request
out. This way, as the subscription is in the process of dying, it is
inaccessible from AMI.
Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23
(cherry picked from commit b073244c511f9634de57ea401ab9dbebcf2390e8)
2016-01-19 18:20 +0000 [826ff1d7a3] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case.
ASTERISK-25712 #close
Reported by: Richard Mudgett
Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f
2016-01-14 14:42 +0000 [6e18a60a47] Kevin Harwell <kharwell@digium.com>
* bridge_basic: don't cache xferfailsound during an attended transfer
The xferfailsound was read from the channel at the beginning of the transfer,
and that value is "cached" for the duration of the transfer. Therefore, changing
the xferfailsound on the channel using the FEATURE() dialplan function does
nothing once the transfer is under way.
This makes it so the transfer code instead gets the xferfailsound configuration
options from the channel when it is actually going to be used.
This patch also fixes a potential memory leak of the props object as well as
making sure the condition variable gets initialized before being destroyed.
ASTERISK-25696 #close
Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4
2015-12-28 14:02 +0000 [f63fb0e337] Joshua Colp <jcolp@digium.com>
* test_time: Provide a timeout when waiting.
The test_timezone_watch unit test is written to expect a
condition to be signaled when the inotify daemon thread runs.
There exists a small window where the test_timezone_watch
thread can signal the inotify daemon thread while it is not
reading on the underlying file descriptor. If this occurs
the test_timezone_watch thread will wait indefinitely for a
signal that will never arrive.
This change adds a timeout to the condition so it will return
regardless after a period of time.
Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
(cherry picked from commit c8499b8d5adc805efadb91b483d9d987f62891ff)
2016-01-12 11:14 +0000 [def98bb996] Joshua Colp <jcolp@digium.com>
* app: Queue hangup if channel is hung up during sub or macro execution.
This issue was exposed when executing a connected line subroutine.
When connected or redirected subroutines or macros are executed it is
expected that the underlying applications and logic invoked are fast
and do not consume frames. In practice this constraint is not enforced
and if not adhered to will cause channels to continue when they shouldn't.
This is because each caller of the connected or redirected logic does not
check whether the channel has been hung up on return. As a result the
the hung up channel continues.
This change makes it so when the API to execute a subroutine or
macro is invoked the channel is checked to determine if it has hung up.
If it has then a hangup is queued again so the caller will see it
and stop.
ASTERISK-25690 #close
Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea
2016-01-08 15:22 +0000 [bb29802615] Kevin Harwell <kharwell@digium.com>
* pbx: Deadlock between contexts container and context_merge locks
Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5)
introduced the possibility of a deadlock. Due to the mentioned modifications
ast_change_hints now needs to keep both merge/delete and state callbacks from
occurring while it executes. Unfortunately, sometimes ast_change_hints can be
called with the contexts container locked. When this happens it's possible for
another thread to grab the context_merge_lock before the thread calling into
ast_change_hints does and then try to obtain the contexts container lock. This
of course causes a deadlock between the two threads. The thread calling into
ast_change_hints waits for the other thread to release context_merge_lock and
the other thread is waiting on that one to release the contexts container lock.
Unfortunately, there is not a great way to fix this problem. When hints change,
the subsequent state callbacks cannot run at the same time as a merge/delete,
nor when the usual state callbacks do. This patch alleviates the problem by
having those particular callbacks (the ones run after a hint change) occur in a
serialized task. By moving the context_merge_lock to a task it can now safely be
attempted or held without a deadlock occurring.
ASTERISK-25640 #close
Reported by: Krzysztof Trempala
Change-Id: If2210ea241afd1585dc2594c16faff84579bf302
2016-01-07 15:37 +0000 [ca869878b4] Mark Michelson <mmichelson@digium.com>
* PJSIP: Prevent deadlock due to dialog/transaction lock inversion.
A deadlock was observed where the monitor thread was stuck, therefore
resulting in no incoming SIP traffic being processed.
The problem occurred when two 200 OK responses arrived in response to a
terminating NOTIFY request sent from Asterisk. The first 200 OK was
dispatched to a threadpool worker, who locked the corresponding
transaction. The second 200 OK arrived, resulting in the monitor thread
locking the dialog. At this point, the two threads are at odds, because
the monitor thread attempts to lock the transaction, and the threadpool
thread loops attempting to try to lock the dialog.
In this case, the fix is to not have the monitor thread attempt to hold
both the dialog and transaction locks at the same time. Instead, we
release the dialog lock before attempting to lock the transaction.
There have also been some debug messages added to the process in an
attempt to make it more clear what is going on in the process.
ASTERISK-25668 #close
Reported by Mark Michelson
Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a
2015-12-10 11:44 +0000 [4e5aec3f0a] Jonathan Rose <jrose@digium.com>
* chan_sip: Add TCP/TLS keepalive to TCP/TLS server
Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously
this option was only being set on session sockets.
http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
According to the link above, the SO_KEEPALIVE option is useful for knowing
when a TCP connected endpoint has severed communication without indicating
it or has become unreachable for some reason. Without this patch, keep
alive is not set on the socket listening for incoming TCP sessions and
in Komatsu's report this resulted in the thread listening for TCP becoming
stuck in a waiting state.
ASTERISK-25364 #close
Reported by: Hiroaki Komatsu
Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36
2015-06-26 10:36 +0000 [4d10ed67d0] Richard Mudgett <rmudgett@digium.com>
* PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences.
When a caller calls a FAX number and then hangs up right after the call is
answered then the T.38 re-INVITE automatic reject timer may still be
running after the channel goes away.
* Added session NULL channel checks on the code paths that get executed by
t38_automatic_reject() to prevent a crash when the T.38 re-INVITE
automatic reject timer expires.
ASTERISK-25168
Reported by: Carl Fortin
Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403
(cherry picked from commit 8ea214aed782424a884b9a2f67d6dca270854e83)
2015-12-01 16:11 +0000 [1ec791a3ba] Jonathan Rose <jrose@digium.com>
* Unset BRIDGEPEER when leaving a bridge
Currently if a channel is transferred out of a bridge, the BRIDGEPEER
variable (also BRIDGEPVTCALLID) remain set even once the channel is
out of the bridge. This patch removes these variables when leaving
the bridge.
ASTERISK-25600 #close
Reported by: Mark Michelson
Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da
2015-11-30 16:42 +0000 [a164f2ce7f] Richard Mudgett <rmudgett@digium.com>
* sched.c: Make not return a sched id of 0.
According to the API doxygen a sched ID of 0 is valid. Unfortunately, 0
was never returned historically and several users incorrectly coded usage
of the returned sched ID assuming that 0 was invalid.
ASTERISK-25476
Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20
2015-11-25 12:23 +0000 [a24db35ae3] Richard Mudgett <rmudgett@digium.com>
* Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)
chan_sip.c:
* Initialize mwi subscription scheduler ids earlier because of ASTOBJ to
ao2 conversion.
* Initialize register scheduler ids earlier because of ASTOBJ to ao2
conversion.
chan_skinny.c:
* Fix more scheduler usage for the valid 0 id value.
ASTERISK-25476
Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95
2015-11-24 12:44 +0000 [bea904e001] Richard Mudgett <rmudgett@digium.com>
* Audit improper usage of scheduler exposed by 5c713fdf18f.
channels/chan_iax2.c:
* Initialize struct chan_iax2_pvt scheduler ids earlier because of
iax2_destroy_helper().
channels/chan_sip.c:
channels/sip/config_parser.c:
* Fix initialization of scheduler id struct members. Some off nominal
paths had 0 as a scheduler id to be destroyed when it was never started.
chan_skinny.c:
* Fix some scheduler id comparisons that excluded the valid 0 id.
channel.c:
* Fix channel initialization of the video stream scheduler id.
pbx_dundi.c:
* Fix channel initialization of the packet retransmission scheduler id.
ASTERISK-25476
Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8
2015-11-23 14:27 +0000 [f5a6060707] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_realtime.c: Fix crash from NULL sorcery object type.
If the sorcery object type is not found a NULL is returned.
Unfortunately, sorcery_realtime_filter_objectset() will crash after
complaining about not finding the object type and saying to expect errors.
* Use ao2_cleanup() instead of ao2_ref() to prevent the crash.
ASTERISK-25165
Reported by Corey Farrell
Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97
2015-05-05 18:17 +0000 [de43ae38b4] Richard Mudgett <rmudgett@digium.com>
* features: Fix crash when transferee hangs up during DTMF attended transfer.
A crash happens with this sequence of steps:
1) Party A is connected to party B.
2) Party B starts a DTMF attended transfer.
3) Party A hangs up while party B is dialing party C.
When party A hangs up the bridge that party A and party B are in is
dissolved and party B is kicked out of the bridge. When party B finishes
dialing party C he attempts to move to the new bridge with party C. Since
party B is no longer in a bridge the attempted move dereferences a NULL
bridge_channel pointer and crashes.
* Made the hold(), unhold(), ringing(), and the bridge_move() functions
tolerant of the channel not being in a bridge. The assertion that party B
is always in a bridge is not true if the bridged peer of party B hangs up
and dissolves the bridge. Being tolerant of not being in a bridge allows
the peer hangup stimulus to be processed by the FSM.
* Made the bridge_move() function return void since where the return value
for a failed move was checked generated a FSM coding ERROR message for a
normal off-nominal condition.
* Eliminated most uses of RAII_VAR in bridge_basic.c.
ASTERISK-25003 #close
Reported by: Artem Volodin
Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada
(cherry picked from commit be1260a35f88faea4fa029d59343b124d250a8a6)
2015-11-16 04:29 +0000 [457d8dc124] Alec Davis <sivad.a@paradise.net.nz>
* app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked!
commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525)
refer ASTERISK-24958
above commit removed ast_channel_lock(qe->chan);
but failed to remove corresponding ast_channel_unlock(qe->chan);
ASTERISK-25561 #close
Reported Alec Davis
Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a
2015-11-13 14:03 +0000 [c4751171a0] Mark Michelson <mmichelson@digium.com>
* Confbridge: Add a user timeout option
This option adds the ability to specify a timeout, in seconds, for a
participant in a ConfBridge. When the user's timeout has been reached,
the user is ejected from the conference with the CONFBRIDGE_RESULT
channel variable set to "TIMEOUT".
The rationale for this change is that there have been times where we
have seen channels get "stuck" in ConfBridge because a network issue
results in a SIP BYE not being received by Asterisk. While these
channels can be hung up manually via CLI/AMI/ARI, adding some sort of
automatic cleanup of the channels is a nice feature to have.
ASTERISK-25549 #close
Reported by Mark Michelson
Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98
2015-11-13 14:19 +0000 [c0a7df1021] Mark Michelson <mmichelson@digium.com>
* Taskprocessors: Increase high-water mark
In practical tests, we have seen certain taskprocessors, specifically
Stasis subscription taskprocessors, cross the recently-added high-water
mark and emit a warning. This high-water mark warning is only intended
to be emitted when things have tanked on the system and things are
heading south quickly. In the practical tests, the Stasis taskprocessors
sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in
any danger at all.
As such, this ups the high-water mark to 500 tasks instead. It also
redefines the SIP threadpool request denial number to be a multiple of
the taskprocessor high-water mark.
Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce
2015-11-12 11:17 +0000 [2fc3267677] Mark Michelson <mmichelson@digium.com>
* res_pjsip distributor: Don't send 503 response to responses.
When the SIP threadpool is backed up with tasks, we send 503 responses
to ensure that we don't try to overload ourselves. The problem is that
we were not insuring that we were not trying to send a 503 to an
incoming SIP response.
This change makes it so that we only send the 503 on incoming requests.
Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404
2015-11-11 04:16 +0000 [d760c21038] Steve Davies <steve@one47.co.uk>
* Further fixes to improper usage of scheduler
When ASTERISK-25449 was closed, a number of scheduler issues mentioned in
the comments were missed. These have since beed raised in ASTERISK-25476
and elsewhere.
This patch attempts to collect all of the scheduler issues discovered so
far and address them sensibly.
ASTERISK-25476 #close
Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b
(cherry picked from commit 07583c288828a496cd7730b55112128fea31eaef)
2015-11-11 17:11 +0000 [287cab1a53] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Deny requests when threadpool queue is backed up.
We have observed situations where the SIP threadpool may become
deadlocked. However, because incoming traffic is still arriving, the SIP
threadpool's queue can continue to grow, eventually running the system
out of memory.
This change makes it so that incoming traffic gets rejected with a 503
response if the queue is backed up too much.
Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816
2015-11-11 11:04 +0000 [d073cb4b6d] Joshua Colp <jcolp@digium.com>
* threadpool: Handle worker thread transitioning to dead when going active.
This change adds handling of dead worker threads when moving them
to be active. When this happens the worker thread is removed from
both the active and idle threads container. If no threads are able
to be moved to active then the pool grows as configured.
A unit test has also been added which thrashes the idle timeout
and thread activation to exploit any race conditions between the
two.
ASTERISK-25546 #close
Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143
2015-11-03 16:19 +0000 [b9713354dc] Jonathan Rose <jrose@digium.com>
* taskprocessor: Add high water mark warnings
If a taskprocessor's queue grows large, this can indicate that there
may be a problem with tasks not leaving the processor or else that
the number of available task processors for a given type of task is
too low. This patch makes it so that if a taskprocessor's task queue
grows above 100 queued tasks that it will emit a warning message.
Warning messages are emitted only once per task processor.
ASTERISK-25518 #close
Reported by: Jonathan Rose
Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c
2015-06-23 11:21 +0000 [ac9432fdb6] Joshua Colp <jcolp@digium.com>
* app_dial: Hold reference to calling channel formats when dialing outbound.
Currently when requesting a channel the native formats of the
calling channel are provided to the core for usage when dialing
the outbound channel. This occurs without holding the channel lock
or keeping a reference to the formats. This is problematic as
the channel driver may end up changing the formats during this time.
In the case of chan_sip this happens when an SDP negotiation
completes.
This change makes it so app_dial keeps a reference to the native
formats of the calling channel which guarantees that they will
remain valid for the period of time needed.
ASTERISK-25172 #close
Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db
(cherry picked from commit 3b2b004d699b8cc7b808f62536bb2bc4db8b4e0e)
2015-11-04 14:31 +0000 [385e26efe2] Matt Jordan <mjordan@digium.com>
* main/dial: Protect access to the format_cap structure of the requesting channel
When a dial attempt is made that involves a requesting channel, we previously
were not:
a) Protecting access to the native format capabilities structure on the
requesting channel. That is inherently unsafe.
b) Reference bumping the lifetime of the format capabilities structure.
In both cases, something else could sneak in, blow away the format
capabilities, and we'd be holding onto an invalid format_cap structure. When
the newly created channel attempts to construct its format capabilities, things
go poorly.
This patch:
a) Ensures that we get a reference to the native format capabilities while
the requesting channel is locked
b) Holds a reference to the native format capabilities during the creation
of the new channel.
ASTERISK-25522 #close
Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f
2015-11-02 17:19 +0000 [62799fe778] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Set threadpool max size default to 50.
During a stress test of subscriptions, a huge blast of
subscription-related traffic resulted in the threadpool expanding to a
ridiculous number of threads. The balooning of threads resulted in an
increase of memory, which led to a crash due to being out of memory.
An easy fix for the particular test was to limit the size of the
threadpool, thus reining in the amount of memory that would be used. It
was decided that there really is no downside to having a non-infinite
default value for the maximum size of the threadpool, so this change
introduces 50 threads as the maximum threadpool size for the SIP
threadpool.
ASTERISK-25513 #close
Reported by John Bigelow
Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be
2015-10-23 16:53 +0000 [6eda60936a] Kevin Harwell <kharwell@digium.com>
* alembic: Bad down revision in add_default_from_user script
The down revision wasn't set correct in the add_default_from_user script.
This patch points it to the correct revision.
Change-Id: Ied45786db265a1d4fb350ef0dd33b4d043c9a74d
2015-10-21 12:35 +0000 [c425e26595] Kevin Harwell <kharwell@digium.com>
* res_pjsip_outbound_registration: registration stops due to fatal 4xx response
During outbound registration it is possible to receive a fatal (any permanent/
non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due
to a problem with the registrar itself. Upon receiving the failure response
Asterisk terminates outbound registration for the given endpoint.
This patch adds an option, 'fatal_retry_interval', that when set continues
outbound registration at the given interval up to 'max_retries' upon receiving
a fatal response.
ASTERISK-25485 #close
Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2
2015-10-22 17:07 +0000 [b95101aab0] Mark Michelson <mmichelson@digium.com>
* format_cap: Detect vector allocation failures.
A crash was seen on a system that ran out of memory due to Asterisk not
checking for vector allocation failures in format_cap.c. With this
change, if either of the AST_VECTOR_INIT calls fail, we will return a
value indicating failure.
Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8
2015-10-02 15:32 +0000 [dd4d4e40e5] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog.
A certain situation can result in our attempting to send a NOTIFY on a
destroyed dialog. Say we attempt to send a NOTIFY to a subscriber, but
that subscriber has dropped off the network. We end up retransmitting
that NOTIFY until the appropriate SIP timer says to destroy the NOTIFY
transaction. When the pjsip evsub code is told that the transaction has
been terminated, it responds in kind by alerting us that the
subscription has been terminated, destroying the subscription, and then
removing its reference to the dialog, thus destroying the dialog.
The problem is that when we get told that the subscription is being
terminated, we detect that we have not sent a terminating NOTIFY
request, so we queue up such a NOTIFY to be sent out. By the time that
queued NOTIFY gets sent, the dialog has been destroyed, so attempting to
send that NOTIFY can result in a crash.
The fix being introduced here is actually a reintroduction of something
the pubsub code used to employ. We hold a reference to the dialog and
wait to decrement our reference to the dialog until our subscription
tree object is destroyed. This way, we can send messages on the dialog
even if the PJSIP evsub code wants to terminate earlier than we would
like.
In doing this, some NULL checks for subscription tree dialogs have been
removed since NULL dialogs are no longer actually possible.
Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5
2015-09-29 14:53 +0000 [bda0a24206] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Ensure dialog lock balance.
When sending a NOTIFY, we lock the dialog and then unlock the dialog
when finished. A recent change made it so that the subscription tree's
dialog pointer will be set NULL when sending the final NOTIFY request
out. This means that when we attempt to unlock the dialog, we pass a
NULL pointer to pjsip_dlg_dec_lock(). The result is that the dialog
remains locked after we think we have unlocked it. When a response to
the NOTIFY arrives, the monitor thread attempts to lock the dialog, but
it cannot because we never released the dialog lock. This results in
Asterisk being unable to process incoming SIP traffic any longer.
The fix in this patch is to use a local pointer to save off the pointer
value of the subscription tree's dialog when locking and unlocking the
dialog. This way, if the subscription tree's dialog pointer is NULLed
out, the local pointer will still have point to the proper place and the
dialog lock will be unlocked as we expect.
Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a
2015-09-28 16:36 +0000 [7a22fc27fb] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Prevent crashes on final NOTIFY.
The SIP dialog is removed from the subscription tree when the final
NOTIFY is sent. However, after the final NOTIFY is sent, the persistence
update function still attempts to access the cseq from the dialog,
resulting in a crash.
This fix removes the subscription persistence at the same time that the
dialog is removed from the subscription tree. This way, there is no
attempt to update persistence when the subscription is being destroyed.
Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb
2015-09-17 17:28 +0000 [7fc9a998b1] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Remove serializer when sending final NOTIFY.
There have been crashes seen where a taskprocessor's listener is NULL
unexpectedly.
Looking at backtraces, the problem was specifically seen in PJSIP
serializers.
Subscriptions make the mistake of removing a serializer from a dialog
during subscription tree destruction. Since subscription trees are
reference-counted, guaranteeing the circumstances behind the destruction
are not possible. This makes it so that the dialog serializer can be
removed while not holding the dialog lock. This makes it possible for
the distributor to get a pointer to the dialog serializer and have that
serializer get freed out from under it.
The fix for this is to remove the serializer from a subscription dialog
when sending the final NOTIFY. This guarantees that the serializer is
removed with the dialog lock held. By doing this, we guarantee that if
the distributor gains access to the dialog's serializer, it will not be
possible for the serializer to get freed by another thread.
Change-Id: I21f5dac33529f65cec45679bdace60670800ff66
2015-09-02 09:14 +0000 [7a47ab77c1] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Fix crash on destruction of empty subscription tree.
If an old persistent subscription is recreated but then immediately
destroyed because it is out of date, the subscription tree will have no
leaf subscriptions on it. This was resulting in a crash when attempting
to destroy the subscription tree.
A simple NULL check fixes this problem.
Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac
2015-09-01 15:47 +0000 [8def38f6a2] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Solidify lifetime and ownership of objects.
There have been crashes and general instability seen in the pubsub code,
so this patch introduces three changes to increase the stability.
First, the ownership model for subscriptions has been modified. Due to
RLS, subscriptions are stored in memory as a tree structure. Prior to my
patch, the PJSIP subscription was the owner of the subscription tree.
When the PJSIP subscription told us that it was terminating, we started
destroying the subscription tree along with all of the individual leaf
subscriptions that belong to the tree. The problem with this model is
that the two actors in play here, the PJSIP subscription and the
individual leaf subscriptions, need to have joint ownership of the
subscription tree. So now, the PJSIP subscription and the individual
leaf subscriptions each have a reference to the subscription tree. This
way, we will not actually free memory until no players are left that
care. The PJSIP subscription is a bigger stakeholder, in that if the
PJSIP subscription's reference to the subscription tree is removed, the
subscription tree instructs the leaf subscriptions to shut down and drop
their references to the subscription tree when possible. The individual
leaf subscriptions, upon being told to shut down, can drop their stasis
subscriptions or whatever they use to learn of new state, and then drop
their reference to the subscription tree once they are ready to die.
Second, the lifetime of a PJSIP subscription's reference to our
subscription tree has been altered. As I learned from doing a deep dive,
the PJSIP evsub code can tell Asterisk multiple times that the
subscription has been terminated, and not all of these times
are especially helpful. I have altered the message flow that we use for
SIP subscriptions such that we will always drop the PJSIP subscription's
reference to the subscription tree when we send the NOTIFY that
terminates a SIP subscription. This also means that we will now queue
NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so
that we can have predictable state changes from the PJSIP evsub code.
Third, the synchronization of operations has been improved. PJSIP can
call into our code from a serializer thread (e.g. upon receiving an
incoming request) or from the monitor thread (e.g. when a subscription
times out). Because of this, there is the possibility of competing
threads stepping on each other. PJSIP attempts to do some
synchronization on its own by always keeping the dialog lock held when
it calls into us. However, since we end up pushing tasks into the
serializer, the result was that serialized operations were not grabbing
the dialog lock and could, as a result, step on something that was being
attempted by a different thread. Now we ensure that serialized
operations grab the dialog lock, then check for extenuating
circumstances, then proceed with their operation if they can.
Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5
2015-04-20 14:30 +0000 [16afb39aec] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs.
When SUBSCRIBE dialogs were established, we never associated
the endpoint that created the subscription with the dialog
we end up creating. In most cases, this ended up not causing
any problems.
The actual bug that was observed was that when a device that
was behind NAT established a subscription with Asterisk, Asterisk
would end up sending in-dialog NOTIFY requests to the device's
private IP addres instead of the public address of the NAT router.
When Asterisk receives the initial SUBSCRIBE from the device,
res_pjsip_nat rewrites the contact to the public address on which the
SUBSCRIBE was received. This allows for the dialog to have its target
address set to the proper public address. Asterisk then would send a 200
OK response to the SUBSCRIBE, then a NOTIFY with the initial
subscription state. The device would then send a 200 OK response to
Asterisk's NOTIFY.
Here's where things went wrong. When the 200 OK arrived, res_pjsip_nat
did not rewrite the address in the Contact header. Then, when the PJSIP
dialog layer processed the 200 OK, PJSIP would perform a comparison
between the IP address in the Contact header and its saved target
address for the dialog. Since they differed, PJSIP would update the
target dialog address to be the address in the Contact header. From this
point, if Asterisk needed to send a NOTIFY to the device, the result was
that the NOTIFY would be sent to the private address that the device
placed in the Contact header.
The reason why res_pjsip_nat did not rewrite the address when it
received the 200 OK response was that it could not associate the
incoming response with a configured endpoint. This is because on a
response, the only way to associate the response to an endpoint is by
finding the dialog that the response is associated with and then finding
the endpoint that is associated with that dialog. We do not perform
endpoint lookups on responses. res_pjsip_pubsub skipped the step of
associating the endpoint with the dialog we created, so res_pjsip_nat
could not find the associated endpoint and therefore couldn't rewrite
the contact.
This commit message is like 50x longer than the actual fix.
ASTERISK 24981 #close
Reported by Mark Michelson
Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd
2015-10-19 15:27 +0000 [78e4783572] Richard Mudgett <rmudgett@digium.com>
* Add missing failure checks to ast_str_set_va() callers.
Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f
2015-10-21 11:44 +0000 [43323995ba] Joshua Colp <jcolp@digium.com>
* res_pjsip: Move URI validation to use time.
In a realtime based system with a limited number of threadpool threads
it is possible for a deadlock to occur. This happens when permanent
endpoint state is updated, which will cause database queries to be done.
These queries may result in URI validation being done which is done
synchronously using a PJSIP thread. If all PJSIP threads are in use
processing traffic they themselves may be blocked waiting to get the
permanent endpoint container lock when identifying an endpoint.
This change moves URI validation to occur at use time instead of
configuration time. While this comes at a cost of not seeing a problem
until you use it it does solve the underlying deadlock problem.
ASTERISK-25486 #close
Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a
2015-03-26 17:19 +0000 [cdd2d5b484] Corey Farrell <git@cfware.com>
* Replace most uses of ast_register_atexit with ast_register_cleanup.
Since 'core stop now' and 'core restart now' do not stop modules,
it is unsafe for most of the core to run cleanups. Originally all
cleanups used ast_register_atexit, and were only changed when it
was shown to be unsafe. ast_register_atexit is now used only when
absolutely required to prevent corruption and close child processes.
Exceptions that need to use ast_register_atexit:
* CDR: Flush records.
* res_musiconhold: Kill external applications.
* AstDB: Close the DB.
* canary_exit: Kill canary process.
ASTERISK-24142 #close
Reported by: David Brillert
ASTERISK-24683 #close
Reported by: Peter Katzmann
ASTERISK-24805 #close
Reported by: Badalian Vyacheslav
ASTERISK-24881 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4500/
Review: https://reviewboard.asterisk.org/r/4501/
........
Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11
Change-Id: I6a67336050dea74327d79cdd6f7c7ea34d0b473e
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497
2015-10-19 19:59 +0000 [b5cfcfc427] Matt Jordan <mjordan@digium.com>
* contrib/scripts/autosupport: Update for Asterisk 13
This patch adds some minor tweaks for autosupport to update it for Asterisk 13.
This includes:
* Finally removing most references to Zaptel
* Adding support for some additional 'core' commands, and fixing nomenclature
that generally hasn't been used for some time
* Adding some PJSIP/SIP commands to gather endpoints/peers and active channels
Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1
(cherry picked from commit 9fc9777fa34753fb38991d42d8dbed516e907ca2)
2015-06-05 15:37 +0000 [813b743baa] Richard Mudgett <rmudgett@digium.com>
* res_pjsip: Need to use the same serializer for a pjproject SIP transaction.
All send/receive processing for a SIP transaction needs to be done under
the same threadpool serializer to prevent reentrancy problems inside
pjproject and res_pjsip.
* Add threadpool API call to get the current serializer associated with
the worker thread.
* Pick a serializer from a pool of default serializers if the caller of
res_pjsip.c:ast_sip_push_task() does not provide one.
This is a simple way to ensure that all outgoing SIP request messages are
processed under a serializer. Otherwise, any place where a pushed task is
done that would result in an outgoing out-of-dialog request would need to
be modified to supply a serializer. Serializers from the default
serializer pool are picked in a round robin sequence for simplicity.
A side effect is that the default serializer pool will limit the growth of
the thread pool from random tasks. This is not necessarily a bad thing.
* Made pjsip_distributor.c save the thread's serializer name on the
outgoing request tdata struct so the response can be processed under the
same serializer.
This is a cherry-pick from master.
**** ASTERISK-25115 Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a
NOTE: session_inv_on_state_changed() is disassociating the dialog from the
session when the invite dialog becomes PJSIP_INV_STATE_DISCONNECTED.
Unfortunately this is a tad too soon because our BYE request transaction
has not completed yet.
This is a cherry-pick from v13.
ASTERISK-25183 #close
Reported by: Matt Jordan
Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a
2015-10-02 17:05 +0000 [78ab76b46c] Richard Mudgett <rmudgett@digium.com>
* Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled.
When DEBUG_THREADLOCALS is enabled it causes the threadlocal cleanup to be
called as a function. This causes a compile error with raw threadstorage as
it uses NULL for cleanup. This fix uses a macro that provides NULL when
DEBUG_THREADLOCALS is disabled, and replaces the call to "c_cleanup(data);"
with "{};" when DEBUG_THREADLOCALS is enabled.
ASTERISK-24975 #close
Reported by: Ashley Sanders
**** ASTERISK-24975 Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402
Cherry-pick from v13 with additional definitions of
AST_THREADSTORAGE_RAW(), ast_threadstorage_get_ptr() and
ast_threadstorage_set_ptr() from
commit d01706ce1ee518118456d5673f529204bdac73bb.
Change-Id: I3222102d005f76744561b95a3b97700d82a5ee58
2015-10-12 11:21 +0000 [47a9452780] Richard Mudgett <rmudgett@digium.com>
* config.c: Fix off-nominal memory leak.
Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0
2015-10-12 11:20 +0000 [728a2b7013] Richard Mudgett <rmudgett@digium.com>
* config.c: Fix potential memory corruption after [section](+).
The memory corruption could happen if the [section](+) is the last section
in the file with trailing comments. In this case process_text_line() has
left *last_cat is set to newcat and newcat is destroyed.
Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93
2015-10-12 11:21 +0000 [6c11fa2277] Richard Mudgett <rmudgett@digium.com>
* config.c: Fix #include after [section](+).
An #include right after a [section](+) would associate any variable
assignments before a new section in the #include with the wrong section.
* Fix section association by setting the current section to the appended
section.
* Fix '+' and '!' section flag interaction corner case depending upon
which flag came first. If the '!' came first then it would be ignored.
If the '!' came after then it would affect the appended section. The '!'
will now no longer be ignored.
ASTERISK-25461 #close
Reported by: Sean Pimental
Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3
2015-10-06 20:43 +0000 [0fe83cad51] Matt Jordan <mjordan@digium.com>
* res/res_rtp_asterisk: Fix assignment after ao2 decrement
When we decide we will no longer schedule an RTCP write, we remove the
reference to the RTP instance, then assign -1 to the stored scheduler ID
in case something else comes along and wants to see if anything is scheduled.
That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to
fix the regression introduced by 3cf0f29310, this improper assignment on a
potentially destroyed object started getting tripped on the build agents.
Frankly, this should have been crashing a lot more often earlier. I can only
assume that the timing was changed just enough by both changes to start
actually hitting this problem.
As it is, simply moving the assignment prior to the ao2 deference is sufficient
to keep the RTP instance from being referenced when it is very, truly,
aboslutely dead.
(Note that it is still good practice to assign -1 to the scheduler ID when we
know we won't be scheduling it again, as the ao2 deref *may* not always destroy
the ao2 object.)
ASTERISK-25449
Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7
2015-10-05 16:53 +0000 [c4f63952fc] Richard Mudgett <rmudgett@digium.com>
* chan_pjsip: Fix crash on reINVITE before initial INVITE completes.
Apparently some endpoints attempt to send a reINVITE before completing the
initial INVITE transaction. In this case PJSIP responds appropriately to
the reINVITE with a 491 INVITE request pending. Unfortunately chan_pjsip
is using the initial INVITE transaction state to determine if an INVITE is
the initial INVITE or a reINVITE. Since the initial INVITE transaction
has not been confirmed yet chan_pjsip thinks the reINVITE is an initial
INVITE and starts another PBX thread on the channel. The extra PBX thread
ensures that hilarity ensues.
* Fix checks for a reINVITE on incoming requests to look for the presence
of a to-tag instead of the initial INVITE transaction state.
* Made caller_id_incoming_request() determine what to do if there is a
channel on the session or not. After a channel is created it is too late
to just store the new party id on the session because the session's party
id has already been copied to the channel's caller id.
ASTERISK-25404 #close
Reported by: Chet Stevens
Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be
2015-10-05 21:34 +0000 [d61da57428] Matt Jordan <mjordan@digium.com>
* Fix improper usage of scheduler exposed by 5c713fdf18f
When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of
'0' returned. While this was valid per the documentation for the API, it was
apparently never returned previously. As a result, several users of the
scheduler API viewed the result as being invalid, causing them to reschedule
already scheduled items or otherwise fail in interesting ways.
This patch corrects the users such that they view '0' as valid, and a returned
ID of -1 as being invalid.
Note that the failing HEP RTCP tests now pass with this patch. These tests
failed due to a duplicate scheduling of the RTCP transmissions.
ASTERISK-25449 #close
Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39
2015-09-30 17:28 +0000 [5d12653d2a] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Fix deadlock with scheduler.
A deadlock can happen when a sorcery object is being expired from the
memory cache when at the same time another object is being placed into the
memory cache. There are a couple other variations on this theme that
could cause the deadlock. Basically if an object is being expired from
the sorcery memory cache at the same time as another thread tries to
update the next object expiration timer the deadlock can happen.
* Add a deadlock avoidance loop in expire_objects_from_cache() to check if
someone is trying to remove the scheduler callback from the scheduler.
ASTERISK-25441 #close
Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc
2015-10-01 14:30 +0000 [b35b9a9e32] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Replace inline code with function.
Make sorcery_memory_cache_close() call remove_all_from_cache() instead of
partially inlining it.
ASTERISK-25441
Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c
2015-10-01 14:27 +0000 [9ec52447bd] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Shutdown in a less crash potential order.
Basically you should shutdown in the opposite order of how you setup since
later setup pieces likely depend on earlier setup pieces. e.g.,
Registering your external API with the rest of the system should be the
last thing setup and the first thing unregistered during shutdown.
Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e
2015-09-30 17:27 +0000 [110927bacc] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Misc tweaks.
Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160
2015-09-30 17:27 +0000 [14ac763ab3] Richard Mudgett <rmudgett@digium.com>
* res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK.
Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c
2015-04-09 10:42 +0000 [39fe210fd9] yaron nahum (License 6676)
* res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests
This patch adds a new session supplement that handles in-dialog OPTIONS
requests. Said OPTIONS requests are sent a 200 OK, as an endpoint lookup
for the OPTIONS request would already have been done by the time the
session supplement receives the inbound request.
ASTERISK-24862 #close
Reported by: yaron nahum
patches:
res_pjsip_dlg_options.c submitted by yaron nahum (License 6676)
Change-Id: Iefc901a7c5c88d9d4b853188f85092d9eb7b6ada
2015-09-24 14:56 +0000 [00be2f6b4f] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Force COLP update if outgoing channel name changed.
* When a call is answered and the outgoing channel name has changed then
force a connected line update because the channel is no longer the same.
The channel was masqueraded into by another channel. This is usually
because of a call pickup.
Note: Forwarded calls are handled in a controlled manner so the original
channel name is replaced with the forwarded channel.
ASTERISK-25423 #close
Reported by: John Hardin
Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172
2015-09-24 14:20 +0000 [bd43638622] Richard Mudgett <rmudgett@digium.com>
* app_queue.c: Factor out a connected line update routine.
Replace inlined code with update_connected_line_from_peer().
ASTERISK-25423
Reported by: John Hardin
Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3
2015-09-24 13:27 +0000 [f5a935f9d1] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Make 'A' option pass COLP updates.
While the 'A' option is playing the announcement file allow the caller and
peer to exchange COLP update frames.
ASTERISK-25423
Reported by: John Hardin
Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9
2015-09-24 12:59 +0000 [91f754cb89] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Force COLP update if outgoing channel name changed.
* When a call is answered and the outgoing channel name has changed then
force a connected line update because the channel is no longer the same.
The channel was masqueraded into by another channel. This is usually
because of a call pickup.
Note: Forwarded calls are handled in a controlled manner so the original
channel name is replaced with the forwarded channel.
ASTERISK-25423
Reported by: John Hardin
Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c
2015-09-24 12:37 +0000 [9792b21720] Richard Mudgett <rmudgett@digium.com>
* app_dial.c: Factor out a connected line update routine.
Replace inlined code with update_connected_line_from_peer().
ASTERISK-25423
Reported by: John Hardin
Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091
2015-09-24 14:49 +0000 [7a4581a41b] Mark Michelson <mmichelson@digium.com>
* Do not swallow frames on channels leaving bridges.
When leaving a bridge, indications on a channel could be swallowed by
the internal indication logic because it appears that the channel is on
its way to be hung up anyway. One such situation where this is
detrimental is when channels on hold are redirected out of a bridge. The
AST_CONTROL_UNHOLD indication from the bridging code is swallowed,
leaving the channel in question to still appear to be on hold.
The fix here is to modify the logic inside ast_indicate_data() to not
drop the indication if the channel is simply leaving a bridge. This way,
channels on hold redirected out of a bridge revert to their expected "in
use" state after the redirection.
ASTERISK-25418 #close
Reported by Mark Michelson
Change-Id: If6115204dfa0551c050974ee138fabd15f978949
2015-09-22 17:08 +0000 [86eee104be] Richard Mudgett <rmudgett@digium.com>
* app_page.c: Fix crash when forwarding with a predial handler.
Page uses the async method of dialing with the dial API. When a call gets
forwarded there is no calling channel available. If the predial handler
was set then the calling channel could not be put into auto-service
for the forwarded call because it doesn't exist. A crash is the result.
* Moved the callee predial parameter string processing to before the
string is passed to the dial API rather than having the dial API do it.
There are a few benefits do doing this. The first is the predial
parameter string processing doesn't need to be done for each channel
called by the dial API. The second is in async mode and the forwarded
channel is to have the predial handler executed on it then the
non-existent calling channel does not need to be present to process the
predial parameter string.
* Don't start auto-service on a non-existent calling channel to execute
the predial handler when the dial API is in async mode and forwarding a
call.
ASTERISK-25384 #close
Reported by: Chet Stevens
Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981
2015-06-18 13:16 +0000 [deccd2ef3c] Mark Michelson <mmichelson@digium.com>
* Resolve race conditions involving Stasis bridges.
This resolves two observed race conditions.
First, a bit of background on what the Stasis application does:
1a Creates a stasis_app_control structure. This structure is linked into
a global container and can be looked up using a channel's unique ID.
2a Puts the channel in an event loop. The event loop can exit either
because the stasis_app_control structure has been marked done, or
because of some other factor, such as a hangup. In the event loop, the
stasis_app_control determines if any specific ARI commands need to be
run on the channel and will run them from this thread.
3a Checks if the channel is bridged. If the channel is bridged, then
ast_bridge_depart() is called since channels that are added to Stasis
bridges are always imparted as departable.
4a Unlink the stasis_app_control from the container.
When an ARI command is received by Asterisk, the following occurs
1b A thread is spawned to handle the HTTP request
2b The stasis_app_control(s) that corresponds to the channel(s) in the
request is/are retrieved. If the stasis_app_control cannot be
retrieved, then it is assumed that the channel in question has exited
the Stasis app or perhaps was never in Stasis in the first place.
3b A command is queued onto the stasis_app_control, and the channel's
event loop thread is signaled to run the command.
4b While most ARI commands do nothing further, some, such as adding or
removing channels from a bridge, will block until the command they
issued has been completed by the channel's event loop.
The first race condition that is solved by this patch involves a crash
that can occur due to faulty detection of the channel's bridged status
in step 3a. What can happen is that in step 2a, the event loop may run
the ast_bridge_impart() function to asynchronously place the channel
into a bridge, then immediately exit the event loop because the channel
has hung up. In step 3a, we would detect that the channel was not
bridged and would not call ast_bridge_depart(). The reason that the
channel did not appear to be bridged was that the depart_thread that is
spawned by ast_bridge_impart() had not yet started. That is the thread
where the channel is marked as being bridged. Since we did not call
ast_bridge_depart(), the Stasis application would exit, and then the
channel would be destroyed Then the depart_thread would start up and
try to manipulate the destroyed channel, causing a crash.
The fix for this is to switch from using ast_channel_is_bridged() to
checking the NULLity of ast_channel_internal_bridge_channel() to
determine if ast_bridge_depart() needs to be called. The channel's
internal bridge_channel is set when ast_bridge_impart() is called and
is NULLed by the call to ast_bridge_depart(). If the channel's internal
bridge_channel is non-NULL, then the channel must have been imparted
into the bridge and needs to be departed, even if the actual bridging
operation has not yet started. By departing the channel when necessary,
the thread that is running the Stasis application will block until the
bridge gives the okay that the depart_thread has exited.
The second race condition that is solved by this patch involves a leak
of HTTP handler threads. The problem was that step 2b would successfully
retrieve a stasis_app_control structure. Then step 2a would exit the
channel from the event loop due to a hangup. Steps 3a and 4a would
execute, and then finally steps 3b and 4b would. The problem is that at
step 4b, when attempting to add a channel to a bridge, the thread would
block forever since the channel would never execute the queued command
since it was finished with the event loop. This meant that the HTTP
handling thread would be leaked, along with any references that thread
may have owned (in my case, I was seeing bridges leaked).
The fix for this is to hone in better on when the channel has exited the
event loop. The stasis_app_control structure has an is_done field that
is now set at each point where the channel may exit the event loop. If
step 2b retrieves a valid stasis_app_control structure but the control
is marked as done, then the attempted operation exits immediately since
there will be nothing to service the attempted command.
ASTERISK-25091 #close
Reported by Ilya Trikoz
Change-Id: If66265b73b4c9f8f58599124d777fedc54576628
2015-09-21 18:06 +0000 [43e6804b0c] Kevin Harwell <kharwell@digium.com>
* app_record: RECORDED_FILE variable not being populated
The RECORDED_FILE variable is empty unless a '%d' is specified in the filename.
This patch makes it so the variable is always set to the filename.
ASTERISK-25410 #close
Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653
2015-09-16 08:22 +0000 [ca401c6842] Joshua Colp <jcolp@digium.com>
* pbx: Update device and presence state when changing a hint extension.
When changing a hint extension without removing the hint first the
device state and presence state is not updated. This causes the state
of the hint to be that of the previous extension and not the current
one. This state is kept until a state change occurs as a result of
something (presence state change, device state change).
This change updates the hint with the current device and presence
state of the new extension when it is changed. Any state callbacks
which may have been added before the hint extension is changed are
also informed of the new device and presence state if either have
changed.
ASTERISK-25394 #close
Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f
2015-09-16 17:36 +0000 [20702e0cf2] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: Eliminate race during initial NOTIFY.
There is a slim chance of a race condition occurring where two threads
can both attempt to manipulate the same area.
Thread A can be handling an incoming initial SUBSCRIBE request. Thread A
lets the specific subscription handler know that the subscription has
been established.
At this point, Thread B may detect a state change on the subscribed
resource and queue up a notification task on Thread C, the subscription
serializer thread.
Now Thread A attempts to generate the initial NOTIFY request to send to
the subscriber at the same time that Thread C attempts to generate a
state change NOTIFY request to send to the subscriber.
The result is that Threads A and C can step on the same memory area,
resulting in a crash. The crash has been observed as happening when
attempting to allocate more space to hold the body for the NOTIFY.
The solution presented here is to queue the subscription establishment
and initial NOTIFY generation onto the subscription serializer thread
(Thread C in the above scenario). This way, there is no way that a state
change notification can occur before the initial NOTIFY is sent, and if
there is a quick succession of NOTIFYs, we can guarantee that the two
NOTIFY requests will be sent in succession.
Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815
2015-09-10 17:19 +0000 [3ef74244a4] Mark Michelson <mmichelson@digium.com>
* scheduler: Use queue for allocating sched IDs.
It has been observed that on long-running busy systems, a scheduler
context can eventually hit INT_MAX for its assigned IDs and end up
overflowing into a very low negative number. When this occurs, this can
result in odd behaviors, because a negative return is interpreted by
callers as being a failure. However, the item actually was successfully
scheduled. The result may be that a freed item remains in the scheduler,
resulting in a crash at some point in the future.
The scheduler can overflow because every time that an item is added to
the scheduler, a counter is bumped and that counter's current value is
assigned as the new item's ID.
This patch introduces a new method for assigning scheduler IDs. Instead
of assigning from a counter, a queue of available IDs is maintained.
When assigning a new ID, an ID is pulled from the queue. When a
scheduler item is released, its ID is pushed back onto the queue. This
way, IDs may be reused when they become available, and the growth of ID
numbers is directly related to concurrent activity within a scheduler
context rather than the uptime of the system.
Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2
2015-09-10 09:49 +0000 [8826e6c416] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Copy default_from_user to avoid crash.
The default_from_user retrieval function was pulling the
default_from_user from the global configuration struct in an unsafe way.
If using a database as a backend configuration store, the global
configuration struct is short-lived, so grabbing a pointer from it
results in referencing freed memory.
The fix here is to copy the default_from_user value out of the global
configuration struct.
Thanks go to John Hardin for discovering this problem and proposing the
patch on which this fix is based.
ASTERISK-25390 #close
Reported by Mark Michelson
Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c
2015-04-23 09:16 +0000 [943d5c0c99] gtjoseph <george.joseph@fairview5.com>
* res_pjsip: Validate that contact uris start with sip: or sips:
Currently we use pjsip_parse_hdr to validate contact uris but it
appears that it allows uris without a scheme if there's a port
supplied. I.E myexample.com will fail but myexample.com:5060 will
pass even though it has no scheme. This causes SEGVs later on
whenever the uri is used.
To prevent this, permanent_contact_validate has been updated to check
that the scheme is either 'sip' or 'sips'.
2 uses of possibly-null endpoint have also been fixed in
create_out_of_dialog_request.
ASTERISK-24999
Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2
Reported-by: Brad Latus
(cherry picked from commit 75666ad7c608ad9968a216a8f0a5832bf85b785c)
2015-09-03 14:07 +0000 [7b5bcbeebe] Jonathan Rose <jrose@digium.com>
* ParkAndAnnounce: Add variable inheritance
In Asterisk 11, the announcer channel would receive channel variables
from the channel being parked by means of normal channel inheritance.
This functionality was lost during the big res_parking project in
Asterisk 12. This patch restores that functionality.
ASTERISK-25369 #close
Review: https://gerrit.asterisk.org/#/c/1180/
Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e
2015-08-29 10:36 +0000 [0901a82adb] Joshua Colp <jcolp@digium.com>
* taskprocessor: Fix race condition between unreferencing and finding.
When unreferencing a taskprocessor its reference count is checked
to determine if it should be unlinked from the taskprocessors
container and its listener shut down. In between the time when the
reference count is checked and unlinking it is possible for
another thread to jump in, find it, and get a reference to it. If
the thread then uses the taskprocessor it may find that it is not
in the state it expects.
This change locks the taskprocessors container during almost the
entire unreference operation to ensure that any other thread which
may attempt to find the taskprocessor has to wait.
ASTERISK-25295
Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c
(cherry picked from commit a676ba2aad5525926ae31b8317b95ae52cbbabbb)
2015-09-04 14:40 +0000 [500856b4f0] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Change default from user value.
When Asterisk sends an outbound SIP request, if there is no direct
reason to place a specific value for the username in the From header,
Asterisk would generate a UUID. For example, this would happen when
sending outbound OPTIONS requests when qualifying or when sending
outbound INVITE requests when originating (if no explicit caller ID were
provided). The issue is that some SIP providers reject these sorts of
requests with a "Name too long" error response.
This patch aims to fix this by changing the default outbound username in
From headers to "asterisk". This value can be overridden by changing the
default_from_user option in the global options if desired.
ASTERISK-25377 #close
Reported by Mark Michelson
Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190
2015-05-13 15:41 +0000 [42c40b59b6] Jonathan Rose <jrose@digium.com>
* Message.c: Clear message channel frames on cleanup
The message channel is a special channel that doesn't actually process frames.
However, certain actions can cause frames to be placed in the channel's read
queue including the Hangup application which is called on the channel after
each message is processed. Since the channel will continually be reused for
many messages, it's necessary to flush these frames at some point.
ASTERISK-25083 #close
Reported by: Jonathan Rose
Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f
(cherry picked from commit 02c513058905dae19f28393ea840a47ae4a9e66d)
2015-09-02 17:26 +0000 [a1e1d8e815] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Fix contact refleak on stateful responses.
When sending a stateful response, creation of the transaction can fail,
most commonly because we are trying to create a transaction from a
retransmitted request. When creation of the transaction fails, we end up
leaking a reference to a contact that was bumped when the response was
created.
This patch adds the missing deref and fixes the reference leak.
Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07
2015-09-02 12:41 +0000 [9f5e1c0e56] Joshua Colp <jcolp@digium.com>
* pbx: Fix crash when issuing "core show hints" with long pattern match.
When issuing the "core show hints" CLI command a combination of both
the hint extension and context is created. This uses a fixed size
buffer expecting that the extension will not exceed maximum extension
length. When the extension is actually a pattern match this constraint
does not hold true, and the extension may exceed the maximum extension
length. In this case extra characters are written past the end of the
fixed size buffer.
This change makes it so the construction of the combined hint extension
and context can not exceed the size of the buffer.
ASTERISK-25367 #close
Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499
2015-07-02 14:51 +0000 [1c89230e2a] Richard Mudgett <rmudgett@digium.com>
* PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error.
When res_pjsip body generator modules were generating XML or XPIDF
response bodies, there was a chance that the generated body would be the
exact size of the supplied buffer. Adding the nul string terminator would
then write beyond the end of the buffer and potentially corrupt memory.
* Fix MALLOC_DEBUG high fence violations caused by adding a nul string
terminator on the end of a buffer for XML or XPIDF response bodies.
* Made calls to pj_xml_print() safer if the XML prolog is requested. Due
to a bug in pjproject, the return value could be -1 _or_
AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough.
* Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the
return value of pj_xml_print() when the supplied buffer is not large
enough.
ASTERISK-25168
Reported by: Carl Fortin
Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de
2015-09-01 09:05 +0000 [2f2c35e91d] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: re-re-fix persistent subscription storage.
A recent change to res_pjsip_pubsub switched to using pjsip_msg_print as
a means of writing an appropriate packet to persistent storage. While
this partially solved the issue, it had its own problems.
pjsip_msg_print will always add a Content-Length header to the message
it prints. Frequent restarts of Asterisk can result in persistent
subscriptions being written with five or more Content-Length headers. In
addition, sometimes some apparent corruption of individual headers could
be seen.
This aims to fix the problem by not running a parsed message through an
interpreter but rather by taking the raw message and saving it. The
logic for what to save is going to be different depending on whether a
SUBSCRIBE was received from the wire or if it was pulled from
persistence. When receiving a packet from the wire, when using a
streaming transport, the rdata->pkt_info.packet may contain multiple SIP
messages or fragments. However, the rdata->msg_info.msg_buf will always
contain the current SIP message to be processed. When pulling from
persistence, though, the rdata->msg_info.msg_buf will be NULL since no
transport actually handled the packet. However, since we know that we
will always ever pull one SIP message from persistence, we are free to
save directly from rdata->pkt_info.packet instead.
ASTERISK-25365 #close
Reported by Mark Michelson
Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b
2015-08-31 15:24 +0000 [88ee3b3ef2] Mark Michelson <mmichelson@digium.com>
* Fix deadlock on presence state changes.
A deadlock was observed where three threads were competing for different
locks:
* One thread held the hints lock and was attempting to lock a specific
hint.
* One thread was holding the specific hint's lock and was attempting to
lock the contexts lock
* One thread was holding the contexts lock and attempting to lock the
hints lock.
Clearly the second thread was doing the wrong thing here. The fix for
this is to make sure that the hint's lock is not held on presence state
changes. Something similar is already done (and commented about) for
device state changes.
ASTERISK-25362 #close
Reported by Mark Michelson
Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2
2015-08-28 20:22 +0000 [8842637d8f] Joshua Colp <jcolp@digium.com>
* res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items.
The keepalive support in res_pjsip_sdp_rtp currently assumes
that a stream will only be negotiated once. This is false.
If the stream is replaced and later added back it can be
negotiated again causing multiple keepalive scheduled items
to exist. This change explicitly deletes the existing
keepalive scheduled item before adding the new one.
The res_pjsip_sdp_rtp module also does not stop RTP
keepalives or timeout timer if the stream has been
replaced. This change adds a callback to the session media
interface to allow a media stream to be stopped without
the resources being destroyed. This allows the scheduled
items and RTP to be stopped when the stream no longer
exists.
ASTERISK-25356 #close
Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de
2015-08-28 19:57 +0000 [06d42fede3] Joshua Colp <jcolp@digium.com>
* sched: ast_sched_del may return prematurely due to spurious wakeup
When deleting a scheduled item if the item in question is currently
executing the ast_sched_del function waits until it has completed.
This is accomplished using ast_cond_wait. Unfortunately the
ast_cond_wait function can suffer from spurious wakeups so the
predicate needs to be checked after it returns to make sure it has
really woken up as a result of being signaled.
This change adds a loop around the ast_cond_wait to make sure that
it only exits when the executing task has really completed.
ASTERISK-25355 #close
Change-Id: I51198270eb0b637c956c61aa409f46283432be61
2015-07-23 13:11 +0000 [74d6ae20cb] Mark Michelson <mmichelson@digium.com>
* Local channels: Alternate solution to ringback problem.
Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a
specific scenario involving local channels and a native local RTP bridge
could result in ringback still being heard on a calling channel even
after the call is bridged.
That commit caused many tests in the testsuite to fail with alarming
consequences, such as not sending DialBegin and DialEnd events, and
giving incorrect hangup causes during calls.
This commit reverts the previous commit and implements and alternate
solution. This new solution involves only passing AST_CONTROL_RINGING
frames across local channels if the local channel is in AST_STATE_RING.
Otherwise, the frame does not traverse the local channels. By doing
this, we can ensure that a playtones generator does not get started on
the calling channel but rather is started on the local channel on which
the ringing frame was initially indicated.
ASTERISK-25250 #close
Reported by Etienne Lessard
Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39
2015-08-26 05:40 +0000 [54a09e4cb5] Joshua Colp <jcolp@digium.com>
* chan_sip: Allow call pickup to set the hangup cause.
The call pickup implementation in chan_sip currently sets the channel
hangup cause to "normal clearing" if call pickup is successfully
performed. This action overwrites the "answered elsewhere" hangup cause
set by the call pickup code and can result in the SIP device in
question showing a missed call when it should not.
This change sets the hangup cause to "normal clearing" as a
default initially but allows the call pickup to change it as
needed.
ASTERISK-25346 #close
Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff
2015-08-25 07:17 +0000 [942d0ba96f] Joshua Colp <jcolp@digium.com>
* res_pjsip: Add common ast_sip_get_host_ip API.
Modules commonly used the pj_gethostip function for retrieving the
IP address of the host. This function does not cache the result and may
result in a DNS lookup occurring, or additional work. If the DNS
server is unreachable or network issues arise this can cause the
pj_gethostip function to block for a period of time.
This change adds an ast_sip_get_host_ip and ast_sip_get_host_ip_string
function which does the same thing but caches the host IP address at
module load time. This results in no additional work being done each
time the local host IP address is needed.
ASTERISK-25342 #close
Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e
2015-08-24 06:21 +0000 [ad4e895928] Joshua Colp <jcolp@digium.com>
* bridge: Kick channel from bridge if hung up during action.
When executing an action in a bridge it is possible for the
channel to be hung up without the bridge becoming aware of it.
This is most easily reproducible by hanging up when the bridge
is streaming DTMF due to a feature timeout. This change makes
it so after action execution the channel is checked to determine
if it has been hung up and if it has it is kicked from the bridge.
ASTERISK-25341 #close
Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062
2015-08-24 11:04 +0000 [4083e543fd] Joshua Colp <jcolp@digium.com>
* res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced
When recreating a subscription it is possible for a freed sub_tree
to be referenced when the initial NOTIFY fails to be created.
Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788
2015-04-16 13:20 +0000 [0b04269e73] Scott Griepentrog <scott@griepentrog.com>
* res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced
This change makes the send_notify of the sub_tree
not happen when the sub_tree has been deleted due
to the notify call failing, which avoids a crash.
ASTERISK-24970 #close
Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf
(cherry picked from commit 8d4ce7cc2b87317005588e700b278a8cca7005c8)
2015-08-14 15:46 +0000 [f049ad951b] Mark Michelson <mmichelson@digium.com>
* res_pjsip_sdp_rtp: Restore removed NULL check.
When sending an RTP keepalive, we need to be sure we're not dealing with
a NULL RTP instance. There had been a NULL check, but the commit that
added the rtp_timeout and rtp_hold_timeout options removed the NULL
check.
Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64
2015-08-13 12:22 +0000 [fb347a4ded] Richard Mudgett <rmudgett@digium.com>
* audiohook.c: Fix MixMonitor crash when using the r() or t() options.
The built frame format in audiohook_read_frame_both() is now set to a
signed linear format before the rx and tx frames are duplicated instead of
only for the mixed audio frame duplication.
ASTERISK-25322 #close
Reported by Sean Pimental
Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538
2015-08-12 12:59 +0000 [a5049df640] Kevin Harwell <kharwell@digium.com>
* chan_sip.c: wrong peer searched in sip_report_security_event
In chan_sip, after handling an incoming invite a security event is raised
describing authorization (success, failure, etc...). However, it was doing
a lookup of the peer by extension. This is fine for register messages, but
in the case of an invite it may search and find the wrong peer, or a non
existent one (for instance, in the case of call pickup). Also, if the peers
are configured through realtime this may cause an unnecessary database lookup
when caching is enabled.
This patch makes it so that sip_report_security_event searches by IP address
when looking for a peer instead of by extension after an invite is processed.
ASTERISK-25320 #close
Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4
2015-08-13 05:26 +0000 [7089472637] Joshua Colp <jcolp@digium.com>
* res_http_websocket: When shutting down a session don't close closed socket
Due to the use of ast_websocket_close in session termination it is
possible for the underlying socket to already be closed when the
session is terminated. This occurs when the close frame is attempted
to be written out but fails.
Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b
2015-08-11 05:24 +0000 [128d2348e6] Joshua Colp <jcolp@digium.com>
* res_http_websocket: Forcefully terminate on write errors.
The res_http_websocket module will currently attempt to close
the WebSocket connection if fatal cases occur, such as when
attempting to write out data and being unable to. When the
fatal cases occur the code attempts to write a WebSocket close
frame out to have the remote side close the connection. If
writing this fails then the connection is not terminated.
This change forcefully terminates the connection if the
WebSocket is to be closed but is unable to send the close frame.
ASTERISK-25312 #close
Change-Id: I10973086671cc192a76424060d9ec8e688602845
2015-08-10 13:43 +0000 [6b219a866c] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF.
Pressing DTMF digits on a phone to go out on a DAHDI channel can result in
the digit not being recognized or even heard by the peer.
Phone -> Asterisk -> DAHDI/channel
Turns out the DAHDI behavior with DTMF generation (and any other generated
tones) is exposed by the "buffers=" setting in chan_dahdi.conf. When
Asterisk requests to start sending DTMF then DAHDI waits until its write
buffer is empty before generating any samples for the DTMF tones. When
Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI
immediately stops generating the DTMF samples. As a result, the more
samples there are in the DAHDI write buffer the shorter the time DTMF
actually gets sent on the wire. If there are more samples in the write
buffer than the time DTMF is supposed to be sent then no DTMF gets sent on
the wire. With the "buffers=12,half" setting and each buffer representing
20 ms of samples then the DAHDI write buffer is going to contain around
120 ms of samples. For DTMF to be recognized by the peer the actual sent
DTMF duration needs to be a minimum of 40 ms. Therefore, the intended
duration needs to be a minimum of 160 ms for the peer to receive the
minimum DTMF digit duration to recognize it.
A simple and effective solution to work around the DAHDI behavior is for
Asterisk to flush the DAHDI write buffer when sending DTMF so the full
duration of DTMF is actually sent on the wire. When someone is going to
send DTMF they are not likely to be talking before sending the tones so
the flushed write samples are expected to just contain silence.
* Made dahdi_digit_begin() flush the DAHDI write buffer after requesting
to send a DTMF digit.
ASTERISK-25315 #close
Reported by John Hardin
Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a
2015-08-05 14:21 +0000 [fc4455216a] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi.c: Lock private struct for ast_write().
There is a window of opportunity for DTMF to not go out if an audio frame
is in the process of being written to DAHDI while another thread starts
sending DTMF. The thread sending the audio frame could be past the
currently dialing check before being preempted by another thread starting
a DTMF generation request. When the thread sending the audio frame
resumes it will then cause DAHDI to stop the DTMF tone generation. The
result is no DTMF goes out.
* Made dahdi_write() lock the private struct before writing to the DAHDI
file descriptor.
ASTERISK-25315
Reported by John Hardin
Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb
2015-08-10 18:23 +0000 [739fca6084] Richard Mudgett <rmudgett@digium.com>
* res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message.
If the saved SUBSCRIBE message is not parseable for whatever reason then
Asterisk could crash when libpjsip tries to parse the message and adds an
error message to the parse error list.
* Made ast_sip_create_rdata() initialize the parse error rdata list. The
list is checked after parsing to see that it remains empty for the
function to return successful.
ASTERISK-25306
Reported by Mark Michelson
Change-Id: Ie0677f69f707503b1a37df18723bd59418085256
2015-08-06 12:48 +0000 [bfb15bea06] Mark Michelson <mmichelson@digium.com>
* res_pjsip_pubsub: More accurately persist packet.
The pjsip_rx_data structure has a pkt_info.packet field on it that is
the packet that was read from the transport. For datagram transports,
the packet read from the transport will correspond to the SIP message
that arrived. For streamed transports, however, it is possible to read
multiple SIP messages in one packet.
In a recent case, Asterisk crashed on a system where TCP was being used.
This is because at some point, a read from the TCP socket resulted in a
200 OK response as well as an incoming SUBSCRIBE request being stored in
rdata->pkt_info.packet. When the SUBSCRIBE was processed, the
combination 200 OK and SUBSCRIBE was saved in persistent storage. Later,
a restart of Asterisk resulted in the crash because the persistent
subscription recreation code ended up building the 200 OK response
instead of a SUBSCRIBE request, and we attempted to access
request-specific data.
The fix here is to use the pjsip_msg_print() function in order to
persist SUBSCRIBE requests. This way, rather than using the raw socket
data, we use the parsed SIP message that PJSIP has given us. If we
receive multiple SIP messages from a single read, we will be sure only
to save off the relevant SIP message. There also is a safeguard put in
place to make sure that if we do end up reconstructing a SIP response,
it will not cause a crash.
ASTERISK-25306 #close
Reported by Mark Michelson
Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2
2015-08-04 16:12 +0000 [9e93ad109b] Joshua Colp <jcolp@digium.com>
* res_pjsip: Ensure sanitized XML is NULL terminated.
The ast_sip_sanitize_xml function is used to sanitize
a string for placement into XML. This is done by examining
an input string and then appending values to an output
buffer. The function used by its implementation, strncat,
has specific behavior that was not taken into account.
If the size of the input string exceeded the available
output buffer size it was possible for the sanitization
function to write past the output buffer itself causing
a crash. The crash would either occur because it was
writing into memory it shouldn't be or because the resulting
string was not NULL terminated.
This change keeps count of how much remaining space is
available in the output buffer for text and only allows
strncat to use that amount.
Since this was exposed by the res_pjsip_pidf_digium_body_supplement
module attempting to send a large message the maximum allowed
message size has also been increased in it.
A unit test has also been added which confirms that the
ast_sip_sanitize_xml function is providing NULL terminated
output even when the input length exceeds the output
buffer size.
ASTERISK-25304 #close
Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302
2015-02-13 11:21 +0000 [f6dcbd9707] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session: Fix double re-INVITE collision crash.
A multi-asterisk box setup with direct media enabled would occasionally
crash when two re-INVITE collisions on a call leg happen in a row.
The re-INVITE logic only had one timer struct to defer the re-INVITE.
When the second collision happens the timer struct is overwritten and put
into the timer heap again. Resources for the first timer are leaked and
the heap has two positions occupied by the same timer struct. Now the
heap ordering is potentially corrupted, the timer will fire twice, and any
resources allocated for the second timer will be released twice.
* The solution is to put the collided re-INVITE into the delayed requests
queue with all the other delayed requests and cherry pick the next request
that can come off the queue when an event happens.
* Changed to put delayed BYE requests at the head of the delayed queue.
There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE
has been requested.
* Made the start of a BYE request flush the delayed requests queue to
prevent a delayed request from overlapping the BYE transaction. I saw a
few cases where a delayed re-INVITE got started after the BYE transaction
started.
* Changed the delayed_request struct to use an enum instead of a string
for the request method. Cherry picking the queue is easier with an enum
than string comparisons and the compiler can warn if a switch statement
does not cover all defined enum values.
* Improved the debug output to give more information. It helps to know
which channel is involved with an endpoint. Trunks can have many channels
associated with the endpoint at the same time.
ASTERISK-24727 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4414/
Change-Id: Ib05700c3a13ceac53b17d66099ef0d296a5e1863
2015-01-16 16:12 +0000 [4350fd22c8] Mark Michelson <mmichelson@digium.com>
* Fix problem where a hung channel could occur on a failed blind transfer.
Different clients react differently to being told that a blind transfer
has failed. Some will simply send a BYE and be done with it. Others will
attempt to reinvite themselves back onto the call.
In the latter case, we were creating a new channel and then leaving it to
sit forever doing nothing. With this code change, that new channel will
not be created and the dialog with the transferring channel will be cleaned
up properly.
ASTERISK-24624 #close
Reported by Zane Conkle
Review: https://reviewboard.asterisk.org/r/4339
Change-Id: I76e440e08e603c1eea40a14951e7b171c0472a55
2015-07-18 11:16 +0000 [fae081ad5b] Joshua Colp <jcolp@digium.com>
* pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options.
This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold'
endpoint options. These allow the channel to be hung up if RTP
is not received from the remote endpoint for a specified number of
seconds.
ASTERISK-25259 #close
Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9
2015-07-09 14:17 +0000 [d66abb6746] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Add rtp_keepalive endpoint option.
This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the
chan_sip option, this specifies an interval, in seconds, at which we
will send RTP comfort noise frames. This can be useful for keeping RTP
sessions alive as well as keeping NAT associations alive during lulls.
ASTERISK-25242 #close
Reported by Mark Michelson
Change-Id: I683bdc206c8c7def586ecaa64dcf2b86550be3bf
2015-07-16 09:46 +0000 [1b744ab684] Joshua Colp <jcolp@digium.com>
* chan_pjsip: Don't change formats when frame of unsupported format is received.
Receipt of an RTP packet currently causes the formats on an PJSIP channel to
change to the format of the RTP packet. In some off-nominal cases it's possible
for this to be a format that has not been configured or negotiated. This change
makes it so only formats explicitly configured on the endpoint are allowed.
ASTERISK-25258 #close
Change-Id: If93d641fb6418a285928839300d7854cab8c1020
2015-07-15 15:40 +0000 [147b86a8d1] Richard Mudgett <rmudgett@digium.com>
* strings.h: Fix issues with escape string functions.
Fixes for issues with the ASTERISK-24934 patch.
* Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is
an empty string. If it were an empty string the functions returned NULL
as if there were a memory allocation failure. This failure caused the AMI
VarSet event to not get posted if the new value was an empty string.
* Fixed dest buffer overwrite potential in ast_escape() and
ast_escape_c(). If the dest buffer size is smaller than the space needed
by the escaped s parameter string then the dest buffer would be written
beyond the end by the nul string terminator. The num parameter was really
the dest buffer size parameter so I renamed it to size.
* Made nul terminate the dest buffer if the source string parameter s was
an empty string in ast_escape() and ast_escape_c().
* Updated ast_escape() and ast_escape_c() doxygen function description
comments to reflect reality.
* Added some more unit test cases to /main/strings/escape to cover the
empty source string issues.
ASTERISK-25255 #close
Reported by: Richard Mudgett
Change-Id: Id77fc704600ebcce81615c1200296f74de254104
2015-07-14 14:36 +0000 [131f6ef8f5] Richard Mudgett <rmudgett@digium.com>
* res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park.
setup_park_common_datastore() was assuming that a non-NULL string returned
for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty
strings. Things got crashy as a result.
* Made setup_park_common_datastore() treat the channel variable values the
same whether they are NULL or empty for ATTENDEDTRANSFER and
BLINDTRANSFER.
ASTERISK-25254 #close
Reported by: Richard Mudgett
Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2
2015-07-09 09:18 +0000 [23b7b109c2] Joshua Colp <jcolp@digium.com>
* bridge_native_rtp.c: Don't start native RTP bridging after attended transfer.
The bridge_native_rtp module adds a frame hook to channels which are in
a native RTP bridge. This frame hook is used to intercept when a hold
or unhold frame traverses the bridge so native RTP can be stopped or
started as appropriate. This is expected but exposes a specific bug
when attended transfers are involved.
Upon completion of an attended transfer an unhold frame is queued up
to take one of the channels involved off hold. After this is done
the channel is moved between bridges.
When the frame hook is involved in this case for the unhold it
releases the channel lock and acquires the bridge lock. This
allows the bridge core to step in and move the channel
(potentially changing the bridging techology) from another thread.
Once completed the bridge lock is released by the bridge core.
The frame hook is then able to acquire the bridge lock and
wrongfully starts native RTP again, despite the channel no longer
being in the bridge or needing to start native RTP. In fact at
this point the frame hook is no longer attached to the channel.
This change makes it so the native RTP bridge data is available to
the frame hook when it is invoked. Whether the frame hook has
been detached or not is stored on the native RTP bridge data and
is checked by the frame hook before starting or stopping native
RTP bridging. If the frame hook has been detached it does nothing.
ASTERISK-25240 #close
Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2
2015-05-26 07:44 +0000 [0fcc530dc7] Joshua Colp <jcolp@digium.com>
* sorcery: Fix cache creation callback.
The cache creation callback function expects to receive a sorcery_details
structure and not just a standalone object.
Change-Id: Id2a9e5f271c466686e6d0def461fa50c8b2cae53
2015-07-08 14:39 +0000 [c8d53f2372] Mark Michelson <mmichelson@digium.com>
* res_sorcery_memory_cache: Remove ASTERISK_REGISTER_FILE() macro.
This was part of the backport of res_sorcery_memory_cache from master
but will not compile in 13.
Change-Id: I27b3d833acda9dd1770fdbe594964197b93779b0
2015-07-06 09:24 +0000 [a72cf6ce81] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Execute stale unit test last.
In Jenkins there is currently a sporadic test failure of a
variable number of sorcery memory cache unit tests. I have not
been able to reproduce this on the build agents themselves or
on my development machine.
My working theory is that the stale unit test is causing a
sorcery instance to persist longer than expected, causing subsequent
tests to fail when setting up and initializing the next
sorcery instance.
To see if this is the case this change moves the stale unit test
to execute last so no subsequent unit tests can have issues
initializing their sorcery instance.
Change-Id: Ifd6550a949613be774b75fa5db12c02110f82c4a
2015-06-17 07:00 +0000 [e0cd8216bb] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Remove 'prefetch' option.
To prevent confusion I am removing the prefetch option until such
time as it is implemented. All other functionality, however, has
been implemented.
ASTERISK-25067
Change-Id: I9ce6aa3e5c6c5bc3c5baa8ff90fa036d73939895
2015-06-02 10:20 +0000 [8b2bad7740] Joshua Colp <jcolp@digium.com>
* test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache.
This change adds a CLI command which can perform memory cache thrashing as well
as unit tests which perform thrashing under the following configurations:
1. Low number of unique objects that go stale after 1 second
2. Low number of unique objects that expire after 1 second
3. Low number of unique objects which are constantly updated
4. Large number of unique objects which exceed a defined cache size
5. Large number of unique objects which exceed a defined cache size
that also expire and go stale rapidly
6. Large number of unique objects which expire and go stale rapidly
7. Large number of unique objects
For all of the above there are a large number of threads constantly
attempting to retrieve random objects and each test runs for a few
seconds.
ASTERISK-25067
Reported by: Matt Jordan
Change-Id: I8c8ceff977332c80ed4a31f10d694d48552b2f78
2015-06-04 13:11 +0000 [8575c4f18d] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Implement expire_on_reload option.
This change implements the expire_on_reload option for memory caches.
If enabled and a reload is performed all objects within the cache
will be expired and the cache emptied.
ASTERISK-25067
Reported by: Matt Jordan
Change-Id: Id46aa1957d660556700e689e195eed57c989b85e
2015-06-04 05:33 +0000 [da52527136] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Add test event when a refresh occurs.
This change adds a testsuite event for when a refresh occurs.
This is useful as it provides a guaranteed mechanism of knowing when
it has occurred instead of waiting an arbitrary amount of time.
ASTERISK-25067
Reported by: Matt Jordan
Change-Id: Iaa6b8d2d6bab7f99ee08e1c8908b8272a8987e65
2015-05-26 07:34 +0000 [f596b4a85c] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Add CLI commands and AMI actions.
This change adds the following CLI commands and AMI actions:
sorcery memory cache show
sorcery memory cache dump
sorcery memory cache expire
sorcery memory cache stale
SorceryMemoryCacheExpire
SorceryMemoryCacheExpireObject
SorceryMemoryCacheStale
SorceryMemoryCacheStaleObject
These allow both examination and manipulation of sorcery memory
caches from external sources.
Cached objects can be explicitly expired from a cache or marked
as stale. If expired they are immediately removed. If marked as
stale they will be background refreshed when next retrieved.
ASTERISK-25067
Reported by Matt Jordan
Change-Id: I68e03cfd8c34b5e07f4b6ee4fd93a3f4a00a3d9e
2015-05-26 13:01 +0000 [9c2de310be] Mark Michelson <mmichelson@digium.com>
* res_sorcery_memory_cache: Add support for refreshing stale objects.
This change introduces a check of object_lifetime_stale when retrieving
cached objects. If the amount of time the object has been in the cache
exceeds the lifetime, then a task is scheduled to update the cached
object based on an object retrieved from other sorcery wizards instead.
To prevent the cached object from being retrieved during a refresh,
thread-local storage is used to mark the thread as being a stale object
update. This results in the cache returning no object, leading to
sorcery querying other wizards for the object instead.
A test has been added for stale objects as well. This test ensures that
stale objects are retrieved the same as freshly-cached objects. The test
also ensures that after an object is stale, changes in the backend are
reflected in the cache, to include if the object has been deleted from
the backend.
ASTERISK-25067
Reported by Matt Jordan
Change-Id: I9bd7c049adf6939bfe2899f393c2bfbbf412d217
2015-05-20 17:35 +0000 [9a7fccc50c] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Add support for object_lifetime_maximum.
This makes the "object_lifetime_maximum" option operational.
On the addition of an object to an empty memory cache a scheduled
task is created which, when invoked, expires objects from the cache
which have exceeded their lifetime. If more objects have been added
the remaining life of the oldest object is used to schedule the
next invocation of the scheduled task.
If the oldest object is removed from the cache before it can be
expired automatically the scheduled task is cancelled, if possible,
and the lifetime of the next oldest is used to schedule the task.
If during these two operations no additional objects exist in the
cache then no task is scheduled.
An additional unit test has been added which verifies this
functionality.
ASTERISK-25067
Reported by: Matt Jordan
Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6
2015-05-20 15:19 +0000 [9ae9221d2b] Mark Michelson <mmichelson@digium.com>
* res_sorcery_memory_cache: Add support for maximum_objects.
This makes the "maximum_objects" option operational.
A heap has been added alongside the hash table in the cache. When
objects are added to the cache, they are also added to the heap.
Similarly, when objects are removed from the cache, they are removed
from the heap.
The heap's use comes into play when an item is to be added to a "full"
cache. When the cache is full, the oldest item is removed from the
cache, using the heap to determine the oldest item.
A unit test has been added that verifies that the maximum_objects option
works as expected and that the oldest object is removed from the cache
when an object beyond the maximum is added.
ASTERISK-25067 #close
Reported by Matt Jordan
Change-Id: I490658830e9c4cbf0b3051e4cdc4913cf9f1b73a
2015-05-16 17:02 +0000 [e4d42119b5] Joshua Colp <jcolp@digium.com>
* res_sorcery_memory_cache: Add basic module implementation.
This change adds a basic res_sorcery_memory_cache module which implements
configuration option parsing, configuration file parsing for threading,
sorcery interface implementation, and unit tests.
Objects can be added, updated, deleted, and retrieved from the memory
cache. Automatic expiration and stale handling will be added in the
future.
Note that unit tests exist within the module itself in case the
threading done as a result of expiration results in asynchronous
actions (which it likely will). Providing access and a notification
mechanism for an external test module would be complicated and
not worth it.
ASTERISK-25067 #close
Reported by: Matt Jordan
Change-Id: Id8a6a357ef5a83d466f81eee56a67d13eeb118b9
2015-07-02 17:03 +0000 [49a37f22e1] Jonathan Rose <jrose@digium.com>
* app: Add functions to swap vm function table
This patch adds function-mocking methods for testing voicemail
features in external modules. It is being pulled over from r432556
on SVN because DPMA won't presently compile with TEST_FRAMEWORK
set in Asterisk 13.1 certified.
Change-Id: I1c2cf6d5a8589104154a86538ecd3f62a2694681
2015-04-22 16:22 +0000 [f58c0acfa2] gtjoseph <george.joseph@fairview5.com>
* res/res_corosync: Always decline module load, instead of failing
Returns a 'failure' from the module load routine indicates to Asterisk
that it should abort loading completely. This is rarely - in fact,
really, never - a good option. Aborting load of Asterisk from a dynamic
module implies that the core, and the rest of the dynamic modules, don't
matter: we should abandon all processing.
res_corosync is really not that important.
This patch updates the module such that, if it fails to load, it
politely declines (emitting ERROR messages along the way), and allows
Asterisk to continue to function.
Note that this issue was keeping Asterisk unit tests from running on
certain build agents.
Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f
2015-06-29 12:45 +0000 [9cbd76630a] Mark Michelson <mmichelson@digium.com>
* res_sorcery_realtime: Fix leak of sorcery object type.
This prevents a leak of a sorcery object type when realtime sorcery
objects are retrieved by fields or when multiple objects are retrieved.
The extent of this leak is that sorcery object types would be leaked.
These are allocated whenever an object type is registered with sorcery,
meaning that on module shutdown, these objects would be leaked. This
could be problematic if many reloads were performed, but it is not as
severe as if every sorcery object retrieved from realtime were being
leaked.
ASTERISK-25165 #close
Reported by Corey Farrell
Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8
2015-06-26 16:12 +0000 [8ba3de43ad] Mark Michelson <mmichelson@digium.com>
* res_pjsip_nat: Adjust when contact should be rewritten.
A previous change made the contact only get rewritten if the dialog's
route set was not marked frozen. Unfortunately, while the intent of this
is correct, the dialog's route set actually gets marked as frozen
earlier than expected, especially for UAS dialogs.
Instead, the idea is that the contact needs to not be rewritten if there
is a pre-existing route set on the dialog. This is now accomplished by
checking the dialog's route set list instead of checking if the route
set is frozen.
Doing this causes some broken tests to begin passing again.
ASTERISK-25196
Reported by Mark Michelson
Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e
2015-06-26 10:41 +0000 [20f50131d7] Mark Michelson <mmichelson@digium.com>
* res_pjsip_refer: Prevent sending duplicate headers.
res_pjsip_refer will attempt to add Referred-By or Replaces headers to
outbound INVITEs at times. If the INVITE gets challenged for
authentication, then we will resend the INVITE. Prior to this patch, the
Referred-By or Replaces header would be re-added to the outbound INVITE,
resulting in duplicated headers.
ASTERISK-25204 #close
Reported by Mark Michelson
Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d
2015-06-23 17:43 +0000 [0d535df734] Mark Michelson <mmichelson@digium.com>
* res_pjsip_nat: Rewrite route set when required.
When performing some provider testing, the rewrite_contact option was
interfering with proper construction of a route set when sending an ACK
after receiving a 200 OK response to an INVITE.
The initial INVITE was sent to address sip:foo. The 200 OK had a Contact
header with URI sip:bar. In addition, the 200 OK had Record-Route
headers for sip:baz and sip:foo, in that order. Since the Record-Route
headers had the lr parameter, the result should have been:
* Set R-URI of the ACK to sip:bar.
* Add Route headers for sip:foo and sip:baz, in that order.
However, the rewrite_contact option resulted in our rewriting the
Contact header on the 200 OK to sip:foo. The result was:
* R-URI remained sip:foo.
* We added Route headers for sip:foo and sip:baz, in that order.
The result was that sip:bar was not indicated in the ACK at all, so the
far end never received our ACK. The call eventually dropped.
The intention of rewrite_contact is to rewrite the most immediate
destination of our SIP request to be the same address on which we
received a request or response. In the case of processing a SIP response
with Record-Route headers, this means that instead of rewriting the
Contact header, we should instead rewrite the bottom-most Record-Route
header. In the case of processing a SIP request with Record-Route
headers, this means we rewrite the top-most Record-route header.
Like when we rewrite the Contact header, we also ensure to update
the dialog's route set if it exists.
ASTERISK-25196 #close
Reported by Mark Michelson
Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f
2015-06-23 14:34 +0000 [3332869b48] Richard Mudgett <rmudgett@digium.com>
* AMI: Add Linkedid to the standard channel snapshot AMI event headers.
ASTERISK-25189 #close
Reported by: John Hardin
Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac
2015-06-17 05:04 +0000 [a35d6feae2] Joshua Colp <jcolp@digium.com>
* res_pjsip_mwi: Set up unsolicited MWI upon registration.
The res_pjsip_mwi previously required a reload to set up the proper
subscriptions to allow unsolicited MWI to work. This change
makes it so the act of registering will also cause this to occur.
This is particularly useful if realtime is involved as no reload
needs to occur within Asterisk to cause the MWI information
to get sent.
ASTERISK-25180 #close
Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252
2015-06-10 18:28 +0000 [75589c4a3b] Joshua Colp <jcolp@digium.com>
* bridge: When performing a blonde transfer update connected line information.
When performing a blonde transfer the code uses the old masquerade
mechanism to move a channel around. As a result of this certain information,
such as connected line, is moved between the channels involved. Upon
completion of the move a frame is queued which is supposed to update the
connected line information on the channel. This does not occur as the
code considers it a redundant update since the masquerade operation
updated the channel (but did not inform it of the new connected line
information). The code also does not queue a connected line update
to be handled by the thread handling the channel. Without this any
other channel that may be loosely involved does not know it is
talking to a different caller.
This change does the following to resolve this:
1. The indicated connected line information is cleared upon
completion of the masquerade operation when doing a blonde transfer.
This prevents the connected line update from being considered
redundant.
2. A connected line update frame is now queued upon the completion
of the masquerade operation so any other channel loosely involved
knows that there is a different caller.
ASTERISK-25157 #close
Reported by: Joshua Colp
Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20
2015-06-11 14:39 +0000 [8142b922ab] Richard Mudgett <rmudgett@digium.com>
* app_directory: Fix crash when using the alias option 'a'.
The voicemail.conf mailbox key/value pair is defined as:
<mailbox>=[<password>[,<full-name>[,<email>[,<pager>[,<options>]]]]]
Where all fields in the value including the field values are optional.
Since the parsing code for the mailbox key/value pair is sloppy, this
patch tightens the parsing for the directory information.
* Renamed the 'pos' and 'bufptr' variables to 'name' and 'options'
respectively in search_directory_sub(). Those names make more sense.
* Made sure that search_directory_sub() is dealing with the voicemail.conf
mailbox options field if it even exists when looking for the 'hidefromdir'
and 'alias' options.
* Fix crash if a voicemail.conf mailbox is just
<mailbox>=<password>,<name> when the 'a' option is used. If there were no
fields after the name then the 'options' pointer was not checked for NULL.
* Fix users.conf alias processing if the 'a' option is used. The wrong
variable was used.
ASTERISK-25087 #close
Reported by: Chet Stevens
Change-Id: I86052ea77307beddddba5279824d39dc0d593374
2015-06-08 12:28 +0000 [ca2174bb23] Matt Jordan <mjordan@digium.com>
* .version: Update for certified/13.1-cert3-rc1
2015-06-08 12:28 +0000 [2ef2c12fae] Matt Jordan <mjordan@digium.com>
* .lastclean: Update for certified/13.1-cert3-rc1
2015-06-08 12:28 +0000 [5032390639] Matt Jordan <mjordan@digium.com>
* realtime: Add database scripts for certified/13.1-cert3-rc1
2015-06-08 09:43 +0000 [2bf6fd263a] Kevin Harwell <kharwell@digium.com>
* AMI: Escape string values.
So this issue is a bit complicated. Since it is possible to pass values to AMI
that contain a '\r\n' (or other similar sequences) these values need to be
escaped. One way to solve this is to escape the values and then pass the escaped
values to the AMI variable parameter string building function. However, this
puts the onus on the pre-build function to escape all string values. This
potentially requires a fair amount of changes along with a lot of string
allocations/freeing for all values.
Surely there is a way to push this complexity down a level into the string
building function itself? This of course is possible, but ends up requiring a
way to distinguish between strings that need to be escaped and those that don't.
The best way to handle this is by introducing a new format specifier in the
format string. For instance a %s (no escape) and %S (escape). However, that is
a bit weird and unexpected.
So faced with those possibilities this patch implements a limited version of the
first option. Instead of attempting to escape all string values this patch only
escapes those values that make sense. This approach limits the number of changes
and doesn't suffer from the odd format specifier problem.
ASTERISK-24934 #close
Reported by: warren smith
Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0
2015-06-03 17:41 +0000 [5f954e1e00] Mark Michelson <mmichelson@digium.com>
* res_pjsip: Prevent access of NULL channels.
It is possible to receive incoming requests or responses after the channel
on an ast_sip_session has been destroyed and NULLed out. Handlers of these
sorts of requests or responses need to be prepared for the possibility
that the channel is NULL or else they could cause a crash.
While several places have been amended to deal with NULL channels, there
were still a couple of places that needed updating.
res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to
return early if there is no channel on the session.
res_pjsip_session.c: When handling a 302 response, we need to stop the
redirecting attempt if there is no channel on the session.
ASTERISK-25148 #close
reported by Mark Michelson
Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9
2015-02-17 09:34 +0000 [c994a3bfa0] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_refer: Fix crash from a REFER and BYE collision.
Analyzing a one-off crash on a busy system showed that processing a REFER
request had a NULL session channel pointer. The only way I can think of
that could cause this is if an outgoing BYE transaction overlapped the
incoming REFER transaction in a collision. Asterisk sends a BYE while the
phone sends a REFER to complete an attended transfer.
* Made check the session channel pointer before processing an incoming
REFER request in res_pjsip_refer.
* Fixed similar crash potential for res_pjsip supplement incoming request
processing for res_pjsip_sdp_rtp INFO, res_pjsip_caller_id INVITE/UPDATE,
res_pjsip_messaging MESSAGE, and res_pjsip_send_to_voicemail REFER
messages.
* Made res_pjsip_messaging respond to a message body too large with a 413
instead of ignoring it.
ASTERISK-24700 #close
Reported by: Zane Conkle
Review: https://reviewboard.asterisk.org/r/4417/
........
Merged revisions 431898 from http://svn.asterisk.org/svn/asterisk/branches/13
Change-Id: I57878adc0846dd942a699ad36dcec9cba5e57994
2015-04-06 14:23 +0000 [1e98fcac6b] Kevin Harwell <kharwell@digium.com>
* res_pjsip: config option 'timers' can't be set to 'no'
When setting the configuration option 'timers' equal to 'no' the bit flag was
not properly negated. This patch clears all associated flags and only sets the
specified one. pjsip will handle any necessary flag combinations. Also went
ahead and did similar for the '100rel' option.
ASTERISK-24910 #close
Reported by: Ray Crumrine
Review: https://reviewboard.asterisk.org/r/4582/
........
Merged revisions 434131 from http://svn.asterisk.org/svn/asterisk/branches/13
Change-Id: Ibbc25d4592aabf7596ef473447d630961f88c217
2015-05-26 13:56 +0000 [bd32327353] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_session: Fix in-dialog authentication.
When the remote peer requires authentication for in-dialog requests then
re-INVITEs to the peer cause the call to be disconnected and other
in-dialog requests to the peer like MESSAGE just don't go through.
* Made session_inv_on_tsx_state_changed() handle in-dialog authentication
for re-INVITEs and other methods. Initial INVITEs cannot be handled here
because the INVITE transaction must be restarted earlier.
* Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in
preparation for removing the file. The generic outbound authentication
code did not work as well as anticipated.
* Created outbound_invite_auth() to only handle initial outbound INVITEs.
Re-INVITEs cannot be handled here. The re-INVITE transaction is still in
progress and the PJSIP library cannot handle the overlapping INVITE
transactions. Other method types should not be handled here as this code
only works on outgoing calls and we need to handle incoming and outgoing
calls.
ASTERISK-25131 #close
Reported by: Richard Mudgett
Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0
2015-05-12 17:45 +0000 [b81353a0ec] Jonathan Rose <jrose@digium.com>
* app_voicemail: fix moving when old messages full
When completing voicemail playback of a message in the 'INBOX', the
message gets moved to the 'Old' messages folder. Without this patch, if
the 'Old' folder is already at its set limit, then the 'INBOX' message will
simply be deleted. With this patch, the flag to delete the message will be
removed if the save_to_folder function indicates that the message could
not be moved due to a full folder.
ASTERISK-25082 #close
Reported by: Jonathan Rose
Review: https://gerrit.asterisk.org/#/c/448/
Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f
2015-05-12 17:34 +0000 [523fab02d8] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision.
If an ISDN call is hungup by both sides at the same time a crash could
happen.
* Added missing NULL checks for the owner channel after calling
pri_queue_pvt_cause_data() in two places. Code after those calls need to
check the owner channel pointer for NULL before use because
pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the
owner and the owner may get hung up.
ASTERISK-21893 #close
Reported by: Alexandr Gordeev
Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a
2015-04-16 10:51 +0000 [b764454d4d] Kevin Harwell <kharwell@digium.com>
* bridge.c: NULL app causes crash during attended transfer
Due to a race condition there was a chance that during an attended transfer the
channel's application would return NULL. This, of course, would cause a crash
when attempting to access the memory. This patch retrieves the channel's app
at an earlier time in processing in hopes that the app name is available.
However, if it is not then "unknown" is used instead. Since some string value
is now always present the crash can no longer occur.
ASTERISK-24869 #close
Reported by: viniciusfontes
Review:
Change-Id: I5134b84c4524906d8148817719d76ffb306488ac
2015-05-06 13:24 +0000 [6433b697ae] Joshua Colp <jcolp@digium.com>
* res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination
The res_pjsip_exten_state module currently has a race condition between
processing the extension state callback from the PBX core and processing
the subscription shutdown callback from res_pjsip_pubsub. There is currently
no synchronization between the two. This can present a problem as while
the SIP subscription will remain valid the tree it points to may not.
This is in particular a problem as a task to send a NOTIFY may get queued
which will try to use the tree that may no longer be valid.
This change does the following to fix this problem:
1. All access to the subscription tree is done within the task that
sends the NOTIFY to ensure that no other thread is modifying or
destroying the tree. This task executes on the serializer for the
subscriptions.
2. A reference to the subscription serializer is kept to ensure it
remains valid for the lifetime of the extension state subscription.
3. The NOTIFY task has been changed so it will no longer attempt
to send a NOTIFY if the subscription has already been terminated.
ASTERISK-25057 #close
Reported by: Matt Jordan
Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643
2015-01-19 07:18 +0000 [bf31a486cb] Joshua Colp <jcolp@digium.com>
* res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions.
The first thing this patch fixes is UAS dialogs. Previously if a transport was
configured on an endpoint and an inbound session was created there was no guarantee
that requests sent on the dialog would use the correct transport and address
information. This has now been fixed so an explicitly configured transport
is taken into account.
The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed
module attempts to determine what transport a message should go out on and what
addressing information should go into the message itself. In a scenario where
multiple transports exist bound to the same IP address but a different port the
code would incorrectly alter the transport and change the message to the wrong
transport. This change makes the res_pjsip_multihomed module smarter so it will
only change the transport and address information in the message when it is
possible and makes sense.
ASTERISK-24615 #close
Reported by: David Justl
Change-Id: I5b57362201cc8c6555834ec8707e9fbddeff7904
2015-05-04 12:16 +0000 [7c687c8e54] Joshua Colp <jcolp@digium.com>
* stasis: Fix dial masquerade datastore lifetime
A recent change went into Asterisk which added reference counts to the
channels stored in a dial masquerade datastore. Unfortunately this
included a reference to the caller in a dialing operation. While all
of the dialed targets have the datastore removed from them upon dialing
completion this did not occur for the caller, causing it to have a
reference to itself that could go never go away (as it depended on
the destruction of the datastore which only happened when the channel
was destroyed). This resulted in the caller channel remaining on the
system despite it having hung up.
This change does the following to fix this issue:
1. The dial masquerade datastore is now removed from the caller upon
dialing completion, just like the dialed targets.
2. Upon destruction of the caller all the dialed targets are also
removed from the dial masquerade datastore (just in case).
3. The reference to the caller has been removed as it should not be
possible for the datastore to now be valid/useful after the lifetime
of the caller has ended.
ASTERISK-25025 #close
Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f
2015-04-29 14:29 +0000 [0602409c89] Richard Mudgett <rmudgett@digium.com>
* chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option.
Some telco switches occasionally ignore ISDN RESTART requests. The fix
for ASTERISK-19608 added an escape clause for B channels in the restarting
state if the telco ignores a RESTART request. If the telco fails to
acknowledge the RESTART then Asterisk will assume the telco acknowledged
the RESTART on the second call attempt requesting the B channel by the
telco. The escape clause is good for dealing with RESTART requests in
general but it does cause the next call for the restarting B channel to be
rejected if the telco insists the call must go on that B channel.
chan_dahdi doesn't really need to issue a RESTART request in response to
receiving a cause 44 (Requested channel not available) code. Sending the
RESTART in such a situation is not required (nor prohibited) by the
standards. I think chan_dahdi does this for historical reasons to deal
with buggy peers to get channels unstuck in a similar fashion as the
chan_dahdi.conf resetinterval option.
* Add the chan_dahdi.conf force_restart_unavailable_chans compatability
option that when disabled will prevent chan_dahdi from trying to RESTART
the channel in response to a cause 44 code.
ASTERISK-25034 #close
Reported by: Richard Mudgett
Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65
2015-04-30 15:20 +0000 [c6c06bbe70] Mark Michelson <mmichelson@digium.com>
* Prevent potential crash on blond transfer.
Scenario:
Alice calls Bob. Bob performs a blond transfer to Carol. Carol rejects
the incoming call (or some other immediate circumstance causes Carol not
to answer the call)
What occurs in this case is that when the bridge between Alice and Bob
breaks, Alice is told to masquerade into Bob's channel that had placed
the call to Carol. The actual masquerade goes down without a hitch.
However, a channel fixup callback that attempts to publish dial events
over Stasis has a crash. The reason for this crash is that the datastore
on Bob's channel that placed the outbound call to Carol only had a bare
pointer to Carol's channel. Since Carol rejected the incoming call,
Carol's channel has been hung up and freed, meaning accessing her
channel results in a crash.
The fix here is simple. The dial fixup code has been altered to hold
references to the involved channels and to drop those references when
freeing data.
ASTERISK-25025 #close
Reported by Chet Stevens
Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197
2015-04-30 14:09 +0000 [08a4cf3237] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback.
The Asterisk 13 version of the fix for outbound registration was missing
a key component that set the outbound authenticator's callback that
creates an authenticated request based on an old request. This was
picked up by some outbound registration tests failing in the testsuite.
Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3
2015-04-30 06:04 +0000 [47df4e031c] Joshua Colp <jcolp@digium.com>
* res_pjsip_outbound_registration: Fix double unref on error return.
When the PJSIP pjsip_regc_send function is invoked and an error
status returned the caller currently decrements the reference count
of the client state that it just incremented, assuming the
registration callback would not have been invoked. In practice
this is not correct. If the failure happens after the transaction
has been set up the callback will still be invoked. This will
cause the reference count to be incorrectly decremented twice, once
by the registration callback and second by the caller of
pjsip_regc_send.
This change makes it so that whether the callback is invoked or
not is known by the caller of pjsip_regc_send. Depending on
this it can know whether it is responsible for decrementing the
reference count of the client state or not.
ASTERISK-25037 #close
Reported by: Joshua Colp
Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de
2015-04-27 16:56 +0000 [11d85ea251] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_registration: Don't fail on delayed processing: 13.
This is the Asterisk 13 version of a change to master that allows for
registration responses to be processed successfully potentially after
the original transaction has timed out. The main difference between this
and the master change is that the master version has API changes that
are unacceptable for 13. For 13, this is worked around by adding a new
API call that the outbound registration code uses instead.
The following is the text from the master version of this commit:
Odd behaviors have been observed during outbound registrations. The most
common problem witnessed has been one where a request with
authentication credentials cannot be created after receiving a 401
response. Other behaviors include apparently processing an incorrect SIP
response.
Inspecting the code led to an apparent issue with regards to how we
handle transactions in outbound registration code. When a response to a
REGISTER arrives, we save a pointer to the transaction and then push a
task onto the registration serializer. Between the time that we save the
pointer and push the task, it's possible for the transaction to be
destroyed due to a timeout. It's also possible for the address to be
reused by the transaction layer for a new transaction.
To allow for authentication of a REGISTER request to be authenticated
after the transaction has timed out, we now also hold a reference to the
original REGISTER request instead of the transaction. The function for
creating a request with authentication has been altered to take the
original request instead of the transaction where the original request
was sent.
ASTERISK-25020
Reported by Mark Michelson
Change-Id: If1ee5f601be839479a219424f0358a229f358f7c
2015-04-27 14:44 +0000 [0037ca59a6] Mark Michelson <mmichelson@digium.com>
* res_pjsip_outbound_registration: Add debugging messages.
When problems occur regarding outbound registrations, it currently
is difficult to debug. Most off-nominal paths had warning messages,
but sometimes we want to know what's going on before hitting the
off-nominal path. This patch adds lots of debugging output that
should give a clearer picture of what is happening with regards
to outbound registrations.
ASTERISK-25020
Reported by Mark Michelson
Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45
2015-04-11 10:10 +0000 [e84fcb2464] Juergen Spies (License 6698)
* res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram
Prior to this patch, the far_max_datagram value on the UDPTL structure would
remain -1 if the remote endpoint fails to provide the SDP media attribute
T38FaxMaxDatagram. This can result in the INVITE request being rejected. With
this patch, we will now properly initialize the value with either the default
value or with the value provided by pjsip.conf's t38_udptl_maxdatagram
parameter.
Review: https://reviewboard.asterisk.org/r/4589
ASTERISK-24928 #close
Reported by: Juergen Spies
Tested by: Juergen Spies
patches:
pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Change-Id: I15bde169fd59a224a02005fec9a439f0679a375e
2015-04-23 12:54 +0000 [008076ecf4] Mark Michelson <mmichelson@digium.com>
* res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX.
When Asterisk originates a channel to an application, the channel is
hung up once the application finishes executing. When the application
in question is SendFax, the Asterisk PJSIP code will attempt to reinvite
the T.38 session to audio after the FAX completes. The hangup of the
channel happens in the midst of this reinvite transaction. In most
circumstances, this works out okay because the BYE is delayed until the
reinvite transaction can complete.
However, if the reinvite that Asterisk sends receives a 401/407
response, then Asterisk's attempt to re-send the reinvite with
authentication will fail. This is because the session supplement in
res_pjsip_t38 makes the assumption that the channel on the session will
always be non-NULL. Since the channel has been hung up, though, the
channel is now NULL. Attempting to operate on the channel causes a
crash.
This patch fixes the issue by ensuring that the channel on the session
is not NULL before attempting to mess with the T.38 framehook.
This patch also contains some corrections for comments that were
incorrect and really confused me when I first started looking at the
code.
ASTERISK-25004 #close
Reported by Mark Michelson
Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0
2015-04-15 10:38 +0000 [1bb6122f35] Mark Michelson <mmichelson@digium.com>
* Detect potential forwarding loops based on count.
A potential problem that can arise is the following:
* Bob's phone is programmed to automatically forward to Carol.
* Carol's phone is programmed to automatically forward to Bob.
* Alice calls Bob.
If left unchecked, this results in an endless loops of call forwards
that would eventually result in some sort of fiery crash.
Asterisk's method of solving this issue was to track which interfaces
had been dialed. If a destination were dialed a second time, then
the attempt to call that destination would fail since a loop was
detected.
The problem with this method is that call forwarding has evolved. Some
SIP phones allow for a user to manually forward an incoming call to an
ad-hoc destination. This can mean that:
* There are legitimate use cases where a device may be dialed multiple
times, or
* There can be human error when forwarding calls.
This change removes the old method of detecting forwarding loops in
favor of keeping a count of the number of destinations a channel has
dialed on a particular branch of a call. If the number exceeds the
set number of max forwards, then the call fails. This approach has
the following advantages over the old:
* It is much simpler.
* It can detect loops involving local channels.
* It is user configurable.
The only disadvantage it has is that in the case where there is a
legitimate forwarding loop present, it takes longer to detect it.
However, the forwarding loop is still properly detected and the
call is cleaned up as it should be.
Address review feedback on gerrit.
* Correct "mfgium" to "Digium"
* Decrement max forwards by one in the case where allocation of the
max forwards datastore is required.
* Remove irrelevant code change from pjsip_global_headers.c
ASTERISK-24958 #close
Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23
2015-04-15 16:08 +0000 [cb67aae596] gtjoseph <george.joseph@fairview5.com>
* More .gitignore updates
Added .pyc and .sha1 to the top-level .gitignore.
Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a
Tested-by: George Joseph <george.joseph@fairview5.com>
2015-04-13 19:06 +0000 [70fab74baf] gtjoseph <george.joseph@fairview5.com>
* .gitignore updates for master/13
Added products of ./bootstrap
Added nmenuselect and gmenuselect to menuselect/
Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35
2015-04-13 09:54 +0000 [735bea479a] Matt Jordan <mjordan@digium.com>
* build_tools/make_version: Update version parsing for Git migration
External systems - such as the Asterisk Test Suite - require knowledge of the
upstream branch. Unfortunately, after moving to Git, the Asterisk version
currently consists of only a 'GIT" prefix followed by an object blob,
e.g., GIT-as08d7. This makes it difficult for such systems to know what
features are available in a particular check out of Asterisk.
This patch fixes this by hardcoding the branch in a variable in the
make_version script. Since the mainline branches are not changed often -
typically only once a year - this is a reasonable approach to solving
the problem, and is more reliable than parsing the output of 'git branch
-vv'. Branches that track off of an upstream primary branch will then get the
benefit of knowing which mainline branch they are currently based off
of.
ASTERISK-24954 #close
Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799
2015-04-12 12:59 +0000 [7d64479748] Matt Jordan <mjordan@digium.com>
* git migration: Remove support for file versions
Git does not support the ability to replace a token with a version
string during check-in. While it does have support for replacing a
token on clone, this is somewhat sub-optimal: the token is replaced
with the object hash, which is not particularly easy for human
consumption. What's more, in practice, the source file version was often
not terribly useful. Generally, when triaging bugs, the overall version
of Asterisk is far more useful than an individual SVN version of a file.
As a result, this patch removes Asterisk's support for showing source file
versions.
Specifically, it does the following:
* main/asterisk:
- Refactor the file_version structure to reflect that it no longer
tracks a version field.
- Alter the "core show file version" CLI command such that it always
reports the version of Asterisk. The file version is no longer
available.
* main/manager: The Version key now always reports the Asterisk version.
* UPGRADE: Add notes for:
- Modification to the ModuleCheck AMI Action.
- Modification of the "core show file version" CLI command.
Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28
2015-04-12 06:12 +0000 [9237e8b11e] Corey Farrell <git@cfware.com>
* main/editline: Add .gitignore.
This patch adds a .gitignore for main/editline to ignore all build results.
Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d
2015-04-11 23:22 +0000 [630dbcb8b4] Matt Jordan <mjordan@digium.com>
* .gitignore: Ignore tarballs (*.gz)
This patch updates the root .gitignore file to ignore files with a .gz
extension. This will cause git to ignore downloaded sound tarballs in
the the sounds/ directory.
Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa
2015-04-11 13:20 +0000 [e4892f9aa4] gtjoseph <george.joseph@fairview5.com>
* Add .gitignore and .gitreview files
Add the .gitignore and .gitreview files to the asterisk repo.
NB: You can add local ignores to the .git/info/exclude file
without having to do a commit.
Common ignore patterns are in the top-level .gitignore file.
Subdirectory-specific ignore patterns are in their own .gitignore
files.
Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696
Tested-by: George Joseph
2015-04-14 14:04 +0000 [677898f839] Joshua Colp <jcolp@digium.com>
* res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers.
Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon
a mailbox state change (such as a new message being left, or one being deleted).
In practice this is not sufficient to keep clients aware of the current MWI status.
This change makes the module send unsolicited MWI NOTIFY on startup so that
clients are guaranteed to have the most up to date MWI information. It also makes
clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware
of the current MWI status they receive it.
ASTERISK-24982 #close
Reported by: Joshua Colp
Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58
2015-04-08 13:19 +0000 [918ca7dd36] Jonathan Rose <jrose@digium.com>
* res_pjsip_t38: Fix FAX failures when using PJSIP with authentication
Without this patch, if a PJSIP endpoint with udptl enabled and authentication
set attempted to use sendFax, the FAX session would fail during setup. This
was because the invite issued in response to being auth challenged would cause
the PJSIP channel performing the FAX to receive a second T38 framehook and
this would cause frames to be consumed in an inappropriate manner.
ASTERISK-24933 #close
Reported by: Jonathan Rose
Review: https://reviewboard.asterisk.org/r/4577/
........
Merged revisions 434425 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434428 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 12:24 +0000 [08945a5c77] Maciej Szmigiero <mail@maciej.szmigiero.name> (license 6085)
* Security/tcptls: MitM Attack potential from certificate with NULL byte in CN.
When registering to a SIP server with TLS, Asterisk will accept CA signed
certificates with a common name that was signed for a domain other than the
one requested if it contains a null character in the common name portion of
the cert. This patch fixes that by checking that the common name length
matches the the length of the content we actually read from the common name
segment. Some certificate authorities automatically sign CA requests when
the requesting CN isn't already taken, so an attacker could potentially
register a CN with something like www.google.com\x00www.secretlyevil.net
and have their certificate signed and Asterisk would accept that certificate
as though it had been for www.google.com - this is a security fix and is
noted in AST-2015-003.
ASTERISK-24847 #close
Reported by: Maciej Szmigiero
Patches:
asterisk-null-in-cn.patch submitted by mhej (license 6085)
........
Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 434384 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434418 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-07 10:35 +0000 [45f09898e9] Mark Michelson <mmichelson@digium.com>
* Do not queue message requests that we do not respond to.
If we receive a MESSAGE request that we cannot send a response
to, we should not send the incoming MESSAGE to the dialplan.
This commit should help the bouncing message_retrans test to
pass consistently.
........
Merged revisions 434218 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434220 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-03 16:59 +0000 [42b7ebdd4d] Mark Michelson <mmichelson@digium.com>
* res_pjsip_messaging: Serialize outbound SIP MESSAGEs
Outbound SIP MESSAGEs had the potential to be sent out
of order from how they were specified in a set of
dialplan steps.
This change creates a serializer for sending outbound
MESSAGE requests on. This ensures that the MESSAGEs are
sent by Asterisk in the same order that they were sent
from the dialplan.
ASTERISK-24937 #close
Reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/4579
........
Merged revisions 433968 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433970 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-01 15:32 +0000 [b6fff2719d] Mark Michelson <mmichelson@digium.com>
* core: avoid possible asterisk -r crash from long id
When connecting to the remote console, an id string
is first provided that consts of the hostname, pid,
and version. This is parsed by the remote instance
using a buffer that may be too short, and can allow
a buffer overrun because it is not terminated. This
patch adds termination and a larger buffer.
Review: https://reviewboard.asterisk.org/r/4182/
AFS-254
........
Merged revisions 429223 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433918 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-01 11:29 +0000 [8ae3670781] Ashley Sanders <asanders@digium.com>
* stasis: set a channel variable on websocket disconnect error
Resolve compile errors caused by r433863 by fixing the
documentation xml to comply with the schema.
........
Merged revisions 433888 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433890 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-31 22:39 +0000 [259227eb1a] Ashley Sanders <asanders@digium.com>
* stasis: set a channel variable on websocket disconnect error
Resolve compile errors caused by r433839 by included the missing
header file, pbx.h.
........
Merged revisions 433863 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-31 17:34 +0000 [758fead630] Ashley Sanders <asanders@digium.com>
* stasis: set a channel variable on websocket disconnect error
When an error occurs while writing to a web socket, the web socket is
disconnected and the event is logged. A side-effect of this, however, is that
any application on the other side waiting for a response from Stasis is left
hanging indefinitely (as there is no mechanism presently available for
notifying interested parties about web socket error states in Stasis).
To remedy this scenario, this patch introduces a new channel variable:
STASISSTATUS.
The possible values for STASISSTATUS are:
SUCCESS - The channel has exited Stasis without any failures
FAILED - Something caused Stasis to croak. Some (not all) possible
reasons for this:
- The app registry is not instantiated;
- The app requested is not registered;
- The app requested is not active;
- Stasis couldn't send a start message
ASTERISK-24802
Reported By: Kevin Harwell
Review: https://reviewboard.asterisk.org/r/4519/
........
Merged revisions 433839 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433842 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 15:55 +0000 [b5b44876c2] Mark Michelson <mmichelson@digium.com>
* Add stateful PJSIP response API call, and use it for out-of-dialog responses.
Asterisk had an issue where retransmissions of MESSAGE requests resulted in
Asterisk processing the retransmission as if it were a new MESSAGE request.
This patch fixes the issue by creating a transaction in PJSIP on the incoming
request. This way, if a retransmission arrives, the PJSIP transaction layer
will resend the response and Asterisk will not ever see the retransmission.
ASTERISK-24920 #close
Reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/4532/
........
Merged revisions 433619 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433621 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-27 15:25 +0000 [66b8c7cab4] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown.
Contact expiration object refs were leaked when the module was unloaded.
* Made empty the scheduler of entries before destroying it to release the
object ref held by the scheduler entry.
Review: https://reviewboard.asterisk.org/r/4523/
........
Merged revisions 433596 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-20 14:57 +0000 [fb7062afca] Richard Mudgett <rmudgett@digium.com>
* Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks.
Valgrind found some memory leaks associated with
ast_pjsip_rdata_get_endpoint(). The leaks would manifest when sending
responses to OPTIONS requests, processing MESSAGE requests, and
res_pjsip supplements implementing the incoming_request callback.
* Fix ast_pjsip_rdata_get_endpoint() endpoint ref leaks in
res/res_pjsip.c:supplement_on_rx_request(),
res/res_pjsip/pjsip_options.c:send_options_response(),
res/res_pjsip_messaging.c:rx_data_to_ast_msg(), and
res/res_pjsip_messaging.c:send_response().
* Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in
res/res_pjsip_nat.c:nat_on_rx_message().
* Fixed inconsistent but benign return value in
res/res_pjsip/pjsip_options.c:options_on_rx_request().
Review: https://reviewboard.asterisk.org/r/4511/
........
Merged revisions 433222 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433224 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-20 14:04 +0000 [cf9799845f] Richard Mudgett <rmudgett@digium.com>
* res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively.
Valgrind found a memory leak and invalid access.
* Fix invalid access by sscanf() being fed a non-nul terminated string of
digits in res/res_pjsip_sdp_rtp.c:get_codecs().
* Fix memory leak in main/sorcery.c:sorcery_object_field_destructor().
* Fix potential NULL pointer dereference in
main/xmldoc.c:xmldoc_get_syntax_config_option().
Review: https://reviewboard.asterisk.org/r/4513/
........
Merged revisions 433199 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433201 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 16:56 +0000 [90fc65da62] Richard Mudgett <rmudgett@digium.com>
* Audit ast_sockaddr_resolve() usage for memory leaks.
Valgrind found some memory leaks associated with ast_sockaddr_resolve().
Most of the leaks had already been fixed by earlier memory leak hunt
patches. This patch performs an audit of ast_sockaddr_resolve() and found
one more.
* Fix ast_sockaddr_resolve() memory leak in
apps/app_externalivr.c:app_exec().
* Made main/netsock2.c:ast_sockaddr_resolve() always set the addrs
parameter for safety so the pointer will never be uninitialized on return.
The same goes for res/res_pjsip_acl.c:extract_contact_addr().
* Made functions that call ast_sockaddr_resolve() with RAII_VAR()
controlling the addrs variable use ast_free instead of ast_free_ptr to
provide better MALLOC_DEBUG information.
Review: https://reviewboard.asterisk.org/r/4509/
........
Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 433057 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 13:44 +0000 [e0b644ddb7] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Allow configuration of endpoint identifier query order
Updated some documentation stating that endpoint identifiers registered without
a name are place at the front of the lookup list. Also renamed register method
'ast_sip_register_endpoint_identifier_by_name' to
'ast_sip_register_endpoint_identifier_with_name'
ASTERISK-24840
Reported by: Mark Michelson
........
Merged revisions 433031 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 13:43 +0000 [d7c8041f6b] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Allow configuration of endpoint identifier query order
This patch fixes previously reverted code that caused binary incompatibility
problems with some modules. And like the original patch it makes sure that
no matter what order the endpoint identifier modules were loaded, priority is
given based on the ones specified in the new global 'endpoint_identifier_order'
option.
ASTERISK-24840
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4489/
........
Merged revisions 433028 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433033 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-17 11:25 +0000 [cd4e18c4cc] Richard Mudgett <rmudgett@digium.com>
* Multiple revisions 431583,433005
........
r431583 | sgriepentrog | 2015-02-06 15:26:12 -0600 (Fri, 06 Feb 2015) | 10 lines
various: cleanup issues found during leak hunt
In this collection of small patches to prevent
Valgrind errors are: fixes for reference leaks
in config hooks, evaluating a parameter beyond
bounds, and accessing a structure after a lock
where it could have been already free'd.
Review: https://reviewboard.asterisk.org/r/4407/
........
r433005 | rmudgett | 2015-03-17 11:10:39 -0500 (Tue, 17 Mar 2015) | 1 line
res_pjsip: Add reason comment.
........
Merged revisions 431583,433005 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433025 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-13 10:51 +0000 [6cd70450fd] Kevin Harwell <kharwell@digium.com>
* Revert - res_pjsip: Allow configuration of endpoint identifier query order
Due to a break in binary compatibility with some other modules these changes
are being reverted until the issue can be resolved.
ASTERISK-24840
Reported by: Mark Michelson
........
Merged revisions 432868 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-09 11:44 +0000 [4eb1dd4b35] Kevin Harwell <kharwell@digium.com>
* res_pjsip: Allow configuration of endpoint identifier query order
It's possible to have a scenario that will create a conflict between endpoint
identifiers. For instance an incoming call could be identified by two different
endpoint identifiers and the one chosen depended upon which identifier module
loaded first. This of course causes problems when, for example, the incoming
call is expected to be identified by username, but instead is identified by ip.
This patch adds a new 'global' option to res_pjsip called
'endpoint_identifier_order'. It is a comma separated list of endpoint
identifier names that specifies the order by which identifiers are processed
and checked.
ASTERISK-24840 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4455/
........
Merged revisions 432638 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-04 12:53 +0000 [52366a423c] Matt Jordan <mjordan@digium.com>
* translate: Prevent invalid memory accesses on fast shutdown
When a 'core restart now' or 'core stop now' is executed and a channel is
currently in a media operation, the translator matrix can be destroyed while a
channel is currently blocked on getting the best translation choice
(see ast_translator_best_choice). When the channel gets the mutex, the
translation matrix now has invalid memory, and Asterisk crashes.
This patch does two things:
(1) We now only clean up the translation matrix on a graceful shutdown. In that
case, there are no channels, and so there is no risk of this occurring.
(2) We also now set the __matrix and __indextable to NULL. In some initial
backtraces when this occurred, it looked as if there was a memory corruption
occurring, and it wasn't until we determined that something had restarted
Asterisk that the issue became clear. By setting these to NULL on shutdown,
it becomes a bit easier to determine why a crash is occurring.
Note that we could litter the code with NULL checks on the __matrix, but the
act of making the translation matrix cleaned up on shutdown should preclude
this issue from occurring in the first place, and this part of the code needs
to be as fast as possible.
Review: https://reviewboard.asterisk.org/r/4457/
........
Merged revisions 432453 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432454 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-02 13:15 +0000 [b17d0953b6] Matt Jordan <mjordan@digium.com>
* res/res_pjsip_sdp_rtp: Revert portion of r432195
Unfortunately, while initial testing with ConfBridge did not reproduce the
audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing
did show that bridge_softmix and/or ConfBridge has a severe problem bridging
two or more participants at different sampling rates. Sometimes, it even picks
odd sampling rates that cause hideous audio problems.
This patch backs out the offending portion of the code until the issues in
the affected bridging modules can be more properly analyzed.
ASTERISK-24841
........
Merged revisions 432423 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-26 11:15 +0000 [3b4ba353f0] Kevin Harwell <kharwell@digium.com>
* app_chanspy, channel: fix frame leaks
Fixed a couple of frame leaks that were found during testing.
ASTERISK-24828 #close
Reported by: John Hardin
Review: https://reviewboard.asterisk.org/r/4445/
........
Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 432363 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432365 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-24 16:01 +0000 [33c73ffeaa] Matt Jordan <mjordan@digium.com>
* ARI/PJSIP: Apply requesting channel's format cap to created channels
This patch addresses the following problems:
* ari/resource_channels: In ARI, we currently create a format capability
structure of SLIN and apply it to the new channel being created. This was
originally done when the PBX core was used to create the channel, as there
was a condition where a newly created channel could be created without any
formats. Unfortunately, now that the Dial API is being used, this has two
drawbacks:
(a) SLIN, while it will ensure audio will flows, can cause a lot of
needless transcodings to occur, particularly when a Local channel is
created to the dialplan. When no format capabilities are available, the
Dial API handles this better by handing all audio formats to the requsted
channels. As such, we defer to that API to provide the format
capabilities.
(b) If a channel (requester) is causing this channel to be created, we
currently don't use its format capabilities as we are passing in our own.
However, the Dial API will use the requester channel's formats if none
are passed into it, and the requester channel exists and has format
capabilities. This is the "best" scenario, as it is the most likely to
create a media path that minimizes transcoding.
Fixing this simply entails removing the providing of the format capabilities
structure to the Dial API.
* chan_pjsip: Rather than blindly picking the first format in the format
capability structure - which actually *can* be a video or text format - we
select an audio format, and only pick the first format if that fails. That
minimizes the weird scenario where we attempt to transcode between video/audio.
* res_pjsip_sdp_rtp: Applied the joint capapbilites to the format structure.
Since ast_request already limits us down to one format capability once the
format capabilities are passed along, there's no reason to squelch it here.
* channel: Fixed a comment. The reason we have to minimize our requested
format capabilities down to a single format is due to Asterisk's inability
to convey the format to be used back "up" a channel chain. Consider the
following:
PJSIP/A => L;1 <=> L;2 => PJSIP/B
g,u,a g,u,a g,u,a u
That is, we have PJSIP/A dialing a Local channel, where the Local;2 dials
PJSIP/B. PJSIP/A has native format capabilities g722,ulaw,alaw; the Local
channel has inherited those format capabilities down the line; PJSIP/B
supports only ulaw. According to these format capabilities, ulaw is
acceptable and should be selected across all the channels, and no
transcoding should occur. However, there is no way to convey this: when L;2
and PJSIP/B are put into a bridge, we will select ulaw, but that is not
conveyed to PJSIP/A and L;1. Thus, we end up with:
PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B
g g X u u
Which causes g722 to be written to PJSIP/B.
Even if we can convey the 'ulaw' choice back up the chain (which through
some severe hacking in Local channels was accomplished), such that the chain
looks like:
PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B
u u u u
We have no way to tell PJSIP/A's *channel driver* to Answer in the SDP back
with only 'ulaw'. This results in all the channel structures being set up
correctly, but PJSIP/A *still* sending g722 and causing the chain to fall
apart.
There's a lot of difficulty just in setting this up, as there are numerous
race conditions in the act of bridging, and no clean mechanism to pass the
selected format backwards down an established channel chain. As such, the
best that can be done at this point in time is clarifying the comment.
Review: https://reviewboard.asterisk.org/r/4434/
ASTERISK-24812 #close
Reported by: Matt Jordan
........
Merged revisions 432195 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432197 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 12:04 +0000 [3ad393b043] Kevin Harwell <kharwell@digium.com>
* res_pjsip: dtls_handler causes Asterisk to crash
There have been a couple of times where a crash occurred in the dtls_handler
section of the code for res_pjsip. Unfortunately, in working this issue the
problem was unable to be reproduced. After looking at the backtraces and
through the code the current best guess as to why this happened might be due
to a reentrance problem and the strtok function. So, the current fix is to
convert the strtok function into the reentrant version of the function,
strtok_r.
ASTERISK-24741 #close
Reported by: Zane Conkle
Review: https://reviewboard.asterisk.org/r/4409/
........
Merged revisions 431698 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431700 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 11:52 +0000 [8be00450b9] Kevin Harwell <kharwell@digium.com>
* res_http_websocket: websocket write timeout fails to fully disconnect
When writing to a websocket if a timeout occurred the underlying socket did not
get closed/disconnected. This patch makes sure the websocket gets disconnected
on a write timeout. Also a notice is logged stating that the websocket was
disconnected.
ASTERISK-24701 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/4412/
........
Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 431670 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431697 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 11:48 +0000 [340588c721] Richard Mudgett <rmudgett@digium.com>
* HTTP: Stop accepting requests on final system shutdown.
There are three CLI commands to stop and restart Asterisk each.
1) core stop/restart now - Hangup all calls and stop or restart Asterisk.
New channels are prevented while the shutdown request is pending.
2) core stop/restart gracefully - Stop or restart Asterisk when there are
no calls remaining in the system. New channels are prevented while the
shutdown request is pending.
3) core stop/restart when convenient - Stop or restart Asterisk when there
are no calls in the system. New calls are not prevented while the
shutdown request is pending.
ARI has made stopping/restarting Asterisk more problematic. While a
shutdown request is pending it is desirable to continue to process ARI
HTTP requests for current calls. To handle the current calls while a
shutdown request is pending, a new committed to shutdown phase is needed
so ARI applications can deal with the calls until the system is fully
committed to shutdown.
* Added a new shutdown committed phase so ARI applications can deal with
calls until the final committed to shutdown phase is reached.
* Made refuse new HTTP requests when the system has reached the final
system shutdown phase. Starting anything while the system is actively
releasing resources and unloading modules is not a good thing.
* Split the bridging framework shutdown to not cleanup the global bridging
containers when shutting down in a hurry. This is similar to how other
modules prevent crashes on rapid system shutdown.
* Moved ast_begin_shutdown(), ast_cancel_shutdown(), and
ast_shutting_down(). You should not have to include channel.h just to
access these system functions.
ASTERISK-24752 #close
Reported by: Matthew Jordan
Review: https://reviewboard.asterisk.org/r/4399/
........
Merged revisions 431692 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-11 10:19 +0000 [69dc8f9ec2] Kevin Harwell <kharwell@digium.com>
* pjsip_options: Fix continued qualifies after endpoint/aor deletion
If you remove an endpoint/aor from pjsip.conf then do a core reload,
qualifies will continue even though the object are gone. This happens
because nothing clears out the qualify tasks.
This patch unschedules all existing qualify tasks before scheduling
new ones on reload.
Tested-by: George Joseph
Review: https://reviewboard.asterisk.org/r/4290/
........
Merged revisions 430064 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431667 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-02-05 09:50 +0000 [2125e1b2de] Mark Michelson <mmichelson@digium.com>
* Add Asterisk 13 revision 431420 that fixes disabling 100rel option on PJSIP endpoints.
git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431573 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-04-08 Asterisk Development Team <asteriskteam@digium.com>
* Certified Asterisk 13.1-cert2 Released.
* Mitigate MitM attack potential from certificate with NULL byte in CN.
When registering to a SIP server with TLS, Asterisk will accept CA
signed certificates with a common name that was signed for a domain
other than the one requested if it contains a null character in the
common name portion of the cert. This patch fixes that by checking
that the common name length matches the the length of the content we
actually read from the common name segment. Some certificate
authorities automatically sign CA requests when the requesting CN
isn't already taken, so an attacker could potentially register a CN
with something like www.google.com\x00www.secretlyevil.net and have
their certificate signed and Asterisk would accept that certificate
as though it had been for www.google.com.
ASTERISK-24847 #close
Reported by: Maciej Szmigiero
patches:
asterisk-null-in-cn.patch uploaded by mhej (license 6085)
AST-2015-003
2015-01-30 Asterisk Development Team <asteriskteam@digium.com>
* Certified Asterisk 13.1-cert1 Released.
2015-01-30 17:53 +0000 [r431494] Richard Mudgett <rmudgett@digium.com>
* apps/app_agent_pool.c, /: app_agent_pool: Fix initial module load
agent device state reporting. When the app_agent_pool module
initially loads there is a race condition between the thread
loading agents.conf and the device state internal processing
thread. If the device state internal processing thread handles
the agent creation state updates before the thread that loaded
agents.conf registers the device state provider callback then the
cached agent state is "Invalid". When a consumer module like
app_queue asks for the agent state it gets the cached "Invalid"
state instead of the real state from the provider. * Moved
loading the agents.conf configuration to the last thing setup by
app_agent_pool in load_module(). Now the device state provider
callback is registered before the config is loaded so the agent
creation state updates are guaranteed to get the initial device
state. * Removed some now redundant config cleanup on error in
load_config(). * Added lock protection when accessing the device
state in agent_pvt_devstate_get() and eliminated the RAII_VAR()
usage. ASTERISK-24737 #close Reported by: Steve Pitts Review:
https://reviewboard.asterisk.org/r/4390/ ........ Merged
revisions 431492 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-30 16:50 +0000 [r431470] Mark Michelson <mmichelson@digium.com>
* main/stasis_channels.c, channels/chan_pjsip.c, main/xmldoc.c,
res/res_pjsip_refer.c, main/pbx.c, main/manager.c,
pbx/pbx_spool.c, /, main/bridge_after.c: Fix some memory leaks.
These memory leaks were found and fixed by John Hardin. I'm just
committing them for him. ASTERISK-24736 #close Reported by Mark
Michelson Review: https://reviewboard.asterisk.org/r/4389
........ Merged revisions 431468 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-30 16:41 +0000 [r431467] Jonathan Rose <jrose@digium.com>
* main/manager.c, /: Merge r431153 from asterisk/branches/13
r431153 | jrose | 2015-01-27 11:22:52 -0600 (Tue, 27 Jan 2015) |
9 lines Manager: Fix Manager Action ModuleLoad to give correct
response when reloading Prior to this patch, ModuleLoad would
respond with an error indicating that the requested module wasn't
found in spite of finding and reloading the module. Review:
https://reviewboard.asterisk.org/r/4373/ ASTERISK-24721 #close
2015-01-28 21:53 +0000 [r431326-431334] Mark Michelson <mmichelson@digium.com>
* funcs/func_curl.c, /: Multiple revisions 431297-431298 ........
r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan
2015) | 17 lines Mitigate possible HTTP injection attacks using
CURL() function in Asterisk. CVE-2014-8150 disclosed a
vulnerability in libcURL where HTTP request injection can be
performed given properly-crafted URLs. Since Asterisk makes use
of libcURL, and it is possible that users of Asterisk may get
cURL URLs from user input or remote sources, we have made a patch
to Asterisk to prevent such HTTP injection attacks from
originating from Asterisk. ASTERISK-24676 #close Reported by Matt
Jordan Review: https://reviewboard.asterisk.org/r/4364
AST-2015-002 ........ r431298 | mmichelson | 2015-01-28 11:12:49
-0600 (Wed, 28 Jan 2015) | 3 lines Fix compilation error from
previous patch. ........ Merged revisions 431297-431298 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 431299 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 431301 from
http://svn.asterisk.org/svn/asterisk/branches/13
* res/res_pjsip_t38.c, res/res_pjsip_session.c, /,
res/res_pjsip_sdp_rtp.c: Fix file descriptor leak in RTP code.
SIP requests that offered codecs incompatible with configured
values could result in the allocation of RTP and RTCP ports that
would not get reclaimed later. ASTERISK-24666 #close Reported by
Y Ateya Review: https://reviewboard.asterisk.org/r/4323
AST-2015-001 ........ Merged revisions 431300 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 431303 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-28 04:11 +0000 [r431244] Richard Mudgett <rmudgett@digium.com>
* /, res/res_pjsip_outbound_registration.c, res/res_pjsip.c,
main/sorcery.c: res_pjsip_outbound_registration: Fix reload race
condition. Performing a CLI "module reload" command when there
are new pjsip.conf registration objects defined frequently failed
to load them correctly. What happens is a race condition between
res_pjsip pushing its reload into an asynchronous task processor
task and the thread that does the rest of the reloads when it
gets to reloading the res_pjsip_outbound_registration module. A
similar race condition happens between a reload and the CLI/AMI
show registrations commands. The reload updates the
current_states container and the CLI/AMI commands call
get_registrations() which builds a new current_states container.
* Made res_pjsip.c reload_module() use
ast_sip_push_task_synchronous() instead of ast_sip_push_task() to
eliminate two threads processing config reloads at the same time.
* Made get_registrations() not replace the global current_states
container so the CLI/AMI show registrations command cannot
interfere with reloading. You could never add/remove objects in
the container without the possibility of the container being
replaced out from under you by get_registrations(). * Added a
registration loaded sorcery instance observer to purge any dead
registration objects since get_registrations() cannot do this job
anymore. The struct ast_sorcery_instance_observer callbacks must
be used because the callback happens inline with the load
process. The struct ast_sorcery_observer callbacks are pushed to
a different thread. * Added some global current_states NULL
pointer checks in case the container disappears because of
unload_module(). * Made sorcery's struct
ast_sorcery_instance_observer.object_type_loaded callbacks
guaranteed to be called before any struct
ast_sorcery_observer.loaded callbacks will be called. * Moved the
check for non-reloadable objects to before the sorcery instance
loading callbacks happen to short circuit unnecessary work.
Previously with non-reloadable objects, the sorcery instance
loading/loaded callbacks would always happen, the individual
wizard loading/loaded would be prevented, and the non-reloadable
type logging message would be logged for each associated wizard.
ASTERISK-24729 #close Review:
https://reviewboard.asterisk.org/r/4381/ ........ Merged
revisions 431243 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-27 23:02 +0000 [r431200-431221] Kevin Harwell <kharwell@digium.com>
* main/tcptls.c, /: tcptls: Bad file descriptor error when
reloading chan_sip While running through some scenarios using
chan_sip and tcp a problem would occur that resulted in a flood
of bad file descriptor messages on the cli: tcptls.c:712
ast_tcptls_server_root: Accept failed: Bad file descriptor The
message is received because the underlying socket has been
closed, so is valid. This is probably happening because unloading
of chan_sip is not atomic. That however is outside the scope of
this patch. This patch simply stops the logging of multiple
occurrences of that message. ASTERISK-24728 #close Reported by:
Thomas Thompson Review: https://reviewboard.asterisk.org/r/4380/
........ Merged revisions 431218 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 431219 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, channels/chan_sip.c: chan_sip: stale nonce causes failure When
refreshing (with a small expiration) a registration that was sent
to chan_sip the nonce would be considered stale and reject the
registration. What was happening was that the initial
registration's "dialog" still existed in the dialogs container
and upon refresh the dialog match algorithm would choose that as
the "dialog" instead of the newly created one. This occurred
because the algorithm did not check to see if the from tag
matched if authentication info was available after the 401. So,
it ended up assuming the original "dialog" was a match and
stopped the search. The old "dialog" of course had an old nonce,
thus the stale nonce message. This fix attempts to leave the
original functionality alone except in the case of a REGISTER. If
a REGISTER is received if searches for an existing "dialog"
matching only on the callid. If the expires value is low enough
it will reuse dialog that is there, otherwise it will create a
new one. ASTERISK-24715 #close Reported by: John Bigelow Review:
https://reviewboard.asterisk.org/r/4367/ ........ Merged
revisions 431187 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 431194 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-27 17:52 +0000 [r431162] Richard Mudgett <rmudgett@digium.com>
* /, apps/confbridge/include/confbridge.h, apps/app_confbridge.c:
app_confbridge: Repeatedly starting and stopping recording ref
leaks the recording channel. Starting and stopping conference
recording more than once causes the recording channels to be
leaked. For v13 the channels also show up in the CLI "core show
channels" output. * Reworked and simplified the recording channel
code to use ast_bridge_impart() instead of managing the recording
thread in the ConfBridge code. The recording channel's ref
handling easily falls into place and other off nominal code paths
get handled better as a result. ASTERISK-24719 #close Reported
by: John Bigelow Review: https://reviewboard.asterisk.org/r/4368/
Review: https://reviewboard.asterisk.org/r/4369/ ........ Merged
revisions 431135 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 431160 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-27 17:35 +0000 [r431159] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_sdp_rtp.c, main/bridge_channel.c, /: bridge /
res_pjsip_sdp_rtp: Fix issues with media not being reinvited
during direct media. This change fixes two issues: 1. During a
swap operation bridging added the new channel before having the
swap channel leave. This was not handled in bridge_native_rtp and
could result in a channel not getting reinvited back to Asterisk.
After this change the swap channel will leave first and the new
channel will then join. 2. If a re-invite was received after a
session had been established any upstream elements (such as
bridge_native_rtp) were not notified that they may want to
re-evaluate things. After this change an UPDATE_RTP_PEER control
frame is queued when this situation occurs and upstream can
react. AST-1524 #close Review:
https://reviewboard.asterisk.org/r/4378/ ........ Merged
revisions 431157 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-27 17:18 +0000 [r431140] Matthew Jordan <mjordan@digium.com>
* /, apps/confbridge/include/confbridge.h,
apps/confbridge/conf_config_parser.c: app_confbridge: Restore
user's menu name to CLI output of 'confbridge list' When issuing
a 'confbridge list XXXX' CLI command, the resulting output no
longer displays the menu associated with a ConfBridge
participant. The issue was caused by ASTERISK-22760. When that
patch was done, it removed the copying of the menu name
associated with the user from the actual user profile. This patch
fixes the issue by copying the menu name over to the user profile
when the menu hooks are applied to the user. Since that function
now does a little bit more than just apply the hooks, the name of
the function has been changed to cover the copying of the menu
name over as well. In addition, there is a disparity between the
menu name length as it is stored on the conf_menu structure and
the confbridge_user structure; this patch makes the lengths match
so that a strcpy can be used. Review:
https://reviewboard.asterisk.org/r/4372/ ASTERISK-24723 #close
Reported by: Steve Pitts ........ Merged revisions 431134 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-27 11:48 +0000 [r431116] Joshua Colp <jcolp@digium.com>
* res/parking/parking_manager.c, /: res_parking: Fix crash due to
race condition when unloading. There is currently a race
condition when unloading the res_parking module. Depending on the
will of the universe the subscription invocation may occur AFTER
the module is unloaded. This is because the module does NOT use
stasis_unsubscribe_and_join when terminating the subscription. It
merely uses stasis_unsubscribe. This change makes it use
stasis_unsubscribe_and_join which is documented for usage in this
exact scenario. AST-1520 #close Review:
https://reviewboard.asterisk.org/r/4375/ ........ Merged
revisions 431114 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-23 15:24 +0000 [r431016] Kevin Harwell <kharwell@digium.com>
* res/res_ari_events.c, include/asterisk/stasis_app.h,
res/res_pjsip_mwi.c, res/parking/parking_applications.c,
channels/chan_iax2.c, res/res_pjsip/pjsip_global_headers.c,
res/res_pjsip_pubsub.c, res/res_ari_channels.c, res/res_stasis.c,
rest-api-templates/param_parsing.mustache, /,
res/res_ari_endpoints.c: Investigate and fix memory leaks in
Asterisk Fixed memory leaks that were found in Asterisk.
ASTERISK-24693 #close Reported by: Kevin Harwell Review:
https://reviewboard.asterisk.org/r/4347/ ........ Merged
revisions 430999 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-21 19:47 +0000 [r430898] Richard Mudgett <rmudgett@digium.com>
* CHANGES, /, res/res_pjsip_outbound_registration.c: Multiple
revisions 430223,430373,430395 ........ r430223 | gtjoseph |
2015-01-06 11:35:21 -0600 (Tue, 06 Jan 2015) | 24 lines
outbound_registration: Add 'pjsip send register' and update 'send
unregister' The current behavior of 'pjsip send unregister' is to
send the unregister (REGISTER with 0 exp) but let the next
scheduled register proceed normally. I don't think that's a good
idea. If you unregister, it should stay unregistered until you
decide to start registrations again. So this patch just adds a
cancel_registration call to the current unregister_task to cancel
the timer. Of course, now you need a way to start registration
again so I've added a 'pjsip send register' command that
unregisters and cancels any existing registration (the same as
send unregister), then sends an immediate registration and starts
the timer back up again. Both changes also ripple to AMI. There's
a new PJSIPRegister command. There's no harm in calling either
command repeatedly. They don't care about the actual state.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4301/ ........ r430373 |
gtjoseph | 2015-01-08 11:48:29 -0600 (Thu, 08 Jan 2015) | 25
lines res_pjsip_outbound_registration: Fix several reload issues
There are 2 issues with reloading registrations... 1. The
'can_reuse_registration' test wasn't considering the intervals or
expiration in its determination of whether a registration changed
or not so if you changed any of the intervals or the expiration
and reloaded, the object would get reloaded but the actual timers
wouldn't change. can_reuse_registration now does a sorcery diff
on the old and new objects instead of discretely testing certain
fields. Now if you change expiration for instance, and reload,
the timer is updated and re-registration will occur on the new
value. 2. If you mung up your password on an outbound
registration you get a permanent failure. If you fix the password
(on the outbound_auth object) and reload, nothing tells
outbound_registration to try again because the registration
itself didn't change. This patch adds an observer on the "auth"
object type and if any auth changes, existing registration states
are searched and those in a REJECTED_PERMANENT state are retried.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4304/ ........ r430395 |
gtjoseph | 2015-01-08 15:37:42 -0600 (Thu, 08 Jan 2015) | 14
lines res_pjsip_outbound_registration: Fix reference leak. Every
time a registration started,
sip_outbound_registration_response_cb bumps the ref count on
client_state then pushes a handle_registration_response task.
handle_registration_response never unreffed it though. So every
time a registration goes out, the ref count goes up by one. This
patch adds the unreffs to handle_registration_response.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4303/ ........ Merged
revisions 430223,430373,430395 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-21 13:36 +0000 [r430843-430865] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: channels/chan_sip: Fix registration leak
during reload When the SIP registrations were migrated to using
ao2 in what was then trunk, the explicit destruction of the
registrations on module reload was removed and not replaced with
an ao2 equivalent. Debugging done by Stefan Engström, the issue
reporter, on ASTERISK-24673 confirmed that the reference in the
registry_list container was being leaked. Since the purpose of
cleanup_all_regs is to prep a registration for destruction, this
function now calls an ao2_callback function callback with the
OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the
registrations. This cleans up each registration, and also removes
it from the registration container registry_list. Review:
https://reviewboard.asterisk.org/r/4355/ ASTERISK-24640 #close
Reported by: Max Man ASTERISK-24673 #close Reported by: Stefan
Engström Tested by: Stefan Engström ........ Merged revisions
430864 from http://svn.asterisk.org/svn/asterisk/branches/13
* apps/app_dial.c, /: apps/app_dial: Don't publish DialEnd twice on
unexpected GoSub/Macro values The Dial application has some
interesting options with the mid-call Macro (M) and GoSub (U)
options. If the MACRO_RESULT/GOSUB_RESULT returns specific
values, the Dial application will take some action upon the
channels involved in the dial operation (such as hanging up a
particular party, etc.) The Dial application ensures that a
Stasis message is published in the event that
MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial
operation, so that there is a corresponding DialEnd event
published in AMI/ARI for the DialBegin event that preceeded it. A
bug exists where that same DialEnd event will be published on
Stasis even if the value returned in MACRO_RESULT/GOSUB_RESULT is
not one that the Dial application cares about. This causes two
DialEnd events to be published - one with the
MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is
all sorts of wrong. This patch fixes the bug by ensuring that we
only publish a DialEnd message to Stasis if the Dial
application's mid-call Macro/GoSub returns something that Dial
cares about. Review: https://reviewboard.asterisk.org/r/4336
ASTERISK-24682 #close Reported by: Matt Jordan ........ Merged
revisions 430842 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-19 18:18 +0000 [r430782] Mark Michelson <mmichelson@digium.com>
* main/pbx.c, /: Call extension state callbacks at hint creation.
When a hint gets created, any subsequent device or presence state
changes result in extension status events getting sent out to
interested parties. However, at the time of hint creation, no
such event gets sent out, so watchers of extension state are
potentially left in the dark until the first state change after
hint creation. Patch contributed by John Hardin (License #6512)
........ Merged revisions 430776 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-15 12:11 +0000 [r430666] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_outbound_registration.c:
res_pjsip_outbound_registration: Fix race condition when
reloading and listing registrations. Due to the split of outbound
registration state from configuration it is possible during a
reload for a "pjsip show registrations" CLI command to be
executed which gets an older snapshot of the configuration. This
configuration may include outbound registrations which have been
removed due to a reload operation occurring at the same time. The
code for printing the outbound registration did not take this
into account but now it does. AST-1506 #close Review:
https://reviewboard.asterisk.org/r/4338/ ........ Merged
revisions 430664 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-07 03:29 +0000 [r430253-430293] Matthew Jordan <mjordan@digium.com>
* utils/conf2ael.c, apps/app_waitforring.c, formats/format_vox.c,
res/res_timing_pthread.c, pbx/pbx_ael.c,
cel/cel_sqlite3_custom.c, res/res_hep_rtcp.c,
formats/format_jpeg.c, apps/app_jack.c, apps/app_adsiprog.c,
cdr/cdr_sqlite3_custom.c, res/res_snmp.c, channels/chan_sip.c,
cel/cel_tds.c, apps/app_dictate.c, apps/app_festival.c,
agi/eagi-test.c, res/res_hep_pjsip.c, apps/app_alarmreceiver.c,
apps/app_image.c, channels/chan_console.c, apps/app_getcpeid.c,
apps/app_talkdetect.c, channels/chan_oss.c,
channels/chan_misdn.c, apps/app_mp3.c, channels/chan_alsa.c,
pbx/pbx_dundi.c, channels/chan_nbs.c, utils/extconf.c,
apps/app_zapateller.c, cel/cel_pgsql.c, res/res_config_pgsql.c,
utils/muted.c, apps/app_test.c, utils/smsq.c,
apps/app_morsecode.c, apps/app_ices.c, cdr/cdr_csv.c,
channels/chan_phone.c, funcs/func_pitchshift.c,
funcs/func_audiohookinherit.c,
res/res_pjsip_phoneprov_provider.c, apps/app_minivm.c,
res/res_statsd.c, apps/app_sms.c, res/res_config_ldap.c,
utils/streamplayer.c, utils/check_expr.c, cel/cel_radius.c,
apps/app_nbscat.c, res/res_hep.c, apps/app_waitforsilence.c,
apps/app_dahdiras.c, pbx/pbx_lua.c, res/res_ael_share.c,
cdr/cdr_radius.c, cdr/cdr_tds.c, utils/stereorize.c,
apps/app_osplookup.c, channels/chan_skinny.c,
funcs/func_frame_trace.c, apps/app_amd.c, pbx/pbx_realtime.c,
apps/app_url.c, apps/app_externalivr.c, cdr/cdr_odbc.c,
res/res_timing_kqueue.c, channels/chan_mgcp.c,
channels/chan_unistim.c, res/res_phoneprov.c, utils/astman.c,
cdr/cdr_pgsql.c, res/res_config_sqlite.c: Disable extended
support modules
* /,
contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py:
contrib/ast-db-manage: Correct down_revision path for
user_eq_phone When the user_eq_phone patch was backported to 13,
it referenced the downward revision that the PJSIP optimistic
encryption option also references. This creates a multi-path
upgrade Exception when generating the SQL files. This patch
corrects this in the 13 branch. Note that trunk, which already
contained both of these features, is unaffected by this problem.
........ Merged revisions 430252 from
http://svn.asterisk.org/svn/asterisk/branches/13
2015-01-06 19:53 +0000 [r430245] Scott Griepentrog <sgriepentrog@digium.com>
* main/bridge_basic.c, /: bridge: avoid leaking channel during
blond transfer pt2 A blond transfer to a failed destination, when
followed by a recall attempt, lead to a leak of the reference to
the destination channel. In addition to correcting the regression
on the previous attempt (r429826) this fixes the leak and two
additional reference leaks on failures of bridge_import.
ASTERISK-24513 #close Review:
https://reviewboard.asterisk.org/r/4302/ ........ Merged
revisions 430199 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 430200 from
http://svn.asterisk.org/svn/asterisk/branches/13
2014-12-24 15:27 +0000 [r430085-430094] Matthew Jordan <mjordan@digium.com>
* res/res_agi.c, /: res/res_agi: Make Verbose message for 'stream
file' match other playbacks The Verbose message displayed when a
file is played back via 'stream file' was formatted differently
than other playbacks: * It didn't include the channel name * It
didn't include the channel language It does, however, include the
playback offset as well as any escape digits. That information
was kept; however, this patch updates the formatting to more
closely match the Verbose messages displayed when a file is
played back by 'control stream file', Playback, ControlPlayback,
or any other file playback operation. ........ Merged revisions
429519 from http://svn.asterisk.org/svn/asterisk/branches/13
* contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py
(added), /, res/res_pjsip.c: res_pjsip: Backport missing commits
for user_eq_phone This backports the following from trunk, which
were missed: r427257 | file | 2014-11-04 16:31:16 -0600 (Tue, 04
Nov 2014) | 2 lines res_pjsip: Allow + at the beginning of a
phone number when user_eq_phone is enabled. r427259 | file |
2014-11-04 16:51:32 -0600 (Tue, 04 Nov 2014) | 2 lines res_pjsip:
Apply the 'user_eq_phone' setting to the To header as well. It
also adds the Alembic script for the option. ASTERISK-24643
........ Merged revisions 430092 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, tests/test_stasis_channels.c: Stasis: Update unittest for
channel snapshots This adjusts the unit test for channel
snapshots to take the new language key into account. ........
Merged revisions 429352 from
http://svn.asterisk.org/svn/asterisk/branches/13
* CHANGES, res/res_pjsip.c, include/asterisk/res_pjsip.h,
res/res_pjsip_keepalive.c (added), res/res_pjsip/config_global.c,
/, configs/samples/pjsip.conf.sample: res_pjsip_keepalive: Add
runtime configurable keepalive module for connection-oriented
transports. Note that this is backport from trunk of r425825.
This change adds a module which is configurable using the
keep_alive_interval setting in the global section that will send
a CRLF keep alive to all active connection-oriented transports at
the provided interval. This is useful because it can help keep
connections open through NATs. This functionality also exists
within PJSIP but can not be controlled at runtime and requires
recompiling it. Review: https://reviewboard.asterisk.org/r/4084/
ASTERISK-24644 #close ........ Merged revisions 430084 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip_caller_id.c, CHANGES, res/res_pjsip.c,
include/asterisk/res_pjsip.h: res_pjsip: Add 'user_eq_phone'
option to add a 'user=phone' parameter when applicable. Note that
this is a backport of r425804 from trunk. This change adds a
configuration option which adds a 'user=phone' parameter if the
user portion of the request URI or the From URI is determined to
be a number. Review: https://reviewboard.asterisk.org/r/4073/
ASTERISK-24643 #close ........ Merged revisions 430083 from
http://svn.asterisk.org/svn/asterisk/branches/13
2014-12-22 21:22 +0000 [r430030-430046] Richard Mudgett <rmudgett@digium.com>
* main/bridge_basic.c, /: DTMF atxfer: Setup recall channels as if
the transferee initiated the call. After the initial DTMF atxfer
call attempt to the transfer target fails to answer during a
blonde transfer, the recall callback channels do not get setup
with information from the initial transferrer channel. As a
result, the recall callback to the transferrer does not have
callid, channel variables, datastores, accountcode, peeraccount,
COLP, and CLID setup. A similar situation happens with the recall
callback to the transfer target but it is less visible. The
recall callback to the transfer target does not have callid,
channel variables, datastores, accountcode, peeraccount, and COLP
setup. * Added missing information to the recall callback
channels before initiating the call. callid, channel variables,
datastores, accountcode, peeraccount, COLP, and CLID * Set callid
of the transferrer channel on the DTMF atxfer controller thread
attended_transfer_monitor_thread(). * Added missing channel
unlocks and props unref to off nominal paths in
attended_transfer_properties_alloc(). ASTERISK-23841 #close
Reported by: Richard Mudgett Review:
https://reviewboard.asterisk.org/r/4259/ ........ Merged
revisions 430034 from
http://svn.asterisk.org/svn/asterisk/branches/13
* include/asterisk/_private.h, main/asterisk.c, /, main/logger.c:
queue_log: Post QUEUESTART entry when Asterisk fully boots. The
QUEUESTART log entry has historically acted like a fully booted
event for the queue_log file. When the QUEUESTART entry was
posted to the log was broken by the change made by
ASTERISK-15863. * Made post the QUEUESTART queue_log entry when
Asterisk fully boots. This restores the intent of that log entry
and happens after realtime has had a chance to load. AST-1444
#close Reported by: Denis Martinez Review:
https://reviewboard.asterisk.org/r/4282/ ........ Merged
revisions 430009 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 430010 from
http://svn.asterisk.org/svn/asterisk/branches/13
2014-12-22 18:35 +0000 [r430007-430008] bebuild <bebuild@localhost>:
* /, res/res_pjsip/pjsip_options.c: Multiple revisions
429128,429246 ........ r429128 | kmoore | 2014-12-09 08:00:50
-0600 (Tue, 09 Dec 2014) | 12 lines PJSIP: Stagger outbound
qualifies This change staggers initiation of outbound qualify
(OPTIONS) attempts to reduce instantaneous server load and
prevent network congestion. Review:
https://reviewboard.asterisk.org/r/4246/ ASTERISK-24342 #close
Reported by: Richard Mudgett ........ Merged revisions 429127
from http://svn.asterisk.org/svn/asterisk/branches/12 ........
r429246 | kmoore | 2014-12-10 07:14:56 -0600 (Wed, 10 Dec 2014) |
8 lines PJSIP: Fix assert on initial mass qualify This fixes the
MWI test regressions caused by r429127 and ensures that contacts
have non-zero qualify_frequency before attempting scheduling.
........ Merged revisions 429245 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 429128,429246 from
http://svn.asterisk.org/svn/asterisk/branches/13
* main/manager.c, /: Prevent possible race condition on dual
redirect of channels in the same bridge. The
AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent
bridges from prematurely acting on orphaned channels in bridges.
The problem with the AMI redirect action was that it was setting
this flag on channels based on the presence of a PBX, not whether
the channel was in a bridge. Whether a channel has a PBX is
irrelevant, so the condition has been altered to check if the
channel is in a bridge. ASTERISK-24536 #close Reported by Niklas
Larsson Review: https://reviewboard.asterisk.org/r/4268 ........
Merged revisions 429741 from
http://svn.asterisk.org/svn/asterisk/branches/13
2014-12-19 21:52 +0000 [r429855-429892] bebuild <bebuild@localhost>:
* CHANGES, res/res_ari_channels.c, res/ari/resource_channels.h, /,
rest-api/api-docs/channels.json, res/ari/resource_channels.c:
ari: Add support for specifying an originator channel when
originating. If an originator channel is specified when
originating a channel the linked ID of it will be applied to the
newly originated outgoing channel. This allows an association to
be made between the two so it is known that the originator has
dialed the originated channel. ASTERISK-24552 #close Reported by:
Matt Jordan Review: https://reviewboard.asterisk.org/r/4243/
........ Merged revisions 429153 from
http://svn.asterisk.org/svn/asterisk/branches/13
* res/ari/ari_model_validators.c, main/manager_channels.c,
res/ari/ari_model_validators.h, /, main/stasis_channels.c,
rest-api/api-docs/channels.json: ARI/AMI: Include language in
standard channel snapshot output The channel "language" was
already part of a channel snapshot, however is was not sent out
over AMI or ARI. This patch makes it so the channel "language" is
included in the appropriate AMI or ARI events. ASTERISK-24553
#close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/4245/ ........ Merged
revisions 429204 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 429206 from
http://svn.asterisk.org/svn/asterisk/branches/13
* res/res_pjsip_session.c, /: res_pjsip_session: Fix issue where a
declined media stream in a re-INVITE would fail SDP negotiation.
In the past the SDP negotiation within res_pjsip_session was made
more tolerant of certain situations. The only case where SDP
negotiation will fail is when a major error occurs during
negotiation. Receiving an already declined media stream is not
considered a major error. When producing the local SDP the logic
took this into account so on the initial INVITE the declined
media stream did not cause an SDP negotiation failure.
Unfortunately the logic for handling media streams with a handler
did not mirror this logic and considered an already declined
media stream an error and thus failed the SDP negotiation. This
change makes the logic between both situations match so only
under major errors will the SDP negotiation fail. ASTERISK-24607
#close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/4254/ ........ Merged
revisions 429407 from
http://svn.asterisk.org/svn/asterisk/branches/13
* include/asterisk/format.h, main/format.c, /, main/codec.c: media:
Fix crash when determining sample count of a frame during
shutdown. When shutting down Asterisk the codecs are cleaned up.
As a result anything attempting to get a codec based on ID or
details will find that no codec exists. This currently occurs
when determining the sample count of a frame. This code did not
take this situation into account. This change fixes this by
getting the codec directly from the format and eliminates the
lookup. This is both faster and also provides a guarantee that
the codec will exist and will be valid. ASTERISK-24604 #close
Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/4260/ ........ Merged
revisions 429497 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, res/res_pjsip_outbound_registration.c: Prevent potential
infinite outbound authentication loops in registration. Prior to
this patch, Asterisk would always respond to 401 responses to
registration attempts by trying to provide a registration with
authentication credentials. Even if subsequent attempts were
rejected with 401 responses, Asterisk would continue this
behavior. If authentication credentials were incorrect, this
could continue forever. With this patch, we keep track of whether
we have attempted authentication on an outbound registration
attempt. If we already have, we don not try again until the next
attempt. This prevents the infinite loop scenario. Review:
https://reviewboard.asterisk.org/r/4273 ........ Merged revisions
429761 from http://svn.asterisk.org/svn/asterisk/branches/13
* res/res_pjsip_outbound_publish.c, /: res_pjsip_outbound_publish:
stack overflow when using non-default sorcery wizard When using a
non-default sorcery wizard (in this instance realtime) for
outbound publishes Asterisk will crash after a stack overflow
occurs due to the code infinitely recursing. The fix entails
removing the outbound publish state dependency from the outbound
publish sorcery object and instead keeping an in memory container
that can be used to lookup the state when needed. ASTERISK-24514
#close Reported by: Mark Michelson Review:
https://reviewboard.asterisk.org/r/4178/ ........ Merged
revisions 429175 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, res/res_pjsip_sdp_rtp.c: PJSIP: Allow use of 'inactive'
streams for hold This allows use of the 'inactive' stream
direction identifier to be used for hold where 'sendonly' is
normally used. Some Seimens phones use 'inactive' and this change
allows music on hold to operate properly. Review:
https://reviewboard.asterisk.org/r/4252/ Reported by: Steve Pitts
........ Merged revisions 429432 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 429433 from
http://svn.asterisk.org/svn/asterisk/branches/13
* channels/chan_pjsip.c, res/res_pjsip_session.c,
include/asterisk/res_pjsip_session.h, /,
res/res_pjsip_session.exports.in: res_pjsip_session: Delay
sending BYE if a re-INVITE transaction is in progress. Given the
scenario where a PJSIP channel is in a native RTP bridge with
direct media and the channel is then hung up the code will
currently re-INVITE the channel back to Asterisk and send a BYE
at the same time. Many SIP implementations dislike this greatly.
This change makes it so that if a re-INVITE transaction is in
progress the BYE is queued to occur after the completion of the
transaction (be it through normal means or a timeout). Review:
https://reviewboard.asterisk.org/r/4248/ ........ Merged
revisions 429409 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, channels/chan_pjsip.c: chan_pjsip: Race between channel answer
and bridge setup when using direct media When direct media is
enabled and a pjsip channel is answered a race would occur
between the handling of the answer and bridge setup. Sometimes
the media negotiation would take place after the native bridge
was setup. This resulted in a NULL media address, which in turn
resulted in Asterisk using its address as the remote media
address when sending a reinvite. This patch makes the chan_pjsip
answer handler synchronous thus alleviating the race condition
(the bridge won't start setting things up until after it
returns). ASTERISK-24563 #close Reported by: Steve Pitts Review:
https://reviewboard.asterisk.org/r/4257/ ........ Merged
revisions 429477 from
http://svn.asterisk.org/svn/asterisk/branches/13
* main/rtp_engine.c, /, channels/chan_sip.c,
include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c: Direct
Media calls within private network sometimes get one way audio
When endpoints with direct_media enabled, behind a firewall
(Asterisk on a separate network) and were bridged sometimes
Asterisk would send the ip address of the firewall in the sdp to
one of the phones in the reinvite resulting in one way audio.
When sending the reinvite Asterisk will retrieve the media
address from the associated rtp instance, but if frames were
being read this can be overwritten with another address (in this
case the firewall's). This patch ensures that Asterisk uses the
original device address when using direct media. ASTERISK-24563
Reported by: Steve Pitts Review:
https://reviewboard.asterisk.org/r/4216/ ........ Merged
revisions 429195 from
http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
revisions 429196 from
http://svn.asterisk.org/svn/asterisk/branches/13
* channels/pjsip/dialplan_functions.c, /: Ensure the correct value
is returned for CHANNEL(pjsip, secure) Prior to this patch, we
were using the PJSIP dialog's secure flag to determine if a
secure transport was being used. Unfortunately, the dialog's
secure flag was only set if a SIPS URI were in use, as required
by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested in
is not dialog security, but transport security. This code change
switches to a model where we use the dialog's target URI to
determine what transport would be used to communicate, and then
check if that transport is secure. AST-1450 #close Reported by
John Bigelow Review: https://reviewboard.asterisk.org/r/4277
........ Merged revisions 429739 from
http://svn.asterisk.org/svn/asterisk/branches/13
* channels/chan_dahdi.c, /: chan_dahdi: Don't ignore setvar when
using configuration section scheme. When the configuration
section scheme of chan_dahdi.conf is used (keyword dahdichan
instead of channel) all setvar= options are completely ignored.
No variable defined this way appears in the created DAHDI
channels. * Move the clearing of setvar values to after the
deferred processing of dahdichan. AST-1378 #close Reported by:
Guenther Kelleter Patch by: Guenther Kelleter ........ Merged
revisions 429825 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 429829 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, include/asterisk/lock.h, main/lock.c: DEBUG_THREADS: Fix
regression and lock tracking initialization problems. This patch
started with David Lee's patch at
https://reviewboard.asterisk.org/r/2826/ and includes a
regression fix introduced by the ASTERISK-22455 patch. The
initialization of a mutex's lock tracking structure was not
protected in a critical section. This is fine for any mutex that
is explicitly initialized, but a static mutex may have its lock
tracking double initialized if multiple threads attempt the first
lock simultaneously. * Added a global mutex to properly serialize
initialization of the lock tracking structure. The painful global
lock can be mitigated by adding a double checked lock flag as
discussed on the original review request. * Defer lock tracking
initialization until first use. * Don't be "helpful" and
initialize an uninitialized lock when DEBUG_THREADS is enabled.
Debug code is not supposed to fix or change normal code behavior.
We don't need a lock initialization race that would force a
re-setup of lock tracking. Lock tracking already handles
initialization on first use. * Properly handle allocation
failures of the lock tracking structure. * No need to initialize
tracking data in __ast_pthread_mutex_destroy() just to turn
around and destroy it. The regression introduced by
ASTERISK-22455 is the result of manipulating a pthread_mutex_t
struct outside of the pthread library code. The pthread_mutex_t
struct seems to have a global linked list pointer member that can
get changed by other threads. Therefore, saving and restoring the
contents of a pthread_mutex_t struct is a bad thing. Thanks to
Thomas Airmont for finding this obscure regression. * Don't
overwrite the struct ast_lock_track.reentr_mutex member to
restore tracking data in __ast_cond_wait() and
__ast_cond_timedwait(). The pthread_mutex_t struct must be
treated as a read-only opaque variable. Miscellaneous other items
fixed by this patch: * Match ast_suspend_lock_info() with
ast_restore_lock_info() in __ast_cond_timedwait(). * Made some
uninitialized lock sanity checks return EINVAL and try a
DO_THREAD_CRASH. * Fix bad canlog initialization expressions.
ASTERISK-24614 #close Reported by: Thomas Airmont Review:
https://reviewboard.asterisk.org/r/4247/ Review:
https://reviewboard.asterisk.org/r/2826/ ........ Merged
revisions 429539 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 429540 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, res/res_pjsip_pubsub.c: Activate persistent subscriptions when
they are recreated. Prior to this change, recreating persistent
subscriptions would create the subscription but would not
activate it. This led to subscriptions being listed in the "NULL"
state by diagnostics and not sending NOTIFYs when expected.
Review: https://reviewboard.asterisk.org/r/4261 ........ Merged
revisions 429571 from
http://svn.asterisk.org/svn/asterisk/branches/13
* /, asterisk-13.1.0-summary.html (removed),
asterisk-13.1.0-summary.txt (removed): Update properties; remove
old summaries
* / (added): Create Certified Asterisk 13.1 branch
2014-12-15 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 13.1.0 Released.
2014-12-10 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 13.1.0-rc2 Released.
* AST-2014-019: Fix crash when receiving a WebSocket packet with a
payload length of zero.
Frames with a payload length of 0 were incorrectly handled in
res_http_websocket. Provided a frame with a payload had been
received prior it was possible for a double free to occur. The
realloc operation would succeed (thus freeing the payload) but be
treated as an error. When the session was then torn down the payload
would be freed again causing a crash. The read function now takes
this into account.
This change also fixes assumptions made by users of
res_http_websocket. There is no guarantee that a frame received from
it will be NULL terminated.
ASTERISK-24472 #close
Reported by: Badalian Vyacheslav
2014-12-08 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 13.1.0-rc1 Released.
2014-12-08 16:53 +0000 [r429091] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/playbacks.json, UPGRADE.txt,
rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json,
rest-api/resources.json, CHANGES, include/asterisk/manager.h,
rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json,
rest-api/api-docs/deviceStates.json,
rest-api/api-docs/endpoints.json,
rest-api/api-docs/mailboxes.json, rest-api/api-docs/events.json,
rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json: AMI/ARI: Update version to
2.6.0/1.6.0 respectively for new features AMI/ARI are getting a
few enhancements in the next release of Asterisk 13. Per semantic
versioning, that warrants a bump in the minor version number, as
it reflects a backwards compatible change. Hence, this commit.
2014-12-08 16:41 +0000 [r429064-429089] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_session.c: Fix a crash that would occur when
receiving a 491 response to a reinvite. The reviewboard
description does a fine job of summarizing this, so here it is: A
reporter discovered that Asterisk would crash when attempting to
retransmit a reinvite that had previously received a 491
response. The crash occurred because a pjsip_tx_data structure
was being saved for reuse, but its reference count was not being
increased. The result was that the pjsip_tx_data was being freed
before we were actually done with it. When we attempted to re-use
the structure when re-sending the reinvite, Asterisk would crash.
The fix implemented here is not to try holding onto the
pjsip_tx_data at all. Instead, when we reschedule sending the
reinvite, we create a brand new pjsip_tx_data and send that
instead. Because of this change, there is no need for an
ast_sip_session_delayed_request structure to have a pjsip_tx_data
on it any more. So any code referencing its use has been removed.
When this initial fix was introduced, I encountered a second
crash when processing a subsequent 200 OK on a rescheduled
reinvite. The reason was that when rescheduling the reinvite, we
gave the wrong location for a response callback. This has been
fixed in this patch as well. ASTERISK-24556 #close Reported by
Abhay Gupta Review: https://reviewboard.asterisk.org/r/4233
* main/stasis_channels.c, CHANGES, res/ari/ari_model_validators.c,
main/manager_channels.c, main/channel.c,
res/ari/ari_model_validators.h,
include/asterisk/stasis_channels.h,
rest-api/api-docs/events.json, res/stasis/app.c: Add new AMI and
ARI events for connected line changes on a channel. The AMI event
is called NewConnectedLine and the ARI event is called
ChannelConnectedLine. ASTERISK-24554 #close Reported by Matt
Jordan Review: https://reviewboard.asterisk.org/r/4231
2014-12-08 15:43 +0000 [r429062] Kinsey Moore <kmoore@digium.com>
* /, res/stasis/app.c, main/channel_internal_api.c,
res/stasis/stasis_bridge.c, res/stasis/app.h,
include/asterisk/channel.h, res/res_stasis.c, main/channel.c:
Stasis: Fix StasisStart/End order and missing events This
corrects several bugs that currently exist in the stasis
application code. * After a masquerade, the resulting channels
have channel topics that do not match their uniqueids **
Masquerades now swap channel topics appropriately * StasisStart
and StasisEnd messages are leaked to observer applications due to
being published on channel topics ** StasisStart and StasisEnd
publishing is now properly restricted to controlling apps via app
topics * Race conditions exist where StasisStart and StasisEnd
messages due to a masquerade may be received out of order due to
being published on different topics ** These messages are now
published directly on the app topic so this is now a non-issue *
StasisEnds are sometimes missing when sent due to masquerades and
bridge swaps into and out of Stasis() ** This was due to
StasisEnd processing adjusting message-sent flags after Stasis()
had already exited and Stasis() had been re-entered ** This was
corrected by adjusting these flags prior to sending the message
while the initial Stasis() application was still shutting down
Review: https://reviewboard.asterisk.org/r/4213/ ASTERISK-24537
#close Reported by: Matt DiMeo ........ Merged revisions 429061
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-06 18:16 +0000 [r429029-429033] Matthew Jordan <mjordan@digium.com>
* res/res_monitor.c, /: res/res_monitor: Reset in/out sample counts
on Monitor start When repeatedly starting/stopping a Monitor on a
channel, the accumulated in/out sample counts are never reset to
0. This can cause inadvertent jumps in the recordings, as the
code in the channel core will determine incorrectly that a jump
in the recorded file position should occur. Setting the sample
counts to 0 simply reflects the initial state a Monitor should be
in when it is started, as this is the initial count that would be
on the channels at that time. ASTERISK-24573 #close Reported by:
Nuno Borges patches: 24573.patch uploaded by Nuno Borges (License
6116) ........ Merged revisions 429031 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 429032 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_meetme.c: apps/app_meetme: Apply default values on
initial load with no config file When the app_meetme module is
loaded without its configuration file, the module settings aren't
initialized. In particular, this impacts the use of logging
realtime members. This patch guarantees that we always set the
default module settings on initial load. Review:
https://reviewboard.asterisk.org/r/4242/ ASTERISK-24572 #close
Reported by: Nuno Borges patches: 24572.patch uploaded by Nuno
Borges (License 6116) ........ Merged revisions 429027 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 429028 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-05 17:06 +0000 [r429000] George Joseph <george.joseph@fairview5.com>
* tests/test_sorcery.c, main/sorcery.c, include/asterisk/test.h, /,
include/asterisk/sorcery.h: sorcery: Add additional observer
capabilities. Add new global, instance and wizard observers.
instance_created wizard_registered wizard_unregistered
instance_destroying instance_loading instance_loaded
wizard_mapped object_type_registered object_type_loading
object_type_loaded wizard_loading wizard_loaded Tested-by: George
Joseph Review: https://reviewboard.asterisk.org/r/4215/ ........
Merged revisions 428999 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-04 17:13 +0000 [r428865-428973] Matthew Jordan <mjordan@digium.com>
* /, main/test.c: main/test: Fix compilation issue on 32-bit
systems On a 32-bit system, a type of intmax_t will result in a
compilation warning when formatted as a 'long int'. Use the
format specifier of %jd (which was what was used originally in
manager.c) to format the JSON extracted integer on both
32-/64-bit systems. ........ Merged revisions 428972 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /, main/test.c: main/test: Fix race condition
between AMI topic and Test Suite topic This patch fixes a race
condition between the raising of test AMI events (which drive
many tests in the Asterisk Test Suite) and other AMI events.
Prior to this patch, the Stasis messages published to the test
topic were not forwarded to the AMI topic. Instead, the code in
manager had a dedicated handler for test messages that was
independent of the topics forwarded to the AMI topic. This
results in no synchronization between the test messages and the
rest of the Stasis messages published out over AMI. In some test
with very tight timing constraints, this can result in out of
order messages and spurious test failures. Properly forwarding
the Test Suite topic to the AMI topic ensures that the messages
are synchronized properly. This patch does that, and moves the
message handling to the Stasis definition of the Test Suite
message in test.c as well. Review:
https://reviewboard.asterisk.org/r/4221/ ........ Merged
revisions 428945 from
http://svn.asterisk.org/svn/asterisk/branches/12
* tests/test_cel.c, /: tests/test_cel: Add
test_cel_attended_transfer_bridges_link to racey tests Despite
failing less often, the ordering of the ATTENDEDTRANSFER event
and the BRIDGE_EXIT event for the Alice and David channels is not
defined. This makes the test still fail. ........ Merged
revisions 428918 from
http://svn.asterisk.org/svn/asterisk/branches/12
* tests/test_cel.c, /: tests/test_cel: Fix CEL unit test failures
caused by attended transfer changes When the publication of
attended transfer messages were pushed to another thread, some
subtle race conditions were introduced with the CEL unit tests.
This patch fixes one of them, and pushes the other to
ASTERISK-22367, which already exists to fix another bouncy CEL
unit test. In particular, this patch fixes the
test_cel_attended_transfer_bridges_link test, and defers the
test_cel_attended_transfer_bridges_swap test to the
aforementioned JIRA issue. ASTERISK-22367 ........ Merged
revisions 428891 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_voicemail.c, /: apps/app_voicemail: Fix crash with IMAP
when streams are opened simultaneously The UW IMAP library is
instrinsically not thread-safe, and relies upon higher level
applications to guarantee thread safety. For the most part, this
is provided by the vms object, which provides locking for
individual streams. Unfortunately, this is not sufficient for
calls to mail_open which create the IMAP stream. mail_open can,
on some systems, call into a UW IMAP specific function for
determining the address of a system based on a hostname,
ip_nametoaddr. In the ip6_unix implementation of this function,
static variables are used to hold parsing buffers. This can cause
a crash if multiple threads attempt to convert a hostname to an
address at the same time. Locking on a single mail stream is not
sufficient to prevent simultaneous access to these static
variables. In the IMAP library, this function can be called from
the mail_open and imap_status functions. As the imap_status
function is not used by app_voicemail, locking on access to
mail_open is sufficient to prevent any mangling of the buffers.
Review: https://reviewboard.asterisk.org/r/4188/ ASTERISK-24516
#close Reported by: David Duncan Ross Palmer Tested by: David
Duncan Ross Palmer patches: ASTERISK-24516.diff uploaded by David
Duncan Ross Palmer (License 6660) ........ Merged revisions
428863 from http://svn.asterisk.org/svn/asterisk/branches/11
........ Merged revisions 428864 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-02 21:53 +0000 [r428837] George Joseph <george.joseph@fairview5.com>
* CHANGES, /: CHANGES: Add item for new 'pjsip show identif(y|ies)
commands Tested-by: George Joseph ........ Merged revisions
428836 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-02 19:03 +0000 [r428789-428815] Matthew Jordan <mjordan@digium.com>
* tests/test_stasis.c: tests/test_stasis: Resolve compilation
issues from Asterisk 12 merge When merging the changes up stream
in r428687, I missed the fact that the signature for
stasis_message_type_create was changed. This patch fixes the
compilation issues introduced by that merge.
* pbx/pbx_loopback.c, /: pbx/pbx_loopback: Speed up switches by
avoiding unneeded lookups This patch makes a small rearrangement
to only do dialplan lookups during loopback switches if the
pattern matches. Prior to this patch, the dialplan lookups were
always performed, even when the result would be discarded.
Dialplan lookups can be very costly if remote switches - like
DUNDi - are present. In those cases extension matching is sped up
considerably, making the issue of lost digits more manageable. As
collateral damage, 6 trailing spaces were killed. Review:
https://reviewboard.asterisk.org/r/4211 ASTERISK-24577 #close
Reported by: Birger Harzenetter patches: ast-loopback.patch
uploaded by Birger Harzenetter (License 5870) ........ Merged
revisions 428787 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428788 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-02 12:20 +0000 [r428761] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_refer.c, /: res_pjsip_refer: Fix issue where native
bridge may not occur upon completion of a transfer. There are two
methods within res_pjsip_refer for keeping track of the state of
a transfer. The first is a framehook which looks at frames
passing by to determine the state. The second subscribes to know
when the channel joins a bridge. In the case when the channel
joins the bridge the framehook is *NOT* removed and this prevents
the native RTP bridging technology from getting used. This change
gets the channel and if it still exists remove the framehook.
Review: https://reviewboard.asterisk.org/r/4218/ ........ Merged
revisions 428760 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-02 00:38 +0000 [r428731-428734] George Joseph <george.joseph@fairview5.com>
* /, include/asterisk/config.h, main/config.c: config: Create
ast_variable_find_in_list() Add const char
*ast_variable_find_in_list(const struct ast_variable *list, const
char *variable); ast_variable_find() requires a config category
to search whereas ast_variable_find_in_list() just needs the root
list element which is useful if you don't have a category.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4217/ ........ Merged
revisions 428733 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_endpoint_identifier_ip.c,
res/res_pjsip/pjsip_cli.c: res_pjsip_endpoint_identifier_ip: Add
'show identify(ies)' cli commands While troubleshooting other
things I realized there were no pjsip cli commands for identify.
This patch adds them. It also also fixes a reference leak when a
'show endpoint' displayed identifies and properly sets the return
code if load_module can't allocate a cli formatter structure.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4212/ ........ Merged
revisions 428725 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-01 17:57 +0000 [r428687] Matthew Jordan <mjordan@digium.com>
* channels/chan_skinny.c, res/res_pjsip_mwi.c, tests/test_stasis.c,
res/res_pjsip_pubsub.c, res/res_pjsip_refer.c,
channels/chan_mgcp.c, main/stasis_cache.c, channels/chan_sip.c,
include/asterisk/stasis_internal.h, /, include/asterisk/stasis.h,
UPGRADE.txt, configs/samples/stasis.conf.sample,
res/parking/parking_applications.c, res/res_xmpp.c,
channels/chan_iax2.c, apps/app_queue.c,
res/res_stasis_device_state.c, channels/sig_pri.c,
include/asterisk/stasis_message_router.h, main/endpoints.c,
res/parking/parking_bridge_features.c, main/stasis.c,
channels/chan_dahdi.c, main/stasis_message_router.c: main/stasis:
Allow subscriptions to use a threadpool for message delivery
Prior to this patch, all Stasis subscriptions would receive a
dedicated thread for servicing published messages. In contrast,
prior to r400178 (see review
https://reviewboard.asterisk.org/r/2881/), the subscriptions
shared a thread pool. It was discovered during some initial work
on Stasis that, for a low subscription count with high message
throughput, the threadpool was not as performant as simply having
a dedicated thread per subscriber. For situations where a
subscriber receives a substantial number of messages and is
always present, the model of having a dedicated thread per
subscriber makes sense. While we still have plenty of
subscriptions that would follow this model, e.g., AMI, CDRs, CEL,
etc., there are plenty that also fall into the following two
categories: * Large number of subscriptions, specifically those
tied to endpoints/peers. * Low number of messages. Some
subscriptions exist specifically to coordinate a single message -
the subscription is created, a message is published, the delivery
is synchronized, and the subscription is destroyed. In both of
the latter two cases, creating a dedicated thread is wasteful
(and in the case of a large number of peers/endpoints, harmful).
In those cases, having shared delivery threads is far more
performant. This patch adds the ability of a subscriber to Stasis
to choose whether or not their messages are dispatched on a
dedicated thread or on a threadpool. The threadpool is
configurable through stasis.conf. Review:
https://reviewboard.asterisk.org/r/4193 ASTERISK-24533 #close
Reported by: xrobau Tested by: xrobau ........ Merged revisions
428681 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-12-01 13:41 +0000 [r428632-428655] Joshua Colp <jcolp@digium.com>
* /, apps/app_record.c: app_record: Fix bug where using the 'k'
option and hanging up would trim 1/4 of a second of the
recording. The Record dialplan function trims 1/4 of a second
from the end of recordings in case they are terminated because of
DTMF. When hanging up, however, you don't want this to happen.
This change makes it so on hangup this does not occur.
ASTERISK-24530 #close Reported by: Ben Smithurst patches:
app_record_v2.diff submitted by Ben Smithurst (license 6529)
Review: https://reviewboard.asterisk.org/r/4201/ ........ Merged
revisions 428653 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428654 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/channel.c: channel: Extend size of buffer for codecs in
"core show channeltype" CLI command. The static buffer for codecs
when invoking the "core show channeltype" CLI command did not
have enough room for all codecs. This has been extended so it
does. ASTERISK-24542 #close Reported by: snuffy patches:
channeltype-tech.diff submitted by snuffy (license 5024) Review:
https://reviewboard.asterisk.org/r/4204/
2014-11-24 20:37 +0000 [r428602-428604] Richard Mudgett <rmudgett@digium.com>
* tests/test_channel_feature_hooks.c: test_channel_feature_hooks.c:
Fix unit test for DTMF hooks. Fix the failing
/channels/features/test_features_channel_dtmf unit test. DTMF
emulation does not work without a stream of packets to prod the
emulation code. Review: https://reviewboard.asterisk.org/r/4199/
* /, main/bridge.c, main/bridge_channel.c: DTMF hooks: Leaving
channels need to push any collected digits into the bridge. Any
partially collected DTMF digits for a DTMF hook need to be pushed
into the bridge when a channel leaves the bridging system as if
there were a timeout. Review:
https://reviewboard.asterisk.org/r/4199/ ........ Merged
revisions 428601 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-21 19:09 +0000 [r428572] Richard Mudgett <rmudgett@digium.com>
* main/manager.c, /: manager: Fix could not extend string messages.
When shutting down Asterisk that has an active AMI connection,
you get several "failed to extend from %d to %d" messages because
use of the EVENT_FLAG_SHUTDOWN attempts to add all AMI permission
strings to the event. * Created MAX_AUTH_PERM_STRING to use when
creating stack based struct ast_str variables used with the
authority_to_str() and user_authority_to_str() functions instead
of a variety of magic numbers that could be too small. * Added a
special check for EVENT_FLAG_SHUTDOWN to authority_to_str() so it
will not attempt to add all permission level strings. Review:
https://reviewboard.asterisk.org/r/4200/ ........ Merged
revisions 428570 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428571 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-21 17:45 +0000 [r428544] George Joseph <george.joseph@fairview5.com>
* main/sorcery.c, /, res/res_pjsip_phoneprov_provider.c,
tests/test_sorcery.c: sorcery: Make is_object_field_registered
handle field names that are regexes. As a result of
https://reviewboard.asterisk.org/r/3305, res_sorcery_realtime was
tossing database fields that didn't have an exact match to a
sorcery registered field. This broke the ability to use regexes
as field names which manifested itself as a failure of
res_pjsip_phoneprov_provider which uses this capability. It also
broke handling of fields that start with '@' in realtime but I
don't think anyone noticed. This patch does the following... *
Modifies ast_sorcery_fields_register to pre-compile the name
regex. * Modifies ast_sorcery_is_object_field_registered to test
the regex if it exists instead of doing an exact strcmp. *
Modifies res_pjsip_phoneprov_provider with a few tweaks to get it
to work with realtime. Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4185/ ........ Merged
revisions 428543 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-21 02:16 +0000 [r428505] Matthew Jordan <mjordan@digium.com>
* main/bridge_basic.c: main/bridge_basic: Fix features regressions
introduced by r428165 In r428165, two bugs were introduced: *
Prior to entering the features retry loop, the buffer that holds
the collected digits is wiped. However, this inadvertently wipes
out the first collected digit on the first pass through, which is
obtained in ast_stream_and_wait. This caused all of the features
tests to fail. * If ast_app_dtget returns a hangup (-1), the loop
would retry incorrectly. If we detect a hangup, we have to stop
trying the feature. This patch fixes both issues. Review:
https://reviewboard.asterisk.org/r/4196/
2014-11-20 16:36 +0000 [r428425] Mark Michelson <mmichelson@digium.com>
* main/acl.c, /: Fix error with mixed address family ACLs. Prior to
this commit, the address family of the first item in an ACL was
used to compare all incoming traffic. This could lead to traffic
of other IP address families bypassing ACLs. ASTERISK-24469
#close Reported by Matt Jordan Patches: ASTERISK-24469-11.diff
uploaded by Matt Jordan (License #6283) AST-2014-012 ........
Merged revisions 428402 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 428417 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428422 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-20 16:34 +0000 [r428413] Kevin Harwell <kharwell@digium.com>
* funcs/func_db.c, /: AST-2014-018 - func_db: DB Dialplan function
permission escalation via AMI. The DB dialplan function when
executed from an external protocol (for instance AMI), could
result in a privilege escalation. Asterisk now inhibits the DB
function from being executed from an external interface if the
live_dangerously option is set to no. ASTERISK-24534 Reported by:
Gareth Palmer patches: submitted by Gareth Palmer (license 5169)
........ Merged revisions 428331 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 428363 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428409 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-20 16:13 +0000 [r428343] Jonathan Rose <jrose@digium.com>
* res/res_pjsip_acl.c, /: PJSIP ACLs: Fix ACLs not loading on
startup and apply/acl issues on contact The biggest problem this
patch fixes is that ACLs weren't previously being loaded when the
res_pjsip_acl module was loaded. Yikes. In addition, the ACL
options contact_permit and contact_acl were effectively
interpreted as contact_deny and this patch fixes that as well.
AST-1418 #close Reported by: Thomas Thompson Review:
https://reviewboard.asterisk.org/r/4120/ ASTERISK-24531 #close
Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/4171/ ........ Merged
revisions 428333 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-20 15:50 +0000 [r428339] Kevin Harwell <kharwell@digium.com>
* apps/app_confbridge.c, /: AST-2014-017 - app_confbridge:
permission escalation/ class authorization. Confbridge dialplan
function permission escalation via AMI and inappropriate class
authorization on the ConfbridgeStartRecord action. The CONFBRIDGE
dialplan function when executed from an external protocol (for
instance AMI), could result in a privilege escalation. Also, the
AMI action “ConfbridgeStartRecord” could also be used to execute
arbitrary system commands without first checking for system
access. Asterisk now inhibits the CONFBRIDGE function from being
executed from an external interface if the live_dangerously
option is set to no. Also, the “ConfbridgeStartRecord” AMI action
is now only allowed to execute under a user with system level
access. ASTERISK-24490 Reported by: Gareth Palmer ........ Merged
revisions 428332 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428334 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-20 14:55 +0000 [r428302-428305] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_refer.c, /: AST-2014-016: Fix crash when receiving
an in-dialog INVITE with Replaces in res_pjsip_refer. The
implementation of INVITE with Replaces in res_pjsip_refer did not
expect them to occur in-dialog. As a result it would incorrectly
attempt to hang up a channel it thought was under its control. In
reality the channel would be under the control of another thread.
When the other thread accessed the channel it would be accessing
freed memory and could crash. This change makes res_pjsip_refer
not act on an in-dialog INVITE with Replaces. ASTERISK-24528
#close Reported by: Joshua Colp ........ Merged revisions 428304
from http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_pjsip.c, /: AST-2014-015: Fix race condition in
chan_pjsip when sending responses after a CANCEL has been
received. Due to the serialized architecture of chan_pjsip there
exists a race condition where a CANCEL may be received and
processed before responses (such as 180 Ringing, 183 Session
Progress, and 200 OK) are sent. Since the session is in an
unexpected state PJSIP will assert when this is attempted. This
change makes it so that these responses are not sent on
disconnected sessions. ASTERISK-24471 #close Reported by: yaron
nahum ........ Merged revisions 428301 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-19 19:31 +0000 [r428273] Corey Farrell <git@cfware.com>
* include/asterisk/stringfields.h, /: stringfields: Fix bug in
ast_string_fields_copy. ast_string_fields_copy relies on the fact
that __ast_string_field_release_active never previously zeroed
pool->used, so keeping the existing pointer was "ok". Now that
existing pools can be reset to 'empty', it is important to set
each field to __ast_string_field_empty after releasing the
memory. ASTERISK-24535 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4186/ ........ Merged
revisions 428272 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-19 17:13 +0000 [r428246] Richard Mudgett <rmudgett@digium.com>
* res/res_calendar.c, main/manager.c, /, channels/chan_sip.c,
channels/sip/security_events.c: ast_str: Fix improper member
access to struct ast_str members. Accessing members of struct
ast_str outside of the string manipulation API routines is
invalid since struct ast_str is supposed to be treated as opaque.
Review: https://reviewboard.asterisk.org/r/4194/ ........ Merged
revisions 428244 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428245 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-19 12:40 +0000 [r428196-428222] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, include/asterisk/res_pjsip.h,
include/asterisk/res_pjsip_session.h, res/res_pjsip_sdp_rtp.c,
res/res_pjsip/pjsip_configuration.c,
configs/samples/pjsip.conf.sample,
contrib/ast-db-manage/config/versions/eb88a14f2a_add_media_encryption_optimistic_to_pjsip.py
(added), CHANGES, res/res_pjsip.c: res_pjsip_sdp_rtp: Add support
for optimistic SRTP. Optimistic SRTP is the ability to enable
SRTP but not have it be a fatal requirement. If SRTP can be used
it will be, if not it won't be. This gives you a better chance of
using it without having your sessions fail when it can't be.
Encrypt all the things! Review:
https://reviewboard.asterisk.org/r/3992/
* res/res_pjsip_refer.c, /: res_pjsip_refer: Ensure Refer-To is
NULL terminated and parse it as a URI. There is no guarantee that
when we get a Refer-To that it will be NULL terminated. As the
URI parsing function requires it to be we now NULL terminate it.
Additionally parsing the Refer-To as a 'To' header is needless
and it can simply be done as a URI. This also fixes a problem
where certain Refer-To headers would not be parsed as a 'To'
header causing the REFER to fail. ASTERISK-24508 #close Reported
by: Beppo Mazzucato Review:
https://reviewboard.asterisk.org/r/4187/ ........ Merged
revisions 428195 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-18 18:54 +0000 [r428169] Richard Mudgett <rmudgett@digium.com>
* /, res/parking/parking_tests.c: parking_tests.c: Add missing
newline on a unit test message. ........ Merged revisions 428168
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-17 16:51 +0000 [r428145] Mark Michelson <mmichelson@digium.com>
* CHANGES, main/features_config.c,
configs/samples/features.conf.sample,
include/asterisk/features_config.h, main/bridge_basic.c: Allow
for transferer to retry when dialing an invalid extension. This
allows for a configurable number of attempts for a transferer to
dial an extension to transfer the call to. For Asterisk 13, the
default values are such that upgrading between versions will not
cause a behaivour change. For trunk, though, the defaults will be
changed to be more user-friendly. Review:
https://reviewboard.asterisk.org/r/4167
2014-11-17 16:00 +0000 [r428119] Corey Farrell <git@cfware.com>
* /, channels/chan_sip.c: chan_sip: Fix theoretical leak of
p->refer. If transmit_refer is called when p->refer is already
allocated, it leaks the previous allocation. Updated code to
always free previous allocation during a new allocation. Also
instead of checking if we have a previous allocation, always
create a clean record. ASTERISK-15242 #close Reported by: David
Woolley Review: https://reviewboard.asterisk.org/r/4160/ ........
Merged revisions 428117 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428118 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-17 15:27 +0000 [r428079-428115] Matthew Jordan <mjordan@digium.com>
* /, apps/confbridge/conf_state_multi_marked.c:
apps/app_confbridge: Ensure 'normal' users hear message when last
marked leaves When r428077 was made for ASTERISK-24522, it failed
to take into account users who are neither wait_marked nor
end_marked. These users are *also* supposed to hear the 'leader
has left the conference' message. Granted, this behaviour is a
bit odd; however, that is how it used to work... and behaviour
changes are not good. This patch ensures that if there are any
'normal' users present when the last marked user leaves the
conference, the message will still be played to them. Note that
this regression was caught by the Asterisk Test Suite's
confbridge_nominal test, which has a quirky combination of users.
........ Merged revisions 428113 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428114 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/confbridge/conf_state_multi_marked.c: app_confbridge:
Don't play leader leaving prompt if no one will hear it Consider
the following: - A marked user in a conference - One or more
end_marked only users in the conference When the marked users
leaves, we will be in the conf_state_multi_marked state. This
currently will traverse the users, kicking out any who have the
end_marked flags. When they are kicked, a full ast_bridge_remove
is immediately called on the channels. At this time, we also
unilaterally set the need_prompt flag. When the need_prompt flag
is set, we then playback a sound to the bridge informing everyone
that the leader has left; however, no one is left in the bridge.
This causes some odd behaviour for the end_marked users - they
are stuck waiting for the bridge to be unlocked. This results in
them waiting for 5 or 6 seconds of dead air before hearing that
they've been kicked. Unfortunately, we do have to keep the bridge
locked while we're playing back the 'leader-has-left' prompt. If
there are any wait_marked users in the conference, this behaviour
can't be easily changed - but we do make the case of the
end_marked users better with this patch. Review:
https://reviewboard.asterisk.org/r/4184/ ASTERISK-24522 #close
Reported by: Matt Jordan ........ Merged revisions 428077 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 428078 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-16 21:12 +0000 [r427979-428052] Joshua Colp <jcolp@digium.com>
* channels/chan_pjsip.c, /: chan_pjsip: Remove AOR check when
dialing and one is specified. The AOR value may contain the name
of an AOR or a full SIP URI. Checking if the AOR exists can't be
done as a result of this. ........ Merged revisions 428051 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_pjsip.c: chan_pjsip: Add additional log message
when an AOR is specified when dialing and it does not exist.
ASTERISK-24499 #close Reported by: Rusty Newton ........ Merged
revisions 428007 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_motif.c, channels/chan_pjsip.c, /: chan_motif /
chan_pjsip: Fix incorrect "No such module" messages when
reloading. For chan_motif the direct return value of the
underlying config options framework was passed back. This can
relay various states which the module loader would not interpet
as success. It has been changed so only on errors will it report
back an error. For chan_pjsip the code implemented a dummy reload
function which always returned an error. This has been removed as
all configuration is held within res_pjsip instead.
ASTERISK-23651 #close Reported by: Rusty Newton ........ Merged
revisions 427981 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Enforce
requirements for session timer minimum expiration period and
normal expiration period. This change enforces the requirements
in PJSIP for session timer configuration. The minimum expiration
period must be 90 seconds or higher and the normal expiration
period can not be lower than the minimum expiration period. If
either of these were done the code would assert at session setup
time. ASTERISK-24336 #close Reported by: Leon Rowland ........
Merged revisions 427978 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-15 16:56 +0000 [r427927-427954] Matthew Jordan <mjordan@digium.com>
* cel/cel_odbc.c, /: cel/cel_odbc: Provide microsecond precision in
'eventtime' column when possible This patch adds microsecond
precision when inserting a CEL record into a table with an
"eventtime" column of type timestamp, instead of second
precision. The documentation (configs/cel_odbc.conf.sample) was
already saying that the eventtime column included microseconds
precision, but that was not the case. Also, without this patch,
if you had a table with an "eventtime" column of type varchar,
you had millisecond precision. With this patch, you also get
microsecond precision in this case. Review:
https://reviewboard.asterisk.org/r/3980 ASTERISK-24283 #close
Reported by: Etienne Lessard patches:
cel_odbc_time_precision.patch uploaded by Etienne Lessard
(License 6394) ........ Merged revisions 427952 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427953 from
http://svn.asterisk.org/svn/asterisk/branches/12
* tests/test_cel.c: tests/test_cel: Unlock bridge on off nominal
paths If the test fails due to memory allocation errors, we may
as well attempt to unlock the bridge on the way out.
2014-11-14 17:45 +0000 [r427902] Jonathan Rose <jrose@digium.com>
* configs/samples/cdr.conf.sample, main/cdr.c, /: Documentation:
Revise explanation of cdr.conf option 'Unanswered' ASTERISK-24279
#close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/4109/ ........ Merged
revisions 427901 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-14 15:51 +0000 [r427876] Scott Griepentrog <sgriepentrog@digium.com>
* /, main/stun.c: stun: correct attribute string padding to match
rfc When sending the USERNAME attribute in an RTP STUN response,
the implementation in append_attr_string passed the actual
length, instead of padding it up to a multiple of four bytes as
required by the RFC 3489. This change adds separate variables for
the string and padded attributed lengths, and performs padding
correctly. Reported by: Thomas Arimont Review:
https://reviewboard.asterisk.org/r/4139/ ........ Merged
revisions 427874 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427875 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-14 15:24 +0000 [r427870] Mark Michelson <mmichelson@digium.com>
* main/bridge.c, main/bridge_basic.c,
include/asterisk/stasis_bridges.h, tests/test_cel.c,
apps/app_queue.c, main/cel.c, main/stasis_bridges.c, /,
res/stasis/app.c: Fix race condition that could result in ARI
transfer messages not being sent. From reviewboard: "During blind
transfer testing, it was noticed that tests were failing
occasionally because the ARI blind transfer event was not being
sent. After investigating, I detected a race condition in the
blind transfer code. When blind transferring a single channel,
the actual transfer operation (i.e. removing the transferee from
the bridge and directing them to the proper dialplan location) is
queued onto the transferee bridge channel. After queuing the
transfer operation, the blind transfer Stasis message is
published. At the time of publication, snapshots of the channels
and bridge involved are created. The ARI subscriber to the blind
transfer Stasis message then attempts to determine if the bridge
or any of the involved channels are subscribed to by ARI
applications. If so, then the blind transfer message is sent to
the applications. The way that the ARI blind transfer message
handler works is to first see if the transferer channel is
subscribed to. If not, then iterate over all the channel IDs in
the bridge snapshot and determine if any of those are subscribed
to. In the test we were running, the lone transferee channel was
subscribed to, so an ARI event should have been sent to our
application. Occasionally, though, the bridge snapshot did not
have any channels IDs on it at all. Why? The problem is that
since the blind transfer operation is handled by a separate
thread, it is possible that the transfer will have completed and
the channels removed from the bridge before we publish the blind
transfer Stasis message. Since the blind transfer has completed,
the bridge on which the transfer occurred no longer has any
channels on it, so the resulting bridge snapshot has no channels
on it. Through investigation of the code, I found that attended
transfers can have this issue too for the case where a transferee
is transferred to an application." The fix employed here is to
decouple the creation of snapshots for the transfer messages from
the publication of the transfer messages. This way, snapshots can
be created to reflect what they are at the time of the transfer
operation. Review: https://reviewboard.asterisk.org/r/4135
........ Merged revisions 427848 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-14 14:56 +0000 [r427846] Joshua Colp <jcolp@digium.com>
* /, apps/confbridge/conf_state_multi_marked.c: app_confbridge:
Play "leader has left" sound even when musiconhold is enabled.
Currently if the leader of a conference bridge leaves any
participant that has musiconhold enabled will not hear the
"leader has left" sound. This is because musiconhold is started
and THEN the sound is played. This change makes it so that the
sound is played and THEN musiconhold is started. This provides a
better experience for users as they may not have known previously
why they went back to musiconhold. Review:
https://reviewboard.asterisk.org/r/4177/ ........ Merged
revisions 427844 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427845 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-14 14:24 +0000 [r427841] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_session.c,
include/asterisk/res_pjsip.h: Fix race condition where duplicated
requests may be handled by multiple threads. This is the Asterisk
13 version of the patch. The main difference is in the pubsub
code since it was completely refactored between Asterisk 12 and
13. Review: https://reviewboard.asterisk.org/r/4175
2014-11-13 22:03 +0000 [r427815] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip_outbound_registration.c: res_pjsip_exten_state:
PJSIPShowSubscriptionsInbound causes crash When using a
non-default sorcery wizard (in this instance realtime) for
outbound registrations and after adding in an appropriate call to
ast_sorcery_apply_config() (since it is missing) Asterisk will
crash after a stack overflow occurs due to the code infinitely
recursing. The fix entails removing the outbound registration
state dependency from the outbound registration sorcery object
and instead keeping an in memory container that can be used to
lookup the state when needed. ASTERISK-24514 Reported by: Mark
Michelson Review: https://reviewboard.asterisk.org/r/4164/
........ Merged revisions 427814 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-13 15:44 +0000 [r427789] Kinsey Moore <kmoore@digium.com>
* include/asterisk/stasis.h, include/asterisk/stasis_app.h,
res/stasis/app.h, res/res_stasis.c, /, res/stasis/app.c,
res/stasis/stasis_bridge.c: Stasis: Fix StasisEnd message
ordering This change corrects message ordering in cases where a
channel-related message can be received after a Stasis/ARI
application has received the StasisEnd message. The StasisEnd
message was being passed to applications directly without waiting
for the channel topic to empty. As a result of this fix, other
bugs were also identified and fixed: * StasisStart messages were
also being sent directly to apps and are now routed through the
stasis message bus properly * Masquerade monitor datastores were
being removed at the incorrect time in some cases and were
causing StasisEnd messages to not be sent * General refactoring
where necessary for the above * Unsubscription on StasisEnd
timing changes to prevent additional messages from following the
StasisEnd when they shouldn't A channel sanitization function
pointer was added to reduce processing and AO2 lookups. Review:
https://reviewboard.asterisk.org/r/4163/ ASTERISK-24501 #close
Reported by: Matt Jordan ........ Merged revisions 427788 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-13 00:00 +0000 [r427763] Matthew Jordan <mjordan@digium.com>
* main/rtp_engine.c, /: main/rtp_engine: Fix crash when processing
more than one RTCP report info block Asterisk - in
res_rtp_asterisk - only understands a single RTCP report info
block. When the RTCP information was refactored in the RTP Engine
to be pushed over the Stasis message bus, I put in the hooks into
the engine to handle multiple RTCP report info blocks, in the
hope that a future RTP implementation would be able to provide
that data. Unfortunately, res_rtp_asterisk has a tendency to
"lie": (1) It will send RTCP reports with a
reception_report_count greater than 1 (which is pulled directly
from the RTCP packet itself, so that part is correct) (2) It will
only provide a single report block When the rtp_engine goes to
convert this to a JSON blob, hilarity ensues as it looks for a
report block that doesn't exist. This patch updates the
rtp_engine to be a bit more skeptical about what it is presented
with. While this could also be fixed in res_rtp_asterisk, this
patch prefers to fix it in the engine for two reasons: (1) The
engine is designed to work with multiple RTP implementation, and
hence having it be more robust is a good thing (tm) (2)
res_rtp_asterisk's handling of RTCP information is "fun". It
should report the correct reception_report_count; ideally it
should also be giving us all of the blocks - but it is
*definitely* not designed to do that. Going down that road is a
non-trivial effort. Review:
https://reviewboard.asterisk.org/r/4158/ ASTERISK-24489 #close
Reported by: Gregory Malsack Tested by: Gregory Malsack
ASTERISK-24498 #close Reported by: Beppo Mazzucato Tested by:
Beppo Maazucato ........ Merged revisions 427762 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-12 20:39 +0000 [r427737] Corey Farrell <git@cfware.com>
* /, main/features.c: Fix leak in AMI Action Bridge Add missing
reference cleanup for newly created bridge. ASTERISK-24281
Reported by: Stefan Engström Review:
https://reviewboard.asterisk.org/r/4154/ ........ Merged
revisions 427736 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-12 16:12 +0000 [r427711] Joshua Colp <jcolp@digium.com>
* main/pbx.c, /: pbx: Fix off-nominal case where a freed extension
may still be used. If during the operation of adding an extension
a priority is added but fails it is possible for the extension to
be freed but still exist in the PBX core. If this occurs
subsequent lookups may try to access the extension and end up in
freed memory. This change removes the extension from the PBX core
when the priority addition fails and then frees the extension.
ASTERISK-24444 #close Reported by: Leandro Dardini Review:
https://reviewboard.asterisk.org/r/4162/ ........ Merged
revisions 427709 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427710 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-12 13:46 +0000 [r427684] Corey Farrell <git@cfware.com>
* codecs/ilbc, /, tests, codecs/speex, apps/confbridge,
Makefile.rules: Fix compiler error when using ./configure
--enable-dev-mode --enable-coverage When DONT_OPTIMIZE is enabled
with dev-mode, it causes a shadow compilation to be done with
output to /dev/null. This can cause errors with coverage when GCC
attempts to write to /dev/null.gcno. This change disables
coverage for the shadow compilation. ASTERISK-24502 #close
Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4151/ ........ Merged
revisions 427682 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427683 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-09 08:00 +0000 [r427643] Corey Farrell <git@cfware.com>
* main/manager.c, /: manager: Fix HTTP connection reference leaks.
Fix reference leak that happens if (session && !blastaway).
ASTERISK-24505 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4153/ ........ Merged
revisions 427641 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427642 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-09 00:38 +0000 [r427583-427615] Matthew Jordan <mjordan@digium.com>
* channels/chan_mgcp.c, /: channels/chan_mgcp: Fix regression which
causes gateways to be skipped In r227276, a while loop was turned
into a for loop. Unfortunately, a portion of the while loop was
left in the code such that, when a static gateway is encountered
in the list of MGCP gateways, the next gateway would be skipped.
At best, we would simply flip past a gateway; at worst, this
could lead to a crash. ASTERISK-24500 #close Reported by: Xavier
Hienne patches: chan_mgcp.patch uploaded by Xavier Hienne
(License 6657) ........ Merged revisions 427613 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427614 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, addons/chan_mobile.c: addons/chan_mobile: Increase buffer size
of UCS2 encoded SMS messages When UCS2 character encoding is
used, one symbol in national language can be expanded to 4 bytes.
The current buffer used for receiving message in do_monitor_phone
is 256 bytes, which is not large enough for incoming messages.
For example: * AT+CMGR phone response prefix '+CMGR: "REC
UNREAD","+7**********",,"14/10/29,13:31:39+12"\r\n' - 60 bytes *
SMS body with UCS2 encoding (max) - 280 bytes * AT+CMGR phone
response suffix '\r\n\r\nOK\r\n' - 8 bytes * Terminating null
character - 1 byte This results in a needed buffer size of 349
bytes. Hence, this patch opts for a 350 byte buffer.
ASTERISK-24468 #close Reported by: Dmitriy Bubnov patches:
chan_mobile-1_8.diff uploaded by Dmitriy Bubnov (License 6651)
chan_mobile-trunk.diff uploaded by Dmitry Bubnov (License 6651)
........ Merged revisions 427607 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427610 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_voicemail.c: app_voicemail: Fix enhancement that allowed
multiple recipients in To: header An issue existed in r420577,
which added multiple recipients to voicemail emails. The patch,
when looking at the intended recipients, looked ahead for the '|'
character inside a while loop which already had pulled out the
appropriate field parsing on the '|' character. This would cause
it to skip the recipients. This patch fixes it such that it
relies completely on the while loop to parse through the e-mail
fields. Note that the original author of the patch looked at this
fix and approved it. ASTERISK-24250 #close Reported by: abelbeck
patches: voicemail-420577-to-comma-fix.diff uploaded by abelbeck
(License 5903)
* /, bridges/bridge_native_rtp.c: bridge_native_rtp: Fix T.38
issues with remote bridges After r425242 the
fax/sip/directmedia_reinvite_t38 test started failing due to the
surviving channel not being re-INVITEd back from T.38 to audio.
This patch fixes that bug - a deeper explanation of what happened
follows. When two RTP channels are in a native bridge, the
bridging layer will investigate each via the get_rtp_info glue
callback. This callback returns the native bridge preference of
the channel *at that moment in time* (that part is key). At
different points during the bridging, the native bridging layer
will inform the RTP capable channels of the status of the bridge
via the update_peer glue callback. In a T.38 scenario with audio
direct media, the sequence of events will often look like the
following: * SIP/A and SIP/B both have audio and enter a native
bridge. * Asterisk re-INVITEs audio between SIP/A and SIP/B
directly (via an update_peer callback). * SIP/A sends a re-INVITE
to T.38, which causes Asterisk to send a re-INVITE to T.38 to
SIP/B. Assuming everyone 200 OKs the process, the UDPTL stack
receives UDPTL packets in Asterisk from both endpoints. From the
perspective of the channels, we are now in a local bridge for
T.38, even though we are technically still in a remote bridge in
bridge_native_rtp. (YAY!) * When one side hangs up,
bridge_native_rtp is told to stop bridging. It then re-evaluates
the channels and asks them how they are bridged - and since T.38
is enabled, they reply with a Local bridge (which is correct),
but is wrong because the audio portion is still technically in a
remote bridge. * Asterisk releases the surviving channel, whose
audio is *not* re-INVITED back to Asterisk as bridge_native_rtp
incorrectly assumes that it was in a local bridge. Ironically,
prior to r425242, this used to work mostly due to a fluke in the
bridging layer. The purpose of the get_rtp_info callback
shouldn't be modified: it should tell the bridging layer what
kind of bridge the channel prefers at that moment in time. If you
have T.38 enabled, that *must* be a local bridge, as the UDPTPL
stack must be in the media path. As such, this patch does not
modify that part of the code. However, we have to tell the
channels to re-evaluate themselves when they come out of a native
bridge, since we can no longer trust the get_rtp_info callbacks
when the native bridge is being stopped. Something else may have
changed in the channels, and they may now be lying to us. As
such, this patch makes it so that we unilaterally tell the
channels that they are no longer bridged via the update_peer
callback. This is actually what the channels expect anyway: code
in both chan_sip and chan_pjsip's callbacks look at the T.38
state and - if they were in T.38 - send a re-INVITE to get the
audio back to Asterisk. Review:
https://reviewboard.asterisk.org/r/4157/ ........ Merged
revisions 427582 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-08 18:17 +0000 [r427557] Corey Farrell <git@cfware.com>
* /, channels/chan_console.c: chan_console: Fix reference leaks to
pvt. Fix a bunch of calls to get_active_pvt where the reference
is never released. ASTERISK-24504 #close Reported by: Corey
Farrell Review: https://reviewboard.asterisk.org/r/4152/ ........
Merged revisions 427554 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427555 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-06 19:22 +0000 [r427494-427512] Richard Mudgett <rmudgett@digium.com>
* apps/app_agent_pool.c, /: app_agent_pool: Made agent alert
interruptable by DTMF. Made agent able to interrupt the alerting
beep playback with DTMF. Any digit can interrupt if the call does
not need to be acknowledged. Only the first digit of the
acknowledgement can interrupt if the call needs to be
acknowledged. The agent interrupting the alerting playback builds
on the ASTERISK-24447 patch because it knows what digit
interrupted the playback and needs to be able to pass that digit
to the DTMF hook digit collection code. ASTERISK-24257 #close
Reported by: Steve Pitts Review:
https://reviewboard.asterisk.org/r/4123/ ........ Merged
revisions 427508 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, include/asterisk/bridge_channel.h, main/bridge_channel.c:
Bridge DTMF hooks: Made audio pass from the bridge while waiting
for more matching digits. * Made collecting DTMF digits for the
DTMF feature hooks pass frames from the bridge. * Made collecting
DTMF digits possible by other bridge hooks if there is a need.
ASTERISK-24447 #close Reported by: Richard Mudgett Review:
https://reviewboard.asterisk.org/r/4123/ ........ Merged
revisions 427493 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-06 18:20 +0000 [r427491] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/pjsip_distributor.c: res_pjsip: Ensure in-dialog
responses have an endpoint associated. When handling incoming
messages we determine if it is associated with a dialog. If so we
use that to determine what serializer and endpoint to use for the
message. Previously this would pass the endpoint to the endpoint
lookup module to actually place the endpoint completely on the
message. For in-dialog responses, however, this did not occur as
dialog processing took over and the endpoint lookup did not
occur. This change just places the endpoint in the expected spot
immediately instead of relying on the endpoint lookup module.
In-dialog responses thus have the expected endpoint. AST-1459
#close Review: https://reviewboard.asterisk.org/r/4146/ ........
Merged revisions 427490 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-06 12:13 +0000 [r427384-427466] Corey Farrell <git@cfware.com>
* main/file.c, /: main/file.c: fix possible extra ast_module_unref
to format modules. fn_wrapper only adds a reference to the
format's module if the file was able to be opened. If not this
causes an unmatched ast_module_unref in filestream_destructor.
Move ast_module_ref to get_stream. ASTERISK-24492 #close Reported
by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4149/ ........ Merged
revisions 427464 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427465 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_hep.c, /: res_hep: fix major leak that occurs when config
is missing or enabled=no. Add missing unreference in
hepv3_send_packet. ASTERISK-24491 #close Reported by: Zane Conkle
Tested by: Zane Conkle Review:
https://reviewboard.asterisk.org/r/4150/ ........ Merged
revisions 427400 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/utils.c, include/asterisk/stringfields.h: Fix unintential
memory retention in stringfields. * Fix missing / unreachable
calls to __ast_string_field_release_active. * Reset pool->used to
zero when the current pool->active reaches zero. ASTERISK-24307
#close Reported by: Etienne Lessard Tested by: ibercom, Etienne
Lessard Review: https://reviewboard.asterisk.org/r/4114/ ........
Merged revisions 427380 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 427381 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427382 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-06 02:37 +0000 [r427356] George Joseph <george.joseph@fairview5.com>
* tests/test_strings.c, /: test_strings: Remove string tests that
exercise asserts. Since unit tests are run with DO_CRASH, those
tests were causing the test to fail. Tested-by: George Joseph
........ Merged revisions 427354 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427355 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-05 19:52 +0000 [r427334] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip/config_system.c, configs/samples/pjsip.conf.sample,
res/res_pjsip.c: Make the disable_tcp_switch PJSIP system object
enabled by default. Testing has shown repeatedly that PJSIP's
default behavior of switching automatically to TCP for large
messages can cause issues. The most common issues are that
devices that we are communicating with do not handle the switch
to TCP gracefully, thus causing situations such as broken calls
or broken subscriptions. Now, in order to have this behavior
happen, you must opt into it. The sample file has been updated to
warn that enabling the TCP switch behavior may cause issues for
you, so use at your own risk.
2014-11-05 12:18 +0000 [r427303] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_multihomed.c, /: res_pjsip_multihomed: Add logging
during startup to aid debugging if local DNS is misbehaving. This
change adds a bit of logging so if the local DNS is misbehaving
it is easier to track down what is going on and where Asterisk
may be hanging. ASTERISK-24438 #close Reported by: Melissa
Shepherd Review: https://reviewboard.asterisk.org/r/4148/
........ Merged revisions 427300 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-05 00:15 +0000 [r427228-427276] George Joseph <george.joseph@fairview5.com>
* pbx/pbx_config.c, main/config.c, tests/test_strings.c,
include/asterisk/utils.h, /, main/utils.c: config: Make
text_file_save and 'dialplan save' escape semicolons in values.
When a config file is read, an unescaped semicolon signals
comments which are stripped from the value before it's stored.
Escaped semicolons are then unescaped and become part of the
value. Both of these behaviors are normal and expected. When the
config is serialized either by 'dialplan save' or
AMI/UpdateConfig however, the now unescaped semicolons are
written as-is. If you actually reload the file just saved, the
unescaped semicolons are now treated as start of comments. Since
true comments are stripped on read, any semicolons in
ast_variable.value must have been escaped originally. This patch
re-escapes semicolons in ast_variable.values before they're
written to file either by 'dialplan save' or
config/ast_config_text_file_save which is called by
AMI/UpdateConfig. I also fixed a few pre-existing formatting
issues nearby in pbx_config.c Tested-by: George Joseph
ASTERISK-20127 #close Review:
https://reviewboard.asterisk.org/r/4132/ ........ Merged
revisions 427275 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/config.c, /: config: BUG: Restore ability for non-templ to
be used as base objs in config. My recent refactor of config.c
accidentally removed the capability for an object to inherit from
a non-template object. This patch restores the capability to
inherit from both template and non-template objects. Tested-by:
George Joseph Reported-by: Scott Griepentrog ASTERISK-24487
#close Review: https://reviewboard.asterisk.org/r/4147/ ........
Merged revisions 427227 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-04 19:44 +0000 [r427181-427204] Corey Farrell <git@cfware.com>
* funcs/func_talkdetect.c, /: func_talkdetect: Fix stasis message
leak in audiohook callback. ASTERISK-24482 #close Reported by:
Corey Farrell Review: https://reviewboard.asterisk.org/r/4142/
........ Merged revisions 427203 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_http_websocket.c: res_http_websockets: Fix extra unref
of module In websocket_add_protocol_internal is used to add the
"echo" protocol, but ast_websocket_remove_protocol is used to
remove it. This causes an extra call to ast_module_unref.
ASTERISK-24480 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4140/ ........ Merged
revisions 427200 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/app.c: Fix crash caused by merge error on review 4138 When
merging from 12 to 13 there were conflicts, I mistakenly had the
loop run ast_closestream(others[0]) when it should be
ast_closestream(others[x]).
2014-11-03 18:15 +0000 [r427130] Richard Mudgett <rmudgett@digium.com>
* /, res/res_pjsip/config_system.c, UPGRADE.txt,
configs/samples/pjsip.conf.sample, res/res_pjsip.c: res_pjsip:
Add disable_tcp_switch option. When a packet exceeds the MTU,
pjproject will switch from UDP to TCP. In some circumstances (on
some networks), this can cause some issues with messages not
getting sent to the correct destination - and can also cause
connections to get dropped due to quirks in pjproject deciding to
terminate TCP connections with no messages. While fixing the
routing/messaging issues is important, having a configuration
option in Asterisk that tells pjproject to not switch over to TCP
would be useful. That way, if some glitch is discovered on some
other network/site, we can at least disable the behavior until a
fix is put into place. AFS-197 #close Review:
https://reviewboard.asterisk.org/r/4137/ ........ Merged
revisions 427129 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-03 02:34 +0000 [r427021-427089] Corey Farrell <git@cfware.com>
* apps/app_voicemail.c, /: Fix compile error caused by review 4138
There is no procedure called ast_closeframe, fix code to use
ast_closestream. Reported By: Matt Jordan ........ Merged
revisions 427087 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427088 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/app.c, apps/app_voicemail.c, /: Fix ast_writestream leaks
Fix cleanup in __ast_play_and_record where others[x] may be
leaked. This was caught where prepend != NULL && outmsg != NULL,
once realfile[x] == NULL any further others[x] would be leaked. A
cleanup block was also added for prepend != NULL && outmsg ==
NULL. 11+: Fix leak of ast_writestream recording_fs in
app_voicemail:leave_voicemail. ASTERISK-24476 #close Reported by:
Corey Farrell Review: https://reviewboard.asterisk.org/r/4138/
........ Merged revisions 427023 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 427024 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427025 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/abstract_jb.c: func_jitterbuffer: fix frame leaks. Fix
code paths where it is possible for frames to leak. Fix
uninitialized variable in jb_get_fixed and jb_get_adaptive.
ASTERISK-22409 #related Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4128/ ........ Merged
revisions 427019 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 427020 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-11-02 01:01 +0000 [r426996] Matthew Jordan <mjordan@digium.com>
* /, res/res_stasis.c: res/res_stasis: Fix crash on module unload
while performing operation When the res_stasis module is
unloaded, it will dispose of the apps_registry container. This is
a problem if an ARI operation is in flight that attempts to use
the registry, as the shutdown occurs in a separate thread. This
patch adds some sanity checks to the various routines that access
the registry which cause the operations to fail if the
apps_registry does not exist. Crash caught by the Asterisk Test
Suite. ........ Merged revisions 426995 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-31 16:50 +0000 [r426934] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* Makefile, /: install init.d files on GNU/kFreeBSD Review:
https://reviewboard.asterisk.org/r/4118/ ........ Merged
revisions 426926 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 426927 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426933 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-31 16:40 +0000 [r426924-426930] Scott Griepentrog <sgriepentrog@digium.com>
* /, configs/samples/pjsip.conf.sample, res/res_pjsip.c: pjsip:
clarify tls cert and key file usage A question arose as to
whether a .pem file could be provided in place of the .crt and
.key files in a PJSIP TLS configuration. I tested this and
discovered that although a cert will be read from the pem file, a
key will not, and thus the priv_key_file entry is still required.
This update to the fine documentation clarifies the option usage.
AST-1448 #close Review: https://reviewboard.asterisk.org/r/4129/
Reported by: John Bigelow ........ Merged revisions 426928 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_outbound_registration.c: pjsip: Handle outbound
unregister correctly This updates the status of the outbound
registration to reflect when it has been unregistered. Since the
registration is unregistered but is not stopped, the registration
schedule remains active as before. The patch also updates the
documentation of both the AMI and CLI commands. ASTERISK-24411
#close Review: https://reviewboard.asterisk.org/r/4119/ Reported
by: John Bigelow patches: unregister-patch1.txt uploaded by John
Bigelow (License 5091) ........ Merged revisions 426923 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-31 03:26 +0000 [r426865] Matthew Jordan <mjordan@digium.com>
* /, channels/sip/reqresp_parser.c,
channels/sip/include/reqresp_parser.h:
channels/sip/reqresp_parser: Fix unit tests for r426594 When
r426594 was made, it did not take into account a unit test that
verified that the function properly populated the unsupported
buffer. The function would previously memset the buffer if it
detected it had any contents; since this function can now be
called iteratively on successive headers, the unit tests would
now fail. This patch updates the unit tests to reset the buffer
themselves between successive calls, and updates the
documentation of the function to note that this is now required.
........ Merged revisions 426858 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 426860 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426863 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-31 03:08 +0000 [r426803-426833] Corey Farrell <git@cfware.com>
* contrib/Makefile (added), Makefile, /: REF_DEBUG: Install
refcounter.py to $(ASTDATADIR)/scripts This change ensures
refcounter.py is installed to a place where it can be found by
the Asterisk testsuite if REF_DEBUG is enabled. ASTERISK-24432
#close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4094/ ........ Merged
revisions 426830 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 426831 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426832 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_queue.c: app_queue: fix a couple leaks to struct
call_queue in set_member_value set_member_value has a couple
leaks to references in the variable q found through testsuite
tests/queues/set_penalty. Also remove the REF_DEBUG_ONLY_QUEUES
compiler declaration, this is no longer possible with the updated
REF_DEBUG code. ASTERISK-24466 #close Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4125/ ........ Merged
revisions 426805 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426806 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/audiohook.c: audiohooks: Clean references to formats Cleanup
references to in_translate[x].format and out_translate[x].format
in ast_audiohook_detach_list. ASTERISK-24465 #close Reported by:
Corey Farrell Review: https://reviewboard.asterisk.org/r/4124/
2014-10-30 21:13 +0000 [r426757-426780] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_exten_state.c, /: res_pjsip_exten_state:
PJSIPShowSubscriptionsInbound causes crash Currently, it is
possible for some subscriptions to get into a NULL state. When
this occurs and the PJSIPShowSubscriptionsInbound ami action is
issued and a device is subscribed for extension state then the
associated subscription state object can't be located. The code
then attempts to dereference a NULL object. Added a NULL check to
avoid the problem. Reported by: John Bigelow ........ Merged
revisions 426779 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip/pjsip_options.c, /: res_pjsip: incorrect qualify
statistics after disabling for contact When removing the
qualify_frequency from an AoR or a contact the statistics shown
when issuing "pjsip show aors" from the CLI are incorrect. This
patch deletes the contact's status object from sorcery,
disassociating it from the contact, if the qualify_freqency is
removed from configuration. ASTERISK-24462 #close Reported by:
Mark Michelson Review: https://reviewboard.asterisk.org/r/4116/
........ Merged revisions 426755 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-30 09:20 +0000 [r426702] Walter Doekes <walter+asterisk@wjd.nu>
* apps/app_voicemail.c, /: app_voicemail: Fix unchecked bounds of
myArray in IMAP_STORAGE. In update_messages_by_imapuser(),
messages were appended to a finite array which resulted in a
crash when an IMAP mailbox contained more than 256 entries. This
memory is now dynamically increased as needed. Observe that this
patch adds a bunch of XXX's to questionable code. See the review
(url below) for more information. ASTERISK-24190 #close Reported
by: Nick Adams Tested by: Nick Adams Review:
https://reviewboard.asterisk.org/r/4126/ ........ Merged
revisions 426691 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 426692 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426696 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-30 06:09 +0000 [r426668] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* channels/chan_unistim.c, /: Add additional checks for NULL
pointers to fix several crashes reported. ASTERISK-24304 #close
Reported by: dhanapathy sathya ........ Merged revisions 426666
from http://svn.asterisk.org/svn/asterisk/branches/11 ........
Merged revisions 426667 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-30 01:59 +0000 [r426597-426602] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: channels/chan_sip: Add improved support
for 4xx error codes This patch adds support for 414, 493, 479,
and a stray 400 response in REGISTER response handling. This
helps interoperability in a number of scenarios. Review:
https://reviewboard.asterisk.org/r/3437 patches: rb3437.patch
uploaded by oej (License 5267) ........ Merged revisions 426599
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 426600 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426601 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/sip/reqresp_parser.c, /, channels/chan_sip.c:
channels/chan_sip: Support mutltiple Supported and Required
headers A SIP request may contain multiple Supported: and
Required: headers. Currently, chan_sip only parses the first
Supported/Required header it finds. This patch adds support for
multiple Supported/Required headers for INVITE requests. Review:
https://reviewboard.asterisk.org/r/2478 ASTERISK-21721 #close
Reported by: Olle Johansson patches: rb2478.patch uploaded by oej
(License 5267) ........ Merged revisions 426594 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 426595 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426596 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-29 10:33 +0000 [r426570] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* channels/chan_phone.c: Fix building chan_phone on big endian
systems A left over from the formats conversion (Corey Farrell).
ASTERISK-24458 #close Review:
https://reviewboard.asterisk.org/r/4117/
2014-10-28 21:26 +0000 [r426552] Richard Mudgett <rmudgett@digium.com>
* /, bridges/bridge_builtin_features.c: bridge_builtin_features:
Add missing channel locks around
ast_get_chan_features_general_config(). The feature_automonitor()
and feature_automixmonitor() functions were not locking the
channel around ast_get_chan_features_general_config(). Accessing
the channel datastore list without the channel locked is a good
way to corrupt the list or follow the pointer chain into
oblivion. ........ Merged revisions 426531 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-28 21:05 +0000 [r426525-426529] Corey Farrell <git@cfware.com>
* /, res/res_fax.c: res_fax: Resolve T38 gateway frame leak. When
frames are translated by a fax gateway they need to be freed. The
existing call to ast_frfree was unreachable. This change
reorganizes fax_gateway_framehook to ensure that ast_frfree is
called when needed. ASTERISK-24457 #close Reported by: Corey
Farrell Review: https://reviewboard.asterisk.org/r/4115/ ........
Merged revisions 426527 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426528 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /: manager: Unsubscribe from acl_change_sub at
shutdown. ASTERISK-24453 #close Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4110/ ........ Merged
revisions 426524 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-28 18:09 +0000 [r426459] mdavenport <mdavenport@localhost>:
* configs/samples/manager.conf.sample: ASTERISK-23512, correct
inaccurate comment in manager.conf.sample
2014-10-28 16:40 +0000 [r426368-426432] Matthew Jordan <mjordan@digium.com>
* /, main/bridge.c: main/bridge: Destroy features struct on off
nominal path during bridge impart When a channel is imparted to a
bridge, the invocation of the function may provide an
ast_bridge_features struct. Upon passing this to
ast_bridge_impart, the caller must assume that ownership has
passed to the function, as in all paths the function destroys the
struct prior to returning (as its purpose is to configure the
behavior of the channel while in the bridge). On one off nominal
path - where the channel already has a PBX thread - the struct
was not being destroyed. This patch fixes that glitch.
ASTERISK-24437 #close Reported by: Scott Griepentrog ........
Merged revisions 426431 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /: main/manager: Fix typo in AMI event
documentation of "OriginateResponse" The parameter name is
"Response", not "Resonse". ASTERISK-24430 #close Reported by:
Dafi Ni ........ Merged revisions 426366 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426367 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-28 14:56 +0000 [r426294-426362] mdavenport <mdavenport@localhost>:
* res/res_agi.c: ASTERISK-24323, fix bug in documentation of AGI
STREAM FILE CONTROL
* configs/samples/extensions.conf.sample: ASTERISK-24419, fix
incorrect syntax for setting language in extensions.conf.sample
2014-10-28 11:20 +0000 [r426252-426266] Corey Farrell <git@cfware.com>
* apps/app_queue.c, /: app_queue: Cleanup ao2_iterator Clean
ao2_iterator, resolving reference leak to queue members.
ASTERISK-24454 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4111/ ........ Merged
revisions 426255 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426260 from
http://svn.asterisk.org/svn/asterisk/branches/12
* funcs/func_cdr.c: func_cdr: Fix CDR_PROP payload leak Remove
duplicate allocation of payload, preventing leak. ASTERISK-24455
#close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4113/
2014-10-27 17:54 +0000 [r426234] Sean Bright <sean@malleable.com>
* build_tools/menuselect-deps.in, configure,
include/asterisk/autoconfig.h.in, configure.ac, makeopts.in:
configure: Add autoconf check for libopus. Because opus
transcoding support cannot be included in the standard Asterisk
distribution, a few codec_opus implementations have popped up. To
make it easier for people to drop in opus support in their own
installations, this patch adds configure checks for libopus.
Review: https://reviewboard.asterisk.org/r/4106/
2014-10-27 02:46 +0000 [r426143-426211] Matthew Jordan <mjordan@digium.com>
* res/res_http_websocket.c, /: res/res_http_websocket: Fix minor
nits found by wdoekes on r409681 When Moises committed the fixes
for WSS (which was a great patch), wdoekes had a few style nits
that were on the review that got missed. This patch resolves what
I *think* were all of the ones that were still on the review.
Thanks to both moy for the patch, and wdoekes for the reviews.
Review: https://reviewboard.asterisk.org/r/3248/ ........ Merged
revisions 426209 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426210 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_phoneprov.c: res/res_phoneprov: Fix crash on shutdown
caused by container cleanup In res_phoneprov, unloading the
module first destroys the http_routes container, followed by the
users. However, users may have a route in the http_routes
container; the validity of this container is not checked in the
users destructor. Hence, we hit an assert as the container has
already been set to NULL. This patch does two things: (1) It adds
a sanity check in the user destructor (because why not) (2) It
switches the order of destruction, so that users are disposed of
prior to the HTTP routes they may hold a reference to. Note that
this crash was caught by the Test Suite (go go testing!) ........
Merged revisions 426174 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_srtp.c, /: res/res_srtp: Fix include issue for libsrtp
1.5.0 In libsrtp 1.5.0, crypto_get_random is no longer resolved
simply by including srtp.h. Now, one must include crypto_kernel.h
as well. As it turns out, this header file has been provided by
the library since 2006, so this is a relatively benign change.
ASTERISK-24436 #close Reported by: Patrick Laimbock ........
Merged revisions 426140 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 426141 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 426142 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-24 15:17 +0000 [r426120] Jonathan Rose <jrose@digium.com>
* main/manager.c: Documentation: Improve documentation for
ExtensionStatus AMI events Review:
https://reviewboard.asterisk.org/r/4085/
2014-10-24 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 13.0.0 Released.
2014-10-22 21:27 +0000 [r426097] Shaun Ruffell <sruffell@digium.com>
* codecs/codec_dahdi.c: codec_dahdi: Cannot use struct
ast_translator.core_{src,src}_codec. This fixes a Segmentation
fault introduced in r419044 "media formats: re-architect handling
of media for performance improvements". The problem is that
codec_dahdi was using core_src_codec and core_dst_codec in the
ast_translator structure when these fields were never set. Now
instead of trying to map the new core codec descriptions to the
way DAHDI defines different codecs, we will store the DAHDI
specific formats in 'struct translator' directly so we can refer
to them without mapping. This also allows us to remove the
"global_format_map" structure, since we can now query the list of
translators directly to make sure we do not ever register a DAHDI
based translator for a specific path more than once and eliminate
the need to keep the list and the map in sync. ASTERISK-24435
#close Reported by: Marian Koniuszko Review:
https://reviewboard.asterisk.org/r/4105/
2014-10-21 17:47 +0000 [r426079] Richard Mudgett <rmudgett@digium.com>
* main/translate.c: translage.c: Fix regression when generating
translation path strings. Fix the AMI Status action read and
write translation path strings from growing for each channel in
the status event list by reseting the ast string given to
ast_translate_path_to_str() to fill in the given translation
path.
2014-10-20 14:15 +0000 [r425991] Matthew Jordan <mjordan@digium.com>
* res/res_xmpp.c, main/tcptls.c, /: AST-2014-011: Fix POODLE
security issues There are two aspects to the vulnerability: (1)
res_jabber/res_xmpp use SSLv3 only. This patch updates the module
to use TLSv1+. At this time, it does not refactor
res_jabber/res_xmpp to use the TCP/TLS core, which should be done
as an improvement at a latter date. (2) The TCP/TLS core, when
tlsclientmethod/sslclientmethod is left unspecified, will default
to the OpenSSL SSLv23_method. This method allows for all
encryption methods, including SSLv2/SSLv3. A MITM can exploit
this by forcing a fallback to SSLv3, which leaves the server
vulnerable to POODLE. This patch adds WARNINGS if a user uses
SSLv2/SSLv3 in their configuration, and explicitly disables
SSLv2/SSLv3 if using SSLv23_method. For TLS clients, Asterisk
will default to TLSv1+ and WARN if SSLv2 or SSLv3 is explicitly
chosen. For TLS servers, Asterisk will no longer support SSLv2 or
SSLv3. Much thanks to abelbeck for reporting the vulnerability
and providing a patch for the res_jabber/res_xmpp modules.
Review: https://reviewboard.asterisk.org/r/4096/ ASTERISK-24425
#close Reported by: abelbeck Tested by: abelbeck, opsmonitor,
gtjoseph patches: asterisk-1.8-jabber-tls.patch uploaded by
abelbeck (License 5903) asterisk-11-jabber-xmpp-tls.patch
uploaded by abelbeck (License 5903) AST-2014-011-1.8.diff
uploaded by mjordan (License 6283) AST-2014-011-11.diff uploaded
by mjordan (License 6283) ........ Merged revisions 425987 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-19 17:07 +0000 [r425965] George Joseph <george.joseph@fairview5.com>
* Makefile, /, configure, include/asterisk/autoconfig.h.in,
configure.ac, makeopts.in: build: Force -fsigned-char on
platforms where the default for char is unsigned gcc on the ARM
platform defaults 'char' to 'unsigned char' whereas Intel and
SPARC default to 'signed char'. This is only an issue in the rare
cases where negative values are assigned to a 'char' but this
this patch insures compatibility by detecting platforms that
default to 'unsigned' and adding an '-fsigned-char' flag to
_ASTCFLAGS. If compiling for ARM (native or cross-compile) be
sure to run ./bootstrap.sh and ./configure to regenerate the
build files. You shouldn't have to do this for Intel or SPARC.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4091/ ........ Merged
revisions 425964 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-19 04:01 +0000 [r425923-425944] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip_sdp_rtp.c: res/res_pjsip_sdp_rtp: Revert 425922
This patch for r425922 introduced a bug, wherein sending an
INVITE request with no SDP would cause Asterisk to not send an
SDP Offer in the 200 OK. The current structure of
res_pjsip_sdp_rtp is a bit hard to deal with to fix this, as
create_outgoing_sdp has no knowledge of whether or not it is
creating an SDP as a new Offer or an Answer. This is something of
an oversight in the callback definition, as the caller of it does
have this information.
* res/res_pjsip_sdp_rtp.c: res/res_pjsip_sdp_rtp: Remove left over
reference to override_prefs The usage of the local override_prefs
variable in create_outgoing_sdp_stream was previously to track an
override format preference set by PJSIP_MEDIA_OFFER. Now,
however, that function simply sets the joint capabilities
structure, session->req_caps. During the media format rework, the
override_prefs was instead used to check if there were any
formats in session->req_caps. However, this usage isn't useful in
create_outgoing_sdp_stream. session->req_caps contains the
negotiated formats for *all* streams, not just the current one
being created. Thus, so long as any stream of any type has
provided a format, override_prefs will be non-zero. Hence, its
usage in checking whether or not we should look at the formats on
the endpoint or the joint capabilities is generally useless.
There's only two things useful to check: (1) Does the endpoint
have a format for the media type? (2) Did we negotiate a format
for the media type? If either of those is a 'no', then we must
kill the media stream.
2014-10-17 22:43 +0000 [r425905] Jonathan Rose <jrose@digium.com>
* configs/samples/cli_aliases.conf.sample: Sample Configurations:
make 'pjsip reload' reload all reloadable pjsip modules AST-1432
#close Reported by: John Bigelow
2014-10-17 13:35 +0000 [r425821-425879] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip_sdp_rtp.c, res/res_pjsip.c,
res/res_pjsip_session.c, /: res_pjsip_session/res_pjsip_sdp_rtp:
Be more tolerant of offers When an inbound SDP offer is received,
Asterisk currently makes a few incorrection assumptions: (1) If
the offer contains more than a single audio/video stream,
Asterisk will reject the entire stream with a 488. This is an
overly strict response; generally, Asterisk should accept the
media streams that it can accept and decline the others. (2) If
the offer contains a declined media stream, Asterisk will attempt
to process it anyway. This can result in attempting to match
format capabilities on a declined media stream, leading to a 488.
Asterisk should simply ignore declined media streams. (3)
Asterisk will currently attempt to handle offers with AVPF with
use_avpf=No/AVP with use_avpf=Yes. This mismatch results in
invalid SDP answers being sent in response. If there is a
mismatch between the media type being offered and the
configuration, Asterisk must reject the offer with a 488. This
patch does the following: * Asterisk will accept SDP offers with
at least one media stream that it can use. Some WARNING messages
have been dropped to NOTICEs as a result. * Asterisk will not
accept an offer with a media type that doesn't match its
configuration. * Asterisk will ignore declined media streams
properly. #SIPit31 Review:
https://reviewboard.asterisk.org/r/4063/ ASTERISK-24122 #close
Reported by: James Van Vleet ASTERISK-24381 #close Reported by:
Matt Jordan ........ Merged revisions 425868 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: channels/chan_sip: Respect outboundproxy
setting when sending qualify requests The outboundproxy setting
is currently ignored when sending OPTIONS requests as a result of
the qualify setting. This means that if an Asterisk server is
unable to send the packet directly to a peer, it is unable to
qualify any non-inbound registered peer (e.g. a peer SIP Trunk).
This patch grabs the outboundproxy information for a peer when a
qualify attempt is being constructed and, if it finds the
information, uses it when sending the OPTIONS request. Review:
https://reviewboard.asterisk.org/r/3948 ASTERISK-24063 #close
Reported by: Damian Ivereigh patches: outboundproxy-dai.patch
uploaded by Damian Ivereigh (License 6632) ........ Merged
revisions 425818 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425819 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425820 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-17 02:41 +0000 [r425783] Richard Mudgett <rmudgett@digium.com>
* main/core_unreal.c, main/channel.c, /: AMI: Add missing VarSet
events when a channel inherits variables. There should be AMI
VarSet events when channel variables are inherited by an outgoing
channel. Also local;2 should generate VarSet events when it gets
all of its channel variables from channel local;1. ASTERISK-24415
#close Reported by: Richard Mudgett Patches:
jira_asterisk_24415_v12.patch (license #5621) patch uploaded by
Richard Mudgett Review: https://reviewboard.asterisk.org/r/4074/
........ Merged revisions 425782 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-17 01:57 +0000 [r425736-425761] Matthew Jordan <mjordan@digium.com>
* /, bridges/bridge_native_rtp.c: bridge_native_rtp: Fix audio
issues when moving from remote bridge to softmix When a native
RTP bridge that is remotely bridging its participants switches to
a softmix bridge, it may not properly re-INVITE the media for one
or both participants back to Asterisk. This is due to the current
bridge_native_rtp code only re-INVITEs if it believes the channel
will survive the bridge operation. Currently, that code is
failing, as it expects the channels to have a soft hangup flag
set on it indicating that a redirect has occurred or that the
channel is going to leave the bridge. (The code did not take into
account a smart bridge operation). This patch also renames a few
things to be more reflective of the underlying types. Review:
https://reviewboard.asterisk.org/r/3997/ ASTERISK-24327 #close
........ Merged revisions 425760 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, tests/test_cel.c: test_cel: Update pickup test to expect
CANCEL instead of ANSWSER The CEL pickup test previously looked
for a disposition of ANSWER between the original caller/peer when
the call is picked up. This is actually incorrect: the
disposition should, at the very least, not be ANSWER as the call
was never ANSWERed. The disposition is now CANCEL; this patch
updates the test accordingly. ........ Merged revisions 425757
from http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: main/cdr: Use 'time' when rescheduling batched
CDRs as opposed to 'size' When refactoring CDRs to use the
configuration framework, a 'whoops' was introduced where the CDR
batch size was used when rescheduling a batch, as opposed to the
time duration. This patch corrects that obvious mistake.
ASTERISK-24426 #close Reported by: Shane Blaser ........ Merged
revisions 425735 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-16 17:30 +0000 [r425714] George Joseph <george.joseph@fairview5.com>
* include/asterisk/config.h, tests/test_config.c, main/config.c, /:
config: Fix inf loop using ast_category_browse and
ast_variable_retrieve Fix infinite loop when calling
ast_variable_retrieve inside an ast_category_browse loop when
there is more than 1 category with the same name. Tested-by:
George Joseph Review: https://reviewboard.asterisk.org/r/4089/
........ Merged revisions 425713 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-16 14:35 +0000 [r425691] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip_t38.c, res/res_pjsip_registrar_expire.c,
res/res_pjsip_mwi_body_generator.c,
res/res_pjsip_endpoint_identifier_user.c,
res/res_pjsip_send_to_voicemail.c,
include/asterisk/res_pjsip_pubsub.h,
res/res_pjsip_outbound_authenticator_digest.c,
res/res_pjsip_outbound_registration.c,
res/res_pjsip_endpoint_identifier_anonymous.c,
res/res_pjsip_path.c, res/res_pjsip_one_touch_record_info.c,
res/res_pjsip_acl.c, res/res_pjsip_pubsub.c,
res/res_pjsip_diversion.c, res/res_pjsip_refer.c,
include/asterisk/res_pjsip.h,
res/res_pjsip_pidf_body_generator.c, res/res_pjsip_dtmf_info.c,
res/res_pjsip_multihomed.c, res/res_pjsip_authenticator_digest.c,
res/res_pjsip_sdp_rtp.c, res/res_hep_pjsip.c,
res/res_pjsip_messaging.c, res/res_pjsip_caller_id.c,
res/res_pjsip_logger.c, res/res_pjsip_nat.c,
res/res_pjsip_session.c, res/res_pjsip_exten_state.c,
res/res_pjsip_header_funcs.c, res/res_pjsip_rfc3326.c,
res/res_pjsip_phoneprov_provider.c, res/res_pjsip_mwi.c,
res/res_pjsip_dialog_info_body_generator.c,
res/res_pjsip_xpidf_body_generator.c, res/res_pjsip_registrar.c,
channels/chan_pjsip.c, res/res_pjsip_transport_websocket.c,
res/res_pjsip_pidf_eyebeam_body_supplement.c,
include/asterisk/res_pjsip_session.h, /, res/res_pjsip_notify.c,
res/res_pjsip_pidf_digium_body_supplement.c,
res/res_pjsip_endpoint_identifier_ip.c,
res/res_pjsip_publish_asterisk.c: PJSIP: Enforce module load
dependencies This enforces that res_pjsip, res_pjsip_session, and
res_pjsip_pubsub have loaded properly before attempting to load
any modules that depend on them since the module loader system is
not currently capable of resolving module dependencies on its
own. ASTERISK-24312 #close Reported by: Dafi Ni Review:
https://reviewboard.asterisk.org/r/4062/ ........ Merged
revisions 425690 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-16 06:11 +0000 [r425669] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* channels/chan_unistim.c, /: Fix loss of voice after second call
drops (on a second line) in case using multiple lines on unistim
phones. There is regression was introduced in r391379. Reported
by: Rustam Khankishyiev (closes issue ASTERISK-23846) ........
Merged revisions 425667 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425668 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-16 01:25 +0000 [r425646] Joshua Colp <jcolp@digium.com>
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix a bug where ICE
state would get reset when it shouldn't. In the case where the
ICE negotiation had not yet started current state would get wiped
when it shouldn't. This also removes channel binding as in
practice this does not work well with other implementations.
........ Merged revisions 425644 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425645 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-15 19:31 +0000 [r425627] Richard Mudgett <rmudgett@digium.com>
* channels/chan_motif.c: chan_motif: Cleanup
jingle_tech.capabilities only once.
2014-10-15 19:05 +0000 [r425611] Jonathan Rose <jrose@digium.com>
* res/parking/parking_tests.c: parking_tests: Fix assertions and
possibly crashes in res_parking unit tests Assertions were caused
by attempting to play music on hold to a channel with no formats.
Parking unit test channels were given formats and a technology so
that they would be able to pretend to read/write frames.
ASTERISK-24413 #close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/4075/
2014-10-15 09:59 +0000 [r425590] Alexandr Anikin <may@telecom-service.ru>
* addons/chan_ooh323.c, /: chan_ooh323: fix rtptimeout general
value checking correct condition to check rtptimeout in [general]
config section ASTERISK-24393 #close Reported by: Dmitry Melekhov
Tested by: Dmitry Melekhov Patches: ASTERISK-24393.patch ........
Merged revisions 425547 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425548 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425589 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-14 20:46 +0000 [r425526] George Joseph <george.joseph@fairview5.com>
* /, include/asterisk/config.h, tests/test_config.c, main/config.c:
config: Fix SEGV in unit test with MALLOC_DEBUG With MALLOC_DEBUG
the /main/config config_basic_ops test was causing a SEGV while
doing an ast_category_delete in an ast_category_browse loop.
Apparently this never worked but was also never tested. I removed
the test, added 2 notes to config.h indicating that it's not
supported and added a few lines of code to ast_category_delete to
prevent the SEGV should someone attempt it in the future.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4078/ ........ Merged
revisions 425525 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-14 19:00 +0000 [r425504] Jonathan Rose <jrose@digium.com>
* main/sched.c, /: Scheduler: Fix a nasty scheduler caching bug
which makes new tasks not execute Tasks that were marked for
pending deletion in the scheduler would be moved to the cache for
later reuse, but after being recycled the deleted mark wouldn't
be removed resulting in fresh tasks being deleted without
reason... and immediately moved back into the cache where they
could be reused again. This could cause horrendous things to
happen in just about anything that used a scheduler.
ASTERISK-24321 #close Reported by: Steve Pitts Review:
https://reviewboard.asterisk.org/r/4071/ ........ Merged
revisions 425503 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-14 18:12 +0000 [r425481] George Joseph <george.joseph@fairview5.com>
* res/res_phoneprov.c, include/asterisk/phoneprov.h, /,
res/res_pjsip_phoneprov_provider.c: res_phoneprov: Create
accessor for ast_phoneprov_std_variable_lookup Based on feedback
from Richard, I created an accessor for
res_phoneprov/ast_phoneprov_std_variable_lookup and added load
priority to AST_MODULE_INFO. Tested-by: George Joseph Tested-by:
Richard Mudgett Review: https://reviewboard.asterisk.org/r/4076/
........ Merged revisions 425480 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-14 16:46 +0000 [r425459] Corey Farrell <git@cfware.com>
* /, res/res_fax.c: res_fax: Fix reference leak caused by gateway
sessions Fax gateway session objects can be re-used, causing the
same gateway session to be added to faxregistry.container more
than once. This change causes fax_session_new to remove the
reserved session from the container before it's id is changed,
ensuring it's possible for the session to be freed.
ASTERISK-24392 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4049/ ........ Merged
revisions 425457 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425458 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-14 16:35 +0000 [r425455] Richard Mudgett <rmudgett@digium.com>
* /, main/stasis_channels.c: stasis_channels.c: Resolve unfinished
Dials when doing masquerades (Part 2) Masquerades into and out of
channels that are involved in a dial operation don't create the
expected dial end event. The missing dial end event goes against
the model for things like CDRs and generating Dial end manager
actions and such. There are four cases: 1) A channel masquerades
into the caller channel. The case happens when performing a
blonde transfer using the channel driver's protocol. 2) A channel
masquerades into a callee channel. The case happens when
performing a directed call pickup. 3) The caller channel
masquerades out of dial. The case happens when using the Bridge
application on the caller channel. 4) A callee channel
masquerades out of dial. The case happens when using the Bridge
application on a peer channel. As it turned out, all four cases
need to be handled instead of just the first one. ASTERISK-24237
Reported by: Richard Mudgett ASTERISK-24394 #close Reported by:
Richard Mudgett Review: https://reviewboard.asterisk.org/r/4066/
........ Merged revisions 425430 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-14 16:19 +0000 [r425415] Corey Farrell <git@cfware.com>
* /, res/res_fax.c: res_fax: Resolve module reference leak caused
by reserved sessions Remove reference to module providing
reserved session after adding a reference to the final module.
This re-reference is done to ensure that module references are
correct even if the final session selects a different module than
the reserved session. ASTERISK-18923 #close Reported by: Grigoriy
Puzankin Review: https://reviewboard.asterisk.org/r/4048/
........ Merged revisions 425405 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425407 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425411 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-13 16:10 +0000 [r425384] George Joseph <george.joseph@fairview5.com>
* apps/app_directory.c, tests/test_sorcery.c, main/config.c,
tests/test_sorcery_realtime.c, res/res_sorcery_realtime.c,
apps/app_voicemail.c, res/res_sorcery_config.c, main/manager.c,
/, include/asterisk/config.h, pbx/pbx_realtime.c,
tests/test_config.c: manager/config: Support templates and
non-unique category names via AMI This patch provides the
capability to manipulate templates and categories with non-unique
names via AMI. Summary of changes: GetConfig and GetConfigJSON:
Added "Filter" parameter: A comma separated list of
name_regex=value_regex expressions which will cause only
categories whose variables match all expressions to be
considered. The special variable name TEMPLATES can be used to
control whether templates are included. Passing 'include' as the
value will include templates along with normal categories.
Passing 'restrict' as the value will restrict the operation to
ONLY templates. Not specifying a TEMPLATES expression results in
the current default behavior which is to not include templates.
UpdateConfig: NewCat now includes options for allowing duplicate
category names, indicating if the category should be created as a
template, and specifying templates the category should inherit
from. The rest of the actions now accept a filter string as
defined above. If there are non-unique category names, you can
now update specific ones based on variable values. To facilitate
the new capabilities in manager, corresponding changes had to be
made to config, most notably the addition of filter criteria to
many of the APIs. In some cases it was easy to change the
references to use the new prototype but others would have
required touching too many files for this patch so a wrapper with
the original prototype was created. Macros couldn't be used in
this case because it would break binary compatibility with
modules such as res_digium_phone that are linked to real symbols.
Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4033/ ........ Merged
revisions 425383 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-12 21:09 +0000 [r425362] Joshua Colp <jcolp@digium.com>
* /, res/res_rtp_asterisk.c: res_rtp_asterisk: Make the ICE
transport check case insensitive as some implementations use
'udp'. ........ Merged revisions 425360 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425361 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-12 08:15 +0000 [r425289-425299] Walter Doekes <walter+asterisk@wjd.nu>
* /, channels/chan_sip.c: chan_sip: Fix so asterisk won't send
reINVITE after a BYE. After a reINVITE glare situation, Asterisk
would re-send the reINVITE even though the call had been hung up
in the mean time. This patch unschedules the reinvite when
handling the BYE. ASTERISK-22791 #close Reported by: Paolo
Compagnini Tested by: Paolo Compagnini Review:
https://reviewboard.asterisk.org/r/4056/ (testcase is in review
r4055) ........ Merged revisions 425296 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425297 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425298 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, Makefile: build: Relax badshell tilde test to allow for ~ in
middle of DESTDIR. The main Makefile has a target test called
'badshell' that tests if DESTDIR does not happen to have an
an-expanded tilde (~). This might be the case if you run: make
install DESTDIR=~/somewhere/ That test also disallowed valid
tildes in directory names. The test is now changed to only
trigger on a tilde at the start of the path. ASTERISK-13797
#close Reported by: Tzafrir Cohen Review:
https://reviewboard.asterisk.org/r/4064/ ........ Merged
revisions 425291 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425292 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425293 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_calendar_ews.c: res_calendar_ews: Relax neon version
check to work with 0.30 too. Allow res_calendar_ews to work not
only with libneon-0.29 but also with 0.30. ASTERISK-24325 #close
Reported by: Tzafrir Cohen Review:
https://reviewboard.asterisk.org/r/4068/ ........ Merged
revisions 425286 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425287 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425288 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-11 21:08 +0000 [r425265] George Joseph <george.joseph@fairview5.com>
* /, res/res_phoneprov.c: res_phoneprov: Cleanup module load error
handling Tested module load/reload interaction between
res_phoneprov and res_pjsip_phoneprov_provider in cases where
res_phoneprov didn't load correctly (usually misconfiguration or
missing phoneprov.conf) Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/4069/ ........ Merged
revisions 425264 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-10 20:48 +0000 [r425243] Joshua Colp <jcolp@digium.com>
* /, main/bridge.c, bridges/bridge_native_rtp.c: bridge: During a
smart bridge operation provide a more complete bridge to the old
technology. When a smart bridge operation occurs and a bridge
transitions from one technology to another the old technology is
provided the channels formerly in it and told that they are
leaving. Unfortunately the bridge provided along with them is
incomplete. The bridge, despite there being channels in it,
contains none. This forces technology implementations to have
additional logic when channels are leaving or to store their own
duplicated state. This change makes the bridge more complete so
it contains the expected channels. Now that the bridge is
complete special logic within bridge_native_rtp is no longer
needed and has been removed. Review:
https://reviewboard.asterisk.org/r/4057/ ........ Merged
revisions 425242 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-10 14:31 +0000 [r425221] Matthew Jordan <mjordan@digium.com>
* /, res/res_phoneprov.c: res/res_phoneprov: Bail on registration
if res_phoneprov didn't load If res_phoneprov failed to fully
load (due to not being configured), the providers container will
be NULL. If a module attempts to register a phone provisioning
provider, it should check for the presence of the container. If
there is no providers container, it should return an error. This
patch makes the ast_phoneprov_provider_register function do
that... otherwise this would be a silly commit message. ........
Merged revisions 425220 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-10 14:23 +0000 [r425217] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_phoneprov_provider.c:
res_pjsip_phoneprov_provider: Add missing dependency on
pjproject. ........ Merged revisions 425216 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-10 13:01 +0000 [r425155] Kinsey Moore <kmoore@digium.com>
* /, tests/test_callerid.c, main/callerid.c: CallerID: Fix parsing
regression This fixes a regression in callerid parsing introduced
when another bug was fixed. This bug occurred when the name was
composed entirely of DTMF keys and quoted without a number
section (<>). ASTERISK-24406 #close Reported by: Etienne Lessard
Tested by: Etienne Lessard Patches: callerid_fix.diff uploaded by
Kinsey Moore Review: https://reviewboard.asterisk.org/r/4067/
........ Merged revisions 425152 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425153 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425154 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-10 12:10 +0000 [r425132] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_nat.c, /: res_pjsip_nat: Place source port into
rport of responses if 'force_rport' is on. When the 'force_rport'
option is enabled the behavior should be the same as if the
remote side placed rport into the message themselves. Therefore
any responses we send should include the source port of the
request in the rport of the Via header. #SIPit31 ASTERISK-24387
#close Reported by: Matt Jordan ........ Merged revisions 425131
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-10 07:32 +0000 [r425071] Walter Doekes <walter+asterisk@wjd.nu>
* /, channels/chan_sip.c: chan_sip: Fix dialog leak resulting from
missing ACK to re-INVITE. If a device re-INVITEs at the same time
as the dialog is hung up, and if then the ACK to the re-INVITE
never reaches Asterisk, chan_sip would fail to destroy the dialog
after a while. This resulted in (most prominently) file handle
leaks. (Patch reindented by me.) ASTERISK-20784 #close
ASTERISK-15879 #close Reported by: Torrey Searle, Nitesh Bansal
Patches: reinvite_ack_timeout.patch uploaded by Torrey Searle
(License #5334) patch_asterisk_20784.txt uploaded by Nitesh
Bansal (License #6418) Reviewboard:
https://reviewboard.asterisk.org/r/4052/ (testcase can be found
at r4051) ........ Merged revisions 425068 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 425069 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 425070 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-09 23:35 +0000 [r425052] George Joseph <george.joseph@fairview5.com>
* res/res_pjsip_phoneprov_provider.c: res_pjsip_phoneprov_provider:
fix compile breakage on AST_VECTOR endpoint->inbound_auths was
changed to a vector in 13 and I committed the 12 patch instead of
the 13 patch. Tested-by: George Joseph
2014-10-09 21:38 +0000 [r425031] Kevin Harwell <kharwell@digium.com>
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Crash if no
candidates received for component When starting ice if there is
not at least one remote ice candidate with an RTP component
asterisk will crash. This is due to an assertion in pjnath as it
expects at least one candidate with an RTP component. Added a
check to make sure at least one candidate contains an RTP
component and at least one candidate has an RTCP component.
ASTERISK-24383 #close Review:
https://reviewboard.asterisk.org/r/4039/ ........ Merged
revisions 425030 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-09 20:54 +0000 [r425008] George Joseph <george.joseph@fairview5.com>
* /, res/res_pjsip_phoneprov_provider.c (added),
configs/samples/pjsip.conf.sample: res_pjsip_phoneprov_provider:
Provides pjsip integration with res_phoneprov This module allows
res_pjsip to integrate with res_phoneprov. It handles the pjsip
'phoneprov' object type. Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/3976/ ........ Merged
revisions 425007 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-09 18:37 +0000 [r424986] Matthew Jordan <mjordan@digium.com>
* /, res/res_phoneprov.c: res/res_phoneprov: Don't cancel Asterisk
load on module load failure ........ Merged revisions 424985 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-09 17:45 +0000 [r424964] George Joseph <george.joseph@fairview5.com>
* include/asterisk/phoneprov.h (added), /,
configs/samples/phoneprov.conf.sample,
include/asterisk/chanvars.h, res/res_phoneprov.c,
res/res_phoneprov.exports.in (added), main/chanvars.c:
res_phoneprov: Refactor phoneprov to allow pluggable config
providers This patch makes res_phoneprov more modular so other
modules (like pjsip) can provide configuration information
instead of res_phoneprov relying solely on users.conf and
sip.conf. To accomplish this a new ast_phoneprov public API is
now exposed which allows config providers to register themselves,
set defaults (server profile, etc) and add user extensions. *
ast_phoneprov_provider_register registers the provider and
provides callbacks for loading default settings and loading
users. * ast_phoneprov_provider_unregister clears the defaults
and users. * ast_phoneprov_add_extension should be called once
for each user/extension by the provider's load_users callback to
add them. * ast_phoneprov_delete_extension deletes one extension.
* ast_phoneprov_delete_extensions deletes all extensions for the
provider. Tested-by: George Joseph Review:
https://reviewboard.asterisk.org/r/3970/ ........ Merged
revisions 424963 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-09 16:36 +0000 [r424942] Richard Mudgett <rmudgett@digium.com>
* /, main/cdr.c: cdr.c: Make turning on CDR debug a one step
process instead of two. Now "cdr set debug on" doesn't also
require "core set verbose 1" to see CDR debug output. ........
Merged revisions 424941 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-09 08:08 +0000 [r424880] Walter Doekes <walter+asterisk@wjd.nu>
* /, contrib/scripts/safe_asterisk: safe_asterisk: Don't
automatically exceed MAXFILES value of 2^20. On systems with lots
of RAM (e.g. 24GB) /proc/sys/fs/file-max divided by two can
exceed the per-process file limit of 2^20. This patch ensures the
value is capped. (Patch cleaned up by me.) ASTERISK-24011 #close
Reported by: Michael Myles Patches: safe_asterisk-ulimit.diff
uploaded by Michael Myles (License #6626) ........ Merged
revisions 424875 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 424878 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424879 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-08 18:46 +0000 [r424854] Joshua Colp <jcolp@digium.com>
* /, res/res_rtp_asterisk.c: res_rtp_asterisk: Allow only UDP ICE
candidates. The underlying library, pjnath, that res_rtp_asterisk
uses for ICE support does not have support for ICE-TCP. As
candidates are passed through directly to it this can cause error
messages to occur when it receives something unexpected (such as
a TCP candidate). This change merely ignores all non-UDP
candidates so they never reach pjnath. ASTERISK-24326 #close
Reported by: Joshua Colp ........ Merged revisions 424852 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424853 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-08 18:24 +0000 [r424769-424850] Kinsey Moore <kmoore@digium.com>
* main/stasis.c: Stasis: Relegate log message to dev-mode This
error message primarily applies to development tasks and will now
only show up when dev-mode is enabled via configure.
* main/sounds_index.c: Indexer: Format message types may not exist
In Asterisk 13+, any given message type is not guaranteed to
exist even if Asterisk comes up correctly since creation of the
message type could be declined. The indexer should not prevent
Asterisk from starting under these conditions.
* main/stasis.c: Stasis: Only log errors for non-declined types
When message type creation is declined via stasis.conf, certain
operations log errors assuming that the declined type is being
used before initialization or after destruction. These error
messages get quite spammy for oft used message types and should
not be logged in the first place since the message type is
validly NULL. Reported by: Matt DiMeo
2014-10-07 18:33 +0000 [r424752] Joshua Colp <jcolp@digium.com>
* main/data.c: data: Properly access formats in capabilities
structure when adding codecs. Formats within a capabilities
structure are addressed starting at 0, not 1. Assuming 1 causes
it to exceed an array. ASTERISK-24389 #close Reported by: Kevin
Harwell
2014-10-07 17:41 +0000 [r424692-424731] Matthew Jordan <mjordan@digium.com>
* /, res/res_pjsip_outbound_registration.c:
res/res_pjsip_outbound_registration: Initialize
auth_reject_permanent parameter Prior to this patch, the
auth_reject_permanent parameter was not initialized on the
registration client state, leading to the parameter being
disabled regardless of the value specified in pjsip.conf. This
patch initialized the setting on the registration client state to
the provided configuration value. ASTERISK-24398 #close ........
Merged revisions 424730 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pubsub.c: res/res_pjsip_pubsub: Fix typo in WARNING
message
* main/message.c, /: message: Don't close an AMI connection on
SendMessage action error If SendMessage encounters an error (such
as incorrect input provided to the action), it will currently
return -1. Actions should only return -1 if the connection to the
AMI client should be closed. In this case, SendMessage causing
the client to disconnect is inappropriate. This patch causes the
action to return 0, which simply causes the action to fail.
Review: https://reviewboard.asterisk.org/r/4024 ASTERISK-24354
#close Reported by: Peter Katzmann patches: sendMessage.patch
uploaded by Peter Katzmann (License 5968) ........ Merged
revisions 424690 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424691 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-06 15:38 +0000 [r424669] Richard Mudgett <rmudgett@digium.com>
* main/features.c, /: features.c: Fix lingering channel ref while
Bridge() application is active. Using the Bridge application to
bridge a channel that is executing an applicaiton such as Wait
results in a lingering Surrogate channel in the CLI "core show
channels" output even though it has already hungup. * Fix
bridge_exec() to not hold onto the current_dest_chan ref once it
has been put into the bridge. * Eliminated bridge_exec()'s use of
RAII_VAR(). ASTERISK-24224 #close Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4041/ ........ Merged
revisions 424668 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-06 12:38 +0000 [r424601-424647] Matthew Jordan <mjordan@digium.com>
* /, main/sdp_srtp.c: sdp_srtp: Add new lines to some WARNING
messages ........ Merged revisions 424646 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_options.c: res_pjsip/pjsip_options: Do not
404 an OPTIONS request not sent to an endpoint An OPTIONS request
that is sent to Asterisk but not to a specific endpoint is
currently sent a 404 in response. This is because, not
surprisingly, an empty extension is never going to be found in
the dialplan. This patch makes it so that we only attempt to look
up the endpoint in the dialplan if it is specified in the OPTIONS
request URI. #SIPit31 ASTERISK-24370 #close Reported by: Matt
Jordan ........ Merged revisions 424624 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/pjsip/dialplan_functions.c, /: pjsip/dialplan_functions:
Handle PJSIP_MEDIA_OFFER called on non-PJSIP channels Calling
PJSIP_MEDIA_OFFER on a non-PJSIP channel is hazardous to your
health. It will treat the channels as a PJSIP channel, eventually
hitting an ao2 error, FRACKing on assertion error, and quite
likely crashing. This patch adds checks to the read/write
callbacks that ensure that the channel technology is of type
'PJSIP' before attempting to operate on the channel. #SIPit31
ASTERISK-24382 #close Reported by: Matt Jordan ........ Merged
revisions 424621 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_hep_pjsip.c, res/res_pjsip/pjsip_distributor.c,
res/res_pjsip_logger.c: res_pjsip: Prevent crashes when PJPROJECT
presents an rdata with no message When a message that exceeds the
PJ_MAX_PKT_SIZE is sent over a reliable transport, it is possible
(although it shouldn't occur) for pjproject to pass up an rdata
object with a NULL msg in the msg_info. Needless to say, things
that attempt to dereference this are in for a rough ride. In
particular, this caused crashes in three different locations, all
of which are 'low level' enough to intercept an rdata object
early in processing: (1) res_pjsip_logger (2) res_hep_pjsip (3)
res_pjsip/distributor Anything that can intercept an rdata object
before res_pjsip/distributor should be defensive when looking at
the received packet. #SIPit31 ASTERISK-24369 #close Reported by:
Matt Jordan ........ Merged revisions 424618 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pubsub.c: res/res_pjsip_pubsub: Gracefully handle
errors when re-creating subscriptions A subscription that has
been persisted can - for various reasons - fail to be re-created
on startup. This patch resolves a number of crashes that occurred
when a subscription cannot be re-created on several off-nominal
paths. #SIPit31 ASTERISK-24368 #close Reported by: Matt Jordan
2014-10-05 00:48 +0000 [r424552-424580] Corey Farrell <git@cfware.com>
* main/manager.c, /: Release AMI connections on shutdown.
ASTERISK-24378 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4037/ ........ Merged
revisions 424578 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424579 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_motif.c: chan_motif: Correct last commit to use
ao2_cleanup to free format cap This fix applies to 13 and trunk.
ASTERISK-24384 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4043/
* /, channels/chan_motif.c: chan_motif: Release format capabilities
and config on module load error ASTERISK-24384 #close Reported
by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/4043/ ........ Merged
revisions 424550 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424551 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-03 21:56 +0000 [r424472-424529] Richard Mudgett <rmudgett@digium.com>
* /, CHANGES, res/res_pjsip.c: res_pjsip: Fix XML typo and update
CHANGES. ASTERISK-24199 ........ Merged revisions 424528 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/audiohook.c, apps/app_chanspy.c, apps/app_mixmonitor.c, /,
main/framehook.c: audiohooks: Reevaluate the bridge technology
when an audiohook is added or removed. Adding a mixmonitor to a
channel causes the bridge to change technologies from native to
simple_bridge so the call can be recorded. However, when the
mixmonitor is stopped the bridge does not switch back to the
native technology. * Added unbridge requests to reevaluate the
bridge when a channel audiohook is removed. * Moved the unbridge
request into ast_audiohook_attach() ensure that the bridge
reevaluates whenever an audiohook is attached. This simplified
the mixmonitor and chan_spy start code as well. * Added defensive
code to stop_mixmonitor_full() in case additional arguments are
ever added to the StopMixMonitor application. * Made
ast_framehook_detach() not do an unbridge request if the
framehook does not exist. * Made ast_framehook_list_fixup() do an
unbridge request if there are any framehooks. Also simplified the
loop. ASTERISK-24195 #close Reported by: Jonathan Rose Review:
https://reviewboard.asterisk.org/r/4046/ ........ Merged
revisions 424506 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/core_unreal.c, main/taskprocessor.c, channels/chan_iax2.c,
res/res_pjsip_session.c, main/channel.c, channels/chan_misdn.c,
channels/chan_skinny.c, funcs/func_frame_trace.c,
channels/chan_motif.c, include/asterisk/frame.h,
main/bridge_channel.c, channels/chan_pjsip.c,
channels/chan_unistim.c, include/asterisk/res_pjsip_session.h,
addons/chan_ooh323.c, /, include/asterisk/taskprocessor.h,
channels/chan_sip.c, res/res_pjsip_session.exports.in:
chan_pjsip: Fix deadlock when masquerading PJSIP channels.
Performing a directed call pickup resulted in a deadlock when
PJSIP channels were involved. A masquerade needs to hold onto the
channel locks while it swaps channel information between the two
channels involved in the masquerade. With PJSIP channels, the
fixup routine needed to push a fixup task onto the PJSIP
channel's serializer. Unfortunately, if the serializer was also
processing a task that needed to lock the channel, you get
deadlock. * Added a new control frame that is used to notify the
channels that a masquerade is about to start and when it has
completed. * Added the ability to query taskprocessors if the
current thread is the taskprocessor thread. * Added the ability
to suspend/unsuspend the PJSIP serializer thread so a masquerade
could fixup the PJSIP channel without using the serializer.
ASTERISK-24356 #close Reported by: rmudgett Review:
https://reviewboard.asterisk.org/r/4034/ ........ Merged
revisions 424471 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-03 15:54 +0000 [r424448] George Joseph <george.joseph@fairview5.com>
* /, main/sorcery.c: sorcery: Prevent SEGV in sorcery_wizard_create
when there's no create function When you call
ast_sorcery_create() you don't necessarily know which wizard is
going to be invoked. If it happens to be a wizard like 'config'
that doesn't have a 'create' virtual function you get a segfault
in the sorcery_wizard_create callback. This patch catches the
null function pointer, does an ast_assert, and logs an error.
Review: https://reviewboard.asterisk.org/r/4044/ ........ Merged
revisions 424447 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-03 13:58 +0000 [r424424-424427] Kinsey Moore <kmoore@digium.com>
* configs/samples/pjsip.conf.sample, /,
res/res_pjsip/pjsip_configuration.c: PJSIP: Restore functional
default for callerid_privacy The pjsip config option default
fixups from r424263 altered the functional default from
"allowed_not_screened" to "allowed". This change restores the
functional default value when none is provided. ........ Merged
revisions 424426 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /: Manager: Add missing fields and documentation
for CoreShowChannels This corrects some issues introduced in the
responses to the CoreShowChannels AMI command as well as adding
documentation for the responses. The command in Asterisk 12 was
missing the following fields: Duration, Application,
ApplicationData, and BridgedChannel and BridgedUniqueID (replaced
with BridgeId). ASTERISK-24262 #close Reported by: Mitch Claborn
Review: https://reviewboard.asterisk.org/r/4040/ ........ Merged
revisions 424423 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-03 07:54 +0000 [r424415] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, /: res_pjsip_session: Reduce SDP size by
removing duplicate connection lines. Due to the architecture of
how media streams are handled each individual handler adds
connection details (IP address) for it. The first media stream is
then used as the top level SDP connection line. In practice each
line ends up being the same so to reduce the SDP size
stream-level connection information is also added to the SDP if
it differs from the top level SDP connection line. ........
Merged revisions 424414 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-02 21:52 +0000 [r424394] Richard Mudgett <rmudgett@digium.com>
* /, configs/samples/pjsip.conf.sample, res/res_pjsip.c,
res/res_pjsip/config_transport.c: res_pjsip: Make transport
cipher option accept a comma separated list of cipher names.
Improvements to the res_pjsip transport cipher option. * Made the
cipher option accept a comma separated list of OpenSSL cipher
names. Users of realtime will be glad if they have more than one
name to list. * Added the CLI command 'pjsip list ciphers' so a
user can know what OpenSSL names are available for the cipher
option. * Updated the cipher option online XML documentation to
specify what is expected for the value. * Updated
pjsip.conf.sample to not indicate that ALL is acceptable since
ALL does not imply a preference order for the ciphers and PJSIP
does not simply pass the string to OpenSSL for interpretation.
ASTERISK-24199 #close Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/4018/ ........ Merged
revisions 424393 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-02 20:15 +0000 [r424373] Jonathan Rose <jrose@digium.com>
* /,
contrib/ast-db-manage/config/versions/10aedae86a32_add_outgoing_enum_va.py
(added): Alembic: Add enumerator value to sippeers -> directmedia
- 'outgoing' The 'outgoing' value was left off of the enumerator
when first creating the column. This patch adds it, and should
gracefully upgrade keeping the existing data in tact.
ASTERISK-23781 #close Reported by: Stephen More Review:
https://reviewboard.asterisk.org/r/4013/ ........ Merged
revisions 424372 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-02 13:35 +0000 [r424338] Scott Griepentrog <sgriepentrog@digium.com>
* /, configs/samples/pjsip.conf.sample: res_pjsip: document use of
rewrite_contact in sample conf Without setting rewrite_contact,
an invite to an endpoint behind NAT will not reach it - unless
the endpoint itself uses STUN or TURN to discover it's public
URI. Thus, the use of this should be in the sample documentation.
Review: https://reviewboard.asterisk.org/r/4036/ ........ Merged
revisions 424337 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-01 22:52 +0000 [r424333] Jonathan Rose <jrose@digium.com>
* channels/chan_pjsip.c: chan_pjsip: Fix an assertion for channels
that lack formats on creation ASTERISK-24222 #close Reported by:
Mark Michelson Review: https://reviewboard.asterisk.org/r/4017/
2014-10-01 20:36 +0000 [r424313] Corey Farrell <git@cfware.com>
* res/res_hep.c, /: res_hep: Release allocation reference to
configuration. ASTERISK-24362 #close Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4026/ ........ Merged
revisions 424312 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-01 16:37 +0000 [r424288-424291] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/pjsip_configuration.c,
configs/samples/pjsip.conf.sample, res/res_pjsip.c: res_pjsip:
Add 'dtls_fingerprint' option to configure DTLS fingerprint hash.
During the latest update to DTLS-SRTP support the ability to
configure the hash used for fingerprints was added. This gave us
two supported ones: SHA-1 and SHA-256. The default was
accordingly updated to SHA-256. Unfortunately this configuration
ability was not exposed within res_pjsip. This change adds a
dtls_fingerprint option that controls it. #SIPit31 ........
Merged revisions 424290 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_sdp_rtp.c: res_pjsip_sdp_rtp: Accept DTLS
attributes in top level, not just media session. #SIPit31
........ Merged revisions 424287 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-01 12:27 +0000 [r424245-424266] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip/config_transport.c, /, res/res_pjsip/location.c,
res/res_pjsip_endpoint_identifier_ip.c,
res/res_pjsip/pjsip_configuration.c,
configs/samples/pjsip.conf.sample: PJSIP: Handle defaults
properly This updates the code behind PJSIP configuration options
with custom handlers to deal with the assigned default values
properly where it makes sense and adjusting the default value
where it doesn't. Before applying this patch, there were several
cases where the default value for an option would prevent that
config section from loading properly. Reported by: Thomas
Thompson Review: https://reviewboard.asterisk.org/r/4019/
........ Merged revisions 424263 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_nat.c: PJSIP: Force transport on contact rewrite
If contact rewriting is enabled but the contact differs in
transport from what is actually being used, messages after the
initial INVITE transaction can be sent to an incorrect
transport/port combination. In the case where this bug occurred
the remote party never received a BYE since it was sent to the
remote party's TCP port over UDP. Review:
https://reviewboard.asterisk.org/r/4032/ ........ Merged
revisions 424244 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-10-01 10:09 +0000 [r424179-424184] Walter Doekes <walter+asterisk@wjd.nu>
* /, channels/chan_sip.c: chan_sip: Simplify some unref code by
removing unlink_peer_from_tables. ASTERISK-22945 #related
Reported by: ibercom Patches:
asterisk11-chan_sip-simplifies.patch uploaded by ibercom (License
#6599) ........ Merged revisions 424181 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 424182 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424183 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: chan_sip: Remove excess ref of realtime
peer before sip_poke_peer. The peer is referenced at the end of
sip_poke_peer, it should not get an extra ref before the call to
sip_poke_peer. This fixes a memory leak. ASTERISK-22945 #close
Reported by: ibercom Tested by: Yuriy Gorlichenko Patches:
asterisk11.patch uploaded by ibercom (License #6599) Review:
https://reviewboard.asterisk.org/r/4031/ ........ Merged
revisions 424176 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 424177 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424178 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-30 11:40 +0000 [r424153-424156] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_sdp_rtp.c, /: res_pjsip_sdp_rtp: Don't place an
extra whitespace before 'rport' and don't put IPv6 addresses in
brackets. #SIPit31 ........ Merged revisions 424155 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Ensure that the base
and mapped address for candidates is present in SDP. This change
fixes an issue where ICE candidates put into the SDP did not
contain the 'raddr' and 'rport' information for server reflexive
and relay candidates. #SIPit31 ........ Merged revisions 424151
from http://svn.asterisk.org/svn/asterisk/branches/11 ........
Merged revisions 424152 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-29 21:59 +0000 [r424129] George Joseph <george.joseph@fairview5.com>
* /, res/res_pjsip/pjsip_cli.c: pjsip_cli: Suppress header print on
error or no objects If there's an error on the pjsip command line
or there are no objects, don't print the column headers.
ASTERISK-24350 #close Reported-by: Brad Latus Tested-by: George
Joseph Tested-by: Brad Latus Review:
https://reviewboard.asterisk.org/r/4025/ ........ Merged
revisions 424128 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-29 21:26 +0000 [r424126] Walter Doekes <walter+asterisk@wjd.nu>
* /, contrib/scripts/autosupport: autosupport: Fix bashism. '==' is
bashism (bashspecific, fails when dash is /bin/sh). Anyway, a
'case' works better there. Originally committed in r375059 and
r375060 on 2012-10-16 21:13:08. ASTERISK-20567 #close Reported
by: Tzafrir Cohen ........ Merged revisions 424117 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 424125 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-29 21:17 +0000 [r424097-424105] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_session.c,
/, res/res_pjsip_authenticator_digest.c: Simplify UUID generation
in several places. Replace code using ast_uuid_generate() with
simpler and faster code using ast_uuid_generate_str(). The new
code avoids a malloc(), free(), and copy. ........ Merged
revisions 424103 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/threadpool.c: threadpool.c: Minor cleanup fixes. * Fix
threadpool_alloc() prototype. * Add missing off-nominal NULL
check of pool in threadpool_alloc(). * searializer_create() does
not need to create the object with a lock as the lock is not
used. ........ Merged revisions 424096 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-27 12:43 +0000 [r424057] Joshua Colp <jcolp@digium.com>
* channels/chan_pjsip.c, res/res_pjsip_session.c, /:
res_pjsip_session: Add additional checks for delaying session
refreshes. There are certain situations which no checks existed
for which need to prevent session refreshes. This includes
sending a session refresh with SDP before SDP negotiation has
completed and sending a session refresh before the dialog itself
has been established. Checks for these have been added.
Additionally COLP related UPDATEs were including SDP when it is
not needed. Review: https://reviewboard.asterisk.org/r/4008/
........ Merged revisions 424056 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-26 15:21 +0000 [r423992] Richard Mudgett <rmudgett@digium.com>
* /, res/res_fax.c: res_fax: Fix out of bounds error in
update_modem_bits(). ASTERISK-24357 #close Reported by: Jeremy
Laine Patches: res_fax_bounds.patch (license #6561) patch
uploaded by Jeremy Laine Modified patch to not use magic numbers.
........ Merged revisions 423979 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423983 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423987 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-26 08:25 +0000 [r423918] Walter Doekes <walter+asterisk@wjd.nu>
* /, doc/asterisk.8: docs: Escape unescaped minus sign in
asterisk.8 manpage. ASTERISK-23768 #close Reported by: Jeremy
Lainé Patches: escape_manpage_hyphen.patch uploaded by Jeremy
Lainé (License #6561) ........ Merged revisions 423915 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423916 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423917 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-25 21:01 +0000 [r423895] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip.c, /: res_pjsip.c: Add missing off nominal cleanup
in ast_sip_push_task_synchronous(). * Made memset the std struct
in ast_sip_push_task_synchronous() because if DEBUG_THREADS is
enabled then uninitialized lock tracking data is used. ........
Merged revisions 423894 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-24 18:32 +0000 [r423867] Richard Mudgett <rmudgett@digium.com>
* /, res/res_pjsip/pjsip_options.c, res/res_pjsip.c:
pjsip_options.c: Fix race condition stopping periodic out of
dialog OPTIONS request. The crash on the issues is a result of an
invalid transport configuration change when asterisk is
restarted. The attempt to send the qualify request fails and we
cleaned up. However, the callback is also called which results in
a double unref of the objects involved. * Put a wrapper around
pjsip_endpt_send_request() to detect when the passed in callback
is called because of an error so callers can know to not cleanup.
* Made send_request_cb() able to handle repeated challenges (Up
to 10). * Fix periodic endpoint qualify OPTIONS sched deletion
race by avoiding it. The sched entry will no longer self stop and
must be externally stopped. * Added REF_DEBUG description tags to
struct sched_data in pjsip_options.c. * Fix some off-nominal ref
leaks in schedule_qualify(), qualify_and_schedule(). * Reordered
pjsip_options.c module start/stop code to cleanup better on
error. ASTERISK-24295 #close Reported by: Rogger Padilla Review:
https://reviewboard.asterisk.org/r/3954/ ........ Merged
revisions 423866 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-24 08:53 +0000 [r423803] Walter Doekes <walter+asterisk@wjd.nu>
* /, channels/chan_sip.c: chan_sip: Unref outbound proxy structure
on dialog/pvt destruction. Make sure outbound proxy refs are
always unreffed on dialog destruction. Review:
https://reviewboard.asterisk.org/r/4016/ ........ Merged
revisions 423800 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423801 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423802 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-23 14:29 +0000 [r423783] Mark Michelson <mmichelson@digium.com>
* tests/test_cel.c, tests/test_cdr.c: Make CDR and CEL unit tests
less FRACKy. Prior to this commit, CDR and CEL tests were
expected to trigger FRACKs (i.e. assertions) due to the fact that
the channels they create have no formats on them. Some code was
independently added recently that attempts to prevent FRACKs from
occurring by failing early when attempting to set up translation
paths if one or both channels support no formats. Unfortunately,
this attempt to be helpful made the CDR and CEL tests go from
simply FRACKing to outright failing and in some cases, failing so
badly as to crash Asterisk. This commit seeks to correct past
mistakes by adding the ulaw format to channels created by the CDR
and CEL unit tests. This makes setting up translation paths
succeed, eliminates previously-seen FRACKs, and ultimately causes
the unit tests to succeed again. Review:
https://reviewboard.asterisk.org/r/4014
2014-09-22 19:48 +0000 [r423660-423723] Walter Doekes <walter+asterisk@wjd.nu>
* /, channels/chan_sip.c: chan_sip: On INVITE retransmission, don't
add an extra 503 response. INVITE arrives to asterisk, asterisk
responds Busy(). If the INVITE is retransmitted, asterisk would
generate a 503 in addition to the 486. Thanks Torrey Searle for
providing a working regression test. ASTERISK-24335 #close
Review: https://reviewboard.asterisk.org/r/4003/ Patches:
retrans_486_invite.patch uploaded by Torrey Searle (License
#5334) ........ Merged revisions 423720 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423721 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423722 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/editline/readline.c: cli.c: Fix tab completion "module
load" when MALLOC_DEBUG is enabled. r421600 conflicted with
r155763. ASTERISK-24348 #close ........ Merged revisions 423657
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 423658 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423659 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-21 01:15 +0000 [r423618-423641] Matthew Jordan <mjordan@digium.com>
* main/channel.c: main/channel: Unlock channel in off-nominal path
In r423414 (13) / r423415 (trunk), an API call that determines if
a format capability structure is empty was added. This returns
true if the format capability structure is completely empty or
"none". A check for this was added in channel.c's set_format
call. Unfortunately, when this check was true, it returned from
the function while still holding the channel lock. This caused
the CDR unit tests - which have a tendency to create channels
with no formats - to deadlock. Whoops. This patch unlocks the
channel on the off-nominal path.
* rest-api/api-docs/events.json, /: rest-api/api-docs/events.json:
Remove non-compliant 'extends' attribute Prior to the release of
Swagger 1.2, the attribute 'extends' was being promoted as a
possible way to show that a particular object extends an existing
object. Instead, the Swagger specification went with the
'subTypes' attribute in the base object. This patch removes the
unsupported attribute; the object that the offending objects
proposed to extend already lists them in its 'subTypes'
attribute. ASTERISK-24300 #close Reported by: Bradley Watkins
........ Merged revisions 423620 from
http://svn.asterisk.org/svn/asterisk/branches/12
* rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json,
rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json,
rest-api/api-docs/deviceStates.json,
rest-api/api-docs/endpoints.json,
rest-api/api-docs/mailboxes.json, rest-api/api-docs/events.json,
/, rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json,
rest-api/api-docs/playbacks.json: rest-api/api-docs: Correct
basePath in resources to match top resources file The
resources.json file that defines the resource JSON files used
with ARI references a basePath of 'http://localhost:8088/ari'.
This does not match what is defined in the resource files
themselves, 'http://localhost:8088/stasis'. The correct base path
is the one that includes 'ari' in the URL; this patch updates the
various resource JSON files to have the correct basePath.
ASTERISK-24339 #close Reported by: Bradley Watkins ........
Merged revisions 423617 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-19 19:51 +0000 [r423580] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_notify.c: res_pjsip_notify: Fix crash on
unload/load and don't say the module doesn't exist on reload.
When unloading the module did not unregister the CLI commands
causing a crash upon load when they were registered again. When
reloading the module the return value from the config options
framework was not checked to determine if an error occurred or
not. This caused a message to be output saying the module did not
exist when reloading if no changes were present. AST-1433 #close
AST-1434 #close ........ Merged revisions 423579 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-19 17:08 +0000 [r423561] Richard Mudgett <rmudgett@digium.com>
* channels/chan_pjsip.c, res/res_pjsip_sdp_rtp.c:
res_pjsip_sdp_rtp.c: Fix native formats containing formats that
were not negotiated. Outgoing PJSIP calls can result in
non-negotiated formats listed in the channel's native formats if
video formats are listed in the endpoint's configuration. The
resulting call could then use a non-negotiated format resulting
in one way audio. * Simplified the update of session->req_caps in
set_caps(). Why do something in five steps when only one is
needed? AFS-162 #close Review:
https://reviewboard.asterisk.org/r/4000/
2014-09-19 15:18 +0000 [r423524-423530] Jonathan Rose <jrose@digium.com>
* /, main/stasis_channels.c: Stasis_channels: Resolve unfinished
Dials when doing masquerades Masquerades into channels that are
in the dialing state don't end their dial and this goes against
the model for things like CDRs and generating Dial end manager
actions and such. ASTERISK-24237 #close Reported by: Richard
Mudgett Review: https://reviewboard.asterisk.org/r/3990/ ........
Merged revisions 423525 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c: chan_iax2: Fix a crash when using chan_iax2
jitterbuffer settings Caused by format changes in Asterisk 13
ASTERISK-24265 #close Reported by: Dafi Ni Review:
https://reviewboard.asterisk.org/r/3999/
2014-09-19 12:45 +0000 [r423504] Kinsey Moore <kmoore@digium.com>
* include/asterisk/framehook.h, /, main/framehook.c,
res/res_pjsip_t38.c: PJSIP: Prevent T38 framehook being put on
wrong channel This change gives framehooks a reverse-direction
masquerade callback in addition to chan_fixup_cb similar to the
callback added to datastores to handle the same situation. The
new callback provides the same parameters as the fixup callback,
but is called on the new channel's framehooks before moving
framehooks from the old channel to the new channel. This gives
the framehooks an oppurtunity to decide whether they should
remain on the new channel or be removed. This new callback is
used to prevent the PJSIP T.38 framehook from remaining on a
masqueraded channel if the new channel is not also a PJSIP
channel. This was causing a crash when a local channel was
masqueraded into a PJSIP channel and the framehook was executed
on the local channel since the channel's tech private data was
not structured as expected. Review:
https://reviewboard.asterisk.org/r/4001/ ........ Merged
revisions 423503 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 19:30 +0000 [r423482] Sean Bright <sean@malleable.com>
* res/res_pjsip/config_auth.c, /: res_pjsip: Don't require a
password when doing userpass authentication. An empty password is
valid for username/password authentication so we should allow
password to be empty/not supplied. Review:
https://reviewboard.asterisk.org/r/3988 ........ Merged revisions
423481 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 19:22 +0000 [r423478] George Joseph <george.joseph@fairview5.com>
* tests/test_strings.c, /, main/utils.c,
include/asterisk/strings.h: utils: Create ast_strsep function
that ignores separators inside quotes This function acts like
strsep with three exceptions... * The separator is a single
character instead of a string. * Separators inside quotes are
treated literally instead of like separators. * You can elect to
have leading and trailing whitespace and quotes stripped from the
result and have '\' sequences unescaped. Like strsep, ast_strsep
maintains no internal state and you can call it recursively using
different separators on the same storage. Also like strsep, for
consistent results, consecutive separators are not collapsed so
you may get an empty string as a valid result. Tested by: George
Joseph Review: https://reviewboard.asterisk.org/r/3989/ ........
Merged revisions 423476 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 18:31 +0000 [r423462] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pubsub.c: Add subscription state test events. These
are needed for a set of batched notification RLS tests that are
about to be committed to the testsuite. Review:
https://reviewboard.asterisk.org/r/3967
2014-09-18 17:11 +0000 [r423425] Jonathan Rose <jrose@digium.com>
* res/res_pjsip_endpoint_identifier_ip.c, /:
res_pjsip_endpoint_identifier_ip: Fix parsing of match value with
CIDR Also fixes comma separates match lists ASTERISK-24290 #close
Reported by: Ray Crumrine Review:
https://reviewboard.asterisk.org/r/3995/ ........ Merged
revisions 423417 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 17:09 +0000 [r423418-423423] Richard Mudgett <rmudgett@digium.com>
* bridges/bridge_softmix.c: bridge_softmix.c: Made use
ao2_replace() instead of the inline equivalent. * Clarified some
read/write format comments. * Fixed a doxygen tag typo.
* main/astobj2.c, contrib/scripts/refcounter.py, /:
astobj2.c/refcounter.py: Fix to deal with invalid object refs. *
Make astob2 REF_DEBUG output an invalid object line when an
invalid ao2 object ref/unref is attempted. This is similar to the
constructor/destructor lines. * Fixed refcounter.py to handle
skewed objects that have constructor/destructor states. * Made
refcounter.py highlight the invalid ao2 object refs by putting
them in their own section of the processed output file. * Made
refcounter.py highlight unreffing an object by more than one that
results in a negative ref count and the object being destroyed.
The abnormally destroyed object is reported in the invalid and
finalized object sections of the output. Review:
https://reviewboard.asterisk.org/r/3971/ ........ Merged
revisions 423349 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423400 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423416 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 16:37 +0000 [r423348-423414] Mark Michelson <mmichelson@digium.com>
* include/asterisk/format_cap.h, main/channel.c, main/format_cap.c,
main/translate.c: Add API call to determine if format capability
structure is "empty". Empty here means that there are no formats
in the format_cap structure or the only format in it is the
"none" format. I've added calls to check the emptiness of a
format_cap in a few places in order to short-circuit operations
that would otherwise be pointless as well as to prevent some
assertions from being triggered in cases where channels with no
formats are used.
* /, res/res_fax_spandsp.c: res_fax_spandsp: Properly handle
cleanup before starting FAXes. If faxing fails at a very early
stage, then it is possible for us to pass a NULL t30 state
pointer to spandsp, which spandsp is none too pleased with. This
patch ensures that we pass the correct pointer to spandsp in the
situation where we have not yet set our local t30 state pointer.
ASTERISK-24301 #close Reported by Matt Jordan Patches:
ASTERISK-24301-fax.diff Uploaded by Mark Michelson (License
#5049) ........ Merged revisions 423360 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423365 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_mwi.c,
res/res_pjsip_dialog_info_body_generator.c,
res/res_pjsip_xpidf_body_generator.c,
res/res_pjsip_mwi_body_generator.c, res/res_pjsip_pubsub.c,
res/res_pjsip_exten_state.c, include/asterisk/res_pjsip_pubsub.h,
res/res_pjsip_pidf_body_generator.c: res_pjsip_pubsub: Add some
type safety when generating NOTIFY bodies. res_pjsip_pubsub has
two separate checks that it makes when a SUBSCRIBE arrives. * It
checks that there is a subscription handler for the Event * It
checks that there are body generators for the types in the Accept
header The problem is, there's nothing that ensures that these
two things will actually mesh with each other. For instance,
Asterisk will accept a subscription to MWI that accepts pidf+xml
bodies. That doesn't make sense. With this commit, we add some
type information to the mix. Subscription handlers state they
generate data of type X, and body generators state that they
consume data of type X. This way, Asterisk doesn't end up in some
hilariously mismatched situation like the one in the previous
paragraph. ASTERISK-24136 #close Reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/3877 Review:
https://reviewboard.asterisk.org/r/3878 ........ Merged revisions
423344 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 15:13 +0000 [r423284] George Joseph <george.joseph@fairview5.com>
* /, res/res_pjsip/location.c,
res/res_pjsip_endpoint_identifier_ip.c,
res/res_pjsip/pjsip_configuration.c,
res/res_pjsip/pjsip_options.c, res/res_pjsip/config_transport.c,
include/asterisk/res_pjsip.h, res/res_pjsip/config_auth.c:
res_pjsip: ami: Fix error in AMI output when an endpoint has no
transport When no transport is associated to an endpoint, the AMI
output for PJSIPShowEndpoint indicates an error instead of
silently ignoring the missing transport. This patch causes the
error to appear only if a transport was specified on the endpoint
and the transport doesn't exist. It also fixes an issue with
counting the objects that were actually found. ASTERISK-24161
#close ASTERISK-24331 #close Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3998/ ........ Merged
revisions 423282 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-18 15:00 +0000 [r423281] David M. Lee <dlee@digium.com>
* makeopts.in, Makefile: Only install dahdi_span_config_hook if
DAHDI is enabled This patch changes the install to only install
the hook script if DAHDI is enabled. It also adds the script to
the uninstall task, and moves the DAHDI_UDEV_HOOK_DIR variable so
that it's not between the _MAKEOPTS variables and their comment.
This allows installs which specify a --prefix to work normally,
as long as they don't enable DAHDI. Review:
https://reviewboard.asterisk.org/r/3972/
2014-09-18 14:45 +0000 [r423279] George Joseph <george.joseph@fairview5.com>
* main/manager.c, /, include/asterisk/config.h, main/config.c:
config: bug: Fix SEGV in ast_category_insert when matching
category isn't found If you call ast_category_insert with a match
category that doesn't exist, the list traverse runs out of 'next'
categories and you get a SEGV. This patch adds check for the
end-of-list condition and changes the signature to return an int
for success/failure indication instead of a void. The only
consumer of this function is manager and it was also changed to
use the return value. Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3993/ ........ Merged
revisions 423276 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423277 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423278 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-17 18:05 +0000 [r423209-423255] Joshua Colp <jcolp@digium.com>
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Ensure that the
thread terminating pj stuff is registered. ........ Merged
revisions 423253 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423254 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix 100% CPU usage
due to timer heap thread spinning. Side note: I need a vacation.
........ Merged revisions 423210 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423211 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix building when
pjproject is not used. ........ Merged revisions 423207 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423208 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-16 16:32 +0000 [r423192] Scott Griepentrog <sgriepentrog@digium.com>
* apps/app_voicemail.c, include/asterisk/file.h, main/file.c:
Voicemail: get correct duration when copying file to vm Changes
made during format improvements resulted in the recording to
voicemail option 'm' of the MixMonitor app writing a zero length
duration in the msgXXXX.txt file. This change introduces a new
function ast_ratestream(), which provides the sample rate of the
format associated with the stream, and updates the app_voicemail
function for ast_app_copy_recording_to_vm to calculate the right
duration. Review: https://reviewboard.asterisk.org/r/3996/
ASTERISK-24328 #close
2014-09-16 12:12 +0000 [r423152-423173] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, /: res_pjsip_session: Fix usage of wrong
memory pool when creating local SDP. ........ Merged revisions
423172 from http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c, /:
res_rtp_asterisk: Fix a myriad of TURN client issues. 1. The
number of file descriptors an ioqueue instance can handle is
fixed, so we now spawn the required number to handle the load. 2.
Our transport identifiers were exceeding the range supported by
pjnath. 3. The TURN client did not set up client binding causing
needless bandwidth usage. 4. The code no longer updates address
information on each packet. 5. STUN traffic was getting looped
back to Asterisk instead of going through the TURN server. 6.
Synchronization now ensures things are completely setup or
destroyed. 7. Logging now reflects the target the TURN server is
sending to/receiving from on our behalf. ASTERISK-23577 #close
Reported by: Jay Jideliov ASTERISK-23634 #close Reported by:
Roman Skvirsky Review: https://reviewboard.asterisk.org/r/3982/
........ Merged revisions 423150 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423151 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-15 10:49 +0000 [r423069-423129] Walter Doekes <walter+asterisk@wjd.nu>
* /,
contrib/ast-db-manage/config/versions/5950038a6ead_fix_pjsip_verifiy_typo.py
(added): contrib: Fix verifyi typo in alembic DB script
ps_transport table. Reported by: Zogot (on IRC) Patches: tmp.diff
uploaded by Zogot, cleaned up by me. ........ Merged revisions
423128 from http://svn.asterisk.org/svn/asterisk/branches/12
* configs/samples/sip.conf.sample, /: chan_sip: Clarify that
sipdebug=yes cannot be undone by the CLI. Document it in
sip.conf. ASTERISK-24249 #close Reported by: Avinash Mohod
Review: https://reviewboard.asterisk.org/r/3926/ ........ Merged
revisions 423066 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 423067 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 423068 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-12 16:09 +0000 [r422985] Jonathan Rose <jrose@digium.com>
* main/config.c, /: Realtime: Fix a bug that caused realtime
destroy command to crash Also has could affect with anything that
goes through ast_destroy_realtime. If a CLI user used the command
'realtime destroy <family>' with only a single column/value pair,
Asterisk would crash when trying to create a variable list from a
NULL value. ASTERISK-24231 #close Reported by: Niklas Larsson
Review: https://reviewboard.asterisk.org/r/3985/ ........ Merged
revisions 422984 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-11 22:16 +0000 [r422965] Mark Michelson <mmichelson@digium.com>
* /, main/app.c: Remove undocumented default behavior of
ast_play_and_record_full acceptdtmf. ast_play_and_record_full()
has a parameter called "acceptdtmf" that is a string of
acceptable DTMF digits that may be pressed by a caller to end and
accept the recording. ARI uses this function in order to perform
recording, and it provides options for what is passed as
acceptdtmf to ast_play_and_record_full(). By default, ARI passes
an empty string, with the intention that no DTMF can be used to
end the recording. The problem is that ast_play_and_record_full()
attempts to be "helpful" by setting "#" as the acceptdtmf if an
empty string or NULL pointer has been passed in. With ARI, this
results in unexpected behavior occurring if you have attempted to
intercept "#" yourself in order to perform some other
manipulation of the live recording. This change removes the
"helpful" behavior by no longer accepting "#" as a default
acceptdtmf if none is specified by the caller of
ast_play_and_record_full(). This makes the ARI scenario work as
expected. The other callers of ast_play_and_record_full() are
app_voicemail and app_minivm, and in both cases, they pass an
explicit "#" to ast_play_and_record_full() as acceptdtmf, so they
are unaffected by this change. ........ Merged revisions 422964
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-10 16:04 +0000 [r422905] George Joseph <george.joseph@fairview5.com>
* /, main/config.c: config: bug: fix truncation of included config
files on permissions error ast_config_text_file_save() currently
truncates include files as they are processed. If a subsequent
include file or the main config file has a permissions error that
prevents writing, earlier include files are left truncated
resulting in a frantic search for backups. This patch causes
ast_config_text_file_save to check for write access on all files
before it truncates any of them. Will be applied 1.8 > trunk.
Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3986/ ........ Merged
revisions 422900 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422903 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422904 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-10 15:59 +0000 [r422901] Sean Bright <sean@malleable.com>
* res/res_pjsip/config_auth.c, /: pjsip/config_auth.c: Add missing
whitespace to log messages. The errors generated when validating
'auth' settings are missing a space which makes the messages a
little confusing. ........ Merged revisions 422899 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-09 20:01 +0000 [r422883] Rusty Newton <rnewton@digium.com>
* /, sounds/sounds.xml, sounds/Makefile: Sounds/BuildSystem:
Modifications to include new releases and Japanese language.
Modifying Makefile and sounds.xml to include new core 1.4.26 and
extra 1.4.15 sound prompt releases, plus the new Japanese core
sound prompts contributed by QLOOG. ASTERISK-23324 Reported by:
Kevin McCoy Tested by: Rusty Newton ........ Merged revisions
422789 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 422790 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422791 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-08 18:03 +0000 [r422851-422855] Mark Michelson <mmichelson@digium.com>
* configs/samples/pjsip.conf.sample: Add note about configuring
list_items on a single line.
* configs/samples/pjsip.conf.sample: Add sample configuration for
resource lists. On review /r/3977, it was recommended to note in
the sample configuration about the size limitation for resource
lists. However, since there was no section in the sample
configuration at all for resource list subscriptions, I decided
to make a separate commit where I have added the necessary sample
configuration as well as the size limitation warning.
* res/res_pjsip_pubsub.c: Pre-allocate transmission data buffer for
RLS NOTIFY requests. PJSIP, unless a constant is modified at
compilation time, limits SIP requests to 4000 bytes. Full-state
RLS notifications can easily exceed this limit with moderately
small lists. This changeset allows for Asterisk to work around
this size limit by performing its own allocation of the
transmission data buffer. This way, Asterisk can allocate a
buffer that exceeds the built-in maximum. We still impose our own
limit of 64000 bytes, mainly because making allocations larger
than that is a bit absurd. ASTERISK-24181 #close Reported by Mark
Michelson Review: https://reviewboard.asterisk.org/r/3977
2014-09-08 15:41 +0000 [r422836] Jonathan Rose <jrose@digium.com>
* res/res_pjsip_pubsub.c: res_pjsip_pubsub: Check supported headers
for eventlist when subscribing to resource list
https://wiki.asterisk.org/wiki/display/AST/Resource+List+Subscription+Test+Plan
According to the off-nominal plan, if evenlist support is not
specified in a SUBSCRIBE's supported header(s), that subscription
should be rejected with an error. ASTERISK-23871 Reported by:
Mark Michelson Review:
https://reviewboard.asterisk.org/r/3960/diff/#index_header
2014-09-06 22:49 +0000 [r422767-422770] Matthew Jordan <mjordan@digium.com>
* /, main/cdr.c: main/cdr: Copy over location information during a
fork When a CDR is forked, a new CDR is created and appended to
the CDR chain for the Party A. The forked CDR starts life off as
a clone of the last non-finalized for the particular Party A. In
the past, merely copying over the snapshots for Party A/Party B
would be sufficient. However, as the CDRs now contain cached
information from Party A - specifically application/data,
context, and extension - we need to copy that over during a fork
as well. Huzzah for unit tests catching this when the
context/extension were derived from a cached value on the CDR
instead of on Party A. ........ Merged revisions 422769 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/rtp_engine.c, /: main/rtp_engine: Format NTP timestamps as
unsigned ints On some systems, a timeval's tv_sec/tv_usec will be
unsigned lont ints, as opposed to long ints. When the RTP engine
formats these as strings, it was previously formatting them as
signed integers, which can result in some odd negative timestamp
values (particularly on 32-bit systems). This patch formats the
values as unsigned long integers. ........ Merged revisions
422766 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-06 19:12 +0000 [r422747] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_sdp_rtp.c, /: res_pjsip_sdp_rtp: Fix retrieval of
"ice-pwd" attribute if in session and not media stream. ........
Merged revisions 422746 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-05 22:03 +0000 [r422716-422719] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /, apps/app_macro.c, include/asterisk/channel.h,
apps/app_stack.c: main/cdrs: Preserve context/extension when
executing a Macro or GoSub The context/extension in a CDR is
generally considered the destination of a call. When looking at a
2-party call CDR, users will typically be presented with the
following: context exten channel dest_channel app data default
1000 SIP/8675309 SIP/1000 Dial SIP/1000,,20 However, if the Dial
actually takes place in a Macro, the current behaviour in 12 will
result in the following CDR: context exten channel dest_channel
app data macro-dial s SIP/8675309 SIP/1000 Dial SIP/1000,,20 The
same is true of a GoSub: context exten channel dest_channel app
data subs dial_stuff SIP/8675309 SIP/1000 Dial SIP/1000,,20 This
generally makes the context/exten fields less than useful. It
isn't hard to preserve these values in the CDR state machine;
however, we need to have something that informs us when a channel
is executing a subroutine. Prior to this patch, there isn't
anything that does this. This patch solves this problem by adding
a new channel flag, AST_FLAG_SUBROUTINE_EXEC. This flag is set on
a channel when it executes a Macro or a GoSub. The CDR engine
looks for this value when updating a Party A snapshot; if the
flag is present, we don't override the context/exten on the main
CDR object. In a funny quirk, executing a hangup handler must
*not* abide by this logic, as the endbeforehexten logic assumes
that the user wants to see data that occurs in hangup logic,
which includes those subroutines. Since those execute outside of
a typical Dial operation (and will typically have their own
dedicated CDR anyway), this is unlikely to cause any heartburn.
Review: https://reviewboard.asterisk.org/r/3962/ ASTERISK-24254
#close Reported by: tm1000, Tony Lewis Tested by: Tony Lewis
........ Merged revisions 422718 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: main/cdr: Fix crash/memory consumption in CDRs in
multi-party bridge scenarios This patch fixes an issue where CDRs
would get stuck generating an infinite number of CDRs, eventually
crashing Asterisk (and consuming a lot of memory along the way).
When a channel enters into a multi-party bridge, the CDR engine
creates mappings of each participant to each other participant,
picking the 'A' party as it goes. So, if we have four channels in
a multi-party bridge (Alice, Bob, Charlie, Denise), we would have
something like: Alice => Bob Alice => Charlie Alice => Denise Bob
=> Charlie Bob => Denise Charlie => Denise This works fine when
participants enter the bridge a single time. When a participant
leaves a bridge, the CDRs for that channel are transitioned to a
finalized state. The bug occurs if Bob rejoins. When the CDR
engine creates mappings between the channels, it walks through
all the participants currently in the bridge, and realizes that
no one in the bridge can create a CDR with the channel (Bob). As
such it creates a new CDR for the candidate and appends it to
that candidate's chain. Unfortunately, on this particular code
path, it doesn't stop traversing the candidate's chain. Since we
just added ourselves to the chain, this causes the loop to keep
going, constantly adding new CDRs. This patch makes it so the
engine bails when it creates a CDR match in this case. Review:
https://reviewboard.asterisk.org/r/3964/ ASTERISK-24241 #close
Reported by: Deepak Singh Rawat Tested by: Deepak Singh Rawat
ASTERISK-24208 Reported by: Frankie Chin ........ Merged
revisions 422715 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-05 20:35 +0000 [r422700] Richard Mudgett <rmudgett@digium.com>
* funcs/func_channel.c: func_channel.c: Add missing locking to some
CHANNEL() requests. * The CHANNEL() audionativeformat,
videonativeformat, audioreadformat, and audiowriteformat now need
locking since the media format rework when accessing the
channel's format pointers. * Increased the buffer size for
CHANNEL() audionativeformat and videonativeformat output strings
since the allow=all can be a lengthy list. * Tweaked the
CHANNEL() XML documentation for secure_bridge_signaling,
secure_bridge_media, and state. * Ensured the output buffer is
initialized for secure_bridge_signaling and secure_bridge_media.
* Made use the locked_copy_string() macro instead of inlining it
for trace and checkhangup.
2014-09-05 20:11 +0000 [r422665-422684] Jonathan Rose <jrose@digium.com>
* main/dial.c, include/asterisk/dial.h: Dial API: Add a dial option
to indicate the dialed channel will replace dialer Adds an option
to the dial API that marks an outgoing dial as replacing the
dialing channel for the purpose of propagating accountcode. When
it is used, AST_CHANNEL_REQUESTOR_REPLACEMENT is used instead of
AST_CHANNEL_REQUESTOR_BRIDGE_PEER when setting accountcodes on
the involved channels with ast_channel_req_accountcodes. Review:
https://reviewboard.asterisk.org/r/3968/
* main/cli.c, /: Call IDs: Fix appearance of call ID in core show
channels when NULL NULL call IDs were meant to appear as '(none)'
but instead were showing the contents of an uninitialized
character buffer. ASTERISK-24223 Review:
https://reviewboard.asterisk.org/r/3979/ ........ Merged
revisions 422664 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-05 17:36 +0000 [r422661] Richard Mudgett <rmudgett@digium.com>
* main/devicestate.c, channels/chan_iax2.c: devicestate.c: Minor
tweaks * In ast_state_chan2dev() use ARRAY_LEN() instead of a
sentinel value in chan2dev[]. * Fix some comments in chan_iax2.c.
2014-09-05 13:28 +0000 [r422646] Kinsey Moore <kmoore@digium.com>
* menuselect/menuselect.c: Menuselect: Fix incorrect enabling on
failed deps This corrects a situation where menuselect can
incorrectly enable a module by default that has defaultenabled
set to "no" and has failed/non-selected dependencies. The bug is
due to an inverted test when checking for whether the given
module should be set to enabled by default on load. Review:
https://reviewboard.asterisk.org/r/3975/ Reported by: John
Bigelow
2014-09-04 21:23 +0000 [r422631] Jonathan Rose <jrose@digium.com>
* main/manager.c, /: Manager: Require read permission for SYSTEM in
order to send FullyBooted Review:
https://reviewboard.asterisk.org/r/3969/ ........ Merged
revisions 422584 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422625 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422626 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-03 14:05 +0000 [r422558] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_transport_websocket.c, /:
res_pjsip_transport_websocket: Fix crash when the Contact header
is not a URI. The code for changing the Contact header wrongly
assumed that the Contact would always contain a URI. This is
incorrect. ASTERISK-24271 Reported by: Dafi Ni ........ Merged
revisions 422557 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-02 20:29 +0000 [r422542] Mark Michelson <mmichelson@digium.com>
* /, channels/chan_pjsip.c, res/res_pjsip_diversion.c,
res/res_pjsip_session.c, include/asterisk/res_pjsip_session.h:
Resolve race condition where channels enter dialplan application
before media has been negotiated. Testsuite tests will
occasionally fail because on reception of a 200 OK SIP response,
an AST_CONTROL_ANSWER frame is queued prior to when media has
finished being negotiated. This is because session supplements
are called into before PJSIP's inv_session code has told us that
media has been updated. Sometimes the queued answer frame is
handled by the PBX thread before the ensuing media negotiations
occur, causing a test failure. As it turns out, there is another
place that session supplements could be called into, which is
after media has finished getting negotiated. What this commit
introduces is a means for session supplements to indicate when
they wish to be called into when handling an incoming SIP
response. By default, all session supplements will be run at the
same point that they were prior to this commit. However, session
supplements may indicate that they wish to be handled earlier
than normal on redirects, or they may indicate they wish to be
handled after media has been negotiated. In this changeset, two
session supplements have been updated to indicate a preference
for when they should be run: res_pjsip_diversion executes before
handling redirection in order to get information from the
Diversion header, and chan_pjsip now handles responses to INVITEs
after media negotiation to fix the race condition mentioned
previously. ASTERISK-24212 #close Reported by Matt Jordan Review:
https://reviewboard.asterisk.org/r/3930 ........ Merged revisions
422536 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-09-01 14:16 +0000 [r422504-422507] Matthew Jordan <mjordan@digium.com>
* main/cli.c, /: main/cli: Do not attempt to show CDR data for
internal channels Internal channels don't have CDRs. Querying the
CDR engine for their variables will make it cranky. ........
Merged revisions 422506 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis.c, /, res/stasis/stasis_bridge.c: res_stasis:
Don't play MoH to channels by default when added to holding
bridges When ARI manipulates a bridge, it generally doesn't care
what the mixing technology is. Operations on a bridge initiated
through ARI should perform their action in generally the same
way, regardless of the bridge's mixing technology. While the
mixing technology may determine how media flows to channels, the
actual operations on a bridge themselves should be the same.
Currently, this isn't the case with holding bridges. When a
channel joins without a role, MoH is started on that channel
automatically. Subsequent bridge operations that would stop MoH
would fail (as there is no Announcer channel playing MoH to the
bridge). Starting MoH on the bridge will also create two MoH
streams: one from the MoH being played on the participant
channel, and one from the announcer channel. From the perspective
of ARI users, this is counter-intuitive - I would not expect MoH
to be started for me. The mixing technology determines how media
is shared between participants, not the application experience.
This patch does the following: * The Stasis bridge class now
inspects channels as they are going into a bridge. If the bridge
has a holding capability, and the channel has no roles, we give
it a participant role and mark the default behaviour to have no
entertainment. This allows addChannel operations to continue to
set a participant role with an entertainment option if it felt
like it (or could do it). * The music on hold channel is now
Stasis approved (tm) Review:
https://reviewboard.asterisk.org/r/3929/ ASTERISK-24264 #close
Reported by: Samuel Galarneau Tested by: Samuel Galarneau
........ Merged revisions 422503 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-30 17:32 +0000 [r422442-422445] George Joseph <george.joseph@fairview5.com>
* apps/app_confbridge.c, /: confbridge: Add Duration to
ConfbridgeList event The ConfbridgeList event doesn't include how
long the user has been a member of the conference. This patch
adds Duration (seconds) which is based on user->chan->answertime.
Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3955/ ........ Merged
revisions 422444 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /: manager: Make WaitEvent action respect
eventfilters A WaitEvent issued via an http session isn't
respecting eventfilters defined for the user. I just added a
match_filter to the predicate that controls astman_append. Tested
by: George Joseph Review:
https://reviewboard.asterisk.org/r/3958/ ........ Merged
revisions 422439 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422440 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422441 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-29 19:40 +0000 [r422374-422379] Matthew Jordan <mjordan@digium.com>
* doc/smsq.8 (added), /: doc: Add a manpage for the smsq utility
This patch adds a manpage for the smsq utility. Note that this is
one of the patches the Debian distro applies for the Asterisk
project, as per ASTERISK-24191. Review:
https://reviewboard.asterisk.org/r/3895/ ASTERISK-24171 #close
Reported by: Jeremy Laine patches: smsq.8 uploaded by Jeremy
Laine (License 6561) ........ Merged revisions 422376 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422377 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422378 from
http://svn.asterisk.org/svn/asterisk/branches/12
* doc/aelparse.8 (added), /: doc: Add a manpage for the aelparse
utility This patch adds a manpage for the aelparse utility. Note
that this is one of the patches the Debian distro applies for the
Asterisk project, as per ASTERISK-24191. Review:
https://reviewboard.asterisk.org/r/3896/ ASTERISK-24171 #close
Reported by: Jeremy Laine patches: aelparse.8 uploaded by Jeremy
Laine (License 6561) ........ Merged revisions 422371 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422372 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422373 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-29 19:05 +0000 [r422359] Scott Griepentrog <sgriepentrog@digium.com>
* channels/chan_sip.c: The assertion that peer was not found on
final event message was being triggered on configuration reload.
This patch changes that case to just return instead. Review:
https://reviewboard.asterisk.org/r/3953/ Commited in trunk
revision 422358
2014-08-28 21:54 +0000 [r422296] Matthew Jordan <mjordan@digium.com>
* LICENSE, /: LICENSE: Clarify language in Asterisk's LICENSE to
allow for linking to UniMRCP The UniMRCP project distributes
Asterisk modules that integrate Asterisk with UniMRCP, and other
Asterisk users use the UniMRCP library as well. Unfortunately,
the UniMRCP license is Apache 2.0, which per the Free Software
Foundation, is not a compatible license with the GPLv2. "Please
note that this license is not compatible with GPL version 2,
because it has some requirements that are not in that GPL
version. These include certain patent termination and
indemnification provisions. The patent termination provision is a
good thing, which is why we recommend the Apache 2.0 license for
substantial programs over other lax permissive licenses." On the
other hand, UniMRCP is a great project and we'd like to let
people use it with Asterisk. This patch updates the LICENSE text
to allow users to link Asterisk with UniMRCP and distribute the
resulting binaries. ........ Merged revisions 422293 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422294 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422295 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-28 20:30 +0000 [r422276] Michael L. Young <elgueromexicano@gmail.com>
* /, channels/chan_iax2.c: chan_iax2: Fix Dynamic IAX2
Registrations After Temporary DNS Failure The reporter on the
issue found some issues when upgrading from version 10 to 11 on
55 hosts. Two situations that can occur with dynamic
registrations. 1. With dnsmgr disabled, if the host is not
resolvable we are not trying to resolve the host again when it is
time to attempt to register again. This results in never
registering to the host. 2. With dnsmgr enabled, when the host is
temporarily not resolvable the address is set to 0.0.0.0:0 and
then when the host is resolvable the port is not being restored
and stays set to 0. This patch resolves these two issues by: *
Storing the hostname so that it can be used for resolving with
DNS. * Resolve the hostname on the next scheduled attempt to
register. * Storing the port used to reach the host so that when
the hostname is resolvable again, we can set the port again if
the port is still unset after looking up the host. ASTERISK-23767
#close Reported by: David Herselman Tested by: David Herselman,
Michael L. Young Patches:
asterisk-23767-dns_reg_retry_and_set_port_11_v3.diff uploaded by
Michael L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/3856/ ........ Merged
revisions 422274 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422275 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-28 17:25 +0000 [r422256] Richard Mudgett <rmudgett@digium.com>
* /, UPGRADE.txt: Added ConfBridge AMI event note to UPGRADE.txt.
........ Merged revisions 422255 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-28 15:49 +0000 [r422239] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pubsub.c: Fix bug that did not allow for multiple
batched RLS notifications to be sent. A misunderstanding of how
the scheduler worked caused further batched notifications beyond
the first not to get scheduled. Now we reset our scheduler ID to
-1 after the batched notification is sent. This way, further
notifications can be scheduled when they arise.
2014-08-28 00:36 +0000 [r422200-422215] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip/pjsip_options.c, /: res/res_pjsip/pjsip_options.c:
Eliminate excessive RAII_VAR usage. * Fix off nominal ref leak in
find_or_create_contact_status(). * Add missing NULL check of
status in update_contact_status() and init_start_time(). ........
Merged revisions 422214 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/sched.c, include/asterisk/sched.h: sched: Fix typo and
whitespace change.
2014-08-27 17:29 +0000 [r422177] George Joseph <george.joseph@fairview5.com>
* /, apps/confbridge/confbridge_manager.c, apps/app_confbridge.c:
confbridge: Add 'Admin' param to join, leave, mute, unmute and
talking events Currently there's no way to tell if a user is an
admin or not when receiving the join, leave, mute, unmute and
talking events. This patch adds that capability. Tested by:
George Joseph Review: https://reviewboard.asterisk.org/r/3950/
........ Merged revisions 422176 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-27 15:31 +0000 [r422154] Kinsey Moore <kmoore@digium.com>
* include/asterisk/utils.h, /, channels/chan_sip.c,
tests/test_callerid.c (added), tests/test_utils.c,
main/callerid.c, main/utils.c, res/res_pjsip_caller_id.c:
CallerID: Fix parsing of malformed callerid This allows the
callerid parsing function to handle malformed input strings and
strings containing escaped and unescaped double quotes. This also
adds a unittest to cover many of the cases where the parsing
algorithm previously failed. Review:
https://reviewboard.asterisk.org/r/3923/ Review:
https://reviewboard.asterisk.org/r/3933/ ........ Merged
revisions 422112 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 422113 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 422114 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-26 23:28 +0000 [r422091] George Joseph <george.joseph@fairview5.com>
* apps/app_confbridge.c, /: confbridge: Make kick, mute and unmute
handle channel targets consistently. Kick, mute and unmute were a
little inconsistent in their handling of channel targets. This
patch cleans that up by insuring they all handle the 'all' target
consistently and adds the 'participants' target which acts on
non-admins. Documentation for kick was also cleaned up as it
never supported partial channel names. Tested by: George Joseph
Review: https://reviewboard.asterisk.org/r/3944/ ........ Merged
revisions 422090 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-26 22:13 +0000 [r422071] Mark Michelson <mmichelson@digium.com>
* main/sched.c, /: Fix race condition in the scheduler when
deleting a running entry. When scheduled tasks run, they are
removed from the heap (or hashtab). When a scheduled task is
deleted, if the task can't be found in the heap (or hashtab), an
assertion is triggered. If DO_CRASH is enabled, this assertion
causes a crash. The problem is, sometimes it just so happens that
someone attempts to delete a scheduled task at the time that it
is running, leading to a crash. This change corrects the issue by
tracking which task is currently running. If that task is
attempted to be deleted, then we mark the task, and then wait for
the task to complete. This way, we can be sure to coordinate task
deletion and memory freeing. ASTERISK-24212 Reported by Matt
Jordan Review: https://reviewboard.asterisk.org/r/3927 ........
Merged revisions 422070 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-25 16:44 +0000 [r421979-422037] Richard Mudgett <rmudgett@digium.com>
* res/res_musiconhold.c: res_musiconhold.c: Release any format refs
before memset(). * Clear the channel music_state pointer before
destroying the music_state object for safety.
* res/res_musiconhold.c, /: res_musiconhold: Fix MOH restarting
where it left off from the last hold. Restore code removed by
https://reviewboard.asterisk.org/r/3536/ that introduced a
regression that prevents MOH from restarting were it left off the
last time. ASTERISK-24019 #close Reported by: Jason Richards
Patches: jira_asterisk_24019_v1.8.patch (license #5621) patch
uploaded by rmudgett Review:
https://reviewboard.asterisk.org/r/3928/ ........ Merged
revisions 421976 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421977 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421978 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-24 19:36 +0000 [r421911-421956] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_transport_websocket.c, /:
res_pjsip_transport_websocket: Attach the Websocket module on
outgoing INVITEs. In order to alter the Contact header on
in-dialog requests and responses the Websocket module must be
attached on outgoing INVITEs. The Contact header is modified so
that the PJSIP transport layer can find and use the existing
Websocket connection based on the source IP address, port, and
transport. ASTERISK-24143 #close Reported by: Aleksei Kulakov
........ Merged revisions 421955 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_transport_websocket.c:
res_pjsip_transport_websocket: Fix a progressive memory growth.
The packet structure used to receive messages was using the
transport pool. This meant that for each parsing the pool would
grow accordingly. Since memory can not be reclaimed without
resetting it this would cause the memory pool to grow and grow.
This change uses a specific memory pool for the packet structure
and resets it to a fresh state after the message has been
received and handled. ........ Merged revisions 421939 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_transport_websocket.c:
res_pjsip_transport_websocket: Ensure secure Websocket clients
can be called. This change enforces the transport in the Contact
header for Websocket clients. Previously a client may provide a
transport of 'ws' when it is actually using a transport of 'wss'.
This would cause outgoing calls to fail as the existing
connection could not be found. ........ Merged revisions 421931
from http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: chan_sip: Use the server reflexive ICE
candidate RTCP port as provided. This code originally worked
around an issue within res_rtp_asterisk itself. The wrong socket
was being used for the STUN check for RTCP, causing the port to
be the same as RTP. This was subsequently fixed and the RTCP port
provided for the ICE candidate is correct and does not need to be
incremented. ASTERISK-23997 #close Reported by: Badalian
Vyacheslav Patches: plus1.diff submitted by Badalian Vyacheslav
(license 5249) ........ Merged revisions 421909 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421910 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-22 16:56 +0000 [r421882] Mark Michelson <mmichelson@digium.com>
* apps/app_mixmonitor.c: Fix a locking inversion in MixMonitor. We
need to unlock the audiohook before trying to lock the channel,
since the correct locking order is channel then audiohook.
2014-08-22 16:44 +0000 [r421880] Jonathan Rose <jrose@digium.com>
* res/res_stasis_answer.c, res/res_stasis.c, res/stasis/command.c,
res/res_stasis_playback.c, /, res/stasis/control.c,
res/stasis/stasis_bridge.c, res/stasis/command.h,
include/asterisk/stasis_app_impl.h, res/res_stasis_recording.c:
ARI: Fix a crash caused by hanging during playback to a channel
in a bridge ASTERISK-24147 #close Reported by: Edvin Vidmar
Review: https://reviewboard.asterisk.org/r/3908/ ........ Merged
revisions 421879 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-22 14:08 +0000 [r421860] Matthew Jordan <mjordan@digium.com>
* main/message.c, /: main/message: Add a new-line to a DEBUG
message ........ Merged revisions 421859 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-21 22:07 +0000 [r421802] Richard Mudgett <rmudgett@digium.com>
* /, res/res_musiconhold.c: res_musiconhold.c: Remove obsolete
REF_DEBUG code. Remove unneeded code that writes to the wrong
file location in an obsolete format. ........ Merged revisions
421799 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 421800 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421801 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-21 21:42 +0000 [r421790-421797] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_session.c, /: Switch from hostname to an IP address
in the SDP origin line. Using the hostname in the SDP origin line
may not satisfy the requirement of RFC 4566 that we use a FQDN or
IP address. This change has us use the same information from the
SDP connection line if possible. If not possible, we'll use the
configured media address. And if that's not possible, we use the
result of a PJLIB call to get the IP address of ourself.
ASTERISK-23994 #close Reported by Private Name Review:
https://reviewboard.asterisk.org/r/3925 ........ Merged revisions
421796 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/stasis/control.c: Ensure after-bridge behavior is correct
when moving from Stasis to a non-Stasis bridge. Because of the
departable state of channels that enter Stasis bridges, Stasis
has to take responsibility for directing the channel to its
intended after-bridge destination if the channel moves from a
Stasis bridge to a non-Stasis bridge. This change ensures that
when such a move occurs, when the channel leaves the bridging
system, any after bridge gotos are honored. Review:
https://reviewboard.asterisk.org/r/3920 ........ Merged revisions
421792 from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_caller_id.c, /: Let's try checking the name and
number, instead of the name twice. ........ Merged revisions
421789 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-21 21:25 +0000 [r421788] Jonathan Rose <jrose@digium.com>
* /, res/res_musiconhold.c: res_musiconhold: Fix reference leaks
caused when reloading with REF_DEBUG set Due to a faulty function
for debugging reference decrementing, it was possible to reduce
the refcount on the wrong object if two moh classes of the same
name were in the moh class container. (closes issue
ASTERISK-22252) Reported by: Walter Doekes Patches:
18_moh_debug_ref_patch.diff Uploaded by Jonathan Rose (license
6182) ........ Merged revisions 398937 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421777 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421779 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-21 21:18 +0000 [r421783] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_caller_id.c: Improve consistency of party ID
privacy usage. Prior to this change, the Remote-Party-ID header
took the position of "If caller name and number are not
explicitly allowed, then they are private" and
P-Asserted-Identity took the position of "Caller name and number
are only private if marked explicitly so" Now both mechanisms of
conveying party identification use the former approach. ........
Merged revisions 421778 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-21 17:34 +0000 [r421675-421720] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: chan_sip: Don't use port derived from
fromdomain if it isn't set If a user does not provide a port in
the fromdomain setting, chan_sip will set the fromdomainport to
STANDARD_SIP_PORT (5060). The fromdomainport value will then get
used unilaterally in certain places. This causes issues with TLS,
where the default port is expected to be 5061. This patch
modifies chan_sip such that fromdomainport is only used if it is
not the standard SIP port; otherwise, the port from the SIP pvt's
recorded self IP address is used. Review:
https://reviewboard.asterisk.org/r/3893/ ASTERISK-24178 #close
Reported by: Elazar Broad patches: fromdomainport_fix.diff
uploaded by Elazar Broad (License 5835) ........ Merged revisions
421717 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 421718 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421719 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, UPGRADE.txt, main/app.c: ARI: Fix implicit answer when
playback is initiated on unanswered channel When issuing a POST
/channels/{channel_id}/play on a channel that is not yet
answered, ARI is supposed to: * Queue up an AST_CONTROL_PROGRESS
on the channel * Start up the playback of the media Instead, we
sneak an answer on the channel right before starting playing
media. This is due to ARI's usage of control_streamfile. This
function implicitly answers the channel (and doesn't give ARI the
option to stop it). The answering of the channel here is probably
unnecessary: * app_voicemail, by far the biggest consumer of this
function, always answers the channels anyway * control stream
file (in res_agi) and ControlPlayback probably shouldn't be
implicitly answering the channel. Answering should not be tied
directly to playing back media. As it turns out, the answering of
the channel here is pretty old: 356042 twilson if
(ast_channel_state(chan) != AST_STATE_UP) { 3087 anthm res =
ast_answer(chan); 180259 tilghman } (As in, ancient?) Note that
others ran into this problem and commented about it on various
mailing lists. Review: https://reviewboard.asterisk.org/r/3907/
ASTERISK-24229 #close Reported by: Matt Jordan ........ Merged
revisions 421695 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/stasis/messaging.h, main/dns.c, /, main/format_cache.c: Clean
up files that do not end with newlines Trivial patch to add new
lines to several files missing them. This fixes warnings when
compiling with gcc 4.1.2 on CentOS 5. ASTERISK-24245 #close
Reported by: Shaun Ruffell patches:
0002-Trivial-addition-of-newlines-at-end-of-three-files.patch
uploaded by Shaun Ruffell (License 5417) ........ Merged
revisions 421677 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/uri.h, main/uri.c: uri: Quiet warning about type
qualifiers ignored on function return type This patch fixes gcc
warnings that occur due to the type qualifier 'const' being
ignored on a return type of int. ASTERISK-24246 #close Reported
by: Shaun Ruffell patches:
0001-main-uri-Quiet-warning-about-ignored-attribute-on-re.patch
uploaded by Shaun Ruffell (License 5417)
2014-08-20 22:49 +0000 [r421616-421645] Richard Mudgett <rmudgett@digium.com>
* main/bridge.c, res/res_pjsip_sdp_rtp.c, main/file.c,
main/bridge_channel.c, channels/chan_pjsip.c, main/channel.c:
chan_pjsip: Update media translation paths when new SDP
negotiated. On a SIP reinvite that changes media strams, the
PJSIP channel driver was flooding the log with "Asked to transmit
frame type %s, while native formats is %s" warnings. * Fixes
PJSIP not setting up translation paths when the formats change on
a reinvite. AFS-63 was effectively reintroduced because of the
media formats work. res_pjsip_sdp_rtp.c:set_caps() * Improved the
unexpected frame format WARNING message to include more
information. * Added protective locking while altering formats on
a channel. Reworked set_format() to simplify and protect the
formats under manipulation. * Restored some code that got lost in
the media_formats work. (channel.c:set_format() and
res_pjsip_sdp_rtp.c:set_caps()) AFS-137 #close Reported by: Mark
Michelson Review: https://reviewboard.asterisk.org/r/3906/
* /, main/cli.c: cli.c: Fix tab completion of "module load" when
MALLOC_DEBUG is enabled. filename_completion_function() returns
memory that was not allocated by the MALLOC_DEBUG allocation
tracker so the memory must be freed by ast_std_free(). ........
Merged revisions 421600 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421602 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421608 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-20 20:40 +0000 [r421566-421585] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pubsub.c: Set the role for inbound subscriptions
correctly. This was causing the AMI show_subscriptions test in
the testsuite to fail since all subscriptions were being seen as
subscribers instead of notifiers.
* /, channels/chan_pjsip.c: Move evaluation of set_var options in
pjsip to the end of channel initialization. This allows for
set_var to override certain defaults such as caller ID and codec
values. This also fixes a test suite regression. The "set_var"
test suite test attempted to use set_var to override caller ID,
but a recent change caused that to no longer work. ........
Merged revisions 421565 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-20 13:04 +0000 [r421538] Kinsey Moore <kmoore@digium.com>
* include/asterisk/stasis_bridges.h, tests/test_cel.c,
res/ari/ari_model_validators.c, main/stasis_bridges.c,
res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /,
res/stasis/app.c, main/bridge.c: Stasis: Add information to blind
transfer event When a blind transfer occurs that is forced to
create a local channel pair to satisfy the transfer request,
information about the local channel pair is not published. This
adds a field to describe that channel to the blind transfer
message struct so that this information is conveyed properly to
consumers of the blind transfer message. This also fixes a bug in
which Stasis() was unable to properly identify the channel that
was replacing an existing Stasis-controlled channel due to a
blind transfer. Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3921/ ........ Merged
revisions 421537 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-19 20:28 +0000 [r421448-421488] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip.c: Alter documentation for callerid_privacy to
use correct values. ........ Merged revisions 421485 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis.c, /: Fix compilation error on certain versions of
GCC. ........ Merged revisions 421447 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-19 19:42 +0000 [r421445] Kinsey Moore <kmoore@digium.com>
* main/manager.c, /: AMI Docs: Fix Status channel parameter
optionality ........ Merged revisions 421442 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421443 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421444 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-19 16:28 +0000 [r421423] Jonathan Rose <jrose@digium.com>
* res/res_stasis.c, /: ARI: Fix a bug where
/channels/{channelID}/continue doesn't execute PBX If
/channels/{channelID}/continue is called on a channel that was
originated without a PBX (such as the ARI command POST channel
with a stasis application argument), the channel will not start
dialplan execution. This patch will now run the PBX out of the
stasis execution if the channel doesn't currently have an active
PBX upon continuing. ASTERISK-24043 #close Reported by: Krandon
Bruse Review: https://reviewboard.asterisk.org/r/3917/ Patches:
stasis-continue.diff submitted by Krandon Bruse (license 6631)
........ Merged revisions 421416 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-19 16:11 +0000 [r421403] Richard Mudgett <rmudgett@digium.com>
* /, res/res_pjsip_caller_id.c, channels/chan_pjsip.c,
res/res_pjsip_session.c: chan_pjsip: Fix attended transfer
connected line name update. A calls B B answers B SIP attended
transfers to C C answers, B and C can see each other's connected
line information B completes the transfer A has number but no
name connected line information about C while C has the full
information about A I examined the incoming and outgoing party id
information handling of chan_pjsip and found several issues: *
Fixed ast_sip_session_create_outgoing() not setting up the
configured endpoint id as the new channel's caller id. This is
why party A got default connected line information. * Made
update_initial_connected_line() use the channel's CALLERID(id)
information. The core, app_dial, or predial routine may have
filled in or changed the endpoint caller id information. * Fixed
chan_pjsip_new() not setting the full party id information
available on the caller id and ANI party id. This includes the
configured callerid_tag string and other party id fields. * Fixed
accessing channel party id information without the channel lock
held. * Fixed using the effective connected line id without doing
a deep copy outside of holding the channel lock. Shallow copy
string pointers can become stale if the channel lock is not held.
* Made queue_connected_line_update() also update the channel's
CALLERID(id) information. Moving the channel to another bridge
would need the information there for the new bridge peer. * Fixed
off nominal memory leak in update_incoming_connected_line(). *
Added pjsip.conf callerid_tag string to party id information from
enabled trust_inbound endpoint in caller_id_incoming_request().
AFS-98 #close Reported by: Mark Michelson Review:
https://reviewboard.asterisk.org/r/3913/ ........ Merged
revisions 421400 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-18 21:10 +0000 [r421376] Damien Wedhorn <voip@facts.com.au>
* channels/chan_skinny.c: Skinny: Fixup compile warning for non
dev-mode.
2014-08-18 20:19 +0000 [r421337] George Joseph <george.joseph@fairview5.com>
* funcs/func_config.c, /: func_config: Change 'Not Found' message
from ERROR to DEBUG When you call the CONFIG dialplan function
with the name of a variable that doesn't exist in the target
context you get an ERROR. This does nothing but clutter up the
logs with messages that may be perfectly acceptable. Just because
a variable wasn't in the context doesn't mean it's an error.
Maybei t's optional or just needs to be defaulted or ignored.
This patch changes the log level from ERROR to DEBUG. If a
dialplan developer wants to debug their dialplan they still canby
setting the console debug level as needed. Tested by: George
Joseph Review: https://reviewboard.asterisk.org/r/3919/ ........
Merged revisions 421327 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421328 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421329 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-18 01:13 +0000 [r421230-421312] Matthew Jordan <mjordan@digium.com>
* res/ari/resource_channels.c: res/ari/resource_channels: Fix
compilation issue Forgot a parameter. Whoops.
* res/ari/resource_channels.c: res/ari/resource_channels: Don't
return allocation failure on failed function If a function fails
to execute, it is most likely due to one of two reasons: (1) The
function doesn't exist or can't be read from (2) The function is
dangerous and is restricted based on the user's permissions
Currently we return allocation failure, which is incorrect. This
updates the reason code to more accurately reflect why the
request failed. ASTERISK-24215
* /, apps/app_meetme.c: apps/app_meetme: Fix crash when publishing
MeetMe messages with no channel The same function,
meetme_stasis_generate_msg, handles creating and publishing
Stasis message both when there are channels in the MeetMe
conference and when there are no channels in the conference. When
the performance improvement was made to use cached snapshots,
this created a situation where Asterisk would crash: obtaining a
cached snapshot is not NULL tolerant. This patch restores the
previous implementation, which used a NULL safe set of routines
to produce a blob containing the channel snapshot (if available)
and information about the MeetMe conference. ASTERISK-24234
#close Reported by: Shaun Ruffell Tested by: Shaun Ruffell
........ Merged revisions 421270 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_dial.c, /: apps/app_dial: Fix Dial 'z' option The 'z'
option is supposed to disable the dial timeout in the case of a
call forward. Unfortunately, the wrong timeout timer was passed
to the do_forward function, resulting in the option not working.
ASTERISK-24225 #close Reported by: dimitripietro Tested by:
dimitripietro patches: jira_asterisk_24225_v1.8.patch uploaded by
rmudgett (License 5621) jira_asterisk_24225_v11.patch uploaded by
rmudgett (License 5621) ........ Merged revisions 421232 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421233 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421234 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, configure, configure.ac: configure: Undefine FORTIFY_SOURCE
prior to defining it for patched gcc Some distributions of Linux
patch gcc to define FORTIFY_SOURCE when gcc is executed with
optimization. This "help" unfortunately results in re-definition
warnings when FORTIFY_SOURCE is later defined in Asterisk's build
system. This patch undefines FORTIFY_SOURCE prior to defining it
to prevent this warning. Review:
https://reviewboard.asterisk.org/r/3912/ ASTERISK-24032 #close
Reported by: Kilburn Tested by: Kilburn, wdoekes patches:
1.8.diff uploaded by cloos (License 5956) 10.diff uploaded by
cloos (License 5956) 11.diff uploaded by cloos (License 5956)
12.diff uploaded by cloos (License 5956) 13.diff uploaded by
cloos (License 5956) ........ Merged revisions 421227 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421228 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421229 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-17 16:10 +0000 [r421210] Joshua Colp <jcolp@digium.com>
* res/res_http_websocket.c: res_http_websocket: Include query
parameters in client connection requests. Review:
https://reviewboard.asterisk.org/r/3914/
2014-08-15 17:08 +0000 [r421187] Jonathan Rose <jrose@digium.com>
* main/channel.c, /: Bridging: Fix a behavioral change when
checking if a channel is leaving a bridge r420934 introduced some
failures in the test suite. Upon investigating, it was discovered
that differences in the way we were evaluating whether a channel
was in the process of leaving a bridge were causing some
reinvites not to occur (mostly reinvites back to Asterisk when
ending a call). This patch fixes that behavioral change.
ASTERISK-24027 #close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3910/ ........ Merged
revisions 421186 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-15 15:45 +0000 [r421042-421166] Matthew Jordan <mjordan@digium.com>
* apps/app_voicemail.c, /, main/app.c: app_voicemail/app: Remove
test events that were duplicated by r421059 Moving the test event
raised when a file is played back (which occurred in r421059)
broke the ever loving snot out of the voicemail tests. This
caused duplicate test events to get raised, as app_voicemail and
main/app were raising events prior to call ast_streamfile. The
voicemail tests did not enjoy getting multiple events. Since
raising the playback event in ast_streamfile is far more useful
to the vast majority of tests, this patch keeps the call there
and simply removes the extraneous calls that duplicated the
event. ........ Merged revisions 421125 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421164 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421165 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_hep_rtcp.c, /: res/res_hep_rtcp: Remove dependency on
PJSIP The res_hep_rtcp module was incorrectly including
<pjsip.h>. This didn't need to be included, as the module does
not using PJPROJECT any fashion. Unfortunately, because
res_hep_rtcp did not include pjsip in its MODULEINFO as a
dependency, this also meant that res_hep_rtcp will fail to
compile on a system without PJPROJECT. This patch removes the
include. Thanks to Damien Wedhorn for pointing this out in
#asterisk-dev. ASTERISK-24236 #close Reported by: Damien Wedhorn,
Matt Jordan Tested by: Damien Wedhorn ........ Merged revisions
421064 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/file.c, main/app.c: main/file: Move test event to emit
PLAYBACK event more consistently This is being done in advance of
the test for ASTERISK-23953 ........ Merged revisions 421059 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 421060 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 421061 from
http://svn.asterisk.org/svn/asterisk/branches/12
* tests/test_cel.c, main/cel.c, /: cel: Make sure channels in extra
fields include their unique IDs as well CEL typically tracks a
lot of information using the unique ID of the channel. This is
typically needed due to tying events together using the linked ID
of the various channels involved in a "call", which is derived
from the channel ID of the oldest channel involved in a bridge
(or in the case of a Dial, the parent channel). Previously, we
had updated the extra fields to include the involved channel
names, but forgot to put in the unique ID. This patch corrects
that error. ........ Merged revisions 421037 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-14 16:32 +0000 [r420957-421010] Richard Mudgett <rmudgett@digium.com>
* /, res/ari/resource_channels.c: ARI: Originate to app local
channel subscription code optimization. Reduce the scope of
local_peer and only get it if the ARI originate is subscribing to
the channels. Review: https://reviewboard.asterisk.org/r/3905/
........ Merged revisions 421009 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/channel_internal_api.c, main/channel.c:
channel_internal_api.c: Replace some code with ao2_replace(). Use
ao2_replace() instead of ao2_cleanup(); ao2_bump(). ao2_replace()
has the advantange of not altering the ref count if the replaced
pointer is the same. Review:
https://reviewboard.asterisk.org/r/3904/
* /, res/res_pjsip_send_to_voicemail.c:
res_pjsip_send_to_voicemail.c: Fix svn file properties. ........
Merged revisions 420956 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-13 16:53 +0000 [r420950] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip.c, /: PJSIP: Prevent crash no-URI contacts This
prevents a crash from occurring when a contact with no URI is
used for the creation of an outbound out-of-dialog request with
no associated endpoint. ........ Merged revisions 420949 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-13 16:07 +0000 [r420940] Jonathan Rose <jrose@digium.com>
* main/bridge_after.c, main/channel_internal_api.c,
include/asterisk/channel.h, apps/app_chanspy.c,
apps/app_mixmonitor.c, apps/app_stack.c, main/bridge_channel.c,
main/channel.c, main/pbx.c, /, main/framehook.c: Bridges: Fix
feature interruption/unintended kick caused by external actions
If a manager or CLI user attached a mixmonitor to a call running
a dynamic bridge feature while in a bridge, the feature would be
interrupted and the channel would be forcibly kicked out of the
bridge (usually ending the call during a simple 1 to 1 call).
This would also occur during any similar action that could set
the unbridge soft hangup flag, so the fix for this was to remove
unbridge from the soft hangup flags and make it a separate thing
all together. ASTERISK-24027 #close Reported by: mjordan Review:
https://reviewboard.asterisk.org/r/3900/ ........ Merged
revisions 420934 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-13 14:24 +0000 [r420919] Kinsey Moore <kmoore@digium.com>
* main/manager.c: AMI: Improve documentation for Status action
2014-08-13 07:52 +0000 [r420899] Walter Doekes <walter+asterisk@wjd.nu>
* /, main/logger.c: logger: Don't store verbose-magic in the log
files. In r399267, the verbose2magic stuff was edited. This time
it results in magic characters in the log files for multiline
messages. In trunk (and 13) this was fixed by the "stripping" of
those characters from multiline messages (in r414798). This fix
is altered to actually strip the characters and not replace them
with blanks. Review: https://reviewboard.asterisk.org/r/3901/
Review: https://reviewboard.asterisk.org/r/3902/ ........ Merged
revisions 420897 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 420898 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-12 23:43 +0000 [r420879-420881] Richard Mudgett <rmudgett@digium.com>
* channels/chan_sip.c: chan_sip: Fix type mismatch when the format
is changed. Symptom is most likely an invalid ao2 object bad
magic number message or a less likely crash.
* res/res_stasis_snoop.c: res_stasis_snoop.c: Fix off nominial exit
path leaving Snoop channel locked and not hungup. * Made use
ast_copy_string() instead of strcpy() for snoop uniqueid for
safety. There is no guarantee that the max channel uniqueid
length will remain the same as the snoop uniqueid space.
2014-08-12 11:17 +0000 [r420856] Joshua Colp <jcolp@digium.com>
* apps/app_voicemail.c: app_voicemail: Fix the
"test_voicemail_vm_info" unit test.
2014-08-11 20:53 +0000 [r420837] Richard Mudgett <rmudgett@digium.com>
* res/stasis/command.c, /: res/stasis/command.c: Fix recent commit
using spaces instead of tabs. ........ Merged revisions 420836
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-11 18:50 +0000 [r420808] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/playbacks.json,
rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json,
rest-api/resources.json, include/asterisk/manager.h,
rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json,
rest-api/api-docs/deviceStates.json,
rest-api/api-docs/endpoints.json,
rest-api/api-docs/mailboxes.json, rest-api/api-docs/events.json,
/, rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json: AMI/ARI: Update version to
2.5.0/1.5.0 respectively This is to support the backwards
compatible changes made in the next version of Asterisk. ........
Merged revisions 420805 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-11 18:46 +0000 [r420796-420803] Kinsey Moore <kmoore@digium.com>
* /, res/res_stasis.c: Stasis: Use the correct return value Return
the correct value instead of always returning 0 when setting
internal status on unreal channels. Reported by: Richard Mudgett
........ Merged revisions 420802 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis.c, res/ari/resource_bridges.c, /,
res/stasis/stasis_bridge.c, include/asterisk/stasis_app.h:
Stasis: Allow internal channels directly into bridges The patch
to catch channels being shoehorned into Stasis() via external
mechanisms also happens to catch Announcer and Recorder channels
because they aren't known to be stasis-controlled channels in the
usual sense. This marks those channels as Stasis()-internal
channels and allows them directly into bridges. Review:
https://reviewboard.asterisk.org/r/3903/ ........ Merged
revisions 420795 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-11 18:32 +0000 [r420758-420794] Mark Michelson <mmichelson@digium.com>
* include/asterisk/stasis_app.h, main/stasis_channels.c,
res/ari/resource_channels.c, CHANGES, res/res_pjsip_pubsub.c,
main/manager_channels.c, apps/app_dial.c, res/stasis/app.c,
res/stasis/control.c: Improve call forwarding reporting,
especially with regards to ARI. This patch addresses a few
issues: 1) The order of Dial events have been changed when
performing a call forward. The order has now been altered to 1)
Dial begins dialing channel A. 2) When A forwards the call to B,
we issue the dial end event to channel A, indicating the dial is
being canceled due to a forward to B. 3) When the call to channel
B occurs, we then issue a new dial begin to channel B. 2) Call
forwards are now reported on the calling channel, not the peer
channel. 3) AMI DialEnd events have been altered to display the
extension the call is being forwarded to when relevant. 4) You
can now get the values of channel variables for channels that are
not currently in the Stasis application. This brings the
retrieval of channel variables more in line with the rest of
channel read operations since they may be performed on channels
not in Stasis. ASTERISK-24134 #close Reported by Matt Jordan
ASTERISK-24138 #close Reported by Matt Jordan Patches:
forward-shenanigans.diff uploaded by Matt Jordan (License #6283)
Review: https://reviewboard.asterisk.org/r/3899
* res/res_pjsip_pubsub.c: Fix crashing unit tests with regards to
RLS. The unit tests require a sorcery.conf file that has been set
up to store resource lists in memory rather than retrieving from
configuration. With a setup that is not conducive to running the
tests, a fault in sorcery currently causes Asterisk to crash when
attempting to run any of the tests. To get around the crash, this
adds a function that verifies the current environment and marks
the tests as "not run" if the setup is not correct.
* res/res_pjsip_pubsub.c: Fix crash encountered by the testsuite.
Running testsuite tests locally produced no errors, but when run
using the continuous integration framework, crashes occurred. The
crashes occurred due to a refcounting error that had been fixed
for a similar situation.
2014-08-11 13:57 +0000 [r420742] Matthew Jordan <mjordan@digium.com>
* res/res_hep.c, res/res_hep_pjsip.c, res/res_hep_rtcp.c: res_hep:
Remove disabling of modules These modules were originally
specified as being disabled, as they were introduced midstream in
Asterisk 12. That makes it nicer for folks who are upgrading to a
new release in the middle of Asterisk 12. That's not the case for
Asterisk 13: it's a brand new release. There's no reason to have
the modules disabled by default in that case.
2014-08-11 10:40 +0000 [r420657-420717] Walter Doekes <walter+asterisk@wjd.nu>
* /, main/utils.c: general: Fix memory Corruption in
__ast_string_field_ptr_build_va. If the space left in a
stringfield is between 0 and
(alignof(ast_string_field_allocation)-1) adding new data would
cause memory corruption, because we would assume enough space
(unsigned underrun). Thanks Arnd Schmitter for reporting and
finding out the cause! ASTERISK-23508 #close Reported by: Arnd
Schmitter Tested by: Arnd Schmitter, JoshE Review:
https://reviewboard.asterisk.org/r/3898/ ........ Merged
revisions 420680 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 420715 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 420716 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/tcptls.c, /: tcptls: Avoid compiler warning on non-dev-mode.
........ Merged revisions 420654 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 420655 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 420656 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-11 01:31 +0000 [r420607-420639] Matthew Jordan <mjordan@digium.com>
* funcs/func_jitterbuffer.c: funcs/func_jitterbuffer: Tweak
documentation This patch merely reformats and cleans up a bit of
the jitterbuffer documentation for the wiki.
* UPGRADE.txt, configs/samples/extconfig.conf.sample, CHANGES,
apps/app_queue.c,
contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py
(added), configs/samples/queuerules.conf.sample: app_queue: Add
RealTime support for queue rules This patch gives the optional
ability to keep queue rules in RealTime. It is important to note
that with this patch: (a) Queue rules in RealTime are only
examined on module load/reload (b) Queue rules are loaded both
from the queuerules.conf file as well as the RealTime backend To
inform app_queue to examine RealTime for queue rules, a new
setting has been added to queuerules.conf's general section
"realtime_rules". RealTime queue rules will only be used when
this setting is set to "yes". The schema for the database table
supports a rule_name, time, min_penalty, and max_penalty columns.
min_penalty and max_penalty can be relative, if a '-' or '+'
literal is provided. Otherwise, the penalties are treated as
constants. For example: rule_name, time, min_penalty, max_penalty
'default', '10', '20', '30' 'test2', '20', '30', '55' 'test2',
'25', '-11', '+1111' 'test2', '400', '112', '333' 'test3', '0',
'4564', '46546' 'test_rule', '40', '15', '50' which would result
in : Rule: default - After 10 seconds, adjust QUEUE_MAX_PENALTY
to 30 and adjust QUEUE_MIN_PENALTY to 20 Rule: test2 - After 20
seconds, adjust QUEUE_MAX_PENALTY to 55 and adjust
QUEUE_MIN_PENALTY to 30 - After 25 seconds, adjust
QUEUE_MAX_PENALTY by 1111 and adjust QUEUE_MIN_PENALTY by -11 -
After 400 seconds, adjust QUEUE_MAX_PENALTY to 333 and adjust
QUEUE_MIN_PENALTY to 112 Rule: test3 - After 0 seconds, adjust
QUEUE_MAX_PENALTY to 46546 and adjust QUEUE_MIN_PENALTY to 4564
Rule: test_rule - After 40 seconds, adjust QUEUE_MAX_PENALTY to
50 and adjust QUEUE_MIN_PENALTY to 15 If you use RealTime, the
queue rules will be always reloaded on a module reload, even if
the underlying file did not change. With the option disabled, the
rules will only be reloaded if the file was modified. Review:
https://reviewboard.asterisk.org/r/3607/ ASTERISK-23823 #close
Reported by: Michael K patches: app_queue.c_realtime_trunk.patch
uploaded by Michael K (License 6621)
* CHANGES: Update CHANGES file
* UPGRADE.txt: Update UPGRADE.txt file
2014-08-08 20:08 +0000 [r420577-420592] Jason Parker <jparker@digium.com>
* apps/app_voicemail.c: Fix build in devmode.
* CHANGES, configs/samples/voicemail.conf.sample,
apps/app_voicemail.c: app_voicemail: Add the ability to specify
multiple email addresses. ASTERISK-24045 Reported by: Jacob
Barber Review: https://reviewboard.asterisk.org/r/3833/
2014-08-08 17:53 +0000 [r420534-420562] Matthew Jordan <mjordan@digium.com>
* channels/chan_sip.c, channels/sip/security_events.c,
channels/sip/dialplan_functions.c, channels/sip/reqresp_parser.c,
channels/sip/route.c, channels/sip/utils.c,
channels/sip/config_parser.c: chan_sip: Mark chan_sip and its
files as extended support
* rest-api-templates/make_ari_stubs.py: make_ari_stubs: Update wiki
prefix to '13'
* rest-api-templates/res_ari_resource.c.mustache:
res_ari_resource.c.mustache: Update template to emit module
support level
* main/message.c, /: main/message: remove debug message ........
Merged revisions 420533 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-08 03:03 +0000 [r420514] Kinsey Moore <kmoore@digium.com>
* tests/test_cel.c, /: CEL: Update unit tests for additional
information This updates the CEL unit tests for the new
information contained in the attended transfer CEL extra field.
........ Merged revisions 420513 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-08 01:31 +0000 [r420494-420496] Matthew Jordan <mjordan@digium.com>
* UPGRADE.txt: Update UPGRADE file for 13 branch
* /: Remove old properties
* / (added): ___ _ _ _ __ _____ / _ \ | | (_) | | / ||____ | / /_\
\___| |_ ___ _ __ _ ___| | __ `| | / / | _ / __| __/ _ | '__| /
__| |/ / | | \ \ | | | \__ | || __| | | \__ | < _| |.___/ / \_|
|_|___/\__\___|_| |_|___|_|\_\ \___\____/
2014-08-07 21:58 +0000 [r420437] Richard Mudgett <rmudgett@digium.com>
* /, channels/chan_sip.c: chan_sip: Replace sip_tls_read() and
resolve the large SDP poll issue. Replace sip_tls_read() and
sip_tcp_read() with a single function and resolve the poll/wait
issue with large SDP payloads. ASTERISK-18345 #close Reported by:
Stephane Chazelas Patches: tcptls_pollv4.diff (license #5835)
patch uploaded by Elazar Broad Review:
https://reviewboard.asterisk.org/r/3882/ ........ Merged
revisions 420434 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 420435 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 420436 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-07 21:17 +0000 [r420389-420415] Kinsey Moore <kmoore@digium.com>
* main/stasis_bridges.c, /: Stasis: Correct blind transfer message
generation This fixes the json object creation format string and
key name for the BridgeBlindTransfer Stasis event allowing it to
be published properly. ........ Merged revisions 420414 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_bridges.c, /: Stasis: Ensure transfer messages follow
validation rules This makes Stasis() event generation for
transfer messages follow validation rules. Currently,
ast_json_null() is being used in place of omitting a key entirely
which falls afoul of these validation rules.
https://reviewboard.asterisk.org/r/3892/ ........ Merged
revisions 420408 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pubsub.c: Fix build in dev mode
2014-08-07 19:44 +0000 [r420384-420388] Mark Michelson <mmichelson@digium.com>
* /, main/bridge.c: Ensure bridges exist when trying to determine
bridged parties when publishing transfer information. ........
Merged revisions 420387 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/strings.c, include/asterisk/res_pjsip_presence_xml.h,
res/res_pjsip_mwi.c, res/res_pjsip_dialog_info_body_generator.c,
res/res_pjsip_xpidf_body_generator.c, include/asterisk/strings.h,
res/res_pjsip_pubsub.c, res/res_pjsip_exten_state.c,
include/asterisk/res_pjsip_pubsub.h,
res/res_pjsip_pidf_body_generator.c: Add support for RFC 4662
resource list subscriptions. This commit adds the ability for a
user to configure a resource list in pjsip.conf. Subscribing to
this list simultaneously subscribes the subscriber to all
resources listed. This has the potential to reduce the amount of
SIP traffic when loads of subscribers on a system attempt to
subscribe to each others' states.
2014-08-07 18:51 +0000 [r420364] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/format_compatibility.h,
channels/iax2/format_compatibility.c,
channels/iax2/include/codec_pref.h, main/format_compatibility.c,
channels/chan_iax2.c, channels/iax2/codec_pref.c,
channels/iax2/include/format_compatibility.h: chan_iax2: Several
media format fixes. * Fixed the iax.conf bandwidth option. This
is the root cause of ASTERISK-24150. * Added checks in
iax2_request() to ensure that there are actual formats requested
for the new channel to prevent any more fracks from issues like
ASTERISK-24150. This is a consequence of the iax.conf bandwidth
option not working. * Fixed struct iax2_codec_pref.order member
size mismatch issue when converting to and from the codec
preference order list passed over the wire. In addition the
values sent over the wire are now compatible with previous
Asterisk versions. * Fixed several issues dealing with the struct
iax2_codec_pref members. Off-by-one, array limit errors, and the
order/framing members always need to be updated together. * Made
iax2_request() setup the channel's native format preference order
according to the user's wishes. The new media format strategy
needs the order specified earler. * Fixed usage of
ast_format_compatibility_bitfield2format(). The function can
return NULL if the bitfield was not associated with a function. *
Deleted dead code iax2_codec_pref_getsize() and
iax2_codec_pref_setsize(). * Made iax2_parse_allow_disallow() and
iax2_codec_pref_string() call iax2_codec_pref_to_cap() instead of
inlining it. * Made IAX_CAPABILITY_MEDBANDWIDTH,
IAX_CAPABILITY_LOWBANDWIDTH, and IAX_CAPABILITY_LOWFREE constants
again as they were in Asterisk v1.8. * Renamed prefs to
prefs_global so it won't get confused with the local pref
versions. * Fixed too small buffer in
handle_cli_iax2_show_peer(). * Fixed ast_cli() calls in
handle_cli_iax2_show_peer() to output complete lines. * Changed
struct create_addr_info.prefs to be struct iax2_codec_pref as an
optimization so iax2_request() and iax2_call() do less work. *
Fixed a potential deadlock in ast_iax2_new() on an off-nominal
path when the pbx could not get started. * Made set_config()
setup a local prefs list along side the local capability format
bitfield. Once the config is loaded, then the local copies are
put into the global versions. * Fix unininialized codec_buf in
function_iaxpeer(). ASTERISK-24150 #close Reported by: Scott
Griepentrog Review: https://reviewboard.asterisk.org/r/3890/
2014-08-07 15:30 +0000 [r420338] Kinsey Moore <kmoore@digium.com>
* include/asterisk/bridge_features.h, res/res_stasis.c,
res/stasis/command.c, rest-api/api-docs/events.json, /,
res/stasis/app.c, res/stasis/control.c, main/bridge.c,
main/bridge_basic.c, res/stasis/stasis_bridge.c,
include/asterisk/stasis_bridges.h, res/stasis/command.h,
include/asterisk/stasis_app.h, res/stasis/app.h,
res/stasis/control.h, apps/app_queue.c,
res/ari/ari_model_validators.c, main/cel.c,
main/stasis_bridges.c, res/ari/ari_model_validators.h,
main/channel.c, include/asterisk/datastore.h, tests/test_cel.c:
Stasis: Convey transfer information to applications This fixes a
class of issues where Stasis applications were not made aware
that their channels were being manipulated or replaced by
external entitiessuch as transfers, AMI commands, or dialplan
applications such as Bridge(). Inconsistent information such as
StasisEnd events with unknown channels as a result of masquerades
has also been corrected. To accomplish these fixes, several new
fields were added to blind and attended transfer messages as well
as StasisStart and BridgeAttendedTransfer Stasis events.
ASTERISK-23941 #close Review:
https://reviewboard.asterisk.org/r/3865/ Review:
https://reviewboard.asterisk.org/r/3857/ Review:
https://reviewboard.asterisk.org/r/3852/ Review:
https://reviewboard.asterisk.org/r/3816/ Review:
https://reviewboard.asterisk.org/r/3731/ Review:
https://reviewboard.asterisk.org/r/3729/ Review:
https://reviewboard.asterisk.org/r/3728/ ........ Merged
revisions 420325 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-07 14:37 +0000 [r420314-420315] Joshua Colp <jcolp@digium.com>
* include/asterisk/res_pjsip_pubsub.h,
res/res_pjsip_pubsub.exports.in, res/res_pjsip_publish_asterisk.c
(added), res/res_pjsip_pubsub.c: res_pjsip_publish_asterisk: Add
support for exchanging device and mailbox state using SIP. This
module uses the inbound and outbound PUBLISH support to exchange
device and mailbox state between Asterisk instances. Each
instance is configured to publish to the other and requires no
intermediary server. The functionality provided is similar to the
XMPP and Corosync support. Review:
https://reviewboard.asterisk.org/r/3780/
* include/asterisk/res_pjsip_outbound_publish.h (added),
res/res_pjsip_outbound_publish.exports.in (added),
res/res_pjsip_outbound_publish.c (added):
res_pjsip_outbound_publish: Add module which provides outbound
PUBLISH support. This module implements the core parts required
for doing outbound PUBLISH. It takes care of configuration,
lifetime management, and authentication. Additional modules
implement the specific events that are published. Review:
https://reviewboard.asterisk.org/r/3780/
2014-08-07 14:17 +0000 [r420289-420309] Matthew Jordan <mjordan@digium.com>
* main/pbx.c: pbx: Filter out pattern matching hints in responses
sent to ExtensionStateList Hints that are a pattern match are
technically stored in the hint container in the same fashion as
concrete implementations of hints. The pattern matching hints,
however, are not "real" in the sense that things can subscribe to
them: rather, they are stored in the hints container so that when
a subscription is made a "real" hint can be generated for the
subscription if one does not yet exist. The extension state core
takes care of this correctly by matching against non-pattern
matching extensions prior to pattern matching extensions. Because
of this, however, the ExtensionStateList AMI action was returning
pattern matching hints when executed. These hints are meaningless
from the perspective of AMI clients: their state will never
change, they cannot be subscribed to, and events would never
normally be generated from them. As such, we now filter these out
of the response.
* build_tools/post_process_documentation.py: build_tools: Skip
managerEvent combining for AMI action responses AMI action
responses can (and will) reference AMI events that they return.
These event references and definitions should not be combined
with AMI events raised elsewhere in the code, as they are
specifically tied to the AMI action that raised them.
ASTERISK-24156 #close Reported by: Rusty Newton
2014-08-06 18:12 +0000 [r420212-420237] Richard Mudgett <rmudgett@digium.com>
* contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py,
/: Fix alembic script to work properly in offline mode. When run
in offline mode, this would attempt to check the database for the
presence of a type it was going to try to create. I now check the
context to see if we're running in offline mode and change a
parameter accordingly. ........ Merged revisions 407567 from
http://svn.asterisk.org/svn/asterisk/branches/12
* contrib/ast-db-manage/config/versions/3855ee4e5f85_add_missing_pjsip_options.py
(added), /: Add alembic script that adds contact user_agent and
endpoint message_context. ........ Merged revisions 411514 from
http://svn.asterisk.org/svn/asterisk/branches/12
* contrib/ast-db-manage/voicemail/versions/39428242f7f5_increase_recording_column_size.py
(added), /,
contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py,
contrib/ast-db-manage/config.ini.sample,
contrib/ast-db-manage/config/versions/1758e8bbf6b_increase_useragent_column_size.py
(added),
contrib/ast-db-manage/config/versions/5139253c0423_make_q_member_uniqueid_autoinc.py
(added), contrib/ast-db-manage/cdr.ini.sample,
contrib/ast-db-manage/voicemail.ini.sample: alembic: Adjust
sippeers, queue_members, and voicemail_messages tables. *
Increased the sippeers useragent max string size to 255. *
Changed the queue_members uniqueid to an auto incremented integer
instead of a string. * Increased the voicemail_messages BLOB size
to LONGBLOB on mysql. * Fixed the add_tables_for_pjsip config
change version downgrade actions to drop a table it created. *
Adjusted the sample alembic.ini files cdr.ini.sample,
config.ini.sample, and voicemail.ini.sample to give a mysql and
postgres sqlalchemy.url lines. ASTERISK-23847 #close Reported by:
Stephen More ASTERISK-23825 #close Reported by: Stephen More
ASTERISK-23909 #close Reported by: Stephen More Review:
https://reviewboard.asterisk.org/r/3870/ ........ Merged
revisions 420211 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-06 16:12 +0000 [r420149] George Joseph <george.joseph@fairview5.com>
* /, pbx/pbx_lua.c, main/pbx.c: pbx_lua: fix regression with global
sym export and context clash by pbx_config. ASTERISK-23818 (lua
contexts being overwritten by contexts of the same name in
pbx_config) surfaced because pbx_lua, having the
AST_MODFLAG_GLOBAL_SYMBOLS set, was always force loaded before
pbx_config. Since I couldn't find any reason for pbx_lua to
export it's symbols to the rest of Asterisk, I simply changed the
flag to AST_MODFLAG_DEFAULT. Problem solved. What I didn't
realize was that the symbols need to be exported not because
Asterisk needs them but because any external Lua modules like
luasql.mysql need the base Lua language APIs exported
(ASTERISK-17279). Back to ASTERISK-23818... It looks like there's
an issue in pbx.c where context_merge was only merging includes,
switches and ignore patterns if the context was already existing
AND has extensions, or if the context was brand new. If pbx_lua
is loaded before pbx_config, the context will exist BUT pbx_lua,
being implemented as a switch, will never place extensions in it,
just the switch statement. The result is that when pbx_config
loads, it never merges the switch statement created by pbx_lua
into the final context. This patch sets pbx_lua's modflag back to
AST_MODFLAG_GLOBAL_SYMBOLS and adds an "else if" in context_merge
that catches the case where an existing context has includes,
switchs or ingore patterns but no actual extensions.
ASTERISK-23818 #close Reported by: Dennis Guse Reported by: Timo
Teräs Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3891/ ........ Merged
revisions 420146 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 420147 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 420148 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-06 15:32 +0000 [r420144] Walter Doekes <walter+asterisk@wjd.nu>
* funcs/func_channel.c: Add documentation to the ability to
retrieve the source port of a SIP call. (belongs with r419970)
ASTERISK-24040 #close Patches: func_channel.c.diff uploaded by
dtryba Review: https://reviewboard.asterisk.org/r/3781/
2014-08-06 12:55 +0000 [r420124] Kinsey Moore <kmoore@digium.com>
* configs/samples/stasis.conf.sample (added), main/named_acl.c,
apps/app_queue.c, main/stasis_bridges.c, main/loader.c,
main/stasis.c, apps/app_forkcdr.c, main/stasis_message.c,
funcs/func_cdr.c, res/res_corosync.c, res/res_stun_monitor.c,
res/res_stasis_test.c, res/res_stasis.c, apps/app_chanspy.c,
main/stasis_cache.c, main/pickup.c, main/security_events.c,
include/asterisk/stasis.h, main/devicestate.c, main/core_local.c,
res/res_stasis_snoop.c, main/endpoints.c, main/presencestate.c,
main/cdr.c, main/channel.c, main/stasis_system.c, main/manager.c,
main/test.c, main/file.c, main/app.c, pbx/pbx_realtime.c,
main/stasis_channels.c, tests/test_stasis.c,
res/parking/parking_manager.c, main/stasis_endpoints.c,
main/rtp_engine.c, main/ccss.c, main/bridge.c,
tests/test_stasis_channels.c: Stasis: Allow message types to be
blocked This introduces stasis.conf and a mechanism to prevent
certain message types from being published. Internally, this
works by preventing the chosen message types from being created
which ensures that those message types can never be published.
This patch also adjusts message publishers such that message
payloads are not created if the related message type is not
available. ASTERISK-23943 #close Review:
https://reviewboard.asterisk.org/r/3823/
2014-08-05 21:48 +0000 [r420098-420100] Matthew Jordan <mjordan@digium.com>
* res/stasis/messaging.c, /: stasis: Fix compilation issue with ao2
tagged objects ........ Merged revisions 420099 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/resource_endpoints.c, rest-api/api-docs/events.json, /,
channels/chan_sip.c, res/stasis/app.c, res/stasis/messaging.h
(added), res/ari/resource_endpoints.h, res/res_pjsip_messaging.c,
tests/test_message.c (added), res/res_xmpp.c,
include/asterisk/json.h, CHANGES, include/asterisk/manager.h,
res/ari/ari_model_validators.c, res/ari/ari_model_validators.h,
main/json.c, res/res_ari_endpoints.c, include/asterisk/message.h,
res/ari/resource_channels.c, main/message.c, res/res_stasis.c,
res/stasis/messaging.c (added), rest-api/api-docs/endpoints.json:
Multiple revisions 420089-420090,420097 ........ r420089 |
mjordan | 2014-08-05 15:10:52 -0500 (Tue, 05 Aug 2014) | 72 lines
ARI: Add channel technology agnostic out of call text messaging
This patch adds the ability to send and receive text messages
from various technology stacks in Asterisk through ARI. This
includes chan_sip (sip), res_pjsip_messaging (pjsip), and
res_xmpp (xmpp). Messages are sent using the endpoints resource,
and can be sent directly through that resource, or to a
particular endpoint. For example, the following would send the
message "Hello there" to PJSIP endpoint alice with a display URI
of sip:asterisk@mycooldomain.org:
ari/endpoints/sendMessage?to=pjsip:alice&from=sip:asterisk@mycooldomain.org&body=Hello+There
This is equivalent to the following as well:
ari/endpoints/PJSIP/alice/sendMessage?from=sip:asterisk@mycooldomain.org&body=Hello+There
Both forms are available for message technologies that allow for
arbitrary destinations, such as chan_sip. Inbound messages can
now be received over ARI as well. An ARI application that
subscribes to endpoints will receive messages from those
endpoints: { "type": "TextMessageReceived", "timestamp":
"2014-07-12T22:53:13.494-0500", "endpoint": { "technology":
"PJSIP", "resource": "alice", "state": "online", "channel_ids":
[] }, "message": { "from": "\"alice\" <sip:alice@127.0.0.1>",
"to": "pjsip:asterisk@127.0.0.1", "body": "Watson, come here.",
"variables": [] }, "application": "testsuite" } The above was
made possible due to some rather major changes in the message
core. This includes (but is not limited to): - Users of the
message API can now register message handlers. A handler has two
callbacks: one to determine if the handler has a destination for
the message, and another to handle it. - All dialplan
functionality of handling a message was moved into a message
handler provided by the message API. - Messages can now have the
technology/endpoint associated with them. Various other
properties are also now more easily accessible. - A number of ao2
containers that weren't really needed were replaced with vectors.
Iteration over ao2_containers is expensive and pointless when the
lifetime of things is well defined and the number of things is
very small. res_stasis now has a new file that makes up its
structure, messaging. The messaging functionality implements a
message handler, and passes received messages that match an
interested endpoint over to the app for processing. Note that
inadvertently while testing this, I reproduced ASTERISK-23969.
res_pjsip_messaging was incorrectly parsing out the 'to' field,
such that arbitrary SIP URIs mangled the endpoint lookup. This
patch includes the fix for that as well. Review:
https://reviewboard.asterisk.org/r/3726 ASTERISK-23692 #close
Reported by: Matt Jordan ASTERISK-23969 #close Reported by:
Andrew Nagy ........ r420090 | mjordan | 2014-08-05 15:16:37
-0500 (Tue, 05 Aug 2014) | 2 lines Remove automerge properties
:-( ........ r420097 | mjordan | 2014-08-05 16:36:25 -0500 (Tue,
05 Aug 2014) | 2 lines test_message: Fix strict-aliasing
compilation issue ........ Merged revisions 420089-420090,420097
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-05 13:59 +0000 [r420028] Jonathan Rose <jrose@digium.com>
* main/format.c: chan_iax2: Fix a crash that occurs when using
allow=all for an IAX2 peer Or any combination of codecs that
includes Opus. ASTERISK-24107 #close Review:
https://reviewboard.asterisk.org/r/3885/
2014-08-04 21:00 +0000 [r420007] Richard Mudgett <rmudgett@digium.com>
* main/format_cache.c, include/asterisk/format_cache.h: Remove
duplicate definitions of ast_format_vp8.
2014-08-04 20:25 +0000 [r419970] Mark Michelson <mmichelson@digium.com>
* channels/sip/dialplan_functions.c: Add the ability to retrieve
the source port of a SIP call. This adds the ability to call
CHANNEL(recvport) on chan_sip channels to see the port on which
an INVITE was received. ASTERISK-24040 #close Reported by dtryba
Patches: dialplan_functions.patch uploaded by dtryba (License
#6628) Review: https://reviewboard.asterisk.org/r/3781
2014-08-04 19:47 +0000 [r419945] Rusty Newton <rnewton@digium.com>
* main/manager.c, /: Manager - Improve documentation for manager
commands Getvar and Setvar. The documentation for these commands
did not make it clear that they could accept expressions and
functions. Modified to make this clear, but tried not to be
overly explicit. ASTERISK-21178 #close Reported by: Rusty Newton
Tested by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/3854 ........ Merged revisions
419942 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 419943 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 419944 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-08-02 03:37 +0000 [r419914] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip.c: Manager: Add PJSIPShowEndpoint[s] documentation
This adds a large swath of response documentation for
PJSIPShowEndpoint and PJSIPShowEndpoints AMI commands. It relies
heavily on the existing text in the configInfo documentation via
xi:include tags to avoid documentation duplication. Review:
https://reviewboard.asterisk.org/r/3888/
2014-08-01 14:48 +0000 [r419888] Mark Michelson <mmichelson@digium.com>
* CHANGES, res/res_pjsip/pjsip_options.c: Add ContactStatusDetail
to PJSIPShowEndpoint AMI output. Now when running
PJSIPShowEndpoint, you will receive a ContactStatusDetail for
each bound contact that Asterisk is qualifying. This information
includes the URI of the contact, current reachability, and
roundtrip time. AFS-91 #close Reported by Mark Michelson Review:
https://reviewboard.asterisk.org/r/3797
2014-07-31 16:19 +0000 [r419851] Jonathan Rose <jrose@digium.com>
* CHANGES, res/res_pjsip_notify.c: PJSIP: Send Notify AMI and CLI
commands can now send to URI instead of endpoint Review:
https://reviewboard.asterisk.org/r/3817/
2014-07-31 11:57 +0000 [r419822-419825] Matthew Jordan <mjordan@digium.com>
* main/rtp_engine.c, /, res/res_hep_rtcp.c (added), CHANGES,
channels/chan_pjsip.c, res/res_rtp_asterisk.c: res_hep_rtcp: Add
module that sends RTCP information to a Homer Server This patch
adds a new module to Asterisk, res_hep_rtcp. The module
subscribes to the RTCP topics in Stasis and receives RTCP
information back from the message bus. It encodes into HEPv3
packets and sends the information to the res_hep module for
transmission. Using this, someone with a Homer server can get
live call quality monitoring for all RTP-based channels in their
Asterisk 12+ systems. In addition, there were a few bugs in the
RTP engine, res_rtp_asterisk, and chan_pjsip that were uncovered
by the tests written for the Asterisk Test Suite. This patch
fixes the following: 1) chan_pjsip failed to set its channel
unique ids on its RTP instance on outbound calls. It now does
this in the appropriate location, in the serialized call
callback. 2) The rtp_engine was overflowing some values when
packed into JSON. Specifically, some longs and unsigned ints
can't be be packed into integer values, for obvious reasons.
Since libjansson only supports integers, floats, strings,
booleans, and objects, we print these values into strings. 3)
res_rtp_asterisk had a few problems: (a) it would emit a source
IP address of 0.0.0.0 if bound to that IP address. We now use
ast_find_ourip to get a better IP address, and properly marshal
the result into an ast_strdupa'd string. (b) Reports can be
generated with no report bodies. In particular, this occurs when
a sender is transmitting information to a receiver (who will send
no RTP back to the sender). As such, the sender has no report
body for what it received. We now properly handle this case, and
the sender will emit SR reports with no body. Likewise, if we
receive an RTCP packet with no report body, we will still
generate the appropriate events. ASTERISK-24119 #close ........
Merged revisions 419823 from
http://svn.asterisk.org/svn/asterisk/branches/12
* funcs/func_jitterbuffer.c, doc/appdocsxml.dtd, main/xmldoc.c:
xmldocs: Add support for an <example> tag in the Asterisk XML
Documentation This patch adds support for an <example /> tag in
the XML documentation schema. For CLI help, this doesn't change
the formatting too much: - Preceeding white space is removed -
Unlike with para elements, new lines are preserved However,
having an <example /> tag in the XML schema allows for the wiki
documentation generation script to surround the documentation
with {code} or {noformat} tags, generating much better content
for the wiki - and allowing us to put dialplan examples (and
other code snippets, if desired) into the documentation for an
application/function/AMI command/etc. Review:
https://reviewboard.asterisk.org/r/3807/
2014-07-30 18:32 +0000 [r419806] Kinsey Moore <kmoore@digium.com>
* main/manager.c, res/res_manager_presencestate.c,
res/res_manager_devicestate.c, main/pbx.c: manager: Add state
list commands This patch adds three new AMI commands: *
ExtensionStateList (pbx.c) - list all known extension state hints
and their current statuses. Events emitted by the list action are
equivalent to the ExtensionStatus events. * PresenceStateList
(res_manager_presencestate) - list all known presence state
values. Events emitted are generated by the stasis message type,
and hence are PresenceStateChange events. * DeviceStateList
(res_manager_devicestate) - list all known device state values.
Events emitted are generated by the stasis message type, and
hence are DeviceStateChange events. Patch-by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3799/
2014-07-29 19:41 +0000 [r419789] Mark Michelson <mmichelson@digium.com>
* main/manager.c: Do not omit the first header of a UserEvent AMI
action from the corresponding emitted UserEvent. ASTERISK-24124
#close Reported by Matt Jordan AFS-131 #close Reported by Matt
Jordan Patches: userevent.patch uploaded by Matt Jordan (License
#6283)
2014-07-29 10:56 +0000 [r419751-419766] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, /: res_pjsip_session: Fix race condition
where redirecting information may not be set. Since the PJSIP
INVITE session module is invoked before any session supplements
it was possible for it to handle a redirect before the
res_pjsip_diversion module interpreted and set redirecting
information on the channel. This would cause the redirecting
information to get lost. This patch ensures that session
supplements are *always* invoked before a redirect occurs by
explicitly calling them in the redirect handler. Review:
https://reviewboard.asterisk.org/r/3850/ ........ Merged
revisions 419764 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_xpidf_body_generator.c,
res/res_pjsip_pidf_body_generator.c:
res_pjsip_pidf_body_generator / res_pjsip_xpidf_body_generator:
Ensure local entity is unquoted. The local entity as provided by
PJSIP is quoted within '<' and '>'. As a result placing this
value into XML will result in malformed XML being produced. This
patch now unquotes the local entity so it can go safely into the
XML. Review: https://reviewboard.asterisk.org/r/3851/ ........
Merged revisions 419750 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-28 18:58 +0000 [r419688] Richard Mudgett <rmudgett@digium.com>
* apps/app_speech_utils.c, main/channel.c, /,
funcs/func_frame_trace.c, main/abstract_jb.c: datastores: Audit
ast_channel_datastore_remove usage. Audit of v1.8 usage of
ast_channel_datastore_remove() for datastore memory leaks. *
Fixed leaks in app_speech_utils and func_frame_trace. * Fixed
app_speech_utils not locking the channel when accessing the
channel datastore list. Review:
https://reviewboard.asterisk.org/r/3859/ Audit of v11 usage of
ast_channel_datastore_remove() for datastore memory leaks. *
Fixed leak in func_jitterbuffer. (Was not in v12) Review:
https://reviewboard.asterisk.org/r/3860/ Audit of v12 usage of
ast_channel_datastore_remove() for datastore memory leaks. *
Fixed leaks in abstract_jb. * Fixed leak in
ast_channel_unsuppress(). Used by ARI mute control and
res_mutestream. * Fixed ref leak in ast_channel_suppress(). Used
by ARI mute control and res_mutestream. Review:
https://reviewboard.asterisk.org/r/3861/ ........ Merged
revisions 419684 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 419685 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 419686 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-25 18:09 +0000 [r419612] Joshua Colp <jcolp@digium.com>
* main/loader.c: loader: Fix an infinite loop when printing modules
using "module show". When creating the alphabetical sorted list
each module is added to a list temporarily. On the second
iteration each module already has a pointer to another module,
causing stuff to go into a loop. ASTERISK-24123 #close Reported
by: Malcolm Davenport
2014-07-25 16:47 +0000 [r419592] Mark Michelson <mmichelson@digium.com>
* res/res_ari_sounds.c, res/res_stasis.c, res/res_fax_spandsp.c,
res/res_timing_kqueue.c, res/res_odbc.c,
res/res_pjsip_transport_websocket.c, apps/app_voicemail.c,
res/res_calendar.c, channels/chan_unistim.c, cel/cel_radius.c,
channels/chan_multicast_rtp.c, res/res_pjsip_notify.c,
res/res_snmp.c, formats/format_sln.c, apps/app_meetme.c,
apps/app_dictate.c, codecs/codec_gsm.c, res/res_stasis_snoop.c,
res/res_musiconhold.c, res/res_format_attr_h264.c,
res/res_http_websocket.c, apps/app_followme.c,
res/res_config_sqlite.c, formats/format_siren7.c, cdr/cdr_csv.c,
formats/format_ilbc.c, channels/chan_phone.c,
apps/app_setcallerid.c, apps/app_osplookup.c, cel/cel_custom.c,
apps/app_mp3.c, res/res_agi.c, channels/chan_motif.c,
res/res_timing_timerfd.c, apps/app_confbridge.c,
res/res_format_attr_silk.c, formats/format_siren14.c,
res/res_sorcery_realtime.c, channels/chan_mgcp.c,
apps/app_jack.c, codecs/codec_lpc10.c,
res/res_pjsip_pidf_body_generator.c, res/res_config_pgsql.c,
funcs/func_dialplan.c, apps/app_nbscat.c, cdr/cdr_syslog.c,
res/res_pjsip_authenticator_digest.c, apps/app_festival.c,
res/res_fax.c, apps/app_waitforsilence.c, res/res_adsi.c,
res/res_crypto.c, res/res_ari_applications.c,
res/res_hep_pjsip.c, pbx/pbx_lua.c, res/res_pjsip_messaging.c,
res/res_pjsip_caller_id.c, channels/chan_console.c,
apps/app_getcpeid.c, res/res_stasis_answer.c,
channels/chan_oss.c, res/res_pjsip_nat.c,
res/res_pjsip_session.c, cdr/cdr_tds.c,
res/res_pjsip_header_funcs.c, res/res_parking.c,
formats/format_vox.c, res/res_pjsip_rfc3326.c,
res/res_ari_endpoints.c, res/res_stun_monitor.c,
res/res_pjsip_mwi.c, res/res_stasis_recording.c,
res/res_pjsip_xpidf_body_generator.c, apps/app_sms.c,
codecs/codec_ulaw.c, channels/chan_nbs.c, apps/app_stack.c,
channels/chan_pjsip.c, formats/format_g729.c, cel/cel_pgsql.c,
res/res_sorcery_config.c, res/res_ari.c, addons/chan_ooh323.c,
cdr/cdr_sqlite3_custom.c, codecs/codec_adpcm.c,
res/res_ari_asterisk.c, res/res_calendar_caldav.c,
apps/app_image.c, apps/app_ices.c, formats/format_wav_gsm.c,
main/cli.c, res/res_format_attr_celt.c, res/res_rtp_multicast.c,
channels/chan_dahdi.c, funcs/func_pitchshift.c, res/res_smdi.c,
res/res_pjsip_one_touch_record_info.c, pbx/pbx_ael.c,
pbx/pbx_realtime.c, apps/app_amd.c, channels/chan_alsa.c,
formats/format_h263.c, apps/app_url.c, res/res_pjsip_acl.c,
apps/app_externalivr.c, res/res_curl.c, formats/format_gsm.c,
res/res_speech.c, cdr/cdr_manager.c, res/res_calendar_exchange.c,
codecs/codec_g722.c, res/res_pjsip_multihomed.c,
res/res_ari_mailboxes.c, cel/cel_tds.c, res/res_sorcery_memory.c,
apps/app_fax.c, codecs/codec_speex.c, res/res_pjsip_sdp_rtp.c,
codecs/codec_g726.c, formats/format_ogg_vorbis.c,
apps/app_talkdetect.c, res/res_ari_channels.c,
res/res_pjsip_exten_state.c, apps/app_speech_utils.c,
apps/app_agent_pool.c, apps/app_waitforring.c, res/res_statsd.c,
addons/cdr_mysql.c, formats/format_g726.c, res/res_ari_bridges.c,
addons/app_mysql.c, res/res_stasis_playback.c,
addons/format_mp3.c, res/res_pjsip_endpoint_identifier_ip.c,
res/res_phoneprov.c, res/res_pjsip_t38.c,
res/res_pjsip_registrar_expire.c, cdr/cdr_pgsql.c,
cdr/cdr_radius.c, res/res_chan_stats.c,
res/res_format_attr_opus.c, res/res_config_odbc.c,
funcs/func_audiohookinherit.c,
res/res_pjsip_outbound_registration.c, cel/cel_manager.c,
funcs/func_odbc.c, res/res_pjsip_endpoint_identifier_anonymous.c,
funcs/func_frame_trace.c, funcs/func_aes.c, cdr/cdr_sqlite.c,
apps/app_minivm.c, res/res_pjsip_log_forwarder.c,
formats/format_h264.c, res/res_config_ldap.c, apps/app_ivrdemo.c,
addons/chan_mobile.c, apps/app_stasis.c,
res/res_pjsip_diversion.c, cdr/cdr_custom.c, apps/app_adsiprog.c,
res/res_pjsip_dtmf_info.c, res/res_rtp_asterisk.c,
res/res_calendar_icalendar.c, res/res_hep.c, channels/chan_sip.c,
channels/chan_bridge_media.c, codecs/codec_alaw.c,
apps/app_queue.c, res/res_srtp.c, funcs/func_presencestate.c,
res/res_timing_pthread.c, res/res_manager_presencestate.c,
res/res_corosync.c, apps/app_celgenuserevent.c,
cel/cel_sqlite3_custom.c, res/snmp/agent.c, pbx/pbx_dundi.c,
formats/format_g723.c, funcs/func_devstate.c,
res/res_pjsip_registrar.c,
res/res_pjsip_pidf_eyebeam_body_supplement.c,
addons/res_config_mysql.c,
res/res_pjsip_pidf_digium_body_supplement.c, apps/app_test.c,
res/res_timing_dahdi.c, cdr/cdr_adaptive_odbc.c,
apps/app_alarmreceiver.c, apps/app_chanisavail.c,
res/res_format_attr_h263.c, res/res_pjsip_mwi_body_generator.c,
res/res_xmpp.c, res/res_http_post.c, channels/chan_iax2.c,
res/res_pjsip_endpoint_identifier_user.c, res/res_pjsip.c,
res/res_pktccops.c, res/res_pjsip_send_to_voicemail.c,
main/loader.c, cel/cel_odbc.c, res/res_ari_model.c,
channels/chan_skinny.c,
res/res_pjsip_outbound_authenticator_digest.c,
res/res_mwi_external.c, apps/app_skel.c, formats/format_pcm.c,
include/asterisk/module.h, res/res_pjsip_path.c,
res/res_ari_playbacks.c, res/res_pjsip_pubsub.c, cdr/cdr_odbc.c,
funcs/func_periodic_hook.c, res/res_stasis_test.c,
formats/format_jpeg.c, res/res_pjsip_refer.c,
formats/format_g719.c, res/res_clialiases.c,
res/res_config_sqlite3.c, res/res_ari_device_states.c,
formats/format_wav.c, apps/app_saycounted.c, apps/app_dahdiras.c,
apps/app_morsecode.c, res/res_stasis_mailbox.c,
res/res_ael_share.c, res/res_mwi_external_ami.c,
res/res_pjsip_logger.c, res/res_stasis_device_state.c,
res/res_calendar_ews.c, res/res_monitor.c, apps/app_playback.c,
res/res_ari_recordings.c, res/res_manager_devicestate.c,
res/res_config_curl.c, channels/chan_misdn.c, funcs/func_curl.c,
res/res_ari_events.c, res/res_pjsip_dialog_info_body_generator.c,
res/res_sorcery_astdb.c, codecs/codec_dahdi.c,
apps/app_zapateller.c, pbx/pbx_config.c: Add module support level
to ast_module_info structure. Print it in CLI "module show" .
ASTERISK-23919 #close Reported by Malcolm Davenport Review:
https://reviewboard.asterisk.org/r/3802
2014-07-25 14:47 +0000 [r419563-419567] Matthew Jordan <mjordan@digium.com>
* CHANGES, res/ari/ari_model_validators.c,
rest-api/api-docs/recordings.json,
res/ari/ari_model_validators.h, /, res/res_stasis_recording.c:
Multiple revisions 419565-419566 ........ r419565 | mjordan |
2014-07-25 09:41:23 -0500 (Fri, 25 Jul 2014) | 21 lines ARI:
report duration values in LiveRecording objects This patch adds
three new fields to the LiveRecording model: - total_duration:
the total length of the live recording - talking_duration:
optional. The duration of talking energy that was detected while
the recording was made. - silence_duration: optional. The
duration of silence that was detected while the recording was
made. These values are reported in the RecordingFinished ARI
event. When a DSP is enabled on the channel during the recording
- which occurs when the recording is created with
max_silence_seconds (indicating that the user actually cares
about how much silence is in the file), we will report the
talking_duration and silence_duration in addition to the
total_duration. Review: https://reviewboard.asterisk.org/r/3770/
ASTERISK-24037 #close Reported by: Samuel Galarneau ........
r419566 | mjordan | 2014-07-25 09:46:15 -0500 (Fri, 25 Jul 2014)
| 1 line Update CHANGES for r419565 ........ Merged revisions
419565-419566 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/loader.c, res/res_calendar.c: module loader: Unload modules
in reverse order of their start order When Asterisk starts a
module (calling its load_module function), it re-orders the
module list, sorting it alphabetically. Ostensibly, this was done
so that the output of 'module show' listed modules in alphabetic
order. This had the unfortunate side effect of making modules
with complex usage patterns unloadable. A module that has a large
number of modules that depend on it is typically abandoned during
the unloading process. This results in its memory not being
reclaimed during exit. Generally, this isn't harmful - when the
process is destroyed, the operating system will reclaim all
memory allocated by the process. Prior to Asterisk 12, we also
didn't have many modules with complex dependencies. However, with
the advent of ARI and PJSIP, this can make make unloading those
modules successfully nearly impossible, and thus tracking memory
leaks or ref debug leaks a real pain. While this patch is not a
complete overhaul of the module loader - such an effort would be
beyond the scope of what could be done for Asterisk 13 - this
does make some marginal improvements to the loader such that
modules like res_pjsip or res_stasis *may* be made properly
un-loadable in the future. 1. The linked list of modules has been
replaced with a doubly linked list. This allows traversal of the
module list to occur backwards. The module shutdown routine now
walks the global list backwards when it attempts to unload
modules. 2. The alphabetic reorganization of the module list on
startup has been removed. Instead, a started module is placed at
the end of the module list. 3. The ast_update_module_list
function - which is used by the CLI to display the modules - now
does the sorting alphabetically itself. It creates its own linked
list and inserts the modules into it in alphabetic order. This
allows for the intent of the previous code to be maintained. This
patch also contains a fix for res_calendar. Without
calendar.conf, the calendar modules were improperly bumping the
use count of res_calendar, then failing to load themselves. This
patch makes it so that we detect whether or not calendaring is
enabled before altering the use count. Review:
https://reviewboard.asterisk.org/r/3777/
2014-07-25 10:54 +0000 [r419537-419539] Joshua Colp <jcolp@digium.com>
* apps/app_bridgewait.c, /: app_bridgewait: Remove possibility of
race condition between channels leaving/joining. Bridges created
by app_bridgewait previously had the "dissolve when empty" flag
set. This caused the bridge core to destroy them when the last
channel had left. This introduced a race condition where we may
have a reference to the bridge but it is not actually joinable
when we try to join it. This flag has now been removed and the
bridge is guaranteed to be joinable at all times. ASTERISK-23987
#close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3836/ ........ Merged
revisions 419538 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/bridge.c: bridge: Make "bridge destroy" only available in
developer mode and add "all" to "bridge kick". The "bridge
destroy" CLI command is invasive to bridges and can leave them in
an unexpected state for the users of them. Since this command may
be useful for developers it is now only available when developer
mode is available. To take its place "all" has been added as a
valid option to the "bridge kick" CLI command. It will kick all
of the channels in the bridge out. ASTERISK-23987 Reported by:
Matt Jordan Review: https://reviewboard.asterisk.org/r/3840/
........ Merged revisions 419536 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-24 22:48 +0000 [r419520] Richard Mudgett <rmudgett@digium.com>
* main/bridge.c, main/bridge_basic.c, main/core_unreal.c,
UPGRADE.txt, include/asterisk/channel.h, CHANGES,
apps/app_followme.c, apps/app_queue.c, main/cel.c,
res/parking/parking_bridge_features.c, apps/app_dial.c,
main/channel.c, main/dial.c, main/pbx.c: accountcode: Slightly
change accountcode propagation. The previous behavior was to
simply set the accountcode of an outgoing channel to the
accountcode of the channel initiating the call. It was done this
way a long time ago to allow the accountcode set on the SIP/100
channel to be propagated to a local channel so the dialplan
execution on the Local;2 channel would have the SIP/100
accountcode available. SIP/100 -> Local;1/Local;2 -> SIP/200
Propagating the SIP/100 accountcode to the local channels is very
useful. Without any dialplan manipulation, all channels in this
call would have the same accountcode. Using dialplan, you can set
a different accountcode on the SIP/200 channel either by setting
the accountcode on the Local;2 channel or by the Dial
application's b(pre-dial), M(macro) or U(gosub) options, or by
the FollowMe application's b(pre-dial) option, or by the Queue
application's macro or gosub options. Before Asterisk v12, the
altered accountcode on SIP/200 will remain until the local
channels optimize out and the accountcode would change to the
SIP/100 accountcode. Asterisk v1.8 attempted to add peeraccount
support but ultimately had to punt on the support. The
peeraccount support was rendered useless because of how the CDR
code needed to unconditionally force the caller's accountcode
onto the peer channel's accountcode. The CEL events were thus
intentionally made to always use the channel's accountcode as the
peeraccount value. With the arrival of Asterisk v12, the
situation has improved somewhat so peeraccount support can be
made to work. Using the indicated example, the the accountcode
values become as follows when the peeraccount is set on SIP/100
before calling SIP/200: SIP/100 ---> Local;1 ---- Local;2 --->
SIP/200 acct: 100 \/ acct: 200 \/ acct: 100 \/ acct: 200 peer:
200 /\ peer: 100 /\ peer: 200 /\ peer: 100 If a channel already
has an accountcode it can only change by the following explicit
user actions: 1) A channel originate method that can specify an
accountcode to use. 2) The calling channel propagating its
non-empty peeraccount or its non-empty accountcode if the
peeraccount was empty to the outgoing channel's accountcode
before initiating the dial. e.g., Dial and FollowMe. The
exception to this propagation method is Queue. Queue will only
propagate peeraccounts this way only if the outgoing channel does
not have an accountcode. 3) Dialplan using CHANNEL(accountcode).
4) Dialplan using CHANNEL(peeraccount) on the other end of a
local channel pair. If a channel does not have an accountcode it
can get one from the following places: 1) The channel driver's
configuration at channel creation. 2) Explicit user action as
already indicated. 3) Entering a basic or stasis-mixing bridge
from a peer channel's peeraccount value. You can specify the
accountcode for an outgoing channel by setting the
CHANNEL(peeraccount) before using the Dial, FollowMe, and Queue
applications. Queue adds the wrinkle that it will not overwrite
an existing accountcode on the outgoing channel with the calling
channels values. Accountcode and peeraccount values propagate to
an outgoing channel before dialing. Accountcodes also propagate
when channels enter or leave a basic or stasis-mixing bridge. The
peeraccount value only makes sense for mixing bridges with two
channels; it is meaningless otherwise. * Made peeraccount
functional by changing accountcode propagation as described
above. * Fixed CEL extracting the wrong ie value for the
peeraccount. This was done intentionally in Asterisk v1.8 when
that version had to punt on peeraccount. * Fixed a few places
dealing with accountcodes that were reading from channels without
the lock held. AFS-65 #close Review:
https://reviewboard.asterisk.org/r/3601/
2014-07-24 21:01 +0000 [r419504] Michael L. Young <elgueromexicano@gmail.com>
* main/db.c, include/asterisk/astdb.h: core/db: Revert Patch Added
In Attempt To Improve I/O Performance Reverting the patch since
it was causing a regression and after fixing the regression,
there were no performance gains. At least based on my method for
measurement. ASTERISK-24050 Review:
https://reviewboard.asterisk.org/r/3841/
2014-07-24 17:50 +0000 [r419438-419439] Corey Farrell <git@cfware.com>
* include/asterisk/astobj.h: Deprecate astobj.h This flags astobj.h
as deprecated, warns people to use astobj2.h instead. Only
netsock.c (also deprecated) still uses astobj.h. ASTERISK-24069
#close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3818/
* channels/sip/include/sip.h, channels/chan_sip.c: chan_sip:
complete upgrade to ao2 This change upgrades sip_registry and
sip_subscription_mwi to astobj2. ASTERISK-24067 #close Reported
by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3759/
2014-07-24 16:52 +0000 [r419377] Jason Parker <jparker@digium.com>
* addons/chan_ooh323.c, /: Don't cause Asterisk to exit if
ooh323.conf not found. (closes issue ASTERISK-23814) ........
Merged revisions 419374 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 419375 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 419376 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-24 15:20 +0000 [r419358] Matthew Jordan <mjordan@digium.com>
* main/devicestate.c, channels/chan_pjsip.c: device state: Update
the core to report ONHOLD if a channel is on hold In Asterisk, it
is possible for a device to have a status of ONHOLD. This is not
typically an easy thing to determine, as a channel being on hold
is not a direct channel state. Typically, this has to be
calculated outside of the core independently in channel drivers,
notably, chan_sip and chan_pjsip. Both of these channel drivers
already have to calculate device state in a fashion more complex
than the core can handle, as they aggregate all state of all
channels associated with a peer/endpoint; they also independently
track whether or not one of those channels is currently on hold
and mark the device state appropriately. In 12+, we now have the
ability to report an AST_DEVICE_ONHOLD state for all channels
that defer their device state to the core. This is due to channel
hold state actually now being tracked on the channel itself. If a
channel driver defers its device state to the core (which many,
such as DAHDI, IAX2, and others do in most situations), the
device state core already goes out to get a channel associated
with the device. As such, it can now also factor the channel hold
state in its calculation. This patch adds this logic to the
device state core. It also uses an existing mapping between
device state and channel state to handle more channel states.
chan_pjsip has been updated slightly as well to make use of this
(as it was, for some reason, reporting a channel state of BUSY as
a device state of INUSE, which feels slightly wrong). Review:
https://reviewboard.asterisk.org/r/3771/ ASTERISK-24038 #close
2014-07-24 13:00 +0000 [r419342] Kinsey Moore <kmoore@digium.com>
* include/asterisk/manager.h, doc/appdocsxml.dtd, main/xmldoc.c,
main/manager_bridges.c, main/manager.c,
include/asterisk/xmldoc.h, main/config_options.c: AMI: Allow for
command response documentation Allow for responses to AMI
actions/commands to be documented properly in XML and displayed
via the CLI. Response events are documented exactly as standard
AMI events are documented. Review:
https://reviewboard.asterisk.org/r/3812/
2014-07-23 16:46 +0000 [r419319] Matthew Jordan <mjordan@digium.com>
* main/endpoints.c, tests/test_stasis_endpoints.c, /: endpoints:
Fix failing unit tests from r419196 This patch does two things:
(1) It updates the unit tests to expect additional stasis
messages. More messages are now sent to the endpoint topic, due
to forwarding all channel messages and the forwarding
relationship set up between endpoints themselves. (2) Remove the
technology forwarding subscription during ast_endpoint_shutdown.
This prevents an improper double shutdown of an endpoint from
occurring. ........ Merged revisions 419318 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-23 14:00 +0000 [r419286] Scott Griepentrog <sgriepentrog@digium.com>
* apps/app_voicemail.c, /: app_voicemail: use a consistent
generator string When updating voicemail.conf when a user changes
their pin, change the generator string to be the same as the
module name when reading so that the same config_hook will be
called. Review: https://reviewboard.asterisk.org/r/3837/ ........
Merged revisions 419284 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 419285 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-23 01:28 +0000 [r419268] Corey Farrell <git@cfware.com>
* main/manager.c, res/res_fax.c: res_fax: unregister manager
actions on unload * Unregister manager actions FAXSessions,
FAXSession and FAXStats at unload. * Update ast_manager_register2
use ao2_t_alloc tagged with the action name. ASTERISK-24058
#close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3831/
2014-07-22 20:22 +0000 [r419222-419252] Michael L. Young <elgueromexicano@gmail.com>
* CHANGES, main/bridge_channel.c: core/bridge_channel: Substitute
Variables In Features Application Map Say you wanted to include
variables in an application map and have those variables
substituted and passed along to the application being executed;
currently this does not happen. This patch adds this ability to
pass channel variable values to an application before being
executed. ASTERISK-22608 #close Reported by: Michael L. Young
patches: features_substitute_arguments_v2.diff uploaded by
Michael L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/3819/
* CHANGES, apps/app_mixmonitor.c: apps/app_mixmonitor: Add Options
To Play Beep At Start Or Stop We have a new periodic beep feature
but sometimes a user needs some sort of feedback, without the
need to have a periodic beep during the recording, to let them
know that MixMonitor started recording or ended the recording.
The use case where this patch is being used is when using Dynamic
Features to start and end MixMonitor. This patch adds an option
to play a beep when MixMonitor starts and an option to play a
beep when MixMonitor ends. ASTERISK-24051 #close Reported by:
Michael L. Young patches: mixmonitor-play-beep-start-stop.diff
uploaded by Michael L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/3820/
* main/db.c, include/asterisk/astdb.h: core/db: Improve I/O When
Updating Rows When updating a row, we are currently doing an
INSERT OR REPLACE INTO. The downside to this is that the row is
deleted if it exists and then a new row is inserted. So, we are
hitting the disk twice. One for the deletion and one for the
insertion. This patch changes this statement to an INSERT INTO
and if the insert fails because a row with that key exists, we
will IGNORE the failure. Then we will attempt to perform an
UPDATE on the existing row if that row wasn't just INSERTed.
ASTERISK-24050 #close Reported by: Michael L. Young patches:
astdb-insert-update-io-help_trunk_v2.diff uploaded by Michael L.
Young (license 5026) Review:
https://reviewboard.asterisk.org/r/3815/
2014-07-22 17:10 +0000 [r419206] Richard Mudgett <rmudgett@digium.com>
* codecs/codec_speex.c: codec_speex: Fix trashing normal static
frame for AST_FRAME_CNG. Made use a local static frame to
generate the AST_FRAME_CNG frame when silence starts. I don't
think the handling of the AST_FRAME_CNG has ever really worked
because there doesn't seem to be any consumers of it. Review:
https://reviewboard.asterisk.org/r/3813/
2014-07-22 16:20 +0000 [r419203] Matthew Jordan <mjordan@digium.com>
* include/asterisk/endpoints.h,
rest-api/api-docs/applications.json, include/asterisk/xmpp.h,
main/channel_internal_api.c, channels/chan_motif.c,
include/asterisk/channel.h, res/ari/resource_applications.h,
res/res_xmpp.c, channels/chan_iax2.c, main/endpoints.c,
channels/chan_pjsip.c, main/channel.c,
res/ari/resource_endpoints.c, /, channels/chan_sip.c: ARI: Fix
endpoint/channel subscription issues; allow for subscriptions to
tech This patch serves two purposes: (1) It fixes some bugs with
endpoint subscriptions not reporting all of the channel events
(2) It serves as the preliminary work needed for ASTERISK-23692,
which allows for sending/receiving arbitrary out of call text
messages through ARI in a technology agnostic fashion. The
messaging functionality described on ASTERISK-23692 requires two
things: (1) The ability to send/receive messages associated with
an endpoint. This is relatively straight forwards with the
endpoint core in Asterisk now. (2) The ability to send/receive
messages associated with a technology and an arbitrary technology
defined URI. This is less straight forward, as endpoints are
formed from a tech + resource pair. We don't have a mechanism to
note that a technology that *may* have endpoints exists. This
patch provides such a mechanism, and fixes a few bugs along the
way. The first major bug this patch fixes is the forwarding of
channel messages to their respective endpoints. Prior to this
patch, there were two problems: (1) Channel caching messages
weren't forwarded. Thus, the endpoints missed most of the
interesting bits (such as channel creation, destruction, state
changes, etc.) (2) Channels weren't associated with their
endpoint until after creation. This resulted in endpoints missing
the channel creation message, which limited the usefulness of the
subscription in the first place (a major use case being 'tell me
when this endpoint has a channel'). Unfortunately, this meant
another parameter to ast_channel_alloc. Since not all channel
technologies support an ast_endpoint, this patch makes such a
call optional and opts for a new function,
ast_channel_alloc_with_endpoint. When endpoints are created, they
will implicitly create a technology endpoint for their technology
(if one does not already exist). A technology endpoint is special
in that it has no state, cannot have channels created for it,
cannot be created explicitly, and cannot be destroyed except on
shutdown. It does, however, have all messages from other
endpoints in its technology forwarded to it. Combined with the
bug fixes, we now have Stasis messages being properly forwarded.
Consider the following scenario: two PJSIP endpoints (foo and
bar), where bar has a single channel associated with it and foo
has two channels associated with it. The messages would be
forwarded as follows: channel PJSIP/foo-1 -- \ --> endpoint
PJSIP/foo -- / \ channel PJSIP/foo-2 -- \ ---- > endpoint PJSIP /
channel PJSIP/bar-1 -----> endpoint PJSIP/bar -- ARI, through the
applications resource, can: - subscribe to endpoint:PJSIP/foo and
get notifications for channels PJSIP/foo-1,PJSIP/foo-2 and
endpoint PJSIP/foo - subscribe to endpoint:PJSIP/bar and get
notifications for channels PJSIP/bar-1 and endpoint PJSIP/bar -
subscribe to endpoint:PJSIP and get notifications for channels
PJSIP/foo-1,PJSIP/foo-2,PJSIP/bar-1 and endpoints
PJSIP/foo,PJSIP/bar Note that since endpoint PJSIP never changes,
it never has events itself. It merely provides an aggregation
point for all other endpoints in its technology (which in turn
aggregate all channel messages associated with that endpoint).
This patch also adds endpoints to res_xmpp and chan_motif,
because the actual messaging work will need it (messaging without
XMPP is just sad). Review:
https://reviewboard.asterisk.org/r/3760/ ASTERISK-23692 ........
Merged revisions 419196 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-22 14:36 +0000 [r419180] Joshua Colp <jcolp@digium.com>
* channels/chan_iax2.c: chan_iax2: Restore previous behavior of
iax2_best_codec. The iax2_best_codec function was changed to
convert the formats into a format compatibilities structure and
grab the first format from it. The resulting order differs from
the previous order of iax2_best_codec which causes unexpected
formats to get chosen (such as g723). This commit brings back the
old behavior of iax2_best_codec by having a specified preference
list. Review: https://reviewboard.asterisk.org/r/3835/
2014-07-22 14:22 +0000 [r419110-419175] Kinsey Moore <kmoore@digium.com>
* addons/ooh323c/src/printHandler.c, tests/test_sorcery_realtime.c,
tests/test_json.c, addons/ooh323c/src/ooq931.c,
tests/test_astobj2_thrash.c, addons/chan_ooh323.c, /,
tests/test_optional_api.c, tests/test_abstract_jb.c,
apps/app_meetme.c, tests/test_logger.c, tests/test_event.c,
tests/test_hashtab_thrash.c, res/res_mwi_external_ami.c,
tests/test_sorcery.c, res/res_corosync.c,
tests/test_voicemail_api.c, tests/test_aoc.c,
tests/test_astobj2.c, tests/test_config.c: Fix more dev-mode
build issues ........ Merged revisions 419129 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 419162 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 419163 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/dial.c: Dial API: Prevent crash on NULL cap This prevents a
crash in the Dial API triggered by use of the Page() application
where a format capability struct was used before checking whether
it was NULL. ASTERISK-24074 #close
* channels/chan_skinny.c, tests/test_core_format.c: Fix build in
dev-mode
2014-07-21 16:26 +0000 [r419109] Jonathan Rose <jrose@digium.com>
* channels/chan_iax2.c: chan_iax2: Restore codec choice behavior
from media formats branch After merging the media formats branch,
chan_iax2 was discarding codec preferences for the purpose of
choosing which codec a channel would use once a call started.
This patch restores the Asterisk 1.8-12 codec choice behaviors.
ASTERISK-23958 #close Review:
https://reviewboard.asterisk.org/r/3800/
2014-07-21 16:09 +0000 [r419093] Joshua Colp <jcolp@digium.com>
* channels/chan_iax2.c: chan_iax2: Only send mini frames if the
underlying format has not changed, not if it has. ASTERISK-24072
#close Reported by: Matt Jordan
2014-07-21 14:49 +0000 [r419077] Sean Bright <sean@malleable.com>
* configure, configure.ac: Fix build when pjproject is installed in
a non-standard location. When configuring Asterisk to build
against a version of pjproject installed in a non-standard
location, the checks for "PJSIP Transaction Group Lock Support"
and "PJSIP Media Stream Replacement Support" fail. This is
because these secondary checks are not taking the CFLAGS and LIBS
returned by the pkg-config check into account. Review:
https://reviewboard.asterisk.org/r/3830
2014-07-21 08:41 +0000 [r419060] Corey Farrell <git@cfware.com>
* channels/sig_analog.c, res/res_smdi.c, channels/chan_motif.c,
include/asterisk/smdi.h, apps/app_voicemail.c,
channels/chan_dahdi.c: res_smdi: convert to astobj2 Remove
functions: ast_smdi_interface_unref ast_smdi_md_message_putback
ast_smdi_mwi_message_putback ast_smdi_md_message destructor
ast_smdi_mwi_message destructor Includes for astobj.h are removed
everywhere it's possible. ASTERISK-24066 #close Review:
https://reviewboard.asterisk.org/r/3758/
2014-07-20 22:06 +0000 [r419044] Matthew Jordan <mjordan@digium.com>
* apps/app_confbridge.c, res/ari/resource_channels.c,
include/asterisk/rtp_engine.h, include/asterisk/slinfactory.h,
res/res_calendar.c, codecs/codec_g722.c,
include/asterisk/res_pjsip_session.h, main/frame.c,
codecs/ex_lpc10.h, apps/app_dictate.c, res/res_fax.c,
apps/app_echo.c, include/asterisk/slin.h, codecs/codec_g726.c,
formats/format_ogg_vorbis.c, codecs/codec_gsm.c,
codecs/ex_alaw.h, formats/format_wav_gsm.c,
channels/iax2/provision.c, channels/chan_iax2.c,
res/res_format_attr_h264.c, main/data.c, main/manager.c,
include/asterisk/audiohook.h, formats/format_pcm.c,
main/config_options.c, res/res_format_attr_silk.c,
main/bridge_channel.c, res/res_speech.c, channels/chan_pjsip.c,
res/res_clioriginate.c, formats/format_g729.c,
channels/chan_unistim.c, res/res_rtp_asterisk.c,
include/asterisk/smoother.h (added), main/rtp_engine.c,
addons/format_mp3.c, formats/format_wav.c,
apps/confbridge/conf_chan_record.c, include/asterisk/speech.h,
codecs/ex_adpcm.h, channels/iax2/codec_pref.c (added),
include/asterisk/codec.h (added), formats/format_siren7.c,
include/asterisk/file.h, channels/chan_dahdi.c,
include/asterisk/image.h, funcs/func_channel.c,
main/abstract_jb.c, formats/format_h263.c, codecs/codec_dahdi.c,
main/dsp.c, apps/app_voicemail.c, apps/app_jack.c,
funcs/func_talkdetect.c, channels/chan_vpb.cc,
channels/chan_sip.c, formats/format_sln.c,
tests/test_abstract_jb.c, codecs/codec_alaw.c, UPGRADE.txt,
main/smoother.c (added), codecs/ex_speex.h,
channels/chan_console.c, apps/app_talkdetect.c,
main/format_pref.c (removed), main/indications.c,
include/asterisk/format_cap.h, main/media_index.c,
apps/app_agent_pool.c, res/res_pjsip_session.c, main/cli.c,
res/res_format_attr_celt.c, channels/chan_skinny.c,
tests/test_core_format.c (added), funcs/func_frame_trace.c,
res/res_pjsip/pjsip_configuration.c, main/file.c,
include/asterisk/frame.h, formats/format_g726.c,
apps/app_mixmonitor.c, channels/chan_mgcp.c, main/sorcery.c,
codecs/ex_ilbc.h, codecs/codec_lpc10.c, tests/test_format_cache.c
(added), apps/app_meetme.c, main/translate.c,
apps/app_originate.c, res/parking/parking_applications.c,
apps/app_ices.c, channels/iax2/parser.c, res/res_rtp_multicast.c,
pbx/pbx_spool.c, funcs/func_pitchshift.c, formats/format_vox.c,
main/format_cap.c, tests/test_cel.c, include/asterisk/format.h,
formats/format_h264.c, apps/app_chanspy.c, apps/app_nbscat.c,
addons/chan_ooh323.c, bridges/bridge_holding.c,
channels/iax2/include/codec_pref.h (added), codecs/codec_adpcm.c,
apps/app_waitforsilence.c, res/res_pjsip_sdp_rtp.c,
addons/chan_ooh323.h, bridges/bridge_simple.c,
apps/app_alarmreceiver.c, bridges/bridge_softmix.c,
res/res_stasis_snoop.c, main/sounds_index.c, main/core_local.c,
main/codec_builtin.c (added), include/asterisk/format_cache.h
(added), apps/app_speech_utils.c, res/res_format_attr_opus.c,
include/asterisk/abstract_jb.h, main/channel.c,
include/asterisk/format_compatibility.h (added), apps/app_mp3.c,
tests/test_voicemail_api.c, channels/chan_alsa.c, main/app.c,
formats/format_g723.c, codecs/codec_ilbc.c, tests/test_config.c,
formats/format_gsm.c, apps/app_milliwatt.c, codecs/ex_ulaw.h,
main/asterisk.c, include/asterisk/res_pjsip.h, main/format.c,
main/ccss.c, main/bridge.c, codecs/codec_speex.c,
include/asterisk/format_pref.h (removed), apps/app_record.c,
main/slinfactory.c, res/res_adsi.c, main/core_unreal.c,
res/ari/resource_bridges.c, include/asterisk/callerid.h,
channels/pjsip/dialplan_functions.c, main/dial.c,
channels/dahdi/bridge_native_dahdi.c, main/format_cache.c
(added), include/asterisk/mod_format.h, apps/app_sms.c,
codecs/codec_resample.c, main/format_compatibility.c (added),
main/audiohook.c, formats/format_jpeg.c, res/res_stasis.c,
formats/format_g719.c, include/asterisk/translate.h,
funcs/func_speex.c, codecs/codec_a_mu.c,
channels/iax2/format_compatibility.c (added),
apps/app_festival.c, main/channel_internal_api.c,
tests/test_format_api.c (removed), codecs/ex_g722.h,
main/utils.c, res/ari/resource_sounds.c,
res/res_format_attr_h263.c, codecs/ex_g726.h,
include/asterisk/_private.h, channels/chan_oss.c,
channels/chan_misdn.c, main/codec.c (added), main/callerid.c,
addons/ooh323cDriver.c, apps/app_amd.c, codecs/codec_ulaw.c,
main/image.c, channels/chan_nbs.c, bridges/bridge_native_rtp.c,
channels/iax2/include/format_compatibility.h (added),
formats/format_siren14.c, res/res_fax_spandsp.c,
addons/chan_mobile.c, addons/ooh323cDriver.h,
channels/sip/include/sip.h, tests/test_format_cap.c (added),
channels/chan_multicast_rtp.c, include/asterisk/vector.h,
channels/chan_bridge_media.c, apps/app_fax.c,
main/bridge_basic.c, apps/app_test.c, include/asterisk/channel.h,
include/asterisk/data.h, tests/test_core_codec.c (added),
res/res_musiconhold.c, codecs/ex_gsm.h, formats/format_ilbc.c,
include/asterisk/config_options.h, channels/chan_phone.c,
include/asterisk/bridge_channel.h, apps/app_dumpchan.c,
channels/chan_motif.c, res/res_agi.c: media formats: re-architect
handling of media for performance improvements In the old times
media formats were represented using a bit field. This was fast
but had a few limitations. 1. Asterisk was limited in how many
formats it could handle. 2. Formats, being a bit field, could not
include any attribute information. A format was strictly its
type, e.g., "this is ulaw". This was changed in Asterisk 10 (see
https://wiki.asterisk.org/wiki/display/AST/Media+Architecture+Proposal
for notes on that work) which led to the creation of the
ast_format structure. This structure allowed Asterisk to handle
attributes and bundle information with a format. Additionally,
ast_format_cap was created to act as a container for multiple
formats that, together, formed the capability of some entity.
Another mechanism was added to allow logic to be registered which
performed format attribute negotiation. Everywhere throughout the
codebase Asterisk was changed to use this strategy.
Unfortunately, in software, there is no free lunch. These new
capabilities came at a cost. Performance analysis and profiling
showed that we spend an inordinate amount of time comparing,
copying, and generally manipulating formats and their related
structures. Basic prototyping has shown that a reasonably large
performance improvement could be made in this area. This patch is
the result of that project, which overhauled the media format
architecture and its usage in Asterisk to improve performance.
Generally, the new philosophy for handling formats is as follows:
* The ast_format structure is reference counted. This removed a
large amount of the memory allocations and copying that was done
in prior versions. * In order to prevent race conditions while
keeping things performant, the ast_format structure is immutable
by convention and lock-free. Violate this tenet at your peril! *
Because formats are reference counted, codecs are also reference
counted. The Asterisk core generally provides built-in codecs and
caches the ast_format structures created to represent them.
Generally, to prevent inordinate amounts of module reference
bumping, codecs and formats can be added at run-time but cannot
be removed. * All compatibility with the bit field representation
of codecs/formats has been moved to a compatibility API. The
primary user of this representation is chan_iax2, which must
continue to maintain its bit-field usage of formats for
interoperability concerns. * When a format is negotiated with
attributes, or when a format cannot be represented by one of the
cached formats, a new format object is created or cloned from an
existing format. That format may have the same codec underlying
it, but is a different format than a version of the format with
different attributes or without attributes. * While formats are
reference counted objects, the reference count maintained on the
format should be manipulated with care. Formats are generally
cached and will persist for the lifetime of Asterisk and do not
explicitly need to have their lifetime modified. An exception to
this is when the user of a format does not know where the format
came from *and* the user may outlive the provider of the format.
This occurs, for example, when a format is read from a channel:
the channel may have a format with attributes (hence, non-cached)
and the user of the format may last longer than the channel (if
the reference to the channel is released prior to the format's
reference). For more information on this work, see the API design
notes:
https://wiki.asterisk.org/wiki/display/AST/Media+Format+Rewrite
Finally, this work was the culmination of a large number of
developer's efforts. Extra thanks goes to Corey Farrell, who took
on a large amount of the work in the Asterisk core, chan_sip, and
was an invaluable resource in peer reviews throughout this
project. There were a substantial number of patches contributed
during this work; the following issues/patch names simply reflect
some of the work (and will cause the release scripts to give
attribution to the individuals who work on them). Reviews:
https://reviewboard.asterisk.org/r/3814
https://reviewboard.asterisk.org/r/3808
https://reviewboard.asterisk.org/r/3805
https://reviewboard.asterisk.org/r/3803
https://reviewboard.asterisk.org/r/3801
https://reviewboard.asterisk.org/r/3798
https://reviewboard.asterisk.org/r/3800
https://reviewboard.asterisk.org/r/3794
https://reviewboard.asterisk.org/r/3793
https://reviewboard.asterisk.org/r/3792
https://reviewboard.asterisk.org/r/3791
https://reviewboard.asterisk.org/r/3790
https://reviewboard.asterisk.org/r/3789
https://reviewboard.asterisk.org/r/3788
https://reviewboard.asterisk.org/r/3787
https://reviewboard.asterisk.org/r/3786
https://reviewboard.asterisk.org/r/3784
https://reviewboard.asterisk.org/r/3783
https://reviewboard.asterisk.org/r/3778
https://reviewboard.asterisk.org/r/3774
https://reviewboard.asterisk.org/r/3775
https://reviewboard.asterisk.org/r/3772
https://reviewboard.asterisk.org/r/3761
https://reviewboard.asterisk.org/r/3754
https://reviewboard.asterisk.org/r/3753
https://reviewboard.asterisk.org/r/3751
https://reviewboard.asterisk.org/r/3750
https://reviewboard.asterisk.org/r/3748
https://reviewboard.asterisk.org/r/3747
https://reviewboard.asterisk.org/r/3746
https://reviewboard.asterisk.org/r/3742
https://reviewboard.asterisk.org/r/3740
https://reviewboard.asterisk.org/r/3739
https://reviewboard.asterisk.org/r/3738
https://reviewboard.asterisk.org/r/3737
https://reviewboard.asterisk.org/r/3736
https://reviewboard.asterisk.org/r/3734
https://reviewboard.asterisk.org/r/3722
https://reviewboard.asterisk.org/r/3713
https://reviewboard.asterisk.org/r/3703
https://reviewboard.asterisk.org/r/3689
https://reviewboard.asterisk.org/r/3687
https://reviewboard.asterisk.org/r/3674
https://reviewboard.asterisk.org/r/3671
https://reviewboard.asterisk.org/r/3667
https://reviewboard.asterisk.org/r/3665
https://reviewboard.asterisk.org/r/3625
https://reviewboard.asterisk.org/r/3602
https://reviewboard.asterisk.org/r/3519
https://reviewboard.asterisk.org/r/3518
https://reviewboard.asterisk.org/r/3516
https://reviewboard.asterisk.org/r/3515
https://reviewboard.asterisk.org/r/3512
https://reviewboard.asterisk.org/r/3506
https://reviewboard.asterisk.org/r/3413
https://reviewboard.asterisk.org/r/3410
https://reviewboard.asterisk.org/r/3387
https://reviewboard.asterisk.org/r/3388
https://reviewboard.asterisk.org/r/3389
https://reviewboard.asterisk.org/r/3390
https://reviewboard.asterisk.org/r/3321
https://reviewboard.asterisk.org/r/3320
https://reviewboard.asterisk.org/r/3319
https://reviewboard.asterisk.org/r/3318
https://reviewboard.asterisk.org/r/3266
https://reviewboard.asterisk.org/r/3265
https://reviewboard.asterisk.org/r/3234
https://reviewboard.asterisk.org/r/3178 ASTERISK-23114 #close
Reported by: mjordan media_formats_translation_core.diff uploaded
by kharwell (License 6464) rb3506.diff uploaded by mjordan
(License 6283) media_format_app_file.diff uploaded by kharwell
(License 6464) misc-2.diff uploaded by file (License 5000)
chan_mild-3.diff uploaded by file (License 5000)
chan_obscure.diff uploaded by file (License 5000) jingle.diff
uploaded by file (License 5000) funcs.diff uploaded by file
(License 5000) formats.diff uploaded by file (License 5000)
core.diff uploaded by file (License 5000) bridges.diff uploaded
by file (License 5000) mf-codecs-2.diff uploaded by file (License
5000) mf-app_fax.diff uploaded by file (License 5000)
mf-apps-3.diff uploaded by file (License 5000)
media-formats-3.diff uploaded by file (License 5000)
ASTERISK-23715 rb3713.patch uploaded by coreyfarrell (License
5909) rb3689.patch uploaded by mjordan (License 6283)
ASTERISK-23957 rb3722.patch uploaded by mjordan (License 6283)
mf-attributes-3.diff uploaded by file (License 5000)
ASTERISK-23958 Tested by: jrose rb3822.patch uploaded by
coreyfarrell (License 5909) rb3800.patch uploaded by jrose
(License 6182) chan_sip.diff uploaded by mjordan (License 6283)
rb3747.patch uploaded by jrose (License 6182) ASTERISK-23959
#close Tested by: sgriepentrog, mjordan, coreyfarrell
sip_cleanup.diff uploaded by opticron (License 6273)
chan_sip_caps.diff uploaded by mjordan (License 6283)
rb3751.patch uploaded by coreyfarrell (License 5909)
chan_sip-3.diff uploaded by file (License 5000) ASTERISK-23960
#close Tested by: opticron direct_media.diff uploaded by opticron
(License 6273) pjsip-direct-media.diff uploaded by file (License
5000) format_cap_remove.diff uploaded by opticron (License 6273)
media_format_fixes.diff uploaded by opticron (License 6273)
chan_pjsip-2.diff uploaded by file (License 5000) ASTERISK-23966
#close Tested by: rmudgett rb3803.patch uploaded by rmudgetti
(License 5621) chan_dahdi.diff uploaded by file (License 5000)
ASTERISK-24064 #close Tested by: coreyfarrell, mjordan, opticron,
file, rmudgett, sgriepentrog, jrose rb3814.patch uploaded by
rmudgett (License 5621) moh_cleanup.diff uploaded by opticron
(License 6273) bridge_leak.diff uploaded by opticron (License
6273) translate.diff uploaded by file (License 5000) rb3795.patch
uploaded by rmudgett (License 5621) tls_fix.diff uploaded by
mjordan (License 6283) fax-mf-fix-2.diff uploaded by file
(License 5000) rtp_transfer_stuff uploaded by mjordan (License
6283) rb3787.patch uploaded by rmudgett (License 5621)
media-formats-explicit-translate-format-3.diff uploaded by file
(License 5000) format_cache_case_fix.diff uploaded by opticron
(License 6273) rb3774.patch uploaded by rmudgett (License 5621)
rb3775.patch uploaded by rmudgett (License 5621)
rtp_engine_fix.diff uploaded by opticron (License 6273)
rtp_crash_fix.diff uploaded by opticron (License 6273)
rb3753.patch uploaded by mjordan (License 6283) rb3750.patch
uploaded by mjordan (License 6283) rb3748.patch uploaded by
rmudgett (License 5621) media_format_fixes.diff uploaded by
opticron (License 6273) rb3740.patch uploaded by mjordan (License
6283) rb3739.patch uploaded by mjordan (License 6283)
rb3734.patch uploaded by mjordan (License 6283) rb3689.patch
uploaded by mjordan (License 6283) rb3674.patch uploaded by
coreyfarrell (License 5909) rb3671.patch uploaded by coreyfarrell
(License 5909) rb3667.patch uploaded by coreyfarrell (License
5909) rb3665.patch uploaded by mjordan (License 6283)
rb3625.patch uploaded by coreyfarrell (License 5909) rb3602.patch
uploaded by coreyfarrell (License 5909)
format_compatibility-2.diff uploaded by file (License 5000)
core.diff uploaded by file (License 5000)
2014-07-18 21:48 +0000 [r419022] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/recordings.json, res/ari/resource_recordings.c,
res/stasis_recording/stored.c, res/res_ari_recordings.c, /,
include/asterisk/stasis_app_recording.h,
res/ari/resource_recordings.h, CHANGES: ari: Add a copy operation
for stored recordings This patch adds a new operation for stored
recordings, copy. It takes an existing stored recording and makes
a copy of it in the same directory or a relative directory under
the stored recording directory.
/ari/recordings/stored/{recordingName}/copy?destinationRecordingName={copy_name}
This is particularly useful for voicemail-esque applications,
which may need to copy or move recordings around a directory
structure. Review: https://reviewboard.asterisk.org/r/3768/
ASTERISK-24036 #close Reported by: Sam Galarneau Tested by: Sam
Galarneau ........ Merged revisions 419021 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-18 21:25 +0000 [r418997-419020] Corey Farrell <git@cfware.com>
* main/stasis_message_router.c, /: stasis: fix call to ao2_t_alloc
for stasis_message_router_create This fixes a build failure
introduced by r3821. struct stasis_topic is opaque, so
topic->name is unavailable. Switch to using stasis_topic_name().
........ Merged revisions 419019 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis.c, main/stasis_cache_pattern.c,
main/stasis_message.c, main/stasis_message_router.c, /: stasis:
use ao2_t_alloc for certain object allocators Add tags to stasis
objects using the name. This makes it easier to track the source
of certain stasis ref leaks. Review:
https://reviewboard.asterisk.org/r/3821/ ........ Merged
revisions 418996 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-18 19:07 +0000 [r418980] Kinsey Moore <kmoore@digium.com>
* res/res_fax_spandsp.c: Fix build in dev-mode
2014-07-18 17:55 +0000 [r418961-418963] Scott Griepentrog <sgriepentrog@digium.com>
* res/res_pjsip_pubsub.c, main/astobj2.c,
include/asterisk/astobj2.h, main/logger.c, main/utils.c: astobj2:
assert on invalid ref and backtrace cleanup If a reference count
goes negative, instead of just logging that fact, be more helpful
with a backtrace and an assert that will DO_CRASH. This patch
also removes the duplicate ao2_bt() function and cleans up
extraneous usage of the ast_log_backtrace() call. Review:
https://reviewboard.asterisk.org/r/3765/
* /, channels/chan_sip.c: media formats: fix ref leak of peer for
mwi subscription Holding a reference to the peer during mwi
subscriptions resulted in a circular reference because the final
event message would not be sent until destruction of the peer.
Instead, pass the name of the peer to the event callback so that
it can fail gracefully after the peer has gone. ASTERISK-23959
Review: https://reviewboard.asterisk.org/r/3754/ ........ Merged
revisions 418636 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/features_config.c: feature_config: insure featuregroups
and applicationmaps are initialized If the features.conf is
missing, the cfg->featurgroups and cfg->applicationmaps is not
initialized, resulting in assert on ao2_find of a null container.
This patch changes the initialization call and adds asserts for a
safeguard. Review: https://reviewboard.asterisk.org/r/3809/
........ Merged revisions 418886 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-18 16:47 +0000 [r418938] Richard Mudgett <rmudgett@digium.com>
* funcs/func_audiohookinherit.c, /: func_audiohookinherit.c: Fixup
some XML documentation wording. ........ Merged revisions 418937
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-18 16:28 +0000 [r418911-418936] Jonathan Rose <jrose@digium.com>
* main/channel.c, funcs/func_audiohookinherit.c, /,
include/asterisk/audiohook.h, main/framehook.c, res/res_fax.c,
main/bridge_basic.c, include/asterisk/res_fax.h,
bridges/bridge_native_rtp.c, main/audiohook.c, CHANGES,
include/asterisk/framehook.h, res/res_pjsip_refer.c: Channels:
Masquerades to automatically move frame/audio hooks Whenever
possible, audiohooks and framehooks will now be copied over to
the channel that the masquerading channel gets cloned into. This
should occur for all audiohooks and most framehooks. As a result,
in Asterisk 12.5 and up, the AUDIOHOOK_INHERIT function is now
deprecated and its behavior is essentially the new default for
all audiohooks, plus some additional audiohooks/framehooks.
Review: https://reviewboard.asterisk.org/r/3721/ ........ Merged
revisions 418914 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_fax.c, include/asterisk/res_fax.h, CHANGES,
res/res_fax.exports.in, res/res_fax_spandsp.c: res_fax: Provide
AMI equivalents for fax CLI commands Specifically the following
equivalents were created: fax show session -> FAXSession fax show
sessions -> FAXSessions fax show stats -> FAXStats Review:
https://reviewboard.asterisk.org/r/3666/
2014-07-18 00:11 +0000 [r418893-418895] Sean Bright <sean@malleable.com>
* config.sub, menuselect/config.guess, menuselect/config.sub,
config.guess: Update config.guess and config.sub
* autoconf/ast_ext_tool_check.m4: Add missing file from previous
commit.
* menuselect/aclocal.m4, menuselect/configure,
menuselect/acinclude.m4 (removed), menuselect/bootstrap.sh,
menuselect/autoconfig.h.in: Import Asterisk's autoconf magic
instead of using our own.
2014-07-17 21:17 +0000 [r418832-418870] Matthew Jordan <mjordan@digium.com>
* configs/samples/acl.conf.sample (added),
configs/samples/extensions.conf.sample (added),
configs/res_parking.conf.sample (removed),
configs/samples/cel_sqlite3_custom.conf.sample (added),
configs/cdr_sqlite3_custom.conf.sample (removed),
configs/modules.conf.sample (removed),
configs/samples/cli_aliases.conf.sample (added),
configs/meetme.conf.sample (removed),
configs/cdr_pgsql.conf.sample (removed),
configs/samples/extensions.ael.sample (added),
configs/samples/cdr_adaptive_odbc.conf.sample (added),
configs/samples/motif.conf.sample (added),
configs/samples/extensions_minivm.conf.sample (added),
configs/samples/res_curl.conf.sample (added),
configs/res_config_sqlite3.conf.sample (removed),
configs/mgcp.conf.sample (removed), configs/dsp.conf.sample
(removed), configs/udptl.conf.sample (removed),
configs/sip.conf.sample (removed), configs/dbsep.conf.sample
(removed), configs/queuerules.conf.sample (removed),
configs/samples/cdr_mysql.conf.sample (added),
configs/confbridge.conf.sample (removed),
configs/samples/cdr_odbc.conf.sample (added),
configs/samples/minivm.conf.sample (added),
configs/enum.conf.sample (removed),
configs/samples/codecs.conf.sample (added),
configs/samples/chan_dahdi.conf.sample (added),
configs/samples/cdr_custom.conf.sample (added),
configs/samples/res_config_mysql.conf.sample (added),
configs/samples/dundi.conf.sample (added),
configs/samples/oss.conf.sample (added),
configs/samples/app_mysql.conf.sample (added),
configs/samples/queues.conf.sample (added),
configs/samples/cdr.conf.sample (added),
configs/samples/cdr_syslog.conf.sample (added),
configs/festival.conf.sample (removed),
configs/samples/cel_pgsql.conf.sample (added),
configs/http.conf.sample (removed), configs/phoneprov.conf.sample
(removed), configs/alarmreceiver.conf.sample (removed),
configs/samples/features.conf.sample (added),
configs/cdr_tds.conf.sample (removed),
configs/func_odbc.conf.sample (removed),
configs/samples/logger.conf.sample (added),
configs/samples/res_odbc.conf.sample (added),
configs/samples/agents.conf.sample (added),
configs/res_fax.conf.sample (removed),
configs/samples/xmpp.conf.sample (added),
configs/iaxprov.conf.sample (removed),
configs/res_pgsql.conf.sample (removed),
configs/extensions.conf.sample (removed),
configs/chan_mobile.conf.sample (removed), configs/asterisk.adsi
(removed), configs/cel_sqlite3_custom.conf.sample (removed),
configs/users.conf.sample (removed),
configs/samples/res_pktccops.conf.sample (added),
configs/samples/amd.conf.sample (added), configs/rtp.conf.sample
(removed), configs/samples/res_parking.conf.sample (added),
configs/hep.conf.sample (removed),
configs/samples/modules.conf.sample (added),
configs/cel_tds.conf.sample (removed),
configs/res_curl.conf.sample (removed),
configs/samples/skinny.conf.sample (added),
configs/samples/cdr_pgsql.conf.sample (added),
configs/samples/sip_notify.conf.sample (added),
configs/samples/test_sorcery.conf.sample (added),
configs/samples/dsp.conf.sample (added),
configs/ss7.timers.sample (removed),
configs/samples/udptl.conf.sample (added),
configs/cdr_odbc.conf.sample (removed),
configs/samples/sip.conf.sample (added),
configs/minivm.conf.sample (removed),
configs/res_config_sqlite.conf.sample (removed),
configs/codecs.conf.sample (removed), configs/osp.conf.sample
(removed), configs/samples/cel_custom.conf.sample (added),
configs/samples/dbsep.conf.sample (added),
configs/samples/app_skel.conf.sample (added),
configs/console.conf.sample (removed),
configs/cdr_manager.conf.sample (removed),
configs/cdr_custom.conf.sample (removed),
configs/chan_dahdi.conf.sample (removed),
configs/res_config_mysql.conf.sample (removed),
configs/samples/statsd.conf.sample (added),
configs/cli.conf.sample (removed), configs/queues.conf.sample
(removed), configs/cdr_syslog.conf.sample (removed), UPGRADE.txt,
configs/manager.conf.sample (removed),
configs/samples/res_corosync.conf.sample (added),
configs/features.conf.sample (removed), configs/sla.conf.sample
(removed), configs/logger.conf.sample (removed),
configs/res_odbc.conf.sample (removed),
configs/agents.conf.sample (removed),
configs/samples/ooh323.conf.sample (added), Makefile,
configs/xmpp.conf.sample (removed),
configs/samples/phoneprov.conf.sample (added),
configs/samples/alarmreceiver.conf.sample (added),
configs/samples/cdr_tds.conf.sample (added),
configs/extconfig.conf.sample (removed),
configs/samples/func_odbc.conf.sample (added),
configs/samples/res_fax.conf.sample (added),
configs/samples/iaxprov.conf.sample (added),
configs/samples/res_ldap.conf.sample (added),
configs/samples/dnsmgr.conf.sample (added),
configs/res_pktccops.conf.sample (removed),
configs/cel.conf.sample (removed),
configs/samples/res_pgsql.conf.sample (added),
configs/samples/chan_mobile.conf.sample (added),
configs/samples/asterisk.adsi (added),
configs/samples/users.conf.sample (added),
configs/samples/rtp.conf.sample (added),
configs/phone.conf.sample (removed), configs/skinny.conf.sample
(removed), configs/muted.conf.sample (removed),
configs/samples/hep.conf.sample (added), configs/iax.conf.sample
(removed), configs/samples/cel_tds.conf.sample (added),
configs/sip_notify.conf.sample (removed),
configs/samples/telcordia-1.adsi (added),
configs/samples/alsa.conf.sample (added),
configs/samples/adsi.conf.sample (added),
configs/test_sorcery.conf.sample (removed),
configs/samples/followme.conf.sample (added),
configs/samples/asterisk.conf.sample (added),
configs/extensions.lua.sample (removed), configs/say.conf.sample
(removed), configs/cel_custom.conf.sample (removed),
configs/samples/ss7.timers.sample (added),
configs/samples/cel_odbc.conf.sample (added),
configs/app_skel.conf.sample (removed),
configs/samples/ccss.conf.sample (added),
configs/cli_permissions.conf.sample (removed),
configs/statsd.conf.sample (removed),
configs/samples/res_config_sqlite.conf.sample (added),
configs/config_test.conf.sample (removed),
configs/indications.conf.sample (removed),
configs/samples/osp.conf.sample (added),
configs/samples/cdr_manager.conf.sample (added),
configs/samples/console.conf.sample (added),
configs/voicemail.conf.sample (removed),
configs/res_corosync.conf.sample (removed),
configs/misdn.conf.sample (removed),
configs/samples/cli.conf.sample (added), configs/ari.conf.sample
(removed), configs/ooh323.conf.sample (removed),
configs/samples/calendar.conf.sample (added),
configs/samples/res_stun_monitor.conf.sample (added),
configs/samples/manager.conf.sample (added),
configs/samples/pjsip_notify.conf.sample (added),
configs/samples/sla.conf.sample (added),
configs/musiconhold.conf.sample (removed),
configs/pjsip.conf.sample (removed), configs/sorcery.conf.sample
(removed), configs/vpb.conf.sample (removed),
configs/unistim.conf.sample (removed),
configs/res_ldap.conf.sample (removed),
configs/dnsmgr.conf.sample (removed),
configs/samples/extconfig.conf.sample (added),
configs/samples/res_snmp.conf.sample (added),
configs/acl.conf.sample (removed),
configs/samples/smdi.conf.sample (added),
configs/samples/cel.conf.sample (added),
configs/cli_aliases.conf.sample (removed),
configs/samples/cdr_sqlite3_custom.conf.sample (added),
configs/extensions.ael.sample (removed),
configs/cdr_adaptive_odbc.conf.sample (removed),
configs/samples/phone.conf.sample (added),
configs/extensions_minivm.conf.sample (removed),
configs/motif.conf.sample (removed), configs/telcordia-1.adsi
(removed), configs/samples/meetme.conf.sample (added),
configs/adsi.conf.sample (removed), configs/alsa.conf.sample
(removed), configs/samples/muted.conf.sample (added),
configs/followme.conf.sample (removed),
configs/asterisk.conf.sample (removed),
configs/samples/iax.conf.sample (added),
configs/samples/res_config_sqlite3.conf.sample (added),
configs/samples/mgcp.conf.sample (added),
configs/cel_odbc.conf.sample (removed), configs/ccss.conf.sample
(removed), configs/cdr_mysql.conf.sample (removed),
configs/samples/extensions.lua.sample (added),
configs/samples/say.conf.sample (added),
configs/dundi.conf.sample (removed),
configs/samples/queuerules.conf.sample (added),
configs/oss.conf.sample (removed), configs/app_mysql.conf.sample
(removed), configs/samples/confbridge.conf.sample (added),
configs/samples/cli_permissions.conf.sample (added),
configs/samples/enum.conf.sample (added),
configs/samples/config_test.conf.sample (added),
configs/cdr.conf.sample (removed),
configs/samples/indications.conf.sample (added),
configs/cel_pgsql.conf.sample (removed),
configs/res_stun_monitor.conf.sample (removed),
configs/calendar.conf.sample (removed),
configs/samples/voicemail.conf.sample (added),
configs/pjsip_notify.conf.sample (removed),
configs/samples/misdn.conf.sample (added),
configs/samples/ari.conf.sample (added),
configs/samples/festival.conf.sample (added),
configs/samples/http.conf.sample (added),
configs/res_snmp.conf.sample (removed),
configs/samples/musiconhold.conf.sample (added),
configs/samples/pjsip.conf.sample (added),
configs/samples/sorcery.conf.sample (added),
configs/samples/vpb.conf.sample (added), configs/smdi.conf.sample
(removed), configs/samples/unistim.conf.sample (added),
configs/samples (added), configs/amd.conf.sample (removed):
configs: Move sample config files into a subdirectory of configs
This moves all samples configs from configs/ to configs/samples.
This allows for additional sets of sample configuration files to
be added in the future. Review:
https://reviewboard.asterisk.org/r/3804/
* channels/chan_sip.c, UPGRADE.txt: chan_sip: Make
progressinband=never really mean 'never' progressinband=never in
sip.conf is easily defeated if an onward trunk sends a progress
indication of its own. This is almost certain to happen if the
onward trunk is ISDN or IAX as these technologies send a progress
indication even if early media is not required. This progress
message is passed to the caller, and causes the "never" option to
be rather badly named. This patch changes the behaviour of this
setting in the following ways: 1) In sip_write(), do not pass the
media unless we have either progressed beyond INV_EARLY_MEDIA, or
we are in INV_EARLY_MEDIA state, and early media is both set-up
and wanted. This helps resolve double-ringing on some buggy
handsets. 2) In sip_indicate(), if we see AST_CONTROL_PROGRESS,
but SIP_PROG_INBAND_NEVER is set, send a 180 Ringing instead to
avoid implicitly enabling early media. Avoid sending double ring
indications. NOTE: the meaning of the SIP_PROGRESS_SENT flag
changes slightly in this patch to also encapsulate the fact that
a channel has *sent or received* a 183 Progress indication. This
makes the updated code in sip_write() much more simple. Review:
https://reviewboard.asterisk.org/r/3700 ASTERISK-23972 #close
Reported by: Steve Davies patches:
inband_never_present_early_media2 uploaded by Steve Davies
(License 5012)
* menuselect: Add svn:ignore property
* UPGRADE.txt, menuselect/configure, menuselect/configure.ac,
configure, configure.ac: configure: Fix libxml2 development
library dependency checking The commit that added libxml2 support
didn't fully check for the libxml2 development script in the
Asterisk configure file. As a result, Asterisk could be
configured, then fail on menuselect. This patch fixes it so that
Asterisk should detect the libxml2 dependency failure first.
* menuselect/makeopts.in, menuselect/autoconfig.h.in,
menuselect/menuselect.h, menuselect/example_menuselect-tree,
configure, include/asterisk/autoconfig.h.in, menuselect/Makefile,
menuselect/README, menuselect/aclocal.m4, configure.ac,
UPGRADE.txt, menuselect/configure, menuselect/configure.ac,
menuselect/menuselect.c, menuselect/acinclude.m4: menuselect: Add
libxml2 support (Patch 3) This is the final patch in adding
menuselect to Asterisk. - The first patch (r418832) added
menuselect along with mxml - The second patch (r418833) removed
mxml from menuselect This patch adds support for libxml2 to
menuselect, and makes libxml2 a required library for Asterisk.
Note that the libxml2 portion of this patch was written by Sean
Bright, and was made available on a team branch:
http://svn.digium.com/svn/menuselect/team/seanbright/libxml2/
Review: https://reviewboard.asterisk.org/r/3773/ ASTERISK-20703
#close patches: some_mysterious_team_branch uploaded by
seanbright (License 5060)
* menuselect/mxml (removed): menuselect: Remove mxml from
menuselect (Patch 2) This is the second patch that adds
menuselect to Asterisk trunk. The previous commit (r418832) added
menuselect along with mxml; this patch removes mxml completely
from Menuselect. A subsequent patch will switch menuselect over
to using libxml2, and make libxml2 a required dependency for
Asterisk. ASTERISK-20703
* menuselect/mxml/configure.in (added), menuselect/acinclude.m4
(added), menuselect/mxml/mxml.list.in (added),
menuselect/mxml/README (added), menuselect/linkedlists.h (added),
menuselect/mxml (added), menuselect/mxml/config.h.in (added),
menuselect/aclocal.m4 (added), menuselect/install-sh (added),
menuselect/mxml/mxml-string.c (added),
menuselect/menuselect_stub.c (added), menuselect/make_version
(added), menuselect/mxml/mxml-entity.c (added),
menuselect/bootstrap.sh (added), menuselect/makeopts.in (added),
menuselect/autoconfig.h.in (added), menuselect/config.guess
(added), menuselect/mxml/install-sh (added),
menuselect/test/build_tools/menuselect-deps (added), /,
menuselect/contrib/menuselect-dummy (added),
menuselect/config.sub (added), menuselect/mxml/configure (added),
menuselect/mxml/Makefile.in (added), menuselect (added),
menuselect/contrib (added), menuselect/mxml/mxml.pc.in (added),
menuselect/configure.ac (added), menuselect/mxml/mxml-set.c
(added), menuselect/contrib/Makefile-dummy (added),
menuselect/mxml/ANNOUNCEMENT (added), menuselect/missing (added),
menuselect/menuselect_curses.c (added),
menuselect/example_menuselect-tree (added), menuselect/Makefile
(added), menuselect/mxml/mxml-search.c (added), menuselect/test
(added), menuselect/test/menuselect-tree (added),
menuselect/mxml/mxml.h (added), menuselect/mxml/mxml-index.c
(added), menuselect/configure (added),
menuselect/menuselect_newt.c (added), menuselect/mxml/mxml-attr.c
(added), menuselect/mxml/mxml-private.c (added),
menuselect/menuselect.c (added), menuselect/mxml/CHANGES (added),
menuselect/mxml/COPYING (added), menuselect/mxml/mxml-file.c
(added), menuselect/menuselect.h (added),
menuselect/menuselect_gtk.c (added), menuselect/README (added),
menuselect/strcompat.c (added), menuselect/mxml/mxml-node.c
(added), menuselect/test/build_tools (added): menuselect: Add
menuselect to Asterisk trunk (Patch 1) This is the first patch
that adds menuselect to Asterisk trunk, and removes the
svn:externals property. This is being done for two reasons: (1)
The removal of external repositories eases a future migration to
git (2) Asterisk is now the only thing that uses menuselect; as a
result, there's little need to keep it in an external repository
Subsequent patches will remove the mxml dependency from
menuselect and tidy up the build system. ASTERISK-20703
2014-07-17 14:28 +0000 [r418811] Kinsey Moore <kmoore@digium.com>
* /, main/bridge_channel.c: TEST_FRAMEWORK: Fix threewaytransfer
reporting Ensure that three-way transfers can be reported even if
featuremap is non-NULL. ........ Merged revisions 418810 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-16 23:08 +0000 [r418788] Corey Farrell <git@cfware.com>
* /, channels/dahdi/bridge_native_dahdi.c: Remove include of
astobj.h from channels/dahdi/bridge_native_dahdi.c. The include
was unneeded, this is split off from r3758 as it applies to 12.
........ Merged revisions 418787 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-16 14:03 +0000 [r418717-418757] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip/pjsip_configuration.c, CHANGES, res/res_pjsip.c,
channels/chan_pjsip.c, include/asterisk/res_pjsip.h,
contrib/ast-db-manage/config/versions/1d50859ed02e_create_accountcode.py
(added), /, configs/pjsip.conf.sample: res_pjsip: Support setting
a default accountcode on endpoints Most channel drivers let you
specify a default accountcode to be set on channels associated
with a particular peer/endpoint/object. Prior to this patch,
chan_pjsip/res_pjsip did not support such a setting. This patch
adds a new setting to the res_pjsip endpoint object,
'accountcode'. When a channel is created that is associated with
an endpoint with this value set, the channel will automatically
have its accountcode property set to the value configured for the
endpoint. Review: https://reviewboard.asterisk.org/r/3724/
ASTERISK-24000 #close Reported by: Matt Jordan ........ Merged
revisions 418756 from
http://svn.asterisk.org/svn/asterisk/branches/12
* cdr/cdr_pgsql.c, CHANGES, configs/cdr_pgsql.conf.sample,
configs/res_pgsql.conf.sample, cel/cel_pgsql.c,
res/res_config_pgsql.c, configs/cel_pgsql.conf.sample: cel_pgsql,
cdr_pgsql, res_config_pgsql: Add PostgreSQL application_name
support This patch adds support for the PostgreSQL
application_name connection setting. When the appropriate
PostgreSQL module's configuration is set with an application
name, the name will be passed to PostgreSQL on connection and
displayed in the database's pg_stat_activity view, as well as in
CSV logs. This aids in managing which applications/servers are
connected to a PostgreSQL database, as well as tracing the
activity of those connections. Review:
https://reviewboard.asterisk.org/r/3591 ASTERISK-23737 #close
Reported by: Gergely Domodi patches: pgsql_application_name.patch
uploaded by Gergely Domodi (License 6610)
* codecs/codec_adpcm.c, main/format.c: codec_adpcm: Change
description of codec "ADPCM" to "Dialogic ADPCM" Technically,
ADPCM is a method that can be applied to several codecs.
Asterisk's ADPCM codec is the Dialogic ADPCM or VOX codec. See
http://en.wikipedia.org/wiki/Dialogic_ADPCM for more information
about said codec. Review: https://reviewboard.asterisk.org/r/3744
patches: rb3744.patch uploaded by dennis.guse (License 6513)
* UPGRADE.txt, main/manager.c, /: manager: Return ActionID on
nominal responses to PresenceState action When the PresenceState
action is executed, the nominal path fails to include the
ActionID in the successful response. This patch adds a call to
astman_start_ack, which guarantees that an ActionID (if provided)
will be sent back to the AMI client. Unlike the Asterisk 11 and
12 patches, this patch also deprecates the duplicate Message key
in the response to the action, replacing it with the key
'PresenceMessage'. Review:
https://reviewboard.asterisk.org/r/3776/ ASTERISK-23985 #close
........ Merged revisions 418713 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418714 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-15 23:03 +0000 [r418716] Kinsey Moore <kmoore@digium.com>
* /, main/bridge_channel.c: TEST_FRAMEWORK: Fix ref leak in feature
activation This fixes two reference leaks that would occur when
TEST_FRAMEWORK was enabled and features were successfully
executed. ........ Merged revisions 418715 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-15 17:57 +0000 [r418654] Jonathan Rose <jrose@digium.com>
* funcs/func_uri.c, /: func_uri: URIENCODE/URIDECODE - allow empty
strings as argument Previously these two dialplan functions would
issue warnings and return failure when an empty string is used as
the argument. Now they will not issue a warning and will
successfully return an empty string. ASTERISK-23911 #close
Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3745/ ........ Merged
revisions 418641 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 418649 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418650 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-15 12:11 +0000 [r418616] Sean Bright <sean@malleable.com>
* main/asterisk.c: Update Asterisk copyright year in
main/asterisk.c It's been 2014 for like... 6 months.
2014-07-14 14:55 +0000 [r418566-418587] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/logger.h, /: logger.h: Extract DEBUG_ATLEAST()
to complement VERBOSITY_ATLEAST(). ........ Merged revisions
418586 from http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/jabber.h (removed), include/asterisk/jingle.h
(removed), include/asterisk/frame_defs.h (removed),
configs/h323.conf.sample (removed): Actually delete the removed
files.
2014-07-13 21:57 +0000 [r418507] Corey Farrell <git@cfware.com>
* /, main/astobj2.c, contrib/scripts/refcounter.py: astobj2: work
around REF_DEBUG race which causes out of order log entries *
Update refcounter.py to use delta's to track the current
reference count. * Use result from internal_ao2_ref to write
old_refcount to refs_log. Review:
https://reviewboard.asterisk.org/r/3756/ ........ Merged
revisions 418504 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 418505 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418506 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-13 20:08 +0000 [r418488] Scott Griepentrog <sgriepentrog@digium.com>
* include/asterisk/astobj2.h: astobj2: correct define for
ao2_t_cleanup This change maps the ao2_t_cleanup() function to
the correct debug function so that it can be used. Review:
https://reviewboard.asterisk.org/r/3764/
2014-07-13 16:48 +0000 [r418448-418467] Corey Farrell <git@cfware.com>
* main/manager.c, /, apps/app_skel.c: Fix minor reference leaks in
app_skel and TEST_FRAMEWORK * Cleanup games object in app_skel. *
Cleanup stasis subscription to TEST_FRAMEWORK in manager.c (12+).
Review: https://reviewboard.asterisk.org/r/3757/ ........ Merged
revisions 418465 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418466 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/jabber.h, include/asterisk/jingle.h,
configs/h323.conf.sample: Remove files left behind on removal of
h323, jingle and jabber. This change removes h323.conf.sample,
jingle.h, jabber.h left behind by r3698. Review:
https://reviewboard.asterisk.org/r/3755/
2014-07-11 23:00 +0000 [r418419] Matthew Jordan <mjordan@digium.com>
* main/astobj2.c, include/asterisk/astobj2.h: astobj2: Add tag
variants for ao2_bump, ao2_cleanup, and ao2_replace Tags are
useful in hunting down ref imbalances; this patch adds tag
variants for these commonly used macros/functions. Review:
https://reviewboard.asterisk.org/r/3750/
2014-07-11 21:10 +0000 [r418397] Corey Farrell <git@cfware.com>
* /, include/asterisk/astobj2.h: astobj2: tweak ao2_replace to do
nothing when it would be a NoOp This change causes ao2_replace to
do nothing when src == dst. This avoids REF_DEBUG logging when
we're not actually doing anything. Review:
https://reviewboard.asterisk.org/r/3743/ ........ Merged
revisions 418396 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-11 16:42 +0000 [r418370] Scott Griepentrog <sgriepentrog@digium.com>
* /, main/config.c: config: inform config hook of change when
writing file When updated configuration is written back to the
conf file - for example when a user changes their voicemail pin,
make sure that any config hook that wants to know of changes is
informed. Review: https://reviewboard.asterisk.org/r/3708/
........ Merged revisions 418366 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418369 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-10 15:36 +0000 [r418325] Matthew Jordan <mjordan@digium.com>
* /, include/asterisk/xmpp.h: include/asterisk/xmpp.h: Convert
indentation to tabs This is a whitespace only change. ........
Merged revisions 418323 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418324 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-10 01:59 +0000 [r418226-418264] Richard Mudgett <rmudgett@digium.com>
* channels/sig_pri.c, /: chan_dahdi/sig_pri: Fix type mismatch in
the idledial feature's channel creation. Square pegs in round
holes don't work very well. ........ Merged revisions 418261 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 418262 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 418263 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/stasis/stasis_bridge.h (added), main/bridge_channel.c,
res/res_stasis.c, /, res/stasis/stasis_bridge.c (added),
include/asterisk/bridge_channel.h, main/bridge_basic.c: ARI: Make
mixing bridges propagate linkedids and accountcodes. * Create a
Stasis bridge sub-class to propagate linkedids and accountcodes.
* Fixed the basic bridge sub-class to update peeraccount codes
when the number of channels in the bridge drops back down to two
parties. * Refactored ast_bridge_channel_update_accountcodes() to
handle channels joining/leaving the bridge. * Fixed the basic
bridge sub-class to not call the base bridge class pull method
twice. AFS-105 #close ASTERISK-23852 #close Reported by: Richard
Mudgett Review: https://reviewboard.asterisk.org/r/3720/ ........
Merged revisions 418225 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-08 14:48 +0000 [r418174-418183] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/deviceStates.json,
rest-api/api-docs/endpoints.json,
rest-api/api-docs/mailboxes.json, rest-api/api-docs/events.json,
/, rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json,
rest-api/api-docs/playbacks.json,
rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json,
rest-api/resources.json, include/asterisk/manager.h,
rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json: manager/ARI: Update version to
2.4.0/1.4.0; Update UPGRADE.txt ........ Merged revisions 418182
from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix undefined
function when PJPROJECT is not installed The
dtls_perform_handshake function was mistakenly placed under the
guards for USE_PJPROJECT. If PJPROJECT was not installed, the
function would not be defined, while other functions would
attempt to still use it. This prevented res_rtp_asterisk from
being loaded. ASTERISK-24001 #close Reported by: Don Fanning
........ Merged revisions 418172 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-07 16:08 +0000 [r418117] Joshua Colp <jcolp@digium.com>
* include/asterisk/res_pjsip_body_generator_types.h,
res/res_pjsip_dialog_info_body_generator.c (added),
res/res_pjsip_exten_state.c, res/res_pjsip/presence_xml.c, /,
include/asterisk/res_pjsip_presence_xml.h:
res_pjsip_dialog_info_body_generator: Add dialog-info+xml support
for presence. This module implements dialog-info+xml for the
purposes of presence. This means that phones such as Grandstreams
can now subscribe to receive presence information for an
extension. ASTERISK-21443 #close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3705/ ........ Merged
revisions 418116 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-07 02:15 +0000 [r418090] Matthew Jordan <mjordan@digium.com>
* include/asterisk/stasis_app.h, res/ari/resource_channels.c,
res/res_stasis.c, /, res/stasis/app.c: ARI/res_stasis: Subscribe
to both Local channel halves when originating to app This patch
fixes two bugs: 1. When originating a channel into a Stasis
application, we already create a subscription for the channel
that is going into our Stasis app. Unfortunately, when you create
a Local channel and pass it off to a Stasis app, you really
aren't creating just one channel: you're creating two. This patch
snags the second half of the Local channel pair (assuming it is a
Local channel pair, but luckily core_local is kind about such
assumptions) and subscribes to it as well. 2. Subscriptions are a
bit sticky right now. If a subscription is made, the 'interest'
count gets bumped on the Stasis subscription - but unless
something explicitly unsubscribes the channel, said subscription
sticks around. This is not much of a problem is a user is
creating the subscription - if they made it, they must want it.
However, when we are creating implicit subscriptions, we need to
make sure something clears them out. This patch takes a
pessimistic approach: it watches the cache updates coming from
Stasis and, if we notice that the cache just cleared out an
object, we delete our subscription object. This keeps our ao2
container of Stasis forwards in an application from growing out
of hand; it also is a bit more forgiving for end users who may
not realize they were supposed to unsubscribe from that channel
that just hung up. Review:
https://reviewboard.asterisk.org/r/3710/ #ASTERISK-23939 #close
........ Merged revisions 418089 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-07 01:22 +0000 [r418067-418084] Kinsey Moore <kmoore@digium.com>
* tests/test_cel.c, main/cel.c, channels/chan_pjsip.c,
res/res_pjsip_session.c, /: CEL: Fix incorrect/missing extra
field information This corrects two issues with the extra field
information in Asterisk 12+ in channel event logs. It is possible
to inject custom values into the dialstatus provided by
ast_channel_dial_type() Stasis messages that fall outside the
enumeration allowed for the DIALSTATUS channel variable. CEL now
filters for the allowed values and ignores other values. The
"hangupsource" extra field key is always blank if the far end
channel is a chan_pjsip channel. This is because the hangupsource
is never set for the pjsip channel driver. This change sets the
hangupsource whenever a hangup is queued for chan_pjsip channels.
This corrects an issue with the pjsip channel driver where the
hangupcause information was not being set properly. Review:
https://reviewboard.asterisk.org/r/3690/ ........ Merged
revisions 418071 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/http.c: HTTP: Fix build for gcc 4.10 ........ Merged
revisions 418066 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-04 15:26 +0000 [r418019-418050] Matthew Jordan <mjordan@digium.com>
* main/Makefile: main/Makefile: fix compilation error of buildinfo
occurring on 'make install' Egads. Another bad deletion of too
much when attempting to remove h323 stuff.
* configure.ac, build_tools/menuselect-deps.in, configure,
main/Makefile: configure: Remove last vestiges of h323; DO create
menuselect-deps The previous patch (r418034) fixed the 'glitch'
that the channels/h323 Makefile no longer existed. Unfortunately,
removing the entire line was a bit of a blunder, as it meant that
build_tools/menuselect-deps was never generated. Hilarity ensued
when actually trying to compile. But hey! At least configure
worked. This patch fixes *that* glitch, and removes some more of
the vestiges of h323. (It had tendrils in the main Makefile?
Crazy.)
* configure.ac, configure: configure: Update script to pass if
channels/h323/Makefile.in does not exist This simply removes that
check from the configure script, as r418019 removed chan_h323.
* apps/app_dahdibarge.c (removed), configs/gtalk.conf.sample
(removed), main/pbx.c, apps/app_readfile.c (removed),
channels/chan_sip.c, configs/jingle.conf.sample (removed),
UPGRADE.txt, res/res_musiconhold.c, channels/chan_gtalk.c
(removed), channels/Makefile, CHANGES, res/res_jabber.c
(removed), channels/h323 (removed), utils/conf2ael.c,
channels/chan_jingle.c (removed), res/ael/pval.c,
configs/jabber.conf.sample (removed),
configs/asterisk.conf.sample, res/res_agi.c, channels/chan_h323.c
(removed), addons/Makefile, pbx/pbx_realtime.c, utils/ael_main.c,
include/asterisk/options.h, main/asterisk.c,
addons/app_saycountpl.c (removed): Remove many deprecated modules
Billing records are fair, To get paid is quite bright, You should
really use ODBC; Good-bye cdr_sqlite. Microsoft did once push
H.323, Hell, we all remember NetMeeting. But try to compile
chan_h323 now And you will take quite a beating. The XMPP and SIP
war was fierce, And in the distant fray Was birthed
res_jabber/chan_jingle; But neither to stay. For everyone did
care and chase what Google professed. "Free Internet Calling" was
what devotees cried, But Google did change the specs so often
That the developers were happy the day chan_gtalk died. And then
there was that odd application Dedicated to the Polish tongue.
app_saycountpl was subsumed by Say; One could say its bell was
rung. To read and parse a file from the dialplan You could (I
guess) use an application. app_readfile did fill that purpose,
but I think A function is perhaps better in its creation. Barging
is rude, I'm not sure why we do it. Inwardly, the caller will
probably sigh. But if you really must do it, Don't use
app_dahdibarge, use ChanSpy. We all despise the sound of tinny
robots It makes our queues so cold. To control such an
abomination It's better to not use Wait/SetMusicOnHold. It's
often nice to know properties of a channel It makes our calls
right We have a nice function called CHANNEL And so SIPCHANINFO
is sent off into the night. And now things get odd; Apparently
one could delimit with a colon Properties from the SIPPEER
function! Commas are in; all others are done. Finally, a word on
pipes and commas. We're sorry. We can't say it enough. But those
compatibility options in asterisk.conf; To maintain them forever
was just too tough. This patch removes: * cdr_sqlite * chan_gtalk
* chan_jingle * chan_h323 * res_jabber * app_saycountpl *
app_readfile * app_dahdibarge It removes the following
applications/functions: * WaitMusicOnHold * SetMusicOnHold *
SIPCHANINFO It removes the colon delimiter from the SIPPEER
function. Finally, it also removes all compatibility options that
were configurable from asterisk.conf, as these all applied to
compatibility with Asterisk 1.4 systems. Review:
https://reviewboard.asterisk.org/r/3698/
2014-07-03 22:22 +0000 [r417933-417976] Richard Mudgett <rmudgett@digium.com>
* channels/sig_pri.h, channels/chan_dahdi.c,
configs/chan_dahdi.conf.sample, /, UPGRADE.txt,
channels/sig_pri.c: chan_dahdi: Add inband_on_setup_ack
compatibility option. The new inband_on_setup_ack option causes
Asterisk to assume inband audio may be present when a
SETUP_ACKNOWLEDGE message is received. Q.931 Section 5.1.3 says
that in scenarios with overlap dialing, when a dialtone is sent
from the network side, progress indicator 8 "Inband info now
available" MAY be sent to the CPE if no digits were received with
the SETUP. It is thus implied that the ie is mandatory if digits
came with the SETUP and dialtone is needed. This option should be
enabled, when the network sends dialtone and you want to hear it,
but the network doesn't send the progress indicator when needed.
NOTE: For Q.SIG setups this option should be enabled when
outgoing overlap dialing is also enabled because Q.SIG does not
send the progress indicator with the SETUP ACK. The commit
-r413714 (AST-1338) which causes this issue was dealing with a
SIP-to-ISDN interoperability issue. This commit is a merge of the
two patches indicated below. ASTERISK-23897 #close Reported by:
Pavel Troller Patches: pri-4.diff (license #6302) patch uploaded
by Pavel Troller jira_asterisk_23897_v11.patch (license #5621)
patch uploaded by rmudgett Review:
https://reviewboard.asterisk.org/r/3633/ ........ Merged
revisions 417956 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 417957 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417958 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/resource_channels.c, res/res_ari.c, main/manager.c, /:
res_ari: Fix some off-nominal paths just dropping the HTTP
connection. * Removed some incorrect newlines on ast_http_error()
messages in manager.c. * Removed an incorrect newline in
res_ari_channels.c. Addendum to ASTERISK-23552 ........ Merged
revisions 417932 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-03 17:34 +0000 [r417910-417916] Jonathan Rose <jrose@digium.com>
* CHANGES, channels/chan_dahdi.c: chan_dahdi: Add AMI commands for
controlling PRI debugging output Adds the following AMI commands:
PRIDebugSet - Set PRI debug levels for a specific span
PRIDebugFileSet - Set the file used for PRI debug message output
PRIDebugFileUnset - Disables file output for PRI debug messages
Review: https://reviewboard.asterisk.org/r/3681/
* CHANGES, pbx/pbx_config.c, main/pbx.c: pbx_config: Add manager
actions to add/remove extensions Adds two new manager commands to
pbx_config - DialplanExtensionAdd and DialplanExtensionRemove
which allow manager users to create and delete extensions
respectively. Review: https://reviewboard.asterisk.org/r/3650/
2014-07-03 17:16 +0000 [r417901] Richard Mudgett <rmudgett@digium.com>
* res/res_phoneprov.c, main/http.c, UPGRADE.txt,
include/asterisk/tcptls.h, res/res_http_post.c,
res/res_http_websocket.c, configs/http.conf.sample,
include/asterisk/http.h, main/tcptls.c, res/res_ari.c,
main/manager.c, /: HTTP: Add persistent connection support.
Persistent HTTP connection support is needed due to the increased
usage of the Asterisk core HTTP transport and the frequency at
which REST API calls are going to be issued. * Add http.conf
session_keep_alive option to enable persistent connections. *
Parse and discard optional chunked body extension information and
trailing request headers. * Increased the maximum
application/json and application/x-www-form-urlencoded body size
allowed to 4k. The previous 1k was kind of small. * Removed a
couple inlined versions of ast_http_manid_from_vars() by calling
the function. manager.c:generic_http_callback() and
res_http_post.c:http_post_callback() * Add missing va_end() in
ast_ari_response_error(). * Eliminated unnecessary RAII_VAR() use
in http.c:auth_create(). ASTERISK-23552 #close Reported by: Scott
Griepentrog Review: https://reviewboard.asterisk.org/r/3691/
........ Merged revisions 417880 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-03 16:55 +0000 [r417900] Matthew Jordan <mjordan@digium.com>
* main/tcptls.c, configure, include/asterisk/autoconfig.h.in,
configure.ac: main/tcptls: Add checks for OpenSSL Elliptic Curve
support The patch for ASTERISK-23905 that added PFS support in
Asterisk depends on the elliptic curve library support being
present in OpenSSL. As it turns out, some versions of OpenSSL
don't have this library - notably the version running on our
build agents. This patch fixes the build by providing a configure
check for the specific library calls that the PFS patch relies
on. Review: https://reviewboard.asterisk.org/r/3709/
2014-07-03 16:14 +0000 [r417877-417879] sgalarneau <sgalarneau@localhost>:
* res/ari/resource_events.h, rest-api/api-docs/channels.json,
res/ari/resource_channels.h, rest-api/api-docs/events.json, /:
ARI: Improvements to body parameters documentation The variables
body parameter under the originate and originate with id
operations of the channel resource showed invalid JSON in its
description. The variables body parameter under the userEvent
operation of the event resource made no mention that the custom
key/value pairs should be wrapped in a variables key in order to
be added to the custom user event. ASTERISK-23975 #close Review:
https://reviewboard.asterisk.org/r/3692/ ........ Merged
revisions 417878 from
http://svn.asterisk.org/svn/asterisk/branches/12
* rest-api-templates/api.wiki.mustache,
rest-api-templates/swagger_model.py, /: api.wiki.mustache: Update
wiki template to support body parameters This patch updates the
api.wiki.mustache template and the swagger_model python script to
understand if an operation has a body parameter. If an operation
does have a body parameter, it will now be displayed in the
corresponding wiki entry. ........ Merged revisions 407389 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-03 14:08 +0000 [r417863] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* Makefile, contrib/scripts/dahdi_span_config_hook (added):
dahdi_span_config_hook: automatically register new dahdi channels
Install a hook script for DAHDI to register new spans with
Asterisk automatically by running: asterisk -rx 'dahdi create
channel FIRST LAST' Review:
https://reviewboard.asterisk.org/r/3157/
2014-07-03 12:10 +0000 [r417800-417803] Matthew Jordan <mjordan@digium.com>
* main/tcptls.c, CHANGES: main/tcptls: Add support for Perfect
Forward Secrecy This patch enables Perfect Forward Secrecy (PFS)
in Asterisk's core TLS API. Modules that wish to enable PFS
should consider the following: - Ephemeral ECDH (ECDHE) is
enabled by default. To disable it, do not specify a ECDHE cipher
suite in a module's configuration, for example:
tlscipher=AES128-SHA:DES-CBC3-SHA - Ephemeral DH (DHE) is
disabled by default. To enable it, add DH parameters into the
private key file, i.e., tlsprivatekey. For an example, see the
default dh2048.pem at
http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt
- Because clients expect the server to prefer PFS, and because
OpenSSL sorts its cipher suites by bit strength, (see "openssl
ciphers -v DEFAULT") consider re-ordering your cipher suites in
the conf file. For example:
tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH
will use PFS when offered by the client. Clients which do not
offer PFS fall-back to AES-128 (or even 3DES as recommend by RFC
3261). Review: https://reviewboard.asterisk.org/r/3647/
ASTERISK-23905 #close Reported by: Alexander Traud patches:
tlsPFS_for_HEAD.patch uploaded by Alexander Traud (License 6520)
tlsPFS.patch uploaded by Alexander Traud (License 6520)
* /, main/utils.c: main/untils: Prevent potential infinite loop in
ast_careful_fwrite A loop in ast_careful_fwrite exists that will
continually attempt to write to a file stream, even in the
presence of EAGAIN/EINTR errors. However, if a connection that
uses ast_careful_fwrite closes suddenly, ast_careful_fwrite's
call to fflush may return EAGAIN/EINTER along with EOF. A
subsequent call to fflush will return EOF but not clear errno,
resulting in an infinite loop. This patch clears errno after it
is detected and handled the loop, such that any subsequent call
to fflush will not get erroneously stuck. Review:
https://reviewboard.asterisk.org/r/3704 #ASTERISK-23984 #close
Reported by: Steve Davies patches: fflush_loop_fix uploaded by
one47 (License 5012) ........ Merged revisions 417797 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 417798 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417799 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-02 21:13 +0000 [r417770] Jonathan Rose <jrose@digium.com>
* res/ari/resource_events.h, res/ari/resource_asterisk.h,
res/ari/resource_applications.h, res/ari/resource_playbacks.h,
res/ari/resource_channels.h, res/ari/resource_sounds.h, /,
res/ari/resource_bridges.h, res/ari/resource_recordings.h,
rest-api-templates/ari_resource.h.mustache,
res/ari/resource_device_states.h, res/ari/resource_endpoints.h,
res/ari/resource_mailboxes.h: ARI: Remove unnecessary \briefs
from automatically generated documentation Review:
https://reviewboard.asterisk.org/r/3440/ ........ Merged
revisions 412653 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-07-01 14:42 +0000 [r417679-417706] Joshua Colp <jcolp@digium.com>
* /, res/res_rtp_asterisk.c: res_rtp_asterisk: Don't leak memory or
reset state if DTLS configuration is set multiple times. ........
Merged revisions 417705 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c,
contrib/ast-db-manage/config/versions/51f8cb66540e_add_further_dtls_options.py
(added), include/asterisk/res_pjsip_session.h, main/rtp_engine.c,
/, channels/chan_sip.c, main/sdp_srtp.c, res/res_pjsip_sdp_rtp.c,
res/res_pjsip/pjsip_configuration.c, configs/sip.conf.sample,
include/asterisk/rtp_engine.h, res/res_pjsip.c,
channels/sip/include/sip.h, include/asterisk/res_pjsip.h,
include/asterisk/sdp_srtp.h: Recorded merge of revisions 417677
from http://svn.asterisk.org/svn/asterisk/branches/11 ........
res_rtp_asterisk: Add SHA-256 support for DTLS and perform DTLS
negotiation on RTCP. This change fixes up DTLS support in
res_rtp_asterisk so it can accept and provide a SHA-256
fingerprint, so it occurs on RTCP, and so it occurs after ICE
negotiation completes. Configuration options to chan_sip and
chan_pjsip have also been added to allow behavior to be tweaked
(such as forcing the AVP type media transports in SDP).
ASTERISK-22961 #close Reported by: Jay Jideliov Review:
https://reviewboard.asterisk.org/r/3679/ Review:
https://reviewboard.asterisk.org/r/3686/ ........ Merged
revisions 417678 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-30 18:39 +0000 [r417663] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pubsub.c: Reverse logic during subscription
persistence recreation. In the abstraction effort, this bit of
logic got messed up. We want to recreate the persistence if
things go well, not if things fail.
2014-06-30 13:02 +0000 [r417590-417649] Matthew Jordan <mjordan@digium.com>
* apps/app_voicemail.c: apps/app_voicemail: Fix compilation error
introduced in r417591 Not sure why that change to
ast_channel_alloc was made but ... okay.
* apps/app_voicemail.c, main/say.c, CHANGES: app_voicemail, say:
Add support for Japanese Language This patch adds support for the
Japanese language to both the say family of applications, as well
as for VoiceMail and VoiceMailMain. A new pack of language sounds
will be released at the same time as the next major version of
Asterisk to support the new language features. The language
features can be enabled using a language code of 'ja'. Review:
https://reviewboard.asterisk.org/r/3477 ASTERISK-23324 #close
Reported by: Kevin McCoy patches:
app_voicemail.c.20140226.jb.patch uploaded by Kevin McCoy
(License 6586) say.c.20140226.jb.patch uploaded by Kevin McCoy
(License 6586)
* /, channels/chan_sip.c: chan_sip: be more tolerant of whitespace
between attributes in SDP fmtp line This patch is essentially a
backport of a small portion of r397526 from ASTERISK-21981. In
that patch, pass through support and format attribute negotiation
was added for Opus. Part of that included being more tolerant to
whitespace in the fmtp line of an SDP; that part of the patch is
being applied here. As the author of the backport pointed out, in
SDP, the fmtp line is allowed to include whitespace between
attributes. RFC 3267 chapter 8.3 (from 2001) includes an example
for this. This was not removed in the updated RFC 4867 in 2007.
Review: https://reviewboard.asterisk.org/r/3658 #ASTERISK-23916
#close Reported by: Alexander Traud patches:
sdpFMTPspace_Asterisk11.patch uploaded by Alexander Traud
(License 6520) ........ Merged revisions 417587 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 417588 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417589 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-27 23:21 +0000 [r417571] Richard Mudgett <rmudgett@digium.com>
* /, main/event.c: event.c: Fix type mismatch errors in ie_maps[].
In v12+ the type values from the table are only used by the CEL
unit tests. Since the unit tests were only comparing a generated
expected event with a real event to see if the ie contents
matched and using the same table IE_PLTYPE values to read the
event contents, the type mismatches were not detected. ........
Merged revisions 417565 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-27 19:27 +0000 [r417485-417511] Corey Farrell <git@cfware.com>
* /, main/astobj2.c: Ensure REF_DEBUG records entrys for attempts
to ao2_ref an invalid object This change ensures that
__ao2_ref_debug writes to ref_log when given a non-NULL pointer
to an invalid ao2 object. This is to ensure that we record any
attempt manipulate references of already freed objects.
ASTERISK-23948 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3677/ ........ Merged
revisions 417500 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 417505 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417509 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, contrib/scripts/refcounter.py: refcounter.py: prevent use of
excessive RAM with large refs logs When processing a 212MB refs
file, refcounter.py used over 3GB of RAM. This change greatly
reduces memory usage in two ways: * Saving object history in
whole lines instead of separated values. * Not saving
normal/skewed/leaked object lists unless they are requested.
ASTERISK-23921 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3668/ ........ Merged
revisions 417480 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 417481 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417483 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-27 13:50 +0000 [r417461] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip/pjsip_configuration.c, res/res_pjsip_pubsub.c,
res/res_pjsip_registrar.c, include/asterisk/res_pjsip.h, /,
res/res_pjsip_outbound_registration.c: res_pjsip: Add ActionID to
events created as a result of PJSIP AMI actions A number of
various PJSIP AMI actions were failing to parse out and place the
ActionID into their responses. This patch updates the various
PJSIP actions such that the passed in ActionID is emitted on any
event list complete events, as well as any intermediate events
created as a result of the action. #ASTERISK-23947 #close
Reported by: Mark Michelson Review:
https://reviewboard.asterisk.org/r/3675/ ........ Merged
revisions 417460 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-27 02:04 +0000 [r417423-417447] Kinsey Moore <kmoore@digium.com>
* tests/test_cel.c: CEL: Update unit tests for bridge tech field
Update the CEL unit tests that handle BRIDGE_ENTER and
BRIDGE_EXIT events to expect the "bridge_technology" extra field
key.
* CHANGES: CHANGES: Add missing changes Add missing CHANGES changes
from r417361 and r417383.
2014-06-26 18:27 +0000 [r417400-417421] Matthew Jordan <mjordan@digium.com>
* res/res_http_websocket.exports.in, /: res_http_websocket: Export
symbol for ast_websocket_set_timeout Thanks to Sean Bright for
pointing out that this was missed in #asterisk-dev. ........
Merged revisions 417419 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417420 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_pjsip.c, /: chan_pjsip: Add a test event for fast
picture updates This will drive the test on review r3419. Note
that the patch for this was done by Ben Ford, although it was
slightly modified for this commit. ASTERISK-23562 Reported by:
Matt Jordan ........ Merged revisions 417399 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-26 14:48 +0000 [r417361-417383] Kinsey Moore <kmoore@digium.com>
* main/cel.c: CEL: Add bridge tech to relevant CEL records Add the
"bridge_technology" extra field key to BRIDGE_ENTER and
BRIDGE_EXIT CEL events to convey the bridge technology in use at
the time the record was generated.
* main/bridge.c, include/asterisk/channel.h,
include/asterisk/bridge_features.h,
tests/test_channel_feature_hooks.c (added),
main/bridge_channel.c, main/channel.c: Bridging: Allow channels
to define bridging hooks This patch allows the current owner of a
channel to define various feature hooks to be made available once
the channel has entered a bridge. This includes any hooks that
are setup on the ast_bridge_features struct such as DTMF hooks,
bridge event hooks (join, leave, etc.), and interval hooks.
Review: https://reviewboard.asterisk.org/r/3649/
2014-06-26 12:43 +0000 [r417317-417360] Matthew Jordan <mjordan@digium.com>
* CHANGES, apps/app_jack.c: app_jack: Support audio with a sampling
rate higher than 8kHz This patch enables the jack-audiohook to
cope with dynamic sampling rates from and to Asterisk.
Information from the channel is taken to derive the channel's
sampling rate, suiting SLINxx format and frame->datalen. There
are stil a few limitations after this patch: * Required
information is taken from the channel during initialization as
the audiohook does not provide this information.
Audiohook.internal_sampl_rate(...) is set later, but no callback
is available to inform app_jack. * Frame.datalen is computed
using "rate / 50" assuming a ptime of 20ms. There is no internal
API available to determine datalen for a SLINxx. * Ringbuffer
size is now dynamic depending on the value of frame.datalen (see
above) and the number of frames, which are in
RINGBUFFER_FRAME_CAPACITY, that need to fit. Review:
https://reviewboard.asterisk.org/r/3618 Note that the patch being
committed here is based on the patch posted on ASTERISK-23836.
However, Matthis Schmieder also provided a patch to enable this
functionality, and that patch is noted below. ASTERISK-20696
#close Reported by: Matthis Schmieder patches: app_jack.patch
uploaded by Matthis Schmieder (License 6445) ASTERISK-23836
#close Reported by: Dennis Guse patches: patch-app_jack.c
uploaded by Dennis Guse (License 6513)
* main/udptl.c, /: udptl: Correct FEC to not consider negative
sequence numbers as missing When using FEC, with span=3 and
entries=4 Asterisk will attempt to repair the packet with
sequence number 5, as it will see that packet -4 is missing. The
result is Asterisk sending garbage packets that can kill a fax.
This patch adds a check to see if the sequence number is valid
before checking if the packet is missing. Review:
https://reviewboard.asterisk.org/r/3657/ #ASTERISK-23908 #close
Reported by: Torrey Searle patches: udptl_fec.patch uploaded by
Torrey Searle (License 5334) ........ Merged revisions 417318
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 417320 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417324 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/internal.h, configs/ari.conf.sample,
res/res_http_websocket.c, res/res_pjsip.c,
configs/pjsip.conf.sample, include/asterisk/http_websocket.h,
configs/sip.conf.sample, res/res_pjsip/config_transport.c,
res/ari/ari_websockets.c, res/res_pjsip_transport_websocket.c,
res/ari/config.c, channels/sip/include/sip.h,
include/asterisk/res_pjsip.h, res/res_ari.c, /,
channels/chan_sip.c, UPGRADE.txt: res_http_websocket: Close
websocket correctly and use careful fwrite When a client takes a
long time to process information received from Asterisk, a write
operation using fwrite may fail to write all information. This
causes the underlying file stream to be in an unknown state, such
that the socket must be disconnected. Unfortunately, there are
two problems with this in Asterisk's existing websocket code: 1.
Periodically, during the read loop, Asterisk must write to the
connected websocket to respond to pings. As such, Asterisk
maintains a reference to the session during the loop. When
ast_http_websocket_write fails, it may cause the session to
decrement its ref count, but this in and of itself does not break
the read loop. The read loop's write, on the other hand, does not
break the loop if it fails. This causes the socket to get in a
'stuck' state, preventing the client from reconnecting to the
server. 2. More importantly, however, is that the fwrite in
ast_http_websocket_write fails with a large volume of data when
the client takes awhile to process the information. When it does
fail, it fails writing only a portion of the bytes. With some
debugging, it was shown that this was failing in a similar
fashion to ASTERISK-12767. Switching this over to
ast_careful_fwrite with a long enough timeout solved the problem.
Note that this version of the patch, unlike r417310 in Asterisk
11, exposes configuration options beyond just chan_sip's
sip.conf. Configuration options to configure the write timeout
have also been added to pjsip.conf and ari.conf. #ASTERISK-23917
#close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3624/ ........ Merged
revisions 417310 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417311 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-26 10:06 +0000 [r417251] Corey Farrell <git@cfware.com>
* /, channels/chan_sip.c: chan_sip: Fix handling of "From" headers
longer than 256 characters From headers were processed using a
256 character buffer on the stack. This change replaces that with
a heap allocation by ast_strdup. ASTERISK-23790 #close Reported
by: uniken1 Tested by: uniken1 Review:
https://reviewboard.asterisk.org/r/3669/ Patches:
chan_sip-large-from-header-1.8-r3.patch uploaded by wdoekes
(license 5674) ........ Merged revisions 417248 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 417249 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 417250 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-25 20:57 +0000 [r417233] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pubsub.c, res/res_pjsip_exten_state.c,
include/asterisk/res_pjsip_pubsub.h,
res/res_pjsip_pidf_body_generator.c,
res/res_pjsip_pubsub.exports.in, res/res_pjsip_mwi.c,
res/res_pjsip_xpidf_body_generator.c: Abstract PJSIP-specific
elements from the pubsub API. This helps to pave the way for RLS
work that is to come. Since this is a self-contained change and
subscription tests still pass, this work is being committed
directly to trunk instead of a working branch. ASTERISK-23865
#close Review: https://reviewboard.asterisk.org/r/3628
2014-06-25 18:57 +0000 [r417213] Corey Farrell <git@cfware.com>
* main/astobj2_container.c, /: ao2_container node object ignores
REF_DEBUG in all places except one Almost every reference
operation against container node's uses __ao2_alloc or __ao2_ref,
thereby preventing ref logging for the nodes. One node reference
is released with ao2_t_ref, causing refcounter.py to falsely
report skews and leaks for many nodes. ASTERISK-23922 #close
Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3670/ ........ Merged
revisions 417212 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-25 00:45 +0000 [r417193] Damien Wedhorn <voip@facts.com.au>
* channels/chan_skinny.c: Skinny: cleanup some log messages around
sessions.
2014-06-24 02:50 +0000 [r417167] Corey Farrell <git@cfware.com>
* include/asterisk/netsock.h, main/utils.c, main/netsock.c,
include/asterisk/res_pjsip_session.h: Move eid functions to
utils.c, mark netsock.h deprecated Move eid functions from
netsock.c to utils.c. These functions were already published by
utils.h. Flag netsock.h as deprecated and switch
res_pjsip_session.h to use netsock2.h. The only code that still
uses netsock.h is chan_iax2. ASTERISK-23920 #close Reported by:
Corey Farrell Review: https://reviewboard.asterisk.org/r/3661/
2014-06-23 18:50 +0000 [r417143] Joshua Colp <jcolp@digium.com>
* /, res/res_rtp_asterisk.c: res_rtp_asterisk: Return the length of
data written when sending via ICE instead of 0. ASTERISK-23834
#close Reported by: Richard Kenner ........ Merged revisions
417141 from http://svn.asterisk.org/svn/asterisk/branches/11
........ Merged revisions 417142 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-23 16:04 +0000 [r417120] Richard Mudgett <rmudgett@digium.com>
* /, main/core_unreal.c: core_unreal: Fix off by one buffer
overwrite error. Appending the ;2 to the user supplied ;1
uniqueid to create the ;2 version if the user did not also supply
an extra uniqueid for the ;2 channel resulted in allocating a
buffer that was one byte too small. * Fix off by one error in
ast_unreal_new_channels() when generating the ;2 uniqueid from
the user suppled ;1 version. * Pulled some long assignment lines
from if tests to improve line break readability in
ast_unreal_new_channels(). ........ Merged revisions 417119 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-23 07:44 +0000 [r417059] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c:
suspended destructions of pri spans on events If a DAHDI span
disappears, we wish for its representation in Asterisk to be
destroyed as well. The information about the span's removal may
come from several paths: 1. DAHDI sends DAHDI_EVENT_REMOVE on
every channel. 2. An extra DAHDI_EVENT_REMOVED is sent on every
subsequent call to DAHDI_GET_EVENT. 3. Every read (including the
internal one by libpri on the D-channel) returns -ENODEV.
Asterisk responsds to DAHDI_EVENT_REMOVE on a channel by
destroying it. Destroying a channel requires holding the channel
list lock (iflock). Destroying a channel that is part of a span
requires holding the span's lock. Destroying a channel from a
context that holds the span lock, while at the same time another
channel is destroyed directly, leads to a deadlock. Solution:
don't destroy span while holding the channels list lock. Thus
changes in this patch: * Deferring removal of PRI spans in
response to events: doomed spans are collected on a list. *
Doomed spans are removed periodically by the monitor thread. *
ENODEV reads from the D-channel will warant the same deferred
removal. Review: https://reviewboard.asterisk.org/r/3548/
2014-06-22 18:53 +0000 [r416996] George Joseph <george.joseph@fairview5.com>
* include/asterisk/astobj2.h, Makefile.rules, Makefile, /: astobj2:
Add an ao2_replace macro to astobj2.h This macro replaces one
object reference with another cleaning up the original. param dst
Pointer to the object that will be cleaned up. param src Pointer
to the object replacing it. src's ref count is bumped if it's
non-NULL. dst's ref count is decremented if it's non-NULL. src is
assigned to dst, This patch was reviewed on IRC by coreyfarrell
and mjordan. Tested by: George Joseph ........ Merged revisions
416995 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-20 23:18 +0000 [r416872-416935] George Joseph <george.joseph@fairview5.com>
* /, configure, include/asterisk/autoconfig.h.in: build: Allow
autoconf/ast_ext_tool_check to handle cross-compiling better.
ast_ext_tool_check.m4 isn't handling cases where a path to a
package is provided (E.G. --with-mysqlclient=/some/sysroot) and
the package has a config tool (E.G. mysql_config) and the package
has its own subdirectories in include or lib. For example,
mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql but
ast_ext_tool_check sets MYSQLCLIENT_LIB to
${MYSQLCLIENT_DIR}/usr/lib. libxml2 has the same problem with its
includes. They're in ${LIBXML2_DIR}/usr/include/libxml2 not
directly in ${LIBXML2_DIR}/usr/include. Both cause configure to
fail and there are others in the same boat. The problem is caused
by logic in ast_ext_tool_check that overrides the result of the
config tool's --cflags and --libs options if package_DIR is set.
This patch prepends package_DIR (if specified) to the -L and -I
results from the package's config tool instead of overriding
them. A regenerated ./configure and
include/asterisk/autoconfig.h.in are included but can be
regenerated by running ./bootstrap.sh at any time. Tested by:
George Joseph Tested by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3550/ ........ Merged
revisions 416929 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416930 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416931 from
http://svn.asterisk.org/svn/asterisk/branches/12
* autoconf/ast_ext_tool_check.m4, /: build: Allow
autoconf/ast_ext_tool_check to handle cross-compiling better.
ast_ext_tool_check.m4 isn't handling cases where a path to a
package is provided (E.G. --with-mysqlclient=/some/sysroot) and
the package has a config tool (E.G. mysql_config) and the package
has its own subdirectories in include or lib. For example,
mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql but
ast_ext_tool_check sets MYSQLCLIENT_LIB to
${MYSQLCLIENT_DIR}/usr/lib. libxml2 has the same problem with its
includes. They're in ${LIBXML2_DIR}/usr/include/libxml2 not
directly in ${LIBXML2_DIR}/usr/include. Both cause configure to
fail and there are others in the same boat. The problem is caused
by logic in ast_ext_tool_check that overrides the result of the
config tool's --cflags and --libs options if package_DIR is set.
This patch prepends package_DIR (if specified) to the -L and -I
results from the package's config tool instead of overriding
them. Tested by: George Joseph Tested by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3550/ ........ Merged
revisions 416870 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416871 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-20 20:57 +0000 [r416848-416850] Jonathan Rose <jrose@digium.com>
* res/parking/parking_manager.c, /: res_parking: Make manager
commands register with module information Previously module
information was not included due to an oversight. Review:
https://reviewboard.asterisk.org/r/3626/ ........ Merged
revisions 416849 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/logger.c, CHANGES, include/asterisk/logger.h,
main/manager.c: Logger: Add manager command 'LoggerRotate' to
rotate logger Part of a series of AMI command equivalents to
existing CLI commands Review:
https://reviewboard.asterisk.org/r/3651/
2014-06-20 17:06 +0000 [r416830] Richard Mudgett <rmudgett@digium.com>
* apps/app_voicemail.c, include/asterisk/app.h, main/app.c,
apps/app_directory.c, apps/app_chanspy.c: voicemail API
callbacks: Extract the sayname API call to its own registerd
callback. * Extract the sayname API call to its own registerd
callback. This allows the app_directory and app_chanspy
applications to say a mailbox owner's name using an alternate
provider when app_voicemail is not available because you are
using res_mwi_external. app_directory still uses the
voicemail.conf file. AFS-64 #close Reported by: Mark Michelson
2014-06-20 15:27 +0000 [r416738-416807] George Joseph <george.joseph@fairview5.com>
* main/astobj2_private.h, main/astobj2_container_private.h,
main/astobj2_container.c, main/astobj2_hash.c,
main/astobj2_rbtree.c, build_tools/cflags.xml, /,
tests/test_astobj2.c: astobj2: Additional refactoring to push
impl specific code down into the impls. Move some implementation
specific code from astobj2_container.c into astobj2_hash.c and
astobj2_rbtree.c. This completely removes the need for
astobj2_container to switch on RTTI and it no longer has any
knowledge of the implementation details. Also adds AO2_DEBUG as a
new compile option in menuselect which controls astobj2 debugging
independently of AST_DEVMODE and REF_DEBUG. Tested by: George
Joseph Review: https://reviewboard.asterisk.org/r/3593/ ........
Merged revisions 416806 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_endpoint_identifier_ip.c, main/acl.c,
include/asterisk/netsock2.h, include/asterisk/acl.h,
main/netsock2.c: pjsip cli: Change Identify to show CIDR notation
instead of netmasks. * Added ast_sockaddr_cidr_bits() to count
the 1 bits in an ast_sockaddr. * Added ast_ha_join_cidr() which
uses ast_sockaddr_cidr_bits() for the netmask instead of
ast_sockaddr_stringify_addr. * Changed
res_pjsip_endpoint_identifier_ip to call ast_ha_join_cidr()
instead of ast_ha_join() for the CLI output. This is a CLI change
only. AMI was not affected. Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3652/ ........ Merged
revisions 416737 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-19 19:40 +0000 [r416736] Kinsey Moore <kmoore@digium.com>
* /, main/bridge.c, res/parking/parking_tests.c,
channels/sip/reqresp_parser.c, main/logger.c, main/test.c: Fix
build warnings with TEST_FRAMEWORK enabled ........ Merged
revisions 416732 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416733 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416734 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-19 16:04 +0000 [r416589-416670] George Joseph <george.joseph@fairview5.com>
* pbx/pbx_lua.c, /: Remove the problematic and unneeded
AST_MODFLAG_GLOBAL_SYMBOLS from pbx_lua.c
AST_MODFLAG_GLOBAL_SYMBOLS was causing the module to be
incorrectly loaded before pbx_config. pbx_config was therefore
blowing away contexts that were created by pbx_lua. With
AST_MODFLAG_DEFAULT the load order is now correct and contexs are
being properly merged. AST_MODFLAG_GLOBAL_SYMBOLS was not needed
anyway since no other modules needed its global symbols that
early. ASTERISK-23818 #close Reported by: Dennis Guse Tested by:
Dennis Guse Tested by: George Joseph Review:
https://reviewboard.asterisk.org/r/3629/ ........ Merged
revisions 416668 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416669 from
http://svn.asterisk.org/svn/asterisk/branches/12
* configs/extensions.lua.sample, /: Update extensions.lua.sample
with naming conflict guidance. The sample extensions.lua was
causing pbx_lua to fail to load when parsing 'app.goto("default",
"s", 1)' because in Lua 5.2, 'goto' is now a reserved word. This
patch adds guidance to extensions.lua.sample and changed
'app.goto("default", "s", 1)' to 'app.['goto']("default", "s",
1)'. ASTERISK-23844 #close Reported by: rnewton Tested by:
gtjoseph Review: https://reviewboard.asterisk.org/r/3627/
........ Merged revisions 416581 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416582 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-18 04:22 +0000 [r416561] Matthew Jordan <mjordan@digium.com>
* /, main/stasis_channels.c: stasis_channels: Update the stasis
cache if manager variables are needed In r416211, the publishing
of variable changes was modified such that a cached channel
snapshot was used if manager variables were not requested with
each AMI event. This was done to reduce the amount of channel
snapshots created. However, an assumption was made that
generating a channel snapshot and publishing the snapshot to the
channel topic was sufficient to ensure that the cache would be
updated; this is not the case. The channel snapshot type must be
used to force a snapshot update. This patch updates the
publication of channel variables such that the cache is updated
prior to publication of the channel variable message if manager
variables are in use. This ensures that all AMI events receive
the variable update when they are supposed to. Note that this
issue was caught by the Asterisk Test Suite (go go testing)
........ Merged revisions 416557 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-17 18:45 +0000 [r416444-416503] Mark Michelson <mmichelson@digium.com>
* /, funcs/func_strings.c: Allow the PUSH and UNSHIFT functions to
set inheritable channel variables. ........ Merged revisions
416500 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 416501 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416502 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pidf_body_generator.c, /,
res/res_pjsip_xpidf_body_generator.c: Fix string growth algorithm
for XML presence bodies. pjpidf_print() does not return < 0 if
there is not enough room for the document to be printed. Rather,
it returns 39, the length of the XML prolog. The algorithm also
had a bug in that it would return if it attempted to grow the
string larger. ........ Merged revisions 416442 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-17 16:33 +0000 [r416443] Kinsey Moore <kmoore@digium.com>
* res/res_musiconhold.c, /: MoH: Don't restart stream on repeated
start calls Currently, music on hold will stop and then start
again from the beginning if ast_moh_start() is called multiple
times. This can happen if a call is put on hold repeatedly (the
channel receives multiple HOLD control frames) and can be
triggered from ARI by starting MoH on a channel multiple times.
This is fairly jarring/annoying to users. This change prevents
MoH from being restarted if the requested music class is the same
as the one currently playing. This includes an extra check to
prevent the errors previously experienced in the testsuite and
has 100+ test runs behind it. Review:
https://reviewboard.asterisk.org/r/3615/ ........ Merged
revisions 416439 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416440 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416441 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-16 18:27 +0000 [r416416] Richard Mudgett <rmudgett@digium.com>
* channels/chan_dahdi.c, configs/chan_dahdi.conf.sample,
channels/sig_ss7.h, configure, channels/chan_dahdi.h,
configure.ac, UPGRADE.txt, configs/ss7.timers.sample (added),
CHANGES, channels/sig_ss7.c: chan_dahdi: Adds support for major
update to libss7. * SS7 support now requires libss7 v2.0 or
later. The new libss7 is not backwards compatible. * Added SS7
support for connected line and redirecting. * Most SS7 CLI
commands are reworked as well as new SS7 commands added. See
online CLI help. * Added several SS7 config option parameters
described in chan_dahdi.conf.sample. * ISUP timer support
reworked and now requires explicit configuration. See
ss7.timers.sample. Special thanks to Kaloyan Kovachev for his
support and persistence in getting the original patch by adomjan
updated and ready for release. SS7-27 #close Reported by: adomjan
2014-06-16 16:22 +0000 [r416394] Kevin Harwell <kharwell@digium.com>
* include/asterisk/http_websocket.h, tests/test_websocket_client.c,
res/res_http_websocket.c: res_http_websocket: read/write string
fixup There was a problem when reading a string from the
websocket. It assumed the received data had a null terminator and
tried to write the data to an ast_str. This of course could/would
read past the end of the given buffer while writing the data to
the internal buffer of ast_str. Modified the the code to
correctly place a null terminator on the result string.
2014-06-16 09:04 +0000 [r416339] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* cel/cel_sqlite3_custom.c, main/db.c, res/res_config_sqlite3.c,
cdr/cdr_sqlite3_custom.c, /: We have faced situation when using
CDR and CEL by sqlite3 modules. With system having high load
(~100 concurrent calls created by sipp) we found many cdr and cel
records missed. There is special finction in sqlite3, that make
able to fix this situation - sqlite3_wait_timeout, that also can
replace awful code cdr_sqlite3 ad cel_sqlite3 modules. Also this
function can be used for aastdb and res_config_sqlite3 to avoid
missed writes to sqlite db. #ASTERISK-23766 #close Reported by:
Igor Goncharovsky Review:
https://reviewboard.asterisk.org/r/3559/ ........ Merged
revisions 416336 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416337 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416338 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-16 02:40 +0000 [r416267-416319] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: channels/chan_sip: Forbid remote bridging
if T.38 is negotiated When a framehook is removed - such as the
fax gateway framehook - the bridge framework will re-evaluate the
bridge mixing technologies to see if it can improve the bridging.
When this occurs, get_rtp_info will be called to determine if
local or remote bridging can be used. Using remote bridging will
cause a fax to fail, as direct media negotiation will cause some
small number of packets to not arrive at the remote endpoint.
This patch forces local native bridging if T.38 negotiation is in
progress or has been established. ........ Merged revisions
416318 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/channel_internal_api.c: channel_internal_api: Publish a
snapshot change when linkedids change Snapshots are now not
published *quite* as much as they used to. One instance where
they are not published any longer is during bridge enter and exit
- the state of the channel doesn't change, the bridge does.
However, channels are changed when a linkedid is propagated;
previously, the channel's state would be updated and published
during the bridge enter event. Now this must be explicitly done.
........ Merged revisions 416300 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, tests/test_stasis_endpoints.c: test_stasis_endpoints: Remove
expected channel snapshot We no longer publish a channel snapshot
when it is associated with an endpoint; after all, the channel
itself hasn't changed - the endpoint state has changed. This
updates the channel_messages unit test accordingly. ........
Merged revisions 416298 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_musiconhold.c: MoH: Undo commit r416150 (1.8) This
patch reverts r416150. When the comparison between mohclass->name
and state->class->name is made, you are not guaranteed that (a)
state->class is non-NULL or that state or state->class are in a
safe state. Crashes caught by the bridges/transfer_capabilities
test. ........ Merged revisions 416251 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416252 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416255 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-14 19:26 +0000 [r416237] Corey Farrell <git@cfware.com>
* res/res_manager_devicestate.c, res/res_manager_presencestate.c:
res_manager_devicestate and res_manager_presencestate missing
support level Add MODULEINFO comment block to define support
level core for these new modules. Review:
https://reviewboard.asterisk.org/r/3620/
2014-06-13 18:24 +0000 [r416216] Matthew Jordan <mjordan@digium.com>
* res/res_agi.c, res/res_pjsip/pjsip_configuration.c,
main/stasis_channels.c, res/ari/resource_channels.c,
main/bridge_channel.c, main/pbx.c, main/stasis_cache.c, /,
apps/app_meetme.c, main/pickup.c, main/channel_internal_api.c,
include/asterisk/channel.h, main/core_local.c, main/aoc.c,
main/endpoints.c, main/cel.c, apps/app_queue.c,
main/stasis_bridges.c, apps/app_agent_pool.c, main/cli.c,
main/channel.c, main/dial.c, main/manager.c,
include/asterisk/stasis_channels.h: stasis: Reduce creation of
channel snapshots to improve performance During some performance
testing of Asterisk with AGI, ARI, and lots of Local channels, we
noticed that there's quite a hit in performance during channel
creation and releasing to the dialplan (ARI continue). After
investigating the performance spike that occurs during channel
creation, we discovered that we create a lot of channel snapshots
that are technically unnecessary. This includes creating
snapshots during: * AGI execution * Returning objects for ARI
commands * During some Local channel operations * During some
dialling operations * During variable setting * During some
bridging operations And more. This patch does the following: - It
removes a number of fields from channel snapshots. These fields
were rarely used, were expensive to have on the snapshot, and
hurt performance. This included formats, translation paths, Log
Call ID, callgroup, pickup group, and all channel variables. As a
result, AMI Status, "core show channel", "core show channelvar",
and "pjsip show channel" were modified to either hit the live
channel or not show certain pieces of data. While this is
unfortunate, the performance gain from this patch is worth the
loss in behaviour. - It adds a mechanism to publish a cached
snapshot + blob. A large number of publications were changed to
use this, including: - During Dial begin - During Variable
assignment (if no AMI variables are emitted - if AMI variables
are set, we have to make snapshots when a variable is changed) -
During channel pickup - When a channel is put on hold/unhold -
When a DTMF digit is begun/ended - When creating a bridge
snapshot - When an AOC event is raised - During Local channel
optimization/Local bridging - When endpoint snapshots are
generated - All AGI events - All ARI responses that return a
channel - Events in the AgentPool, MeetMe, and some in Queue -
Additionally, some extraneous channel snapshots were being made
that were unnecessary. These were removed. - The result of
ast_hashtab_hash_string is now cached in stasis_cache. This
reduces a large number of calls to ast_hashtab_hash_string, which
reduced the amount of time spent in this function in gprof by
around 50%. #ASTERISK-23811 #close Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/3568/ ........ Merged
revisions 416211 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-13 13:11 +0000 [r416149-416153] Kinsey Moore <kmoore@digium.com>
* res/res_musiconhold.c, /: MoH: Don't restart stream on repeated
start calls Currently, music on hold will stop and then start
again from the beginning if ast_moh_start() is called multiple
times. This can happen if a call is put on hold repeatedly (the
channel receives multiple HOLD control frames) and can be
triggered from ARI by starting MoH on a channel multiple times.
This is fairly jarring/annoying to users. This change prevents
MoH from being restarted if the requested music class is the same
as the one currently playing. Review:
https://reviewboard.asterisk.org/r/3615/ ........ Merged
revisions 416150 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416151 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416152 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cel.c, /: CEL: Expose parking retreiver in extra field This
exposes the retreiver of a parked call under the "retreiver" key
of the extra field when this information is available. Review:
https://reviewboard.asterisk.org/r/3608/ ........ Merged
revisions 416148 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-13 05:16 +0000 [r416071] Richard Mudgett <rmudgett@digium.com>
* main/http.c, include/asterisk/tcptls.h, main/tcptls.c,
main/manager.c, /, channels/chan_sip.c: AST-2014-007: Fix of fix
to allow AMI and SIP TCP to send messages. ASTERISK-23673 #close
Reported by: Richard Mudgett Review:
https://reviewboard.asterisk.org/r/3617/ ........ Merged
revisions 416066 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 416067 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 416070 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 21:27 +0000 [r416024] Rusty Newton <rnewton@digium.com>
* main/pbx.c: main/pbx - documentation - enhance 'core show hints'
and 'core show hint' help text Adds descriptive help text to
'core show hints' and 'core show hint'. The text describes the
various columns for the sake of clarity. It takes into account
recent changes to the content displayed by the commands
https://reviewboard.asterisk.org/r/3604/ and
https://reviewboard.asterisk.org/r/3611/. ASTERISK-23764 Review:
https://reviewboard.asterisk.org/r/3610/
2014-06-12 20:17 +0000 [r415982] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip_pubsub.c, /: Fix build in devmode for GCC 4.10
........ Merged revisions 415980 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 17:00 +0000 [r415907] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/utils.h, main/tcptls.c, main/manager.c, /,
channels/chan_sip.c, main/http.c, UPGRADE.txt, main/utils.c,
include/asterisk/tcptls.h, res/res_http_websocket.c,
configs/http.conf.sample: AST-2014-007: Fix DOS by consuming the
number of allowed HTTP connections. Simply establishing a TCP
connection and never sending anything to the configured HTTP port
in http.conf will tie up a HTTP connection. Since there is a
maximum number of open HTTP sessions allowed at a time you can
block legitimate connections. A similar problem exists if a HTTP
request is started but never finished. * Added http.conf
session_inactivity timer option to close HTTP connections that
aren't doing anything. Defaults to 30000 ms. * Removed the
undocumented manager.conf block-sockets option. It interferes
with TCP/TLS inactivity timeouts. * AMI and SIP TLS connections
now have better authentication timeout protection. Though I
didn't remove the bizzare TLS timeout polling code from chan_sip.
* chan_sip can now handle SSL certificate renegotiations in the
middle of a session. It couldn't do that before because the
socket was non-blocking and the SSL calls were not restarted as
documented by the OpenSSL documentation. * Fixed an off nominal
leak of the ssl struct in handle_tcptls_connection() if the FILE
stream failed to open and the SSL certificate negotiations
failed. The patch creates a custom FILE stream handler to give
the created FILE streams inactivity timeout and timeout after a
specific moment in time capability. This approach eliminates the
need for code using the FILE stream to be redesigned to deal with
the timeouts. This patch indirectly fixes most of ASTERISK-18345
by fixing the usage of the SSL_read/SSL_write operations.
ASTERISK-23673 #close Reported by: Richard Mudgett ........
Merged revisions 415841 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415854 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415896 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 15:50 +0000 [r415839] Scott Griepentrog <sgriepentrog@digium.com>
* /, apps/app_queue.c: app_queue: delayed state can cause early
leavewhenempty ringing In app_queue, device state changes arrive
in event messages and update the queue member status value. That
value is checked in get_member_status() to decide that the caller
should leave when there are no available members. Although event
messages can be delayed by other activity, there is no adverse
affect by lagged status except in one specific case: there is
only one available member, it was just rung, and leavewhenempty
is enabled set for ringing members. This change adds a direct
check of the device state only under this condition where the
caller may be dropped incorrectly, resolving this issue without
affecting performance of app_queue normally. AST-1248 #close
Review: https://reviewboard.asterisk.org/r/3595/ Reported by:
Thomas Arimont ........ Merged revisions 415833 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415835 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415836 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 15:39 +0000 [r415834] Jonathan Rose <jrose@digium.com>
* apps/app_mixmonitor.c, /, UPGRADE.txt: MixMontior: Add class
authorization requirements to MixMonitor AMI commands MixMonitor
AMI commands StartMixMonitor and StopMixMonitor lacked class
authorization. StopMixMonitor now requires that the manager user
either have the call or system class authorization.
StartMixMonitor is a slightly larger issue since it can execute
shell commands if the right arguments are passed into it, and we
consider this a permission escalation. A security release will be
issued for problem this shortly. ASTERISK-23609 #close Reported
by: Corey Farrell ........ Merged revisions 415825 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415832 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 14:39 +0000 [r415813] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_pubsub.c, /: res_pjsip_pubsub: unauthenticated
remote crash in PJSIP pub/sub framework A remotely exploitable
crash vulnerability exists in the PJSIP channel driver's pub/sub
framework. If an attempt is made to unsubscribe when not
currently subscribed and the endpoint's "sub_min_expiry" is set
to zero, Asterisk tries to create an expiration timer with zero
seconds, which is not allowed, so an assertion raised. The fix
was to reject a subscription that is attempting to unsubscribe
when not being already subscribed. Asterisk now checks for this
situation appropriately and responds with a 400 instead of
crashing. AST-2014-005 ASTERISK-23489 #close ........ Merged
revisions 415812 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 14:15 +0000 [r415795] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip.c, /: Fix potential deadlock situation in
res_pjsip. SIP transaction timeouts are handled in the PJSIP
monitor thread. When this happens on a subscription, and the
subscription is destroyed, the subscription destruction is
dispatched synchronously to the threadpool. The issue is that the
PJSIP dialog is locked by the monitor thread, and then the
dispatched task attempts to lock the dialog. This leads to a
deadlock that causes SIP traffic to no longer be accepted on the
Asterisk server. The fix here is to treat the monitor thread as
if it were a threadpool thread when it attempts to dispatch
synchronous tasks. This way, the dispatched task turns into a
simple function call within the same thread, and the locking
issue is averted. AST-2014-008 ASTERISK-23802 #close ........
Merged revisions 415794 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 11:34 +0000 [r415767] Joshua Colp <jcolp@digium.com>
* res/res_pjsip.c, res/res_pjsip_pubsub.c,
res/res_pjsip_exten_state.c, include/asterisk/res_pjsip.h,
include/asterisk/res_pjsip_pubsub.h,
res/res_pjsip_pubsub.exports.in, /,
contrib/ast-db-manage/config/versions/c6d929b23a8_create_pjsip_subscription_persistence_.py
(added), res/res_pjsip_mwi.c: res_pjsip_pubsub: Persist
subscriptions in sorcery so they are recreated on startup. This
change makes res_pjsip_pubsub persist inbound subscriptions in
sorcery. By default this uses the local astdb but it can also be
configured to store within an outside database. When Asterisk is
started these subscriptions are recreated if they have not
expired. Notifications are sent to the devices which have
subscribed and they are none the wiser that the system has
restarted. Review: https://reviewboard.asterisk.org/r/3598/
........ Merged revisions 415766 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-12 07:52 +0000 [r415749] Walter Doekes <walter+asterisk@wjd.nu>
* UPGRADE.txt, contrib/scripts/safe_asterisk, Makefile, /:
safe_asterisk: Overwrite old safe_asterisk on make install. From
now on, make install will overwrite safe_asterisk with the latest
version. You need to move any local modifications to files inside
/etc/asterisk/startup.d, if you have any. See also commits
r394939 and r397938. ASTERISK-21965 #close Patches:
safe_asterisk.patch uploaded by jkister (License 6232, modified
by me) ........ Merged revisions 415748 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-11 23:01 +0000 [r415730] Richard Mudgett <rmudgett@digium.com>
* main/format.c, /: format.c: Fix misuse of hash container
function. The supplied hash function to a container must be
idempotent given the object's key value to figure out which
container bucket the object belongs in. Returning a random number
or the current container count is not idempotent. The "computed
hash" value doesn't help find the object later in those cases. *
Fixed the format_list container to actually be a list since that
is how the container is used. Conceptually, if more than 283
formats were added to the format_list then odd things may have
happened before the fix. ........ Merged revisions 415728 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415729 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-11 20:22 +0000 [r415698-415715] Scott Griepentrog <sgriepentrog@digium.com>
* main/pbx.c: CLI: correct presence information on core show hints
Adds presence to core show hint and changes presence string
conversion to use the correct function. ASTERISK-23858 #close
Review: https://reviewboard.asterisk.org/r/3611/
* main/pbx.c: CLI: add presence information to core show hints Adds
presence state value to output of core show hints. Also reformats
the output slightly so it doesn't use as much space as it would
otherwise. Was: 1000@demo : SIP/1000 State:Unavailable Watchers 0
Now: 1000@demo : SIP/1000 State:Unavailable Presence:Idle
Watchers 0 AFS-53 #close Review:
https://reviewboard.asterisk.org/r/3604/
2014-06-10 18:32 +0000 [r415679] Kinsey Moore <kmoore@digium.com>
* main/channel.c, /: Fix build in dev mode due to signed/unsigned
mismatch ........ Merged revisions 415678 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-10 16:06 +0000 [r415659] Jonathan Rose <jrose@digium.com>
* main/message.c, /, res/res_pjsip_notify.c: PJSIP: PJSIPNotify -
Strip content-length headers and add documentation Documentation
for how to add custom headers/content to notifies created with
the PJSIPNotify manager action was a little sparse and it also
wasn't vetting application of Content-length headers like its
chan_sip equivalent was (so two Content-length headers could be
applied... and PJSIP determines the content length anyway, so it
just opens people up for error). This patch also flips the
variable order so that the variables are interpreted in the same
order as they are put in the AMI action. Review:
https://reviewboard.asterisk.org/r/3587/ ........ Merged
revisions 415658 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-10 09:28 +0000 [r415630] Alexandr Anikin <may@telecom-service.ru>
* addons/chan_ooh323.c, /: chan_ooh323: fix loading module failure
if there no accessible h323_log or ooh323 config file change
return 1 to return AST_MODULE_LOAD_FAILURE on module load routine
few cosmetic changes ASTERISK-23814 #close (closes issue
ASTERISK-23814) Reported by: Igor Goncharovsky Patches:
ASTERISK-23814-ast11.patch ........ Merged revisions 415599 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415602 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-09 20:21 +0000 [r415580] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_header_funcs.c, /: chan_pjsip: Fix bug where custom
SIP headers could be duplicated on outgoing INVITEs. When using
PJSIP_HEADER() to add custom headers to outgoing INVITE requests,
certain situations could result in the headers being duplicated.
For instance, if the request were retransmitted, or if the INVITE
were re-sent with authentication credentials, the custom headers
would be re-added to the request. The fix here is to, after
adding the custom headers to the outbound INVITE, remove the
datastore that holds the custom headers to add. This way, there
is no risk in accidentally adding them if the session supplement
is called into a second or third time. ........ Merged revisions
415579 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-09 12:12 +0000 [r415524] Walter Doekes <walter+asterisk@wjd.nu>
* /, UPGRADE.txt, contrib/scripts/safe_asterisk: safe_asterisk:
Cleanup additions to r415132. * Replaced a stray echo that
should've been a message call in safe_asterisk. This replaces a
conditional log message by a slightly different message. Please
update your log parsing scripts. * Made the $NOTIFY mail Subject
more verbose by adding the machine name and exitstatus. (Note
that a 'make install' still won't overwrite your old
safe_asterisk if it exists. See ASTERISK-21965.) ASTERISK-23492
#close ........ Merged revisions 415521 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415522 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415523 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-09 03:50 +0000 [r415466] Corey Farrell <git@cfware.com>
* /, main/autoservice.c: autoservice: stop thread on graceful
shutdown This change adds thread shutdown to autoservice for
graceful shutdowns only. ast_register_cleanup is backported to
1.8 to allow this. The logger callid is also released on shutdown
in 11+. ASTERISK-23827 #close Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3594/ ........ Merged
revisions 415463 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415464 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415465 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-08 18:12 +0000 [r415444] Matthew Jordan <mjordan@digium.com>
* include/asterisk/channel.h, bridges/bridge_native_rtp.c,
main/bridge_channel.c, main/channel.c, main/pbx.c, /,
main/framehook.c, main/bridge_after.c: bridges/bridge_native_rtp:
Reconfigure bridge on removal of framehook This patch is a re-do
of r414122. When r414122 was merged, a major problem with it was
uncovered. UNBRIDGE soft hangup flags have a catastrophic effect
on the pbx core if they leak out from the bridge layer: the
channel gets hung up. With the number of threads involved in a
blind transfer, and with the initial patch, it was likely that
this would occur. This caused a large number of test failures
This patch is nearly identical with the one proposed in r414122,
save for the following changes: - We explicitly clear the
UNBRIDGE flag when setting an after goto on a channel in a bridge
- Defensively, if we encounter an UNBRIDGE flag in the pbx core,
we handle it https://reviewboard.asterisk.org/r/3585/ ........
Merged revisions 415443 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-07 00:42 +0000 [r415428] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/bridge.h, /: bridge.h: Remove redundant struct
ast_bridge_channel forward declaration. ........ Merged revisions
415427 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-06 21:44 +0000 [r415411] Jonathan Rose <jrose@digium.com>
* include/asterisk/manager.h, main/config.c, main/manager.c, /,
channels/chan_sip.c, include/asterisk/config.h: chan_sip: Fix
order of variables specified in SIPNotify action Prior to this
patch, sequential variables would be ordered in reverse from the
order specified in the manager action. Review:
https://reviewboard.asterisk.org/r/3588/ ........ Merged
revisions 415359 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415390 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415410 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-06 20:45 +0000 [r415358] Kevin Harwell <kharwell@digium.com>
* main/uri.c, tests/test_websocket_client.c: core uri: Custom uri
parsing error when no query parameters If using the custom URI
parsing code (not external uriparser lib) and there was no query
parameters the resulting pointer would be NULL and then an
attempt was made to subtract from it. The pointer is now set to a
valid value if there is no query parameter(s). Also, in the
'ast_uri_make_host_with_port' function when setting the
terminator on the resulting string it was writing it one past the
end of allocated memory. It now writes the string terminator
appropriately.
2014-06-06 19:13 +0000 [r415343] Kinsey Moore <kmoore@digium.com>
* /, res/res_pjsip_sdp_rtp.c: PJSIP: Remove premature write of raw
formats Currently, there are situations that can occur when using
chan_pjsip and certain dialplan applications (notably ChanSpy())
that can cause the channel to get no audio with scrolling
warnings about format mismatches. This is caused by a failure to
update translation paths on a mid-call native format update since
the raw formats have already been updated by res_pjsip_sdp_rtp.c
in set_caps(). Removing the premature raw format updates allows
the translation paths to be setup correctly and the raw read and
write formats with them. AFS-63 #close ........ Merged revisions
415342 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-06 14:12 +0000 [r415319] George Joseph <george.joseph@fairview5.com>
* tests/test_astobj2.c, main/astobj2_private.h (added),
main/astobj2.c, main/astobj2_container_private.h (added),
main/astobj2_container.c (added), main/astobj2_hash.c (added),
main/astobj2_rbtree.c (added), /, include/asterisk/astobj2.h:
Split astobj2.c into more maintainable components. Split
astobj2.c into the following files to improve maintainability.
astobj2.c - object primitives, object primitive misc and
initialization code. astobj2_private.h - internal object
declarations needed by the containers. astobj2_container.c -
generic conainer and container misc code.
astobj2_container_hash.c - hash container specific code.
astobj2_container_rbtree.c - rbtree container specific code.
astobj2_container_private.h - generic container definitions and
rtti prototypes. https://reviewboard.asterisk.org/r/3576/
........ Merged revisions 415317 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-06 12:49 +0000 [r415302] Rusty Newton <rnewton@digium.com>
* /, configs/cli_aliases.conf.sample: configs/cli_aliases.conf: Two
new aliases, plus enhancements for context names. Changed naming
of included alias templates to avoid confusion between version
names. For example, asterisk12 was for asterisk 1.2, so I changed
it to asterisk_1dot2, so that later we can use asterisk_12 for
Asterisk 12. Added alias for "features reload" to the template
for Asterisk 11 style syntax template, as features reload was
removed in 12, but you can still do "module reload features"
Added alias for "pjsip reload" to the friendly template. It is
shorter than "module reload res_pjsip.so" and if some are like
me; I constantly forget that reloading chan_pjsip doesn't parse
config. Remembering "pjsip reload" is just easier. ASTERISK-23654
#close ASTERISK-23654 #comment Fixed by adding two new aliases
and enhancements for context names. Review:
https://reviewboard.asterisk.org/r/3572/ ........ Merged
revisions 415301 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-05 19:04 +0000 [r415231-415288] Richard Mudgett <rmudgett@digium.com>
* main/config.c: config: Fix indentation and missing curlies in
config_text_file_load().
* main/config.c, /: config: Fix config files not reloading when
only an included file changes. The twisted logic determining if a
config file should be reloaded was mostly broken and disabled.
The incorrect test that ASTERISK-23383 fixed actually reenabled
the broken logic. The incorrect test was causing the timestamp to
always be cleared which caused config files with includes to
always be reloaded. * Made wildcard includes always cause a
reload. Determining if a file was deleted cannot be determined
without restructuring the cache to determine if any files are
missing from the last files actually loaded. Also without
refactoring config_text_file_load(), the glob loop couldn't check
more than one file for changes anyway. * Made remove the cache
entry if the file no longer exists when trying to get its
timestamp or it is no longer a regular file. This fixes the
corner case where the file was loaded, then deleted, then the
config reloaded, then the file restored with the same timestamp,
and then the config reloaded again. * Made remove the cache entry
include list when actually loading the file. This gets rid of any
stale includes the file had from the last time the file was
loaded. ASTERISK-23683 #close Reported by: tootai Review:
https://reviewboard.asterisk.org/r/3575/ ........ Merged
revisions 415225 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415229 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415230 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-05 17:22 +0000 [r415223] Kevin Harwell <kharwell@digium.com>
* tests/test_uri.c (added), include/asterisk/http_websocket.h,
main/http.c, main/uri.c (added), tests/test_websocket_client.c
(added), res/res_http_websocket.c, include/asterisk/http.h,
include/asterisk/uri.h (added),
res/res_http_websocket.exports.in: res_http_websocket: Create a
websocket client Added a websocket server client in Asterisk.
Asterisk has a websocket server, but not a client. The ability to
have Asterisk be able to connect to a websocket server can
potentially be useful for future work (for instance this could
allow ARI to connect back to some external system, although more
work would be needed in order to incorporate that). Also a couple
of things to note - proxy connection support has not been
implemented and there is limited http response code handling
(basically, it is connect or not). Also added an initial new URI
handling mechanism to core. Internet type URI's are parsed into a
data structure that contains pointers to the various parts of the
URI. (closes issue ASTERISK-23742) Reported by: Kevin Harwell
Review: https://reviewboard.asterisk.org/r/3541/
2014-06-05 14:49 +0000 [r415208] Matthew Jordan <mjordan@digium.com>
* /, apps/app_confbridge.c: app_confbridge: Allow muting of users
waiting to enter a ConfBridge Prior to this patch, users waiting
to enter a ConfBridge were not considered when muted via the CLI
or via AMI. Instead, a confusing message would be emitted stating
that the channel did not exist. This patch allows a user to be
muted when waiting to enter a ConfBridge conference. This is
equivalent to start when muted, only toggled via the CLI or AMI.
Review: https://reviewboard.asterisk.org/r/3582 #ASTERISK-23824
#close patches: rb3582.patch uploaded by tm1000 (License 6524)
........ Merged revisions 415206 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415207 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-05 11:59 +0000 [r415192] Kinsey Moore <kmoore@digium.com>
* /, channels/chan_pjsip.c: PJSIP: Send initial connected line
information This makes chan_pjsip send connected line information
when it is called so that connected line information is available
on the connected channel. (closes issue DPMA-442) Reported by:
John Bigelow Review: https://reviewboard.asterisk.org/r/3584/
........ Merged revisions 415191 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-04 20:16 +0000 [r415173] Walter Doekes <walter+asterisk@wjd.nu>
* /, contrib/scripts/safe_asterisk: safe_asterisk: Cleanup and
debian compatibility. Cleans up the safe_asterisk script and adds
the ASTSAFE_FOREGROUND option that allows the debian asterisk
init script to capture the right pid. * Drop the vim #modeline
which wasn't used. Use test consistently without the odd
configure xno syntax. Double quote all paths. General cleanup. *
Don't output message()s to the console but only to TTY if set. *
Allow TTY to be "no" as well as empty (debian compatibility with
debian/patches/safe_asterisk-config). * Add option to export
ASTSAFE_FOREGROUND=1 from the init script that calls this to
disable backgrounding. Debian uses a similar method in
debian/patches/safe_asterisk-nobg). ASTERISK-23492 #close Review:
https://reviewboard.asterisk.org/r/3574/ ........ Merged
revisions 415132 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415171 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415172 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-04 14:13 +0000 [r415116-415118] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_pjsip.c: chan_pjsip: Add debug in RTP Engine
glue callback This patch adds some debug statements that aid with
determining why a direct media request may or may not be
initiated. ........ Merged revisions 415117 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_session.c, /: res_pjsip_session: Add debug
statement for session refreshes This small patch adds a debug
level 3 statement indicating how a session refresh is being sent
- either as a re-INVITE or as an UPDATE - and where the session
refresh is going. ........ Merged revisions 415115 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-04 07:27 +0000 [r415080] Corey Farrell <git@cfware.com>
* /, apps/confbridge/include/confbridge.h, apps/app_confbridge.c:
app_confbridge: Correct verification of conference name length
Conference names were not checked for maximum length, allowing
unexpected behaviour. This change adds checking to ensure the
maximum length is not exceeded. The maximum length is also
changed from 32 to AST_MAX_EXTENSION. ASTERISK-23035 #close
Reported by: Iñaki Cívico Tested by: Iñaki Cívico Patches:
confbridge-enforce_max-1.8.patch uploaded by coreyfarrell
(license 5909) confbridge-enforce_max-11up.patch uploaded by
coreyfarrell (license 5909) ........ Merged revisions 415060 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 415066 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 415078 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-03 07:36 +0000 [r415000] Walter Doekes <walter+asterisk@wjd.nu>
* /, funcs/func_odbc.c: func_odbc: Fix fixed size buffers fix
(r414968). The change that removed the fixed size buffers in
odbc-related code -- removing arbitrary column width limits --
was incomplete. This change adds: no segfault on writesql without
insertsql and return value checks after strdup. While I was in
the vicinity I cleaned up the linefeeds in the odbc function
descriptions, moved some code for clarity, removed some blobs and
noted (but didn't fix) that the 'odbc write ... exec' CLI command
doesn't behave as the dialplan equivalent when insertsql= is
used. ASTERISK-23582 #close Review:
https://reviewboard.asterisk.org/r/3579/ ........ Merged
revisions 414997 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414998 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414999 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-06-01 15:32 +0000 [r414976] Joshua Colp <jcolp@digium.com>
* /, bridges/bridge_native_rtp.c: bridge_native_rtp: Take the
bridge type choice of both channels into account. The
bridge_native_rtp module currently uses the bridge result of the
first channel that joins a bridge as the ultimate result. This
means that if the first channel has direct media enabled but the
second does not a direct media bridge will still occur. This
change makes it so that both sides are taken into account. If
either side forbids the bridge or responds with a local bridge
result then either a generic or local bridge occurs.
ASTERISK-23541 #close Reported by: Justin E Review:
https://reviewboard.asterisk.org/r/3577/ ........ Merged
revisions 414975 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-30 14:53 +0000 [r414949] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip_refer.c, /: PJSIP: Prevent crash on blind transfer
Blind transfers don't go too well with NULL channels which can
occur if the channel has already been transferred away. (closes
issue ASTERISK-23718) Reported by: Jonathan Rose ........ Merged
revisions 414948 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-30 12:42 +0000 [r414883-414935] Matthew Jordan <mjordan@digium.com>
* main/audiohook.c, CHANGES, res/ari/ari_model_validators.c,
res/ari/ari_model_validators.h, funcs/func_talkdetect.c (added),
include/asterisk/stasis_channels.h,
rest-api/api-docs/events.json, /, main/stasis_channels.c:
TALK_DETECT: A channel function that raises events when talking
is detected This patch adds a new channel function TALK_DETECT
that, when set on a channel, causes events indicating the
start/stop of talking on a channel to be emitted to both AMI and
ARI clients. The function allows setting both the silence
threshold (the length of silence after which we decide no one is
talking) as well as the talking threshold (the amount of energy
that counts as talking). Parameters can be updated on a channel
after talk detection has been enabled, and talk detection can be
removed at any time. The events raised by the function use a
nomenclature similar to existing AMI/ARI events. For AMI:
ChannelTalkingStart/ChannelTalkingStop For ARI:
ChannelTalkingStarted/ChannelTalkingFinished Review:
https://reviewboard.asterisk.org/r/3563/ #ASTERISK-23786 #close
Reported by: Matt Jordan ........ Merged revisions 414934 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/config.c, /: main/config.c: AMI action UpdateConfig EmptyCat
clears all categories When invoking UpdateConfig AMI action with
Action set to EmptyCat, Asterisk will make all categories empty
in the config but the one requested with a Cat variable. This is
due to a bug in ast_category_empty (main/config.c) that makes an
incorrect comparison for a category name. This patch corrects the
comparison such that only the requested category is cleared.
Review: https://reviewboard.asterisk.org/r/3573/ #ASTERISK-23803
#close Reported by: zvision patches: manager.c.diff uploaded by
zvision (License 5755) ........ Merged revisions 414880 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414881 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414882 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-29 18:51 +0000 [r414861] Kinsey Moore <kmoore@digium.com>
* main/pbx.c, /: PBX: Prevent incorrect hint parsing Dynamic and
pattern matching hints should not be checked for their last known
state until they are instantiated by subscribers. (closes issue
AFS-56) Reported by: John Hardin Patch AFS-56-pbx.diff submitted
by Matt Jordan (license 6283) ........ Merged revisions 414813
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 414859 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414860 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-28 22:54 +0000 [r414798] Matthew Jordan <mjordan@digium.com>
* main/loader.c, include/asterisk/logger.h, res/res_config_curl.c,
cel/cel_odbc.c, res/res_config_odbc.c,
bridges/bridge_builtin_features.c, main/optional_api.c,
main/logger.c, main/config_options.c, cdr/cdr_odbc.c,
apps/app_mixmonitor.c, main/asterisk.c, res/res_odbc.c,
main/xmldoc.c, apps/app_voicemail.c, cel/cel_pgsql.c,
channels/chan_unistim.c, res/res_config_pgsql.c, main/pbx.c,
cdr/cdr_sqlite3_custom.c, res/res_fax.c, main/bridge.c,
apps/app_waitforsilence.c, cdr/cdr_adaptive_odbc.c,
res/parking/parking_applications.c, cdr/cdr_pgsql.c,
res/res_jabber.c: Logger/CLI/etc.: Fix some aesthetic issues;
reduce chatty verbose messages This patch addresses some
aesthetic issues in Asterisk. These are all just minor tweaks to
improve the look of the CLI when used in a variety of settings.
Specifically: * A number of chatty verbose messages were removed
or demoted to DEBUG messages. Verbose messages with a verbosity
level of 5 or higher were - if kept as verbose messages - demoted
to level 4. Several messages that were emitted at verbose level 3
were demoted to 4, as announcement of dialplan applications being
executed occur at level 3 (and so the effects of those
applications should generally be less). * Some verbose messages
that only appear when their respective 'debug' options are
enabled were bumped up to always be displayed. *
Prefix/timestamping of verbose messages were moved to the
verboser handlers. This was done to prevent duplication of
prefixes when the timestamp option (-T) is used with the CLI. *
Verbose magic is removed from messages before being emitted to
non-verboser handlers. This prevents the magic in multi-line
verbose messages (such as SIP debug traces or the output of
DumpChan) from being written to files. * _Slightly_ better
support for the "light background" option (-W) was added. This
includes using ast_term_quit in the output of XML documentation
help, as well as changing the "Asterisk Ready" prompt to bright
green on the default background (which stands a better chance of
being displayed properly than bright white). Review:
https://reviewboard.asterisk.org/r/3547/
2014-05-28 20:53 +0000 [r414781] Rusty Newton <rnewton@digium.com>
* /, configs/pjsip.conf.sample: pjsip.conf: privkey_file should be
priv_key_file, mediaencryption=yes should be mediaencryption=sdes
privkey_file was missed in the snake case update. An example
included an invalid value for the mediaencryption option.
........ Merged revisions 414780 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-28 17:46 +0000 [r414764-414766] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/deviceStates.json,
rest-api/api-docs/endpoints.json,
rest-api/api-docs/mailboxes.json, rest-api/api-docs/events.json,
/, rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json,
rest-api/api-docs/playbacks.json,
rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json,
rest-api/resources.json, include/asterisk/manager.h,
rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json: AMI/ARI: Update version
numbers Update the semantic versioning of ARI to 1.3.0 and AMI to
2.3.0 to account for backwards compatible changes going from
12.2.0 to 12.3.0. ........ Merged revisions 414765 from
http://svn.asterisk.org/svn/asterisk/branches/12
* contrib/ast-db-manage/cdr/env.py, /: ast-db-manage/cdr/env.py:
Don't fail if a config file can't be loaded When generating SQL
files via the repotools alembic_creator.py script, a
configuration object is used programatically with SQLAlechemy, as
opposed to a configuration file. This patch ignores failures to
interpret a config file, as ... there isn't one in this case.
........ Merged revisions 414763 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-28 16:56 +0000 [r414748-414750] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip_session.c, include/asterisk/res_pjsip_session.h, /,
res/res_pjsip_t38.c: res_pjsip_session: Fix leaked video RTP
ports. Simply enabling PJSIP to negotiage a video codec (e.g.,
h264) would leak video RTP ports if the codec were not negotiated
by an incoming call. * Made add_sdp_streams() associate the
handler with the media stream if the handler handled the media
stream. Otherwise, when the ast_sip_session_media object was
destroyed it didn't know how to clean up the RTP resources. *
Fixed sdp_requires_deferral() associating the handler with the
media stream when deciding if the SDP processing needs to be
deferred for T.38. Like the leaked video RTP ports, the T.38
handler needs to clean up allocated resources from deciding if
SDP processing needs to be deffered. * Cleaned up some dead code
in handle_incoming_sdp() and sdp_requires_deferral().
ASTERISK-23721 #close Reported by: cervajs Review:
https://reviewboard.asterisk.org/r/3571/ ........ Merged
revisions 414749 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, CHANGES, apps/app_agent_pool.c: app_agent_pool: Return to
dialplan if the agent fails to ack the call. Improvements to the
agent pool functionality. * AgentRequest no longer hangs up the
caller if the agent fails to connect with the caller. It now
continues in the dialplan. * AgentRequest returns AGENT_STATUS
set to NOT_CONNECTED if the agent failed to connect with the
call. Most likely because the agent did not acknowledge the call
in time or got disconnected. * The agent alerting play file
configured by the agent.conf custom_beep option can now be
disabled by setting the option to an empty string. The agent is
effectively alerted to a call presence when MOH stops. * Fixed
bridge reference leak when the agent connects with a caller.
ASTERISK-23499 #close Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3551/ ........ Merged
revisions 414747 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-28 11:37 +0000 [r414696] Joshua Colp <jcolp@digium.com>
* res/res_config_odbc.c, /, funcs/func_odbc.c: res_config_odbc: Use
dynamically sized buffers to store row data so values do not get
truncated. ASTERISK-23582 #close ASTERISk-23582 #comment Reported
by: Walter Doekes Review:
https://reviewboard.asterisk.org/r/3557/ ........ Merged
revisions 414693 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414694 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414695 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-28 09:43 +0000 [r414567-414679] Walter Doekes <walter+asterisk@wjd.nu>
* /, channels/chan_unistim.c: chan_unistim: Unlock mutex in rare
OOM condition. #ASTERISK-23792 #close Reported by: Peter Whisker
Review: https://reviewboard.asterisk.org/r/3567/ ........ Merged
revisions 414677 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414678 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: chan_sip: Start session timer at 200, not
at INVITE. Asterisk started counting the session timer at INVITE
while the other end correctly started at 200. This meant that for
short session-expiries (90 seconds) combined with long ringing
times (e.g. 30 seconds), asterisk would wrongly assume that the
timer was hit before the other end thought it was time to send a
session refresh. This resulted in prematurely ended calls. This
changes the session timer to start counting first at 200 like RFC
says it should. (Also removed a few excess NULL checks that would
never hit, because if they did, asterisk would have crashed
already.) ASTERISK-22551 #close Reported by: i2045 Review:
https://reviewboard.asterisk.org/r/3562/ ........ Merged
revisions 414620 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414628 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414636 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_config_odbc.c, /: res_config_odbc: Fix old and new
ast_string_field memory leaks. The ODBC realtime driver uses ^NN
parameter encoding to cope with the special meaning of the
semi-colon. A semi-colon in a field is interpreted as if the key
was supplied twice, something which isn't otherwise possible with
fixed database columns. E.g. allow=alaw;ulaw is parsed as
allow=alaw and allow=ulaw. A literal semi-colon is rewritten to
^3B when stored in the database. The module uses a stringfield to
efficiently store the encoded parameters. However, this
stringfield wasn't always freed in some off-nominal cases. Commit
r413241 fixed initialization so the encoding for INSERT and
DELETE queries wouldn't crash. (Only SELECTs and UPDATEs worked
apparently.) But that commit forgot the frees. This change cleans
that up. Review: https://reviewboard.asterisk.org/r/3555/
........ Merged revisions 414564 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414565 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414566 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-25 02:37 +0000 [r414543] Matthew Jordan <mjordan@digium.com>
* /, main/core_unreal.c: core_unreal: Prevent double free of
core_unreal pvt When a channel is destroyed (such as via
ast_channel_release in off nominal paths in core_unreal), it will
attempt to free (via ast_free) the channel tech pvt. This is
problematic for a few reasons: 1. The channel tech pvt is an ao2
object in core_unreal. Free'ing the pvt directly is no good. 2.
The channel tech pvt's reference count is dropped just prior to
calling ast_channel_release, resulting in the pvt's destruction.
Hence, the channel destructor is free'ing an invalid pointer.
This patch keeps the dropping of the reference count, but sets
the pvt to NULL on the channel prior to releasing it. This models
what would occur if the channel was hung up directly. ........
Merged revisions 414542 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-23 17:36 +0000 [r414529] Matthew Jordan <mjordan@digium.com>
* tests/test_cel.c, /: test_cel: Fix unit tests broken due to event
def changes from res_corosync This patch instructs test_cel to
skip any IE types it doesn't care about. The addition of the raw
and bitfield types caused the tests to fail. ........ Merged
revisions 414528 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-23 14:36 +0000 [r414475] Kinsey Moore <kmoore@digium.com>
* main/event.c, /: Fix signed/unsigned build warnings ........
Merged revisions 414474 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-22 16:19 +0000 [r414417] Richard Mudgett <rmudgett@digium.com>
* /, apps/app_meetme.c: app_meetme: Don't interrupt MOH for
waitmarked users. Occasionally, when the last marked user leaves
the conference, waitmarked users don't get MOH if MOH is supposed
to be played while a waitmarked user is waiting for another
marked user. * Made not interrupt MOH when the user is a
waitmarked user. The waitmarked user doesn't need to hear any
leave announcements from the conference as the user would have
already heard different leave announcements if they were enabled.
Apparently DAHDI occasionally sends unending non-silent streams
to these users or a normal user still in the conference has
continuous high background noise. These non-silent streams cause
MOH to be suspended while the never ending "announcement" is
played. Issue caused by ASTERISK-13680. AST-1349 #close Reported
by: Tyler Stewart Review:
https://reviewboard.asterisk.org/r/3543/ ........ Merged
revisions 414401 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414402 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414404 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-22 16:09 +0000 [r414406] Scott Griepentrog <sgriepentrog@digium.com>
* rest-api/api-docs/events.json, /, res/stasis/app.c,
res/ari/resource_events.c, include/asterisk/stasis_app.h,
include/asterisk/stasis.h, apps/app_userevent.c,
res/ari/resource_events.h, res/ari/ari_model_validators.c,
CHANGES, main/stasis.c, res/ari/ari_model_validators.h,
include/asterisk/stasis_channels.h, res/res_ari_events.c,
main/stasis_channels.c, res/res_stasis.c,
main/manager_channels.c, main/stasis_endpoints.c: ARI: Add
ability to raise arbitrary User Events User events can now be
generated from ARI. Events can be signalled with arbitrary json
variables, and include one or more of channel, bridge, or
endpoint snapshots. An application must be specified which will
receive the event message (other applications can subscribe to
it). The message will also be delivered via AMI provided a
channel is attached. Dialplan generated user event messages are
still transmitted via the channel, and will only be received by a
stasis application they are attached to or if the channel is
subscribed to. This change also introduces the multi object blob
mechanism used to send multiple snapshot types in a single
message. The dialplan app UserEvent was also changed to use multi
object blob, and a new stasis message type created to handle
them. ASTERISK-22697 #close Review:
https://reviewboard.asterisk.org/r/3494/ ........ Merged
revisions 414405 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-22 15:52 +0000 [r414403] Jonathan Rose <jrose@digium.com>
* include/asterisk/bridge.h, res/parking/parking_bridge_features.c,
channels/chan_mgcp.c, res/res_pjsip_refer.c,
channels/chan_dahdi.c, channels/sig_analog.c, /,
channels/chan_sip.c, main/parking.c, main/bridge.c,
main/bridge_basic.c, res/parking/parking_applications.c,
include/asterisk/parking.h: res_pjsip_refer: Fix bugs involving
Parking/PJSIP/transfers PJSIP would never send the final 200
Notify for a blind transfer when transferring to parking. This
patch fixes that. In addition, it fixes a reference leak when
performing blind transfers to non-bridging extensions. Review:
https://reviewboard.asterisk.org/r/3485/ ........ Merged
revisions 414400 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-22 14:02 +0000 [r414331-414348] Matthew Jordan <mjordan@digium.com>
* /, UPGRADE.txt: UPGRADE: Add note for REF_DEBUG flag ........
Merged revisions 414345 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414346 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414347 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_corosync.c, include/asterisk/stasis.h, main/app.c,
main/devicestate.c, main/event.c, main/stasis.c,
include/asterisk/devicestate.h, include/asterisk/event.h,
main/stasis_message.c, /, include/asterisk/event_defs.h:
res_corosync: Update module to work with Stasis (and compile)
This patch fixes res_corosync such that it works with Asterisk
12. This restores the functionality that was present in previous
versions of Asterisk, and ensures compatibility with those
versions by restoring the binary message format needed to pass
information from/to them. The following changes were made in the
core to support this: * The event system has been partially
restored. All event definition and event types in this patch were
pulled from Asterisk 11. Previously, we had hoped that this
information would live in res_corosync; however, the approach in
this patch seems to be better for a few reasons: (1)
Theoretically, ast_events can be used by any module as a binary
representation of a Stasis message. Given the structure of an
ast_event object, that information has to live in the core to be
used universally. For example, defining the payload of a device
state ast_event in res_corosync could result in an incompatible
device state representation in another module. (2) Much of this
representation already lived in the core, and was not easily
extensible. (3) The code already existed. :-) * Stasis message
types now have a message formatter that converts their payload to
an ast_event object. * Stasis message forwarders now handle
forwarding to themselves. Previously this would result in an
infinite recursive call. Now, this simply creates a new
forwarding object with no forwards set up (as it is the thing it
is forwarding to). This is advantageous for res_corosync, as
returning NULL would also imply an unrecoverable error. Returning
a subscription in this case allows for easier handling of message
types that are published directly to an aggregate topic that has
forwarders. Review: https://reviewboard.asterisk.org/r/3486/
ASTERISK-22912 #close ASTERISK-22372 #close ........ Merged
revisions 414330 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-21 22:24 +0000 [r414297] Richard Mudgett <rmudgett@digium.com>
* /, main/core_unreal.c: core_unreal: Only block media frames when
a generator is on both ends of an unreal channel. The fix for
ASTERISK-12292 was a bit too aggressive. You could have
generators pointed at each other on local channels but need to
get other kinds of frames such as DTMF or CONNECTED_LINE frames
accross. ........ Merged revisions 414269 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414270 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414272 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-21 19:08 +0000 [r414217] Scott Griepentrog <sgriepentrog@digium.com>
* /, funcs/func_strings.c: pbx.c: prevent potential crash from
recursive replace() Recurisve usage of replace() resulted in
corruption of the temporary string storage and potential crash.
By changing the string to be allocated separtely per instance,
this is eliminated. ASTERISK-23650 #comment Reported by: Roel van
Meer ASTERISK-23650 #close Review:
https://reviewboard.asterisk.org/r/3539/ ........ Merged
revisions 414214 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414215 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414216 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-19 19:52 +0000 [r414196] Paul Belanger <paul.belanger@polybeacon.com>
* res/res_stasis_answer.c, /: Replace __ast_answer with
ast_raw_answer in app_control_answer While load testing an ARI
application, I noticed asterisk was returning HTTP 500 internal
server errors on channels/:id/answer. After talking to
#asterisk-dev, the issue appeared to be a lack of media flowing
after __ast_answer() was called. So now, we call ast_raw_answer
instead and no longer wait for media. ASTERISK-23758 #close
Review: https://reviewboard.asterisk.org/r/3549/ ........ Merged
revisions 414195 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-19 01:10 +0000 [r414123-414138] Matthew Jordan <mjordan@digium.com>
* include/asterisk/channel.h, bridges/bridge_native_rtp.c,
main/bridge_channel.c, res/res_pjsip_refer.c,
res/res_pjsip_session.c, main/channel.c, /, main/framehook.c:
Undo r414123 The Test Suite caught a few problems, undoing until
those are resolved
* include/asterisk/channel.h, bridges/bridge_native_rtp.c,
main/bridge_channel.c, res/res_pjsip_session.c, main/channel.c,
/, main/framehook.c: bridge_native_rtp/bridge_channel: Fix direct
media issues due to frame hook This patch fixes issues with
direct media bridges that occur after a blind transfer. These
issues were caught by the (currently failing)
pjsip/transfers/blind_transfer/caller_direct_media test. The test
currently fails primarily for two reasons: (1) When Bob and
Charlie (the transfer target and the transfer destination) enter
a bridge together, the framehook remains on the transfer target
channel until both channels are in the bridge. As it consumes
voice frames, the initial bridge type is a simple bridge. The
framehook is removed when both channels are in the bridge;
however, this does not currently cause the bridging framework to
re-evaluate the bridge. This patch adds a AST_SOFTHANGUP_UNBRIDGE
poke to the transfer target channel when a framehook is removed
so the bridge can re-evaluate itself. (2) When a channel leaves a
native RTP bridge, it may be leaving due to being hung up.
Sending a re-INVITE to a channel that is about to be hung up is
not nice - in fact, there's a good chance we'll send the BYE
request before the channel has had a chance to send back a 200
OK. To be somewhat nicer, this patch adds a function to channel.h
that allows the bridging framework to query for exactly why a
channel is leaving a bridge via the channel's soft hangup flags.
This allows it to only send the re-INVITE if there's a chance the
channel will survive the native bridging experience. Review:
https://reviewboard.asterisk.org/r/3535/ ........ Merged
revisions 414122 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-16 20:06 +0000 [r413994-414070] Richard Mudgett <rmudgett@digium.com>
* /, channels/chan_dahdi.c: chan_dahdi: Fix analog dialtone
detection. * Check if waitingfordt (waitfordialtone) is enabled
in dahdi_read() to allow the DSP to operate early enough to
detect dialtone. * Made use the correct variable in
my_check_waitingfordt(). ASTERISK-23709 #close Reported by: Steve
Davies Patches: dialtone_detect_fix (license #5012) patch
uploaded by Steve Davies Review:
https://reviewboard.asterisk.org/r/3534/ ........ Merged
revisions 414067 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 414068 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414069 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/sig_pri.c, /: sig_pri.c: Pull the pri_dchannel()
PRI_EVENT_RING case into its own function. * Populate the
CALLERID(ani2) value (and the special CALLINGANI2 channel
variable) with the ANI2 value in addition to the PRI specific
ANI2 channel variable. * Made complete snapshot staging with the
channel lock held. All channel snapshots need to be done while
the channel lock is held. ........ Merged revisions 414050 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 414051 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_meetme.c: app_meetme: Fix overwrite of DAHDI
conference data structure. Starting a conference recording using
the admin menu overwrites the DAHDI conference data structure
used to modify the admin user's conference mute mode. * Made no
longer pass the user's DAHDI conference data structure into the
menu functions. The menu now uses its own DAHDI conference data
structure to start the recording channel. * Moved the unlock
conf->playlock to before playing the conf-full message. No sense
keeping the lock while that prompt is playing. The user is never
going to get into the conference at that point. ........ Merged
revisions 413991 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413992 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413993 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-14 15:41 +0000 [r413897] Walter Doekes <walter+asterisk@wjd.nu>
* /, res/res_musiconhold.c: res_musiconhold: Minor cleanup. Fix a
few free()'s that should be ast_free()'s. Reverted an old
workaround that isn't necessary. Reorder a tiny bit of code.
Remove a bit of commented-out code. Review:
https://reviewboard.asterisk.org/r/3536/ ........ Merged
revisions 413894 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413895 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413896 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-13 18:09 +0000 [r413878] Jonathan Rose <jrose@digium.com>
* main/netsock2.c, /, channels/chan_sip.c,
include/asterisk/netsock2.h: chan_sip: Add TLS and SRTP status to
CLI command 'sip show channel' ASTERISK-23564 #close Reported by:
Patrick Laimbock Review: https://reviewboard.asterisk.org/r/3474/
........ Merged revisions 413876 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413877 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-13 13:53 +0000 [r413790-413793] Walter Doekes <walter+asterisk@wjd.nu>
* res/res_format_attr_h264.c, /: h264: Fix H264 SDP payload format.
https://tools.ietf.org/html/rfc3984#section-8.1 says
profile-level-id takes 3 bytes in base16 (6 hex digits). This
fixes video setup in certain cases. ASTERISK-23664 #close
ASTERISK-23664 #comment Patch r3530.patch uploaded by Guillaume
Maudoux. Review: https://reviewboard.asterisk.org/r/3530/
........ Merged revisions 413791 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413792 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/rtp_engine.c: rtp: Fix case typo in H263+ mime.
http://tools.ietf.org/html/rfc3555#section-4.2.6 says the
canonical mime subtype is "H263-1998", not "h263-1998". Original
code was added in r183101 on 2009-03-19 02:26:50 +0100. This
fixes issues with Polycom phones. ASTERISK-23665 #close
ASTERISK-23665 #comment Patch r3529.patch uploaded by Guillaume
Maudoux, backported by me. Review:
https://reviewboard.asterisk.org/r/3529/ ........ Merged
revisions 413787 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413788 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413789 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-13 00:35 +0000 [r413770-413772] Richard Mudgett <rmudgett@digium.com>
* configure.ac, channels/sig_pri.c, /, configure,
include/asterisk/autoconfig.h.in: chan_dahdi/sig_pri: Prevent
unnecessary PROGRESS events when overlap dialing is enabled. When
overlap dialing is enabled, the lack of inband audio available
information in the SETUP_ACKNOWLEDGE events causes an
interoperability problem with SIP. sig_pri doesn't know if there
is dialtone present when a SETUP_ACKNOWLEDGE is received so it
assumes it is there and posts an AST_CONTROL_PROGRESS frame. The
SIP channel driver then sends out a 183 Session Progress and
blocks the desired 180 Ringing message when the ALERTING message
comes in. * Made the configure script detect if the installed
version of libpri supports the SETUP_ACKNOWLEDGE enhancements. *
Using the new API, made generate an AST_CONTROL_PROGRESS frame on
an incoming SETUP_ACKNOWLEDGE message when the message indicates
inband audio is present instead of assuming that dialtone is
present. * Using the new API, made SETUP_ACKNOWLEDGE send out an
inband audio available indication only if dialtone is expected.
The change also makes the fallback behaviour of sending the
PROGRESS message better by sending it only if dialtone is
expected. * Changed receiving a PROCEEDING message to not
generate an AST_CONTROL_PROGRESS frame if the progress indication
ie indicates non-end-to-end-ISDN. This helps interoperability
with SIP. * Changed sending a PROCEEDING message in response to
an AST_CONTROL_PROCEEDING frame to not indicate inband audio
available. It was silly to do so anyway because the channel
driver doesn't know if inband audio is even available. This helps
interoperability with SIP. This patch and a corresponding change
in libpri work together to allow Asterisk to control the inband
audio available progress indication ie on the SETUP_ACKNOWLEDGE
message when dialtone is present. AST-1338 #close Reported by:
Tyler Stewart Review: https://reviewboard.asterisk.org/r/3521/
........ Merged revisions 413714 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413765 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413771 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/sig_pri.c: Fix compiler warning from GCC 4.10 fixup.
........ Merged revisions 413766 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-12 22:33 +0000 [r413713] Jonathan Rose <jrose@digium.com>
* apps/app_chanspy.c, /: app_chanspy: Fix a test that was failing
on account of r413551 ASTERISK-23381 #close ASTERISK-23381
#comment Reported by: Robert Moss Review:
https://reviewboard.asterisk.org/r/3505/ ........ Merged
revisions 413710 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413712 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-11 02:09 +0000 [r413651-413682] Joshua Colp <jcolp@digium.com>
* main/bridge_basic.c, include/asterisk/channel.h,
bridges/bridge_native_rtp.c, include/asterisk/framehook.h,
main/channel.c, /, main/framehook.c: framehooks: Add callback for
determining if a hook is consuming frames of a specific type. In
the past framehooks have had no capability to determine what
frame types a hook is actually interested in consuming. This has
meant that code has had to assume they want all frames, thus
preventing native bridging. This change adds a callback which
allows a framehook to be queried for whether it is consuming a
frame of a specific type. The native RTP bridging module has also
been updated to take advantange of this, allowing native bridging
to occur when previously it would not. ASTERISK-23497 #comment
Reported by: Etienne Lessard ASTERISK-23497 #close Review:
https://reviewboard.asterisk.org/r/3522/ ........ Merged
revisions 413681 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/channel.h, bridges/bridge_native_rtp.c,
include/asterisk/framehook.h, main/channel.c, /,
main/framehook.c, main/bridge_basic.c: Undoing framehook support.
Issues were uncovered by Bamboo.
* /, main/framehook.c, main/bridge_basic.c,
include/asterisk/channel.h, bridges/bridge_native_rtp.c,
include/asterisk/framehook.h, main/channel.c: framehooks: Add
callback for determining if a hook is consuming frames of a
specific type. In the past framehooks have had no capability to
determine what frame types a hook is actually interested in
consuming. This has meant that code has had to assume they want
all frames, thus preventing native bridging. This change adds a
callback which allows a framehook to be queried for whether it is
consuming a frame of a specific type. The native RTP bridging
module has also been updated to take advantange of this, allowing
native bridging to occur when previously it would not.
ASTERISK-23497 #comment Reported by: Etienne Lessard
ASTERISK-23497 #close Review:
https://reviewboard.asterisk.org/r/3522/ ........ Merged
revisions 413650 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-09 23:18 +0000 [r413589-413599] Kinsey Moore <kmoore@digium.com>
* /, funcs/func_env.c: Fix 32bit build for func_env ........ Merged
revisions 413592 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413595 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413597 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_festival.c, pbx/dundi-parser.c, apps/app_getcpeid.c,
main/netsock.c, funcs/func_channel.c, main/audiohook.c,
pbx/pbx_config.c, res/res_pjsip_registrar.c, main/xmldoc.c,
channels/iax2/firmware.c, apps/app_voicemail.c, main/format.c,
cel/cel_pgsql.c, main/rtp_engine.c, main/parking.c,
main/bridge.c, res/res_jabber.c, res/res_http_websocket.c,
main/config.c, res/res_format_attr_opus.c, main/loader.c,
res/parking/parking_bridge.c, main/cdr.c, main/manager.c,
include/asterisk/astobj.h, main/bucket.c, apps/app_dumpchan.c,
main/app.c, res/res_pjsip/config_transport.c,
res/res_pjsip_refer.c, channels/chan_mgcp.c,
res/res_rtp_asterisk.c, main/slinfactory.c, main/core_unreal.c,
res/res_pjsip_sdp_rtp.c, res/res_crypto.c, main/acl.c,
channels/sig_pri.c, res/res_monitor.c, res/res_srtp.c,
main/data.c, res/res_corosync.c, channels/sip/config_parser.c,
res/res_fax_spandsp.c, apps/app_stack.c, main/asterisk.c,
main/udptl.c, res/res_sorcery_config.c, main/security_events.c,
res/res_timing_dahdi.c, res/res_pjsip_t38.c,
res/res_musiconhold.c, main/taskprocessor.c,
res/res_format_attr_h263.c, res/res_xmpp.c, res/res_pktccops.c,
funcs/func_hangupcause.c, channels/chan_phone.c,
main/manager_bridges.c, cel/cel_odbc.c, channels/chan_skinny.c,
channels/chan_motif.c, res/res_agi.c, main/logger.c,
funcs/func_srv.c, channels/chan_alsa.c, apps/app_confbridge.c,
res/res_pjsip_pubsub.c, channels/sip/include/sip.h, main/sched.c,
apps/app_adsiprog.c, main/pbx.c, channels/chan_sip.c,
res/res_fax.c, main/aoc.c, res/res_calendar_ews.c,
res/parking/parking_bridge_features.c, channels/iax2/parser.c,
main/callerid.c, main/file.c,
res/res_pjsip/pjsip_configuration.c, main/adsi.c,
main/config_options.c, pbx/pbx_dundi.c, funcs/func_iconv.c,
main/bridge_channel.c, res/res_odbc.c, channels/chan_pjsip.c,
res/parking/parking_manager.c, res/res_calendar.c, /,
funcs/func_sysinfo.c, main/utils.c, cdr/cdr_adaptive_odbc.c,
res/res_calendar_caldav.c, res/res_stasis_snoop.c,
res/res_format_attr_h264.c, main/channel.c, res/ael/pval.c,
res/res_ari_model.c, channels/chan_dahdi.c,
channels/sig_analog.c, funcs/func_frame_trace.c,
res/res_format_attr_silk.c, main/manager_channels.c,
apps/app_dial.c, res/res_calendar_icalendar.c, main/translate.c,
apps/app_queue.c, channels/chan_jingle.c, res/res_stun_monitor.c,
main/abstract_jb.c, res/res_stasis_recording.c, apps/app_sms.c,
main/event.c, apps/app_verbose.c, main/dsp.c,
channels/chan_unistim.c, main/frame.c, res/res_stasis_playback.c,
main/ccss.c, funcs/func_env.c, main/devicestate.c,
bridges/bridge_softmix.c, channels/chan_gtalk.c,
channels/chan_iax2.c, main/enum.c, main/cli.c,
res/res_format_attr_celt.c, apps/confbridge/conf_config_parser.c,
main/io.c, channels/pjsip/dialplan_functions.c,
res/res_config_odbc.c, res/res_pjsip/location.c,
res/res_pjsip_outbound_registration.c, formats/format_pcm.c,
apps/app_minivm.c, main/stdtime/localtime.c, main/stun.c: 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. ........ Merged revisions 413586
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 413587 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413588 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-09 18:15 +0000 [r413572] Richard Mudgett <rmudgett@digium.com>
* main/http.c: http.c: Remove dead code.
2014-05-09 17:03 +0000 [r413557] Jonathan Rose <jrose@digium.com>
* apps/app_chanspy.c, /: app_chanspy: Fix a bug where Barge mode
could fail If the barge audiohook was attached prior to the spyee
and its peer actually being bridged, the audiohook would not be
applied and the connected peer would not be able to hear audio
from the spy when the spy is in barge mode. (closes issue
ASTERISK-23381) Reported by: Robert Moss Review:
https://reviewboard.asterisk.org/r/3505/ ........ Merged
revisions 413551 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413556 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-08 00:36 +0000 [r413488] Joshua Colp <jcolp@digium.com>
* apps/app_queue.c, main/manager.c, /: app_queue: Extend
documentation for various Manager actions and events. ........
Merged revisions 413485 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413486 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413487 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-07 21:58 +0000 [r413469] Mark Michelson <mmichelson@digium.com>
* funcs/func_presencestate.c: Ensure that presence state is decoded
properly on Asterisk startup. The CustomPresence provider
callback will automatically base64 decode stored data if the 'e'
option was present when the state was set. However, since the
provider callback was bypassed on Asterisk startup, encoded
presence subtypes and messages were being sent instead. This fix
makes it so the provider callback is always used when providing
presence state updates.
2014-05-07 20:59 +0000 [r413453-413455] Richard Mudgett <rmudgett@digium.com>
* apps/app_confbridge.c, /: app_confbridge: Fixed "CBAnn" channels
not going away. Fixed a ref leak in conf_handle_talker_cb()
everytime the conference bridge was found to report a channel's
talker status change. The resulting leak caused the "CBAnn"
channels and the conference bridge to never be destroyed. Thanks
to Richard Kenner on the asterisk-user's list for locating the
problem. Reported by: Richard Kenner ........ Merged revisions
413454 from http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_confbridge.c, /: app_confbridge: Fix ref leak in CLI
"confbridge kick" command. Fixed ref leak in the CLI "confbridge
kick" command when the channel to be kicked was not in the
conference. ........ Merged revisions 413451 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413452 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-07 17:56 +0000 [r413307-413399] Mark Michelson <mmichelson@digium.com>
* res/res_config_odbc.c, /: Fix encoding of custom prepare extra
data. Patches: res_config_odbc-take2.patch by John Hardin
(License #6512) ........ Merged revisions 413396 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413397 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413398 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip/presence_xml.c, /,
res/res_pjsip_pidf_digium_body_supplement.c: Improve XML
sanitization in NOTIFYs, especially for presence subtypes and
messages. Embedded carriage return line feed combinations may
appear in presence subtypes and messages since they may be
derived from user input in an instant messenger client. As such,
they need to be properly escaped so that XML parsers do not vomit
when the messages are received. ........ Merged revisions 413372
from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_registrar.c, /: Check for an act on failures to
update contacts during registration. There was an underlying
issue in a realtime backend where database updates would fail.
Since we were not checking for failure, we would end up in a
strange state where the old database entry was still present but
Asterisk thought that it had been updated. Now when an entry
fails to update, we print a warning and delete the old contact
from sorcery so there is no mismatch between foreground and
backend state. Patches: res_pjsip_registrar.patch by John Hardin
(License #6512) ........ Merged revisions 413358 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_config_odbc.c, /: Ensure that all parts of SQL UPDATEs
and DELETEs are encoded. Patches: res_config_odbc.patch by John
Hardin (License #6512) ........ Merged revisions 413304 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413305 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413306 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-02 20:28 +0000 [r413227-413263] Mark Michelson <mmichelson@digium.com>
* /, res/res_config_odbc.c: Prevent crashes in res_config_odbc due
to uninitialized string fields. Patches: odbc-crash.patch by John
Hardin (License #6512) ........ Merged revisions 413241 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413251 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413258 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_config_pgsql.c, /: Return the number of rows affected by
a SQL insert, rather than an object ID. The realtime API
specifies that the store callback is supposed to return the
number of rows affected. res_config_pgsql was instead returning
an Oid cast as an int, which during any nominal execution would
be cast to 0. Returning 0 when more than 0 rows were inserted
causes problems to the function's callers. To give an idea of how
strange code can be, this is the necessary code change to fix a
device state issue reported against chan_pjsip in Asterisk 12+.
The issue was that the registrar would attempt to insert contacts
into the database. Because of the 0 return from res_config_pgsql,
the registrar would think that the contact was not successfully
inserted, even though it actually was. As such, even though the
contact was query-able and it was possible to call the endpoint,
Asterisk would "think" the endpoint was unregistered, meaning it
would report the device state as UNAVAILABLE instead of
NOT_INUSE. The necessary fix applies to all versions of Asterisk,
so even though the bug reported only applies to Asterisk 12+, the
code correction is being inserted into 1.8+. Closes issue
ASTERISK-23707 Reported by Mark Michelson ........ Merged
revisions 413224 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 413225 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413226 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-02 16:39 +0000 [r413211] Richard Mudgett <rmudgett@digium.com>
* UPGRADE.txt, res/res_pjsip_refer.c, /, channels/chan_sip.c:
res_pjsip_refer: Add Referred-By header on INVITE for blind
transfers. Per rfc3892, the Referred-By header in a REFER must be
copied into the referenced request (IE. The outgoing INVITE to
the transfer target). * Automatically put the Referred-By header
in the outgoing INVITE message if the SIPREFERREDBYHDR channel
variable is defined with a value. * Made
chan_sip.c:get_refer_info() set SIPREFERREDBYHDR for inheritance
so chan_pjsip has a better chance to interoperate. * Fixed
refer_blind_callback() and refer_incoming_refer_request() to not
modify the data in the pointer returned by
pjsip_msg_find_hdr_by_name(). It seems wrong to modify that data
since the calling routine doesn't own the buffer. ASTERISK-23501
#close Reported by: John Bigelow Review:
https://reviewboard.asterisk.org/r/3514/ ........ Merged
revisions 413210 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-02 16:06 +0000 [r413197] Jonathan Rose <jrose@digium.com>
* res/parking/res_parking.h, /, CHANGES,
res/parking/parking_bridge_features.c,
res/parking/parking_manager.c: Parking: Add 'AnnounceChannel'
argument to manager action 'Park' (closes ASTERISK-23397)
Reported by: Denis Review:
https://reviewboard.asterisk.org/r/3446/ ........ Merged
revisions 413196 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-01 16:21 +0000 [r413174-413183] Mark Michelson <mmichelson@digium.com>
* funcs/func_presencestate.c: Make behavior of the PRESENCE_STATE
'e' option more consistent. When writing presence state, if 'e'
is specified, then the presence state will be stored in the astdb
encoded. However, consumers of presence state events or those
that query for the presence state will be given decoded
information. If base64 encoding is desired for consumers, then
the information can be base64-encoded manually and the 'e' option
can be omitted. closes issue ASTERISK-23671 Reported by Mark
Michelson Review: https://reviewboard.asterisk.org/r/3482
* res/res_pjsip_exten_state.c, /: Remove unnecessary repetition
checks from res_pjsip_exten_state The PBX core already takes care
of ensuring that repeated state changes are not communicated to
exten state consumers. Because the check in res_pjsip_exten_state
was incomplete, it was causing valid presence state changes not
to be sent out. For instance, if the presence state did not
change but the message or subtype did, then no presence-related
NOTIFY request would be sent out. closes issue ASTERISK-23672
Reported by Mark Michelson ........ Merged revisions 413173 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-05-01 12:31 +0000 [r413160] Joshua Colp <jcolp@digium.com>
* res/res_pjsip/config_transport.c, /: res_pjsip: Add the ability
to configure ciphers based on name. Previously this code would
only accept the OpenSSL identifier instead of the documented
name. ASTERISK-23498 #close ASTERISK-23498 #comment Reported by:
Anthony Messina Review: https://reviewboard.asterisk.org/r/3491/
........ Merged revisions 413159 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-30 21:03 +0000 [r413144] Richard Mudgett <rmudgett@digium.com>
* main/message.c, /, channels/chan_sip.c,
include/asterisk/message.h, res/res_pjsip_messaging.c:
chan_sip.c: Fixed off-nominal message iterator ref count and
alloc fail issues. * Fixed early exit in sip_msg_send() not
destroying the message iterator. * Made
ast_msg_var_iterator_next() and ast_msg_var_iterator_destroy()
tolerant of a NULL iter parameter in case
ast_msg_var_iterator_init() fails. * Made
ast_msg_var_iterator_destroy() clean up any current message data
ref. * Made struct ast_msg_var_iterator,
ast_msg_var_iterator_init(), ast_msg_var_iterator_next(),
ast_msg_var_unref_current(), and ast_msg_var_iterator_destroy()
use iter instead of i. * Eliminated RAII_VAR usage in
res_pjsip_messaging.c:vars_to_headers(). ........ Merged
revisions 413139 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413142 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-30 20:39 +0000 [r413141] Joshua Colp <jcolp@digium.com>
* /, channels/chan_pjsip.c: chan_pjsip: Fix deadlock when
retrieving call-id of channel. If a task was in-flight which
required the channel or bridge lock it was possible for the
synchronous task retrieving the call-id to deadlock as it holds
those locks. After discussing with Mark Michelson the synchronous
task was removed and the call-id accessed directly. This should
be safe as each object involved is guaranteed to exist and the
call-id will never change. ........ Merged revisions 413140 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-30 13:08 +0000 [r413125] Kinsey Moore <kmoore@digium.com>
* res/res_http_websocket.c, /: Websocket: Add session locking and
delay close This resolves a race condition where data could be
written to a NULL FILE pointer causing a crash as a websocket
connection was in the process of shutting down by adding locking
to websocket session writes and by deferring session teardown
until session destruction. (closes issue ASTERISK-23605) Review:
https://reviewboard.asterisk.org/r/3481/ Reported by: Matt Jordan
........ Merged revisions 413123 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413124 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-30 12:42 +0000 [r413118-413122] Joshua Colp <jcolp@digium.com>
* /, res/stasis/control.c: res_stasis: Add progress indications to
operations which perform media. This change fixes operations
which did not account for the fact that they may be executed on
channels which have not been answered. These operations will now
indicate progress when invoked. ASTERISK-23560 #close
ASTERISk-23560 #comment Reported by: Jan Svoboda Review:
https://reviewboard.asterisk.org/r/3495/ ........ Merged
revisions 413121 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_sdp_rtp.c: res_pjsip_sdp_rtp: Fix issue where
sending a hold SDP twice could cause an unhold. This change fixes
a bug where if an SDP with media address and sendonly was
received twice the underlying call would go off hold, instead of
remaining on hold. This occured because the code did not properly
take into account that the SDP may contain both a valid media
address and the sendonly attribute. The code now examines the
sendonly attribute and media address first, so if the SDP is
received again no change will occur. ASTERISK-23558 #comment
Reported by: John Bigelow Review:
https://reviewboard.asterisk.org/r/3472/ ........ Merged
revisions 413119 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_pjsip.c, res/res_pjsip_session.c, /: chan_pjsip:
Add support for picking up calls in the configured pickup group.
AST-1363 Review: https://reviewboard.asterisk.org/r/3478/
........ Merged revisions 413117 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-29 15:10 +0000 [r413103] George Joseph <george.joseph@fairview5.com>
* /, include/asterisk/spinlock.h: Add "destroy" implementation for
spinlock. The original commit for spinlock was missing "destroy"
implementations. Most of them are no-ops but phtread_spin and
pthread_mutex do need their locks destroyed. ........ Merged
revisions 413102 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-29 11:27 +0000 [r413089] Joshua Colp <jcolp@digium.com>
* channels/chan_pjsip.c, /: chan_pjsip: Implement core ability to
get Call-ID of a channel. This changes implement the
"get_pvt_uniqueid" which is used to return the technology
specific unique identifier. In the case of SIP this is the
Call-ID of the dialog. Review:
https://reviewboard.asterisk.org/r/3480/ ........ Merged
revisions 413088 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-28 20:07 +0000 [r413074] Kinsey Moore <kmoore@digium.com>
* /, main/bridge.c, main/bridge_basic.c: Bridging: Don't lock NULL
bridges When bridge locking was added for bridge snapshot
creation, some locations where bridge locking was added were not
guaranteed to actually have a bridge and locking NULL AO2 objects
tends to cause segfaults. This ensures that NULL bridges aren't
locked. ........ Merged revisions 413073 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-28 14:40 +0000 [r413060] Mark Michelson <mmichelson@digium.com>
* res/res_manager_presencestate.c (added), main/devicestate.c,
CHANGES, main/presencestate.c, res/res_manager_devicestate.c
(added): Add DeviceStateChanged and PresenceStateChanged AMI
events. These events are controlled by two new modules,
res_manager_devicestate and res_manager_presencestate. Review:
https://reviewboard.asterisk.org/r/3417
2014-04-28 07:43 +0000 [r413048] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* UPGRADE.txt, CHANGES, channels/chan_unistim.c,
configs/unistim.conf.sample: Introducing changes proposed to
chan_unistim driver: 1) Added the unistim.conf variable
dtmf_duration which can select the DTMF playback duration from
0ms to 150ms (0 is off and is the new default) 2) Enabled the
transmission of month names, which are sent with the date and
changed the dateformat variable to accept the values 0-3 as per
the UNISTIM standard (2 & 3 match the previous 1 & 2 formats). 3)
Enabled the "Mute" packet so muting microphone works as expected
and microphone muted for all calls while LED light on 4) Changed
Duree to Timer on i2004 display (closes issue ASTERISK-23592)
2014-04-27 19:29 +0000 [r413036] Olle Johansson <oej@edvina.net>
* main/tcptls.c: tcptls.c : Log errors as ERROR, not warning or
something else.
2014-04-25 19:26 +0000 [r413012] Matthew Jordan <mjordan@digium.com>
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Add support for DTLS
handshake retransmissions On congested networks, it is possible
for the DTLS handshake messages to get lost. This patch adds a
timer to res_rtp_asterisk that will periodically check to see if
the handshake has succeeded. If not, it will retransmit the DTLS
handshake. Review: https://reviewboard.asterisk.org/r/3337
ASTERISK-23649 #close Reported by: Nitesh Bansal patches:
dtls_retransmission.patch uploaded by Nitesh Bansal (License
6418) ........ Merged revisions 413008 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 413009 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-24 14:37 +0000 [r412993] Kevin Harwell <kharwell@digium.com>
* /,
contrib/ast-db-manage/config/versions/e96a0b8071c_increase_pjsip_column_size.py
(added): pjsip realtime: increase the size of some columns The
string lengths on certain columns created through alembic for
PJSIP were too short. For instance, columns containing URIs are
currently set to 40 characters, but this can be too small and
result in truncated values. Added an alembic migration script
that increases the size of these columns and a few others to 255.
ASTERISK-23639 #close Reported by: Mark Michelson Review:
https://reviewboard.asterisk.org/r/3475/ ........ Merged
revisions 412992 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-23 20:13 +0000 [r412977] George Joseph <george.joseph@fairview5.com>
* include/asterisk/spinlock.h (added), /, configure,
include/asterisk/autoconfig.h.in, configure.ac: This patch adds
support for spinlocks in Asterisk. There are cases in Asterisk
where it might be desirable to lock a short critical code section
but not incur the context switch and yield penalty of a mutex or
rwlock. The primary spinlock implementations execute exclusively
in userspace and therefore don't incur those penalties. Spinlocks
are NOT meant to be a general replacement for mutexes. They
should be used only for protecting short blocks of critical code
such as simple compares and assignments. Operations that may
block, hold a lock, or cause the thread to give up it's timeslice
should NEVER be attempted in a spinlock. The first use case for
spinlocks is in astobj2 - internal_ao2_ref. Currently the
manipulation of the reference counter is done with an
ast_atomic_fetchadd_int which works fine. When weak reference
containers are introduced however, there's an additional
comparison and assignment that'll need to be done while the lock
is held. A mutex would be way too expensive here, hence the
spinlock. Given that lock contention in this situation would be
infrequent, the overhead of the spinlock is only a few more
machine instructions than the current ast_atomic_fetchadd_int
call. ASTERISK-23553 #close Review:
https://reviewboard.asterisk.org/r/3405/ ........ Merged
revisions 412976 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-23 18:03 +0000 [r412925] Richard Mudgett <rmudgett@digium.com>
* /, main/http.c: http: Fix spurious ERROR message in responses
with no content. Backport -r411687 and fix the fix because
content_length is the length of out plus the length of the file
controlled by fd. When a response has an out content length of 0,
fwrite would be called to write a buffer with no data in it. This
resulted in the following classic error message: [Apr 3 11:49:17]
ERROR[26421] http.c: fwrite() failed: Success This patch makes it
so that we only attempt to write the content of out if the out
string is non-zero. ........ Merged revisions 412922 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412923 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412924 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-23 15:02 +0000 [r412910] Russell Bryant <russell@russellbryant.com>
* res/res_monitor.c, funcs/func_periodic_hook.exports.in (added),
main/asterisk.dynamics, funcs/func_periodic_hook.c: Fix error
loading res_monitor. For some odd reason, loading app_mixmonitor
was fine, but res_monitor was not. This patch fixes a set of
issues related to func_periodic_hook exporting the beep functions
that gets res_monitor working again.
2014-04-22 10:09 +0000 [r412883] Joshua Colp <jcolp@digium.com>
* /, res/stasis/app.c: res_stasis: Fix crash when handling a failed
blind transfer message. This changes fixes a crash that occurs
when stasis determines if it should send a message out to an
application or not. The code incorrectly assumed that a bridge
snapshot would always be present when in reality for failure
cases it may not be. ASTERISK-23573 #close ........ Merged
revisions 412882 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-21 17:56 +0000 [r412759-412824] Jonathan Rose <jrose@digium.com>
* CHANGES, /: chan_sip: trust_id_outbound CHANGES message
improvement (closes issue AST-1301) (closes issue ASTERISK-19465)
Reported by: Krzysztof Chmielewski ........ Merged revisions
412821 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 412822 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412823 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c, configs/sip.conf.sample, CHANGES,
channels/sip/include/sip.h: chan_sip: Add sendrpid trust options
In r411189, some behavior was changed which made sendrpid
behavior act in a more trusting manner by sending full user data
for peers set with private caller presence in P-Asserted-Identity
headers. Since this changed long time expected behaviors, we
decided to pull that patch when that was pointed out by the
community. Instead, this patch provides a trust_id_outbound
setting which will expose the data per RFC-3325 if set to 'yes'
and simply not send the PAI/RPID headers at all if set to 'no'.
By default trust_id_outbound will be set to 'legacy' which will
preserve the behavior prior to these patches. Extra special
thanks to Walter Doekes for providing advice and feedback.
(closes issue AST-1301) (closes issue ASTERISK-19465) Reported
by: Krzysztof Chmielewski Review:
https://reviewboard.asterisk.org/r/3447/ ........ Merged
revisions 412744 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412746 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412747 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-21 16:16 +0000 [r412729-412750] Kinsey Moore <kmoore@digium.com>
* main/http.c, main/manager.c, /: HTTP: Add TCP_NODELAY to accepted
connections This adds the TCP_NODELAY option to accepted
connections on the HTTP server built into Asterisk. This option
disables the Nagle algorithm which controls queueing of outbound
data and in some cases can cause delays on receipt of response by
the client due to how the Nagle algorithm interacts with TCP
delayed ACK. This option is already set on all non-HTTP AMI
connections and this change would cover standard HTTP requests,
manager HTTP connections, and ARI HTTP requests and websockets in
Asterisk 12+ along with any future use of the HTTP server.
Review: https://reviewboard.asterisk.org/r/3466/ ........ Merged
revisions 412745 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412748 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412749 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_confbridge.c, /: Confbridge: Fix ConfbridgeKick AMI
documentation This adds documentation for the "all" channel
option for the ConfbridgeKick AMI action and adjusts AMI
responses accordingly. (issue ASTERISK-23282) Reported by: Dorian
Logan ........ Merged revisions 412730 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_confbridge.c: Confbridge: Add references for kick all
option After the ability to kick all attendees from a conference
was added, a rework removed the comment about that feature from
the CLI documentation. This adds that documentation and adds
"all" to the participant tab completion list for the confbridge
kick command. (closes issue ASTERISK-23282) Reported by: Dorian
Logan ........ Merged revisions 412728 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-21 08:36 +0000 [r412714] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* /, channels/chan_unistim.c: Fix wrong dialtone. The "modulation"
should not be referenced for tone+tone as it refers to the on-off
characteristic - this often resulted in a single tone rather than
the multitone as in the UK. ........ Merged revisions 412712 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412713 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-19 02:14 +0000 [r412697-412699] Matthew Jordan <mjordan@digium.com>
* /, main/asterisk.c: main/asterisk: Fix startup sequence for
realtime features When ASTERISK-23265/ASTERISK-23320 was fixed,
it inadvertently led to realtime features breaking. This was due
to features loading prior to realtime. This patch fixes this by
loading features after loading dynamic modules. ASTERISK-23487
#close Reported by: Denis Tested by: Denis ........ Merged
revisions 412698 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_sms.c: app_sms: Fix uninitialized values; hangup
channel when REL is sent successfully This patch fixes two issues
in app_sms: (1) Firstly, the 'flags' field on the stack in
sms_exec() is uninitialised, causing it to use the wrong protocol
in some cases. This patch correctly initializes the flags fields.
(2) Secondly, when disconnect supervision is not working or
inbanddisconnect=yes is set in chan_dahdi.conf, app_sms was
failing to terminate the call after it sent the REL(ease) message
and the peer stopped talking to it. This patch fixes the code to
handle the 'bad stop bit' message more gracefully in that case,
and hang up the call. Review:
https://reviewboard.asterisk.org/r/1392/ ASTERISK-18331 #close
Reported by: David Woodhouse patches: asterisk-fix-sms.patch
uploaded by David Woodhouse (License 5754) ........ Merged
revisions 412655 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412656 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412657 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-18 20:09 +0000 [r412641] Jonathan Rose <jrose@digium.com>
* /, res/ari/resource_bridges.h, res/stasis/control.c,
include/asterisk/stasis_app.h, res/stasis/control.h,
res/ari/resource_channels.c, CHANGES, res/res_stasis.c,
rest-api/api-docs/bridges.json, res/ari/resource_bridges.c,
res/res_ari_bridges.c, res/res_stasis_playback.c: ARI: Make
bridges/{bridgeID}/play queue sound files Previously multiple
play actions against a bridge at one time would cause the sounds
to play simultaneously on the bridge. Now if a sound is already
playing, the play action will queue playback to occur after the
completion of other sounds currently on the queue. (closes issue
ASTERISK-22677) Reported by: John Bigelow Review:
https://reviewboard.asterisk.org/r/3379/ ........ Merged
revisions 412639 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-18 17:17 +0000 [r412589] Rusty Newton <rnewton@digium.com>
* sounds/sounds.xml, sounds/Makefile, /: sounds: Fix Sounds
Makefile and XML that didn't support new sound prompt sets In
sounds/Makefile 1 Adds and moves some lines necessary for the
en_GB core set. I'm just following how the other sets are defined
here. 2 removes the ES extra sounds related lines as we don't
have ES extra sound sets. In sounds/sounds.xml 3 Adds member
definitons for EN_AU, EN_GB, IT for core sound sets, and EN_GB in
extra sound sets ASTERISK-23550 #close Review:
https://reviewboard.asterisk.org/r/3464/ ........ Merged
revisions 412586 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412587 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-18 17:02 +0000 [r412584] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip/location.c: Allow for multiple contacts to be
configured in a single contact= line. This is useful for
configuring multiple permanent contacts for an AOR when using
realtime AORs. Review: https://reviewboard.asterisk.org/r/3462
........ Merged revisions 412582 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-18 16:44 +0000 [r412580-412583] Richard Mudgett <rmudgett@digium.com>
* main/dial.c, main/pbx.c, /, apps/app_originate.c,
include/asterisk/pbx.h: Originated calls: Fix several originate
call problems. * Restore the reason value set by
pbx_outgoing_attempt() to use AST_CONTROL_xxx values as all the
consumers were expecting rather than cause codes. * Fixed the
dial routines to set cause codes for more than just ast_request()
so pbx_outgoing_attempt() reason codes will function. * Fix
inconsistent locked_channel return status in
pbx_outgoing_attempt(). The chanel may not have been locked or
the channel may have been a stale pointer. * Fixed the
OutgoingSpoolFailed channel to run dialplan whenever the dialing
fails for an originate exten and 1 < synchronous. * Fix incorrect
ast_cond_wait() usage in pbx_outgoing_attempt(). Indroduced by
issue ASTERISK-22212 patch. * Made struct pbx_outgoing use the
ao2 lock instead of its own lock for the cond wait mutex. No
sense in having two locks associated with the same struct when
only one is needed. Review:
https://reviewboard.asterisk.org/r/3421/ ........ Merged
revisions 412581 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_channels.c, apps/app_queue.c, apps/app_dial.c, /:
app_dial and app_queue: Make lock the forwarding channel while
taking the channel snapshot. * Fixed
ast_channel_publish_dial_forward() not locking the forwarded
channel when taking the channel snapshot. * Fixed
app_dial.c:do_forward() using the wrong channel to get the
original call forwarding string. * Removed unnecessary locking
when calling ast_channel_publish_dial() and
ast_channel_publish_dial_forward() in app_dial and app_queue.
Holding channel locks when calling
ast_channel_publish_dial_forward() with a forwarded channel could
result in pausing the system while the stasis bus completes
processsing a forwarded channel subscription. Review:
https://reviewboard.asterisk.org/r/3451/ ........ Merged
revisions 412579 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-18 14:25 +0000 [r412566] Kinsey Moore <kmoore@digium.com>
* res/ari/ari_websockets.c, res/res_ari.c, main/manager.c, /: ARI:
Add debug logging for events and responses This adds DEBUG level
logging for ARI websocket events and HTTP responses similar to
what is available for AMI. Logging for ARI HTTP requests is
already adequate for debugging purposes. ........ Merged
revisions 412565 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-17 22:50 +0000 [r412552] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/location.c, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip/pjsip_options.c, res/res_pjsip.c,
res/res_pjsip_registrar.c: res_pjsip: Handle reloading when
permanent contacts exist and qualify is configured. This change
fixes a problem where permanent contacts being qualified were not
being updated. This was caused by the permanent contacts getting
a uuid and not a known identifier, causing an inability to look
them up when updating in the qualify code. A bug also existed
where the new configuration may not be available immediately when
updating qualifies. (closes issue ASTERISK-23514) Reported by:
Richard Mudgett Review: https://reviewboard.asterisk.org/r/3448/
........ Merged revisions 412551 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-17 22:42 +0000 [r412536-412550] Jonathan Rose <jrose@digium.com>
* /, main/app.c: Fix a silly shadowed variable mistake that was
missed from play tones patch ........ Merged revisions 412549
from http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/ari/resource_bridges.h, main/app.c,
rest-api/api-docs/channels.json, CHANGES,
rest-api/api-docs/bridges.json, res/ari/resource_channels.h,
include/asterisk/app.h, res/res_stasis_playback.c: ARI: Add tones
playback resource Adds a tones URI type to the playback resource.
The tone can be specified by name (from indications.conf) or by a
tone pattern. In addition, tonezone can be specified in the URI
(by appending ;tonezone=<zone>). Tones must be stopped manually
in order for a stasis control to move on from playback of the
tone. Tones may be paused, resumed, restarted, and stopped. They
may not be rewound or fast forwarded (tones can't be controlled
in a way that lets you skip around from note to note and pausing
and resuming will also restart the tone from the beginning).
Tests are currently in development for this feature
(https://reviewboard.asterisk.org/r/3428/). (closes issue
ASTERISK-23433) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3427/ ........ Merged
revisions 412535 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-17 20:25 +0000 [r412467-412484] Matthew Jordan <mjordan@digium.com>
* channels/chan_oss.c, /, main/Makefile: main/Makefile: Fix build
failure on SmartOS/Illumos/SunOS This patch fixes two issues when
building on SmartOS: - channels/chan_oss.c: it makes sure
soundcard.h is found - main/Makefile: only use
"-Wl,--version-script" when GNU LD is used as the Sun Linker
doesn't support that. Similar checks are already used elswhere in
the Makefile Review: https://reviewboard.asterisk.org/r/3426
ASTERISK-23576 #close Reported by: Sebastian Wiedenroth patches:
fix-sunos.diff uploaded by Sebastian Wiedenroth (License 6597)
........ Merged revisions 412468 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412483 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/sip/include/sip.h, channels/chan_sip.c, CHANGES:
chan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL
URIs This patch is a continuation of
https://reviewboard.asterisk.org/r/3349/, committed in r412303.
It resolves a finding oej had that the phone-context be available
in a channel variable separate from SIPDOMAIN. This patch adds
that variable as SIPURIPHONECONTEXT. It also allows a local
number (or global number specified in the TEL URI) to be used to
look up as a peer. (issue ASTERISK-17179) Review:
https://reviewboard.asterisk.org/r/3349/
2014-04-17 15:17 +0000 [r412454] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_refer.c, /: res_pjsip_refer: Channel variable
SIPREFERTOHDR not being set during blind transfer The
SIPREFERTOHDR channel variable is not being set on any channel
when performing a blind transfer using PJSIP. The
'refer->refer_to' was not being set during a blind transfer.
Updated so the 'refer_to' is set to the target uri on a blind
transfer. (closes issue ASTERISK-23502) Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/3445/ ........ Merged
revisions 412453 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-16 19:14 +0000 [r412440] Kinsey Moore <kmoore@digium.com>
* /, include/asterisk/stasis_app.h: Stasis: Add a usage note on
stasis_app_get_bridge This function returns an ast_bridge without
a refcount bump and the caller must increment the count if it
intends to hold the pointer. (closes issue ASTERISK-23588)
Review: https://reviewboard.asterisk.org/r/3450/ Reported by:
Matt Jordan ........ Merged revisions 412439 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-15 23:21 +0000 [r412427] Russell Bryant <russell@russellbryant.com>
* bridges/bridge_builtin_features.c, include/asterisk/monitor.h,
CHANGES, apps/app_queue.c, funcs/func_periodic_hook.c,
apps/app_mixmonitor.c, include/asterisk/beep.h (added),
res/res_monitor.c: (mix)monitor: Add options to enable a periodic
beep Add an option to enable a periodic beep to be played into a
call if it is being recorded. If enabled, it uses the
PERIODIC_HOOK() function internally to play the 'beep' prompt
into the call at a specified interval. This option is provided
for both Monitor() and MixMonitor(). Review:
https://reviewboard.asterisk.org/r/3424/
2014-04-15 18:30 +0000 [r412384-412414] Richard Mudgett <rmudgett@digium.com>
* main/stasis_channels.c, main/features_config.c,
res/res_parking.c, main/rtp_engine.c, /: Eliminate some more
unnecessary RAII_VAR() uses. RAII_VAR() is not a hammer
appropriate to pound all nails. ........ Merged revisions 412413
from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_playback.c, /, res/stasis/app.c, res/res_fax.c,
res/res_pjsip/security_events.c,
res/parking/parking_applications.c, channels/chan_oss.c,
main/stasis_bridges.c, res/res_pjsip_session.c,
res/stasis_recording/stored.c, main/cdr.c, res/res_parking.c,
channels/chan_skinny.c, res/res_pjsip/location.c,
res/res_stasis_recording.c, main/stasis_channels.c,
res/ari/resource_channels.c, res/parking/parking_manager.c,
res/ari/resource_recordings.c, res/res_pjsip_refer.c,
res/res_ari.c, main/pbx.c: Remove unused RAII_VAR() declarations.
* Remove unused RAII_VAR() declarations. The compiler cannot
catch these because the cleanup function "references" the unused
variable. Some actually allocated and released resources that
were never used. * Fixed some whitespace issues in
stasis_bridges.c. ........ Merged revisions 412399 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/rtp_engine.h, main/rtp_engine.c, /,
channels/chan_sip.c: chan_sip.c: Fix channel staging assertion
failure. The failing assertion ensures that the final snapshot
gets generated so CDR records can get finalized. The only place
where a channel staging snapshot flag could be left set is in
chan_sip.c:handle_request_bye(). The function could return before
clearing the flag because the channel could dissappear while the
function had to have the channel unlocked. * Fixed
handle_request_bye() channel snapshot staging coverage area to
not have a return in the middle of it and be unable to clear the
staging flag. * Pushed the channel snapshot staging coverage area
into ast_rtp_instance_set_stats_vars() to ensure that the staging
is not interrutped. * Made callers of
ast_rtp_instance_set_stats_vars() not call it with any channels
or channel driver private locks held to eliminate the deadlock
potential. The callers must hold references to the passed in
channel and rtp objects. * Eliminated sip_hangup() trying to get
the bridge peer. It is futile at this point because the channel
could never be in a bridge. Review:
https://reviewboard.asterisk.org/r/3431/ ........ Merged
revisions 412385 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: chan_sip.c: Moved some sip_pvt unrefs
after their last use. * Moved sip_pvt unref in ast_hangup() and
handle_request_do() to the end of the function. The unref needs
to happen after the last use of the pointer. ........ Merged
revisions 412348 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412383 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-15 16:13 +0000 [r412331] Jonathan Rose <jrose@digium.com>
* configs/sip.conf.sample, /, channels/chan_sip.c: Reverting
r411189 so that it can be put up for public review --- r411189 |
jrose | 2014-03-26 10:50:48 -0500 (Wed, 26 Mar 2014) | 12 lines
chan_sip: Send real CallerID information with
P-Assserted-Identity (RFC-3325) Prior to this patch, the
P-Asserted-Identity header would include anonymous caller id
information which seems to go against the point of the
P-Asserted-Identity header. Now the real caller ID information
will be included in this header. Also, no privacy header would be
included. This patch adds 'Privacy: id' to outgoing SIP messages
that include the P-Asserted-Identity header. (closes issue
AST-1301) --- ........ Merged revisions 412328 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412329 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412330 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-14 15:54 +0000 [r412307] Corey Farrell <git@cfware.com>
* main/autoservice.c, /: autoservice: fix reference leak of logger
callid. autoservice acquires a local reference to the logger
callid of each channel in a loop. This local reference was not
released, causing the callid of every channel in autoservice to
leak. This change moves the callid unref inside the loop.
ASTERISK-23616 #close Reported by: ibercom ........ Merged
revisions 412305 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412306 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-12 02:27 +0000 [r412292] Matthew Jordan <mjordan@digium.com>
* channels/sip/reqresp_parser.c, CHANGES, channels/chan_sip.c:
chan_sip: Support RFC-3966 TEL URIs in inbound INVITE requests
This patch adds support for handling TEL URIs in inbound INVITE
requests. This includes the Request URI and the From URI. The
number specified in the Request URI will be the destination of
the inbound channel in the dialplan. The phone-context specified
in the Request URI will be stored in the TELPHONECONTEXT channel
variable. Review: https://reviewboard.asterisk.org/r/3349
ASTERISK-17179 #close Reported by: Geert Van Pamel Tested by:
Geert Van Pamel patches:
asterisk-12.0.0-chan_sip-RFC3966_patch.txt uploaded by Geert Van
Pamel (License 6140)
asterisk-12.0.0-reqresp_parser-RFC3966_patch.txt uploaded by
Geert Van Pamel (License 6140)
2014-04-12 01:35 +0000 [r412279-412280] Russell Bryant <russell@russellbryant.com>
* funcs/func_periodic_hook.c: func_periodic_hook: move module ref
The previous code left one error path where the module would be
unref'd twice instead of once. It was done once in the error
handling block, and again inside of datastore destruction. Now
the module ref is only released in the datastore destructor and
only acquired when the datastore has been successfully allocated.
* funcs/func_periodic_hook.c: func_periodic_hook: add module ref
counting This module lacked necessary module ref count
incrementing and decrementing when used. This patch adds it.
There's already a datastore used, so doing the ref counting along
with the lifetime of the datastore provides a convenient place to
do it.
2014-04-11 21:43 +0000 [r412213-412228] Richard Mudgett <rmudgett@digium.com>
* apps/app_stack.c, /: app_stack: Add missing unlock in off-nominal
path of STACK_PEEK function. ASTERISK-23620 #close Reported by:
Bradley Watkins Patches: ASTERISK-23620_unlock_oldlist.patch
(license #5021) patch uploaded by Bradley Watkins ........ Merged
revisions 412225 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412226 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412227 from
http://svn.asterisk.org/svn/asterisk/branches/12
* utils/Makefile, utils: utils dir: Remove no longer needed traces
of refcounter except in the clean make target. * Removed no
longer needed files from the svn:ignore property to make them
visible.
2014-04-11 12:43 +0000 [r412194] Kinsey Moore <kmoore@digium.com>
* /, main/bridge.c, main/bridge_basic.c,
include/asterisk/stasis_bridges.h, tests/test_cel.c,
apps/app_confbridge.c, res/ari/resource_bridges.c: bridging:
Ensure locking during snapshot creation While the vast majority
of bridge snapshot creation is locked properly, there are
currently some instances that are not. This adds the missing
locking to ensure bridge state is not malleable during snapshot
creation. (closes issue ASTERISK-22904) Review:
https://reviewboard.asterisk.org/r/3415/ Reported by: Matt Jordan
........ Merged revisions 412193 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-11 08:28 +0000 [r412168-412180] Olle Johansson <oej@edvina.net>
* main/audiohook.c: Formatting: Remove invisible characters
* main/audiohook.c: Formatting only.
2014-04-11 02:59 +0000 [r412154] Matthew Jordan <mjordan@digium.com>
* main/astobj2.c, contrib/scripts/refcounter.py (added),
main/asterisk.c, utils/refcounter.c (removed),
build_tools/cflags.xml, utils/utils.xml, /, channels/chan_sip.c,
channels/sip/security_events.c, include/asterisk/astobj2.h,
UPGRADE.txt: main/astobj2: Make REF_DEBUG a menuselect item;
improve REF_DEBUG output This patch does the following: (1) It
makes REF_DEBUG a meneselect item. Enabling REF_DEBUG now enables
REF_DEBUG globally throughout Asterisk. (2) The ref debug log
file is now created in the AST_LOG_DIR directory. Every run will
now blow away the previous run (as large ref files sometimes
caused issues). We now also no longer open/close the file on each
write, instead relying on fflush to make sure data gets written
to the file (in case the ao2 call being performed is about to
cause a crash) (3) It goes with a comma delineated format for the
ref debug file. This makes parsing much easier. This also now
includes the thread ID of the thread that caused ref change. (4)
A new python script instead for refcounting has been added in the
contrib/scripts folder. (5) The old refcounter implementation in
utils/ has been removed. Review:
https://reviewboard.asterisk.org/r/3377/ ........ Merged
revisions 412114 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 412115 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 412153 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-11 01:12 +0000 [r412102] Russell Bryant <russell@russellbryant.com>
* res/res_monitor.c: monitor: use app options parsing helper code
This app is pretty ancient, so it was never converted to use the
option parsing helper code. I'd like to add an option to this app
that takes an argument, and that's a pain to do when not using
this helper, so start by doing this conversion. Review:
https://reviewboard.asterisk.org/r/3429/
2014-04-10 21:28 +0000 [r412089] Matthew Jordan <mjordan@digium.com>
* /, res/res_hep_pjsip.c: res_hep_pjsip: Use the channel name
instead of the call ID when it is available During discussions
with Alexandr Dubovikov at Kamailio World, it became apparent
that while the SIP call ID is a useful identifier prior to an
Asterisk channel being created, it is far more preferable to use
the channel name (or some channel based identifier) when the
channel is available. Homer is smart enough to tie the various
messages together. This patch opts to use the channel name when
it is available, falling back to the call ID otherwise. ........
Merged revisions 412088 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-10 21:10 +0000 [r412075] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip_pubsub.c: res_pjsip_pubsub: Set the body
generation result to 0 for a valid path The result of the
"ast_sip_pubsub_generate_body_content" was not set/initialized.
Consequently, the nominal path potentially returned an invalid
value, thus not sending mwi notifications. ........ Merged
revisions 412074 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-09 21:43 +0000 [r412050] Mark Michelson <mmichelson@digium.com>
* /, CHANGES, apps/app_mixmonitor.c: Add a Command header to the
AMI Mixmonitor action. This fixes a parsing error that occurred
during the processing of the AMI action. The error did not result
in MixMonitor itself misbehaving, but it could result in the AMI
response not giving correct information back. The new header
allows for one to specify a post-process command to run when
recording finishes. Previously, in order to do this, the
post-process command would have to be placed at the end of the
Options: header. Patches: mixmonitor_command_2.patch by jhardin
(License #6512) ........ Merged revisions 412048 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-09 18:17 +0000 [r412035] Kinsey Moore <kmoore@digium.com>
* /, res/res_stasis_answer.c: res_stasis_answer: Add missing
newlines ........ Merged revisions 412034 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-08 21:25 +0000 [r411946-411990] Richard Mudgett <rmudgett@digium.com>
* /, main/asterisk.c: Internal timing: Add notice that the -I and
internal_timing option are no longer needed. Add notice messages
during execution that the -I command line option and the
astersik.conf internal_timing option are no longer needed. The
internal timing functionality is now always enabled if there is a
timing module loaded. NOTE: Since the command line options and
the asterisk.conf config file are processed before the logging
system is initialized, the messages are output to stderr. Change
requested as a result of asterisk-dev list comments about the
commit for ASTERISK-22846 that removed the -I and internal_timing
options. Review: https://reviewboard.asterisk.org/r/3423/
........ Merged revisions 411964 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411974 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411985 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/config.c, /: config: Fix CB_ADD_LEN() to work as originally
intended. Fix a long standing bug in CB_ADD_LEN() behaving like
CB_ADD(). ASTERISK-23546 #close Reported by: Walter Doekes
........ Merged revisions 411960 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411961 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411962 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/confbridge/conf_config_parser.c, /: app_confbridge: Fix
confbridge.conf dsp_talking_threshold option setting wrong
parameter. Fixed copy pasta error. ASTERISK-23545 #close Reported
by: John Knott ........ Merged revisions 411944 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411945 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-08 14:49 +0000 [r411928] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip.c: res_pjsip: Ignore explicit transport
configuration if a WebSocket transport is specified. This change
makes it so if a transport is configured on an endpoint that is a
WebSocket type the option will be ignored. In practice this is
fine because the WebSocket transport can not create outgoing
connections, it can only reuse existing ones. By ignoring the
option the existing PJSIP logic for using the existing connection
will be invoked and stuff will proceed. (closes issue
ASTERISK-23584) Reported by: Rusty Newton ........ Merged
revisions 411927 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-08 00:26 +0000 [r411897] Russell Bryant <russell@russellbryant.com>
* funcs/func_periodic_hook.c: func_periodic_hook: List more modules
as dependencies This module makes use of some existing Asterisk
components. app_chanspy was already listed as a dependency. There
are a few function modules used, as well, so list them.
2014-04-07 20:41 +0000 [r411884] Kinsey Moore <kmoore@digium.com>
* /, res/res_pjsip_pubsub.c: PJSIP: Ensure test event has new state
The change that fixed the pubsub test event's use of a dangling
pointer also changed when it was processed relative to the pjsip
subscription state change processing. This change corrects the
order of events while holding a reference to the pointer that was
previously dangling. ........ Merged revisions 411883 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-07 16:15 +0000 [r411870] Jonathan Rose <jrose@digium.com>
* main/manager_channels.c, /: AGI/Manager: Prevent multiple
NewExten events during AGI application changes AGI applications
would trigger NewExten events every time the state of the AGI
application changed. This has historically not been the behavior
and this behavior was introduced with a CDR patch. This patch
corrects that. (closes issue ASTERISK-23390) Reported by:
Benjamin Keith Ford Review:
https://reviewboard.asterisk.org/r/3406/ ........ Merged
revisions 411868 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-07 14:57 +0000 [r411812] Walter Doekes <walter+asterisk@wjd.nu>
* apps/app_queue.c, /: app_queue: Re-add HoldTime to
QueueCallerAbandon event (simple typo during ast12 refactor).
Reported by: Ibrahim22 (on IRC) Tested by: Ibrahim22 ........
Merged revisions 411811 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-07 14:29 +0000 [r411791-411806] Kinsey Moore <kmoore@digium.com>
* /, res/res_stasis.c: Stasis: Fix Stasis() bridge refcount issue
The Stasis() dialplan application monitors what bridge a channel
is in and so necessarily holds on to a bridge pointer. This
change ensures that it also holds on to a reference for that
bridge to prevent the bridge pointer from becoming a dangling
pointer. ........ Merged revisions 411804 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pubsub.c, /: PJSIP: Fix crash introduced in r411671
The test event introduced in revision 411671 uses a dangling
pointer to access information about pubsub state changes. This
moves the event to within the lifetime of the pointer. ........
Merged revisions 411790 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-05 13:06 +0000 [r411768] Russell Bryant <russell@russellbryant.com>
* CHANGES, funcs/func_periodic_hook.c (added): func_periodic_hook:
New function for periodic hooks. This commit introduces a new
dialplan function, PERIODIC_HOOK(). It allows you run to a
dialplan hook on a channel periodically. The original use case
that inspired this was the ability to play a beep periodically
into a call being recorded. The implementation is much more
generic though and could be used for many other things. The
implementation makes heavy use of existing Asterisk components.
It uses a combination of Local channels and ChanSpy() to run some
custom dialplan and inject any audio it generates into an active
call. The other important bit of the implementation is how it
figures out when to trigger the beep playback. This
implementation uses the audiohook API, even though it's not
actually touching the audio in any way. It's a convenient way to
get a callback and check if it's time to kick off another beep.
It would be nice if this was timer event based instead of polling
based, but unfortunately I don't see a way to do it that won't
interfere with other things. Review:
https://reviewboard.asterisk.org/r/3362/
2014-04-04 19:19 +0000 [r411702-411724] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/options.h, main/asterisk.c, main/channel.c, /,
channels/chan_sip.c, configs/asterisk.conf.sample, UPGRADE.txt,
include/asterisk/channel.h, utils/extconf.c: internal_timing:
Remove the option and always make it enabled if a timing module
is loaded. The masquerade supertest frequently fails because
either the local channel chain doesn't completely optimize out or
the DTMF handshake doesn't completely get accross. Local channel
optimization requires frames flowing to trigger when optimization
can happen. When optimization happens the media frame that
triggered the optimization is dropped. Sending DTMF requires
frames to flow in the other direction for timing purposes while
sending nothing. If internal timing is not enabled when MOH is
playing, Asterisk switches to received timing when an audio frame
is received. With optimization dropping media frames and MOH not
sending frames unless it receives frames, occasionaly there are
no more frames being passed and the test fails. * The asterisk
command line -I option and the asterisk.conf internal_timing
option are removed. Asterisk now always uses internal timing when
needed if any timing module is loaded. The issue ASTERISK-14861
did this quite awhile ago in v1.4 but effectively is broken if
other internal timing modules besides DAHDI are used. The
ast_read_generator_actions() now only does received timing if it
has no choice for frame generators like MOH, silence, and
playback streaming. * Cleaned up some code dealing with frame
generators in ast_deactivate_generator(),
generator_write_format_change(), ast_activate_generator(), and
ast_channel_stop_silence_generator(). * Removed
ast_internal_timing_enabled(), AST_OPT_FLAG_INTERNAL_TIMING, and
ast_opt_internal_timing. ASTERISK-22846 #close Reported by: Matt
Jordan Review: https://reviewboard.asterisk.org/r/3414/ ........
Merged revisions 411715 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411716 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411717 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/utils.c, res/res_musiconhold.c, main/channel.c,
main/stasis_cache.c, /: Add some asserts that were handy when
looking for a stasis cache problem. * Assert if a channel is
destroyed but has the snapshot staging flag set. In this case the
final channel destruction snapshot would never get taken. *
Assert if what we just got out of the stasis cache is not what we
were looking for. This assert would have saved several days
searching for a bug and a lot of my hair. * Assert if the music
on hold message posts could not find the associated channel. A
crash will happen later when manager tries to send the MOH AMI
message. This assert catches the problem when the stasis message
is posted instead of by the thread processing the defective
message. * Always generate a backtrace when an ast_assert()
fails. Review: https://reviewboard.asterisk.org/r/3411/ ........
Merged revisions 411701 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-04 15:13 +0000 [r411688] Matthew Jordan <mjordan@digium.com>
* /, main/http.c: http: Fix spurious ERROR message in responses
with no content When a response has a content length of 0, fwrite
would be called to write a buffer with no data in it. This
resulted in the following classic error message: [Apr 3 11:49:17]
ERROR[26421] http.c: fwrite() failed: Success This patch makes it
so that we only attempt to write out the content if the
calculated content_length is non-zero. ........ Merged revisions
411687 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-03 12:06 +0000 [r411671] Kinsey Moore <kmoore@digium.com>
* /, res/res_pjsip_pubsub.c: res_pjsip_pubsub: Add test event for
state change This adds a test event when subscription state
changes so that integration tests may trigger new actions at the
appropriate times. Review:
https://reviewboard.asterisk.org/r/3383/ ........ Merged
revisions 411670 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-03 11:47 +0000 [r411669] Matthew Jordan <mjordan@digium.com>
* res/res_hep.c, /: res_hep: Fix crash when hep.conf not available
Parts of res_hep properly checked for a valid configuration
object before attempting to access the configuration. A check,
however, was missed when a packet is sent. This patch fixes the
crash caused by not checking if the configuration object is
valid. ........ Merged revisions 411668 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-02 18:57 +0000 [r411656] Mark Michelson <mmichelson@digium.com>
* main/sorcery.c, /, res/res_mwi_external.c,
res/res_pjsip/config_system.c, configs/sorcery.conf.sample,
main/bucket.c, include/asterisk/sorcery.h,
res/res_pjsip/pjsip_configuration.c, tests/test_sorcery_astdb.c,
tests/test_sorcery.c, tests/test_sorcery_realtime.c: Prevent
duplicate sorcery wizards from being applied to sorcery object
types. This commit contains several changes to sorcery: 1)
Application of sorcery configuration based on module name is
automatically performed when sorcery is opened for a module. 2)
Sorcery will not attempt to apply the same wizard to an object
type more than once. 3) Sorcery gives more exact results when
attempting to apply a wizard, whether as the default or based on
configuration. Sorcery unit tests still pass for me after making
these changes. Review: https://reviewboard.asterisk.org/r/3326
........ Merged revisions 411159 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-01 22:42 +0000 [r411637-411639] Richard Mudgett <rmudgett@digium.com>
* res/parking/parking_bridge.c, /: res_parking: Minor tweaks. * Use
ast_bridge_channel_lock()/ast_bridge_channel_unlock() instead of
ao2_lock()/ao2_unlock() for struct ast_bridge_channel variables.
* Use ast_copy_string() instead of inlining it. * Remove an
already done TODO comment. * Some whitespace tweaks. ........
Merged revisions 411638 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_channels.c, /: stasis_channels.c: Eliminate another
overuse of RAII_VAR(). ........ Merged revisions 411636 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-04-01 16:52 +0000 [r411587] Joshua Colp <jcolp@digium.com>
* /, apps/app_queue.c: app_queue: Fix a bug where realtime members
would be deleted during reload causing waiting callers to get
ejected. This patch causes realtime queue members to remain in
queues during the reload process. Previously these members would
be removed causing any waiting callers to be ejected from the
queue with a reason of "EXITEMPTY". ASTERISK-23547 #close
ASTERISK-23547 #comment Patch
app_queue_fix_realtime_reload_1.8_trunk.patch submitted by Italo
Rossi (license 6409) Review:
https://reviewboard.asterisk.org/r/3404/ ........ Merged
revisions 411584 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411585 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411586 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-28 18:32 +0000 [r411556] Matthew Jordan <mjordan@digium.com>
* include/asterisk/res_hep.h (added), res/res_hep_pjsip.c (added),
res/res_hep.exports.in (added), configs/hep.conf.sample (added),
CHANGES, res/res_hep.c (added), /: res_hep/res_hep_pjsip: Add a
HEPv3 capture agent module and a logger for PJSIP This patch adds
the following: (1) A new module, res_hep, which implements a
generic packet capture agent for the Homer Encapsulation Protocol
(HEP) version 3. Note that this code is based on a patch provided
by Alexandr Dubovikov; I basically just wrapped it up, added
configuration via the configuration framework, and threw in a
taskprocessor. (2) A new module, res_hep_pjsip, which forwards
all SIP message traffic that passes through the res_pjsip stack
over to res_hep for encapsulation and transmission to a HEPv3
capture server. Much thanks to Alexandr for his Asterisk patch
for this code and for a *lot* of patience waiting for me to port
it to 12/trunk. Due to some dithering on my part, this has taken
the better part of a year to port forward (I still blame CDRs for
the delay). ASTERISK-23557 #close Review:
https://reviewboard.asterisk.org/r/3207/ ........ Merged
revisions 411534 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-28 18:00 +0000 [r411533] Alexandr Anikin <may@telecom-service.ru>
* addons/ooh323c/src/ooh323.c, addons/ooh323c/src/ooGkClient.c,
addons/chan_ooh323.c, /, addons/ooh323c/src/oochannels.c,
addons/ooh323c/src/ooCmdChannel.c, addons/ooh323c/src/ooq931.c:
process stack command even if gatekeeper client isn't register
don't destroy gatekeeper client if it is not started don't
destroy gatekeeper client in some sort of gatekeeper errors
signal rtp create condition when call cleared before rtp
structure created (closes issue ASTERISK-23460) Reported by:
Dmitry Melekhov Patches: ASTERISK-23460-2.patch Tested by: Dmitry
Melekhov ........ Merged revisions 411531 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411532 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-28 17:41 +0000 [r411515-411530] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/channels.json,
rest-api/api-docs/recordings.json,
rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json,
/, rest-api/api-docs/playbacks.json, UPGRADE.txt,
rest-api/api-docs/sounds.json, rest-api/resources.json, CHANGES,
include/asterisk/manager.h, rest-api/api-docs/bridges.json,
rest-api/api-docs/deviceStates.json,
rest-api/api-docs/mailboxes.json,
rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json: Update API versions and
UPGRADE/CHANGES for 12.2.0 This patch does the following: * It
updates the AMI version to 2.2.0 to indicate backwards compatible
changes have been made since the last release * It updates the
ARI version to 1.2.0 to indicate backwards compatible changes
have been made since the last release * It updates the
UPGRADE/CHANGES files with changes that were not mentioned
........ Merged revisions 411529 from
http://svn.asterisk.org/svn/asterisk/branches/12
* UPGRADE.txt, res/res_config_odbc.c: res_config_odbc: Fix for
nullable integer columns and keyfield existence check in
update_odbc. This patch fixes setting nullable integer columns to
NULL instead of an empty string, which fails for PostgreSQL, for
example. The current code is supposed to do so, but the check is
broken. The patch also allows the first column in the list to be
a nullable integer. Also, the check for existence of a mandatory
column checked for the first column in the list instead of the
key field lookup column. This patch fixes that issue as well.
Finally, the compatibility option allow_empty_string_in_nontext,
which was added to previous revisions to allow for some database
backends with certain schemas to function, has been removed.
Review: https://reviewboard.asterisk.org/r/3335 ASTERISK-23459
#close ASTERISK-23351 #close (closes issue ASTERISK-23459)
Reported by: zvision patches: res_config_odbc.diff uploaded by
zvision (License 5755)
2014-03-28 16:18 +0000 [r411469] Scott Griepentrog <sgriepentrog@digium.com>
* main/tcptls.c, main/manager.c, /, main/http.c: http: response
body often missing after specific request This patch works around
a problem with the HTTP body being dropped from the response to a
specific client and under specific circumstances: a) Client
request comes from node.js user agent "Shred" via use of
swagger-client library. b) Asterisk and Client are *not* on the
same host or TCP/IP stack In testing this problem, it has been
determined that the write of the HTTP body is lost, even if the
data is written using low level write function. The only solution
found is to instruct the TCP stack with the shutdown function to
flush the last write and finish the transmission. See review for
more details. ASTERISK-23548 #close (closes issue ASTERISK-23548)
Reported by: Sam Galarneau Review:
https://reviewboard.asterisk.org/r/3402/ ........ Merged
revisions 411462 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411463 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411465 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-28 15:48 +0000 [r411375-411460] Matthew Jordan <mjordan@digium.com>
* UPGRADE.txt, /: UPGRADE: Note IAX2 compatibility issue between
1.4 and 1.8+ systems. ........ Merged revisions 411457 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411458 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411459 from
http://svn.asterisk.org/svn/asterisk/branches/12
* contrib/realtime/mysql/voicemail_messages.sql (removed),
contrib/realtime/postgresql/realtime.sql (removed),
contrib/realtime/mysql/voicemail_data.sql (removed),
contrib/realtime/mysql/musiconhold.sql (removed),
contrib/realtime/mysql/queue_log.sql (removed),
contrib/realtime/mysql/voicemail.sql (removed),
contrib/realtime/mysql/sippeers.sql (removed), /,
contrib/realtime/mysql/iaxfriends.sql (removed),
contrib/realtime/mysql/meetme.sql (removed): contrib/realtime:
Remove empty SQL script files Since the relatime scripts are now
managed by Alembic, the previous realtime scripts were previously
removed. However, the removal process messed up, as the files
were still in the repository. The contents were just empty. This
removes the files from the tree. ........ Merged revisions 411442
from http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/sip/include/sip.h: chan_sip: Add MESSAGE request to
allowed methods The allowed methods advertised by chan_sip did
not previously note the MESSAGE request. Even in Asterisk 1.8, we
do accept in-dialog MESSAGE requests; we should advertise that we
support MESSAGE requests. ASTERISK-23504 #close ASTERISK-23504
#comment Reported by: Martin Kontsek ASTERISK-23504 #comment
Patch sip.h_patch.diff uploaded by Martin Kontsek (license 6587)
Review: https://reviewboard.asterisk.org/r/3396/ ........ Merged
revisions 411372 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411373 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411374 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-27 19:21 +0000 [r411312-411328] Corey Farrell <git@cfware.com>
* funcs/func_global.c, apps/app_speech_utils.c,
apps/confbridge/conf_config_parser.c,
funcs/func_callcompletion.c, funcs/func_frame_trace.c,
funcs/func_callerid.c, main/message.c, /, res/res_mutestream.c,
channels/pjsip/dialplan_functions.c,
res/res_pjsip_header_funcs.c, funcs/func_pitchshift.c,
funcs/func_groupcount.c, funcs/func_volume.c, funcs/func_odbc.c,
funcs/func_channel.c, funcs/func_cdr.c, funcs/func_blacklist.c,
apps/app_stack.c, apps/app_voicemail.c, res/res_calendar.c,
apps/app_jack.c, funcs/func_dialplan.c, funcs/func_speex.c,
channels/chan_sip.c, funcs/func_math.c, funcs/func_strings.c,
funcs/func_jitterbuffer.c, res/res_xmpp.c, channels/chan_iax2.c,
main/features_config.c, res/res_jabber.c: Fix dialplan function
NULL channel safety issues (closes issue ASTERISK-23391) Reported
by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3386/ ........ Merged
revisions 411313 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411314 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411315 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/format.c, include/asterisk.h, /: main/formats: Fix crash in
ast_format_cmp during non-clean shutdown. * Update asterisk.h to
reflect availability of ast_register_cleanup in 11.9. * Use
ast_register_cleanup for format_attr_shutdown. (closes issue
ASTERISK-23103) Reported by: JoshE ........ Merged revisions
411310 from http://svn.asterisk.org/svn/asterisk/branches/11
........ Merged revisions 411311 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-27 14:21 +0000 [r411296] Mark Michelson <mmichelson@digium.com>
* main/sorcery.c, /: Give sorcery instances a reference to their
wizards. On graceful shutdown, sorcery wizards are all killed
off, but it is possible for sorcery instances to still have
dangling pointers after this, possibly causing a crash. Giving
the sorcery instances a reference to their wizards ensures that
the wizard reference will remain valid for the lifetime of the
sorcery instance. Review: https://reviewboard.asterisk.org/r/3401
........ Merged revisions 411295 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-26 22:45 +0000 [r411246] Joshua Colp <jcolp@digium.com>
* /, main/say.c: say: Fix a bug where SayNumber in Polish tries to
play incorrect sound. This change fixes a bug where calling
SayNumber with a number divisible by 100 using the Polish
language would cause the code to attempt to play a sound file
with an empty name. (closes issue ASTERISK-23509) Reported by:
zvision Review: https://reviewboard.asterisk.org/r/3378/ ........
Merged revisions 411243 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411244 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411245 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-26 16:15 +0000 [r411194] Jonathan Rose <jrose@digium.com>
* /, channels/chan_sip.c, configs/sip.conf.sample: chan_sip: Send
real CallerID information with P-Assserted-Identity (RFC-3325)
Prior too this patch, the P-Asserted-Identity header would
include anonymous caller id information which seems to go against
the point of the P-Asserted-Identity header. Now the real caller
ID information will be included in this header. Also, no privacy
header would be included. This patch adds 'Privacy: id' to
outgoing SIP messages that include the P-Asserted-Identity
header. (closes issue AST-1301) ........ Merged revisions 411189
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 411190 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411193 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-26 16:05 +0000 [r411192] Richard Mudgett <rmudgett@digium.com>
* /,
contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py:
Fix 'alembic branches' merge conflict as described by the web
page. ........ Merged revisions 411191 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-25 18:44 +0000 [r411174] Sean Bright <sean@malleable.com>
* /, res/ari/config.c: ARI: Don't complain about missing ARI users
when we aren't enabled Currently, if ARI is not enabled it will
still complain that there are no configured users. This patch
checks to see if ARI is enabled before logging and error or
iterating the container to validate the users. Review:
https://reviewboard.asterisk.org/r/3391/ ........ Merged
revisions 411173 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-25 17:40 +0000 [r411158] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip/pjsip_configuration.c, UPGRADE.txt,
res/res_pjsip_messaging.c, res/res_pjsip.c,
include/asterisk/res_pjsip.h: Add a "message_context" option for
PJSIP endpoints. ........ Merged revisions 411157 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-25 16:57 +0000 [r411142] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip/pjsip_options.c, res/res_pjsip.c,
include/asterisk/res_pjsip.h, /: res_pjsip: Fix contact
authenticate_qualify endpoint lookup when qualifing a contact. *
Fixed bad use of ao2_find() in on_endpoint(). * Replaced use of
find_endpoints() with find_an_endpoint() since only the first
found endpoint is ever needed. * Fixed qualify_contact_cb() to
update the contact with the aor authenticate_qualify setting.
Otherwise, permanent contacts in the aor type sections would have
a config line order dependancy. * Fixed off nominal path contact
ref leak in qualify_contact(). The comment saying the unref is
not needed was wrong. * Fixed off nominal path use of the
endpoint parameter if it is NULL in send_out_of_dialog_request().
* Added missing off nominal path unref of pjsip tdata in
send_out_of_dialog_request(). * Fixed off nominal path failing to
call the callback in send_request_cb() when the request is
challenged for authentication. * Eliminated silly RAII_VAR() use
in qualify_contact_cb(). * Updated ast_sip_send_request() doxygen
to better reflect reality. (closes issue ASTERISK-23254) Reported
by: rmudgett Review: https://reviewboard.asterisk.org/r/3381/
........ Merged revisions 411141 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-25 16:06 +0000 [r411092] Kinsey Moore <kmoore@digium.com>
* /, channels/chan_sip.c: chan_sip: Fix incorrect use of timers If
update_provisional_keepalive() is called while
send_provisional_keepalive_full() is waiting on the PVT lock,
then pvt->provisional_keepalive_sched_id will be changed to a new
sched_id value by update_provisional_keepalive(), but that new
sched_id then may be overwritten with -1 by
send_provisional_keepalive_full(), killing the pvt's reference to
a schedule and "leaking" the reference. (closes issue
ASTERISK-22079) Review: https://reviewboard.asterisk.org/r/3368/
Reported by: Jamuel Starkey, Matteo, Leif Madsen, Steve Davies
Patches: provisional_keepalive_fix.diff uploaded by Steve Davies
(license 5012) ........ Merged revisions 411088 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411089 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411091 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-25 15:56 +0000 [r411090] Jonathan Rose <jrose@digium.com>
* /, res/res_stasis.c: ARI: Resolve a subscription leak against
implicit bridge subscriptions When a channel in a stasis
application is joined to a bridge, a subscription for that bridge
is created implicitly for the stasis application serving the
channel. Prior to this patch, subsequent removals of the channel
from the bridge would leave the subscription open. Review:
https://reviewboard.asterisk.org/r/3380/ ........ Merged
revisions 411086 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-25 15:47 +0000 [r411073-411087] Richard Mudgett <rmudgett@digium.com>
* utils/conf2ael.c, main/lock.c, utils/ael_main.c: Revert -r411073.
It didn't help and blew up the system.
* utils/ael_main.c, utils/conf2ael.c, main/lock.c: locking: Add
temporary sanity checks. Add some temporary sanity checks to hunt
for locking problems with the masquerade supertest.
2014-03-24 21:39 +0000 [r411024] Joshua Colp <jcolp@digium.com>
* /, channels/chan_sip.c: chan_sip: Always use fromdomain if set
for domain, even if callerid is set to restricted. (closes issue
ASTERISK-20841) Reported by: Kelly Goedert ........ Merged
revisions 411021 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 411022 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 411023 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-21 16:04 +0000 [r410996] Richard Mudgett <rmudgett@digium.com>
* /, res/res_pjsip_registrar.c: res_pjsip_registrar.c:
Miscellaneous cleanup in rx_task(). * Fix variable shadowing of
'updated' by renaming it to 'contact_update'. * Checked
'contact_update' for ast_sorcery_copy() failure. * Removed silly
use of RAII_VAR() for 'contact_update'. ........ Merged revisions
410995 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-21 15:50 +0000 [r410981-410994] Sean Bright <sean@malleable.com>
* res/ael/ael.flex, utils/Makefile, pbx/pbx_ael.c,
res/ael/ael_lex.c: Make the AEL load process less chatty.
Switched a bunch of LOG_NOTICEs to ast_debug. This time without
breaking the build.
* pbx/pbx_ael.c, res/ael/ael_lex.c, res/ael/ael.flex: Revert
r410981. aelparse blew up.
* main/config.c: Remove a LOG_NOTICE from
ast_config_engine_register. There is enough indication from the
CLI that we are loading a realtime engine as it is.
* pbx/pbx_ael.c, res/ael/ael_lex.c, res/ael/ael.flex: Make the AEL
load process less chatty. Switched a bunch of LOG_NOTICEs to
ast_debug.
2014-03-20 23:02 +0000 [r410967] Jonathan Rose <jrose@digium.com>
* apps/app_confbridge.c, /: app_confbridge: Fix bug - users with
startmuted set don't start muted (closes issue ASTERISK-23461)
Reported by: Chico Manobela Review:
https://reviewboard.asterisk.org/r/3373/ ........ Merged
revisions 410965 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410966 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-20 16:35 +0000 [r410950] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/rtp_engine.h, main/dial.c, main/manager.c, /,
main/channel_internal_api.c, main/core_unreal.c,
include/asterisk/channel.h, res/ari/resource_channels.c,
res/res_stasis_snoop.c: assigned-uniqueids: Miscellaneous cleanup
and fixes. * Fix memory leak in ast_unreal_new_channels(). Made
it generate the ;2 uniqueid on a stack variable instead of
mallocing it. * Made send error response to ARI and AMI requests
instead of just logging excessive uniqueid length and allowing
truncation. action_originate() and
ari_channels_handle_originate_with_id(). * Fixed minor truncating
uniqueid hole when generating the ;2 uniqueid string length.
Created public and internal lengths of uniqueid. The internal
length can handle a max public uniqueid plus an appended ;2. *
free() and ast_free() are NULL tolerant so they don't need a NULL
test before calling. * Made use better struct initialization
format instead of the position dependent initialization format.
Also anything not explicitly initialized in the struct is
initialized to zero by the compiler. * Made
ast_channel_internal_set_fake_ids() use the safer
ast_copy_string() instead of strncpy(). Review:
https://reviewboard.asterisk.org/r/3371/ ........ Merged
revisions 410949 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-19 17:27 +0000 [r410934] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_endpoint_identifier_ip.c: PJSIP: Allow for
identify sections to be specified in sorcery.conf. "identify" is
a special type of configuration object in PJSIP because unlike
the other objects, it is not provided by the base res_pjsip
module. Instead, it is provided by the
res_pjsip_endpoint_identifier_ip module. If using the default
sorcery wizard (config,criteria=type=identify) then things work
because the module that applies the default wizard is the correct
module. However, if attempting to use sorcery.conf to apply an
alternate wizard, it was not possible. If you attempted to
specify the identify object type in the res_pjsip section, then
the object could not be registered since the object was
undocumented for the res_pjsip module. There was no alternate
configuration section defined for it, so you were out of luck if
you wanted to override the default wizard. With this change, the
identify section will properly have a sorcery.conf-based wizard
applied when the identify definition is within the
res_pjsip_endpoint_identifier_ip section. ........ Merged
revisions 410933 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-19 14:25 +0000 [r410905-410919] Joshua Colp <jcolp@digium.com>
* res/res_stasis.c, /: res_stasis: Fix a bug where the default
bridge type was not set. ........ Merged revisions 410918 from
http://svn.asterisk.org/svn/asterisk/branches/12
* CHANGES, res/res_stasis.c, rest-api/api-docs/bridges.json, /,
res/ari/resource_bridges.h: res_stasis: Extend bridge type to be
a comma separated list of bridge attributes. This change turns
the bridge type field into a comma separated list of attributes.
These attributes include: mixing, holding, dtmf_events, and
proxy_media. By setting the various attributes a user can control
the type of bridge created with the behavior they need for their
application. (closes issue ASTERISK-23437) Reported by: Matt
Jordan Review: https://reviewboard.asterisk.org/r/3359/ ........
Merged revisions 410904 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-19 02:33 +0000 [r410891] Matthew Jordan <mjordan@digium.com>
* res/res_ari.c, /: res_ari: Fix documentation schema error
........ Merged revisions 410890 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-18 23:32 +0000 [r410877] Rusty Newton <rnewton@digium.com>
* res/res_ari.c, /: res_ari: Add notes about Asterisk HTTP server
to the "enabled" config option for the res_ari general section
Added note and see-also reminding user to enable the HTTP server.
(closes issue ASTERISK-22499) Reported by: Rusty Newton ........
Merged revisions 410876 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-18 15:45 +0000 [r410863] Scott Griepentrog <sgriepentrog@digium.com>
* /, main/http.c: ARI: allow json content type with zero length
body When a request was received with a Content-type of json, the
body was sent for json parsing - even if it was zero length. This
resulted in ARI requests failing that were valid, such as a
channel DELETE with no parameters. The code has now been changed
to skip json parsing with zero content length. (closes issue
SWP-6748) Reported by: Samuel Galarneau Review:
https://reviewboard.asterisk.org/r/3360/ ........ Merged
revisions 410858 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-18 15:28 +0000 [r410862] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /: cdr: Add asserts for when we don't know about a
CDR for a channel In the CDR core, every channel should either be
filtered out (due to being an 'internal' channel used as an
implementation detail, such as playing media back into a bridge)
or it should get a CDR. Even if that CDR ends up being discarded,
we still give the channel a CDR in case we end up needing it. If
we hit a situation where a channel does not have a CDR, we should
blow up in -dev-mode. Asserts are appropriate for that. This
patch adds those asserts, as they would have quickly caught the
error fixed by r410814. ........ Merged revisions 410861 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-18 12:45 +0000 [r410845] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/config_system.c: res_pjsip: Fix memory leak of
nameservers in off-nominal resolver creation failure. Thanks
Walter Doekes! ........ Merged revisions 410844 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-18 11:52 +0000 [r410831] Sean Bright <sean@malleable.com>
* res/res_fax_spandsp.c, /: res_fax_spandsp: Use g711_free() when
available. Per Johann Steinwendtner on the asterisk-dev mailing
list:
http://lists.digium.com/pipermail/asterisk-dev/2014-March/066102.html
g711_free() was introduced in spandsp 0.0.6pre4 and
g711_release() became a noop. I opted not to remove the call to
g711_release() since it is harmless and to call g711_free() if we
have a sufficiently recent version of spandsp. (issue
ASTERISK-20149) Reported by: Alexandr Gordeev ........ Merged
revisions 410829 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410830 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-18 02:09 +0000 [r410814] Richard Mudgett <rmudgett@digium.com>
* main/stasis_cache.c, /: stasis_cache: Use the right variable in
the cache entry ao2 cmp function. ........ Merged revisions
410813 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-17 22:54 +0000 [r410794-410796] Joshua Colp <jcolp@digium.com>
* include/asterisk/dns.h, CHANGES,
res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip.c,
main/dns.c, /, res/res_pjsip/config_system.c: res_pjsip: Enable
PJSIP DNS client support. This change enables DNS client support
within PJSIP. System nameservers are automatically discovered
using res_init or res_ninit. If this fails then PJSIP will resort
to using gethostbyname for resolution. By enabling this support
we gain SRV support, failover, and weight support. (closes issue
ASTERISK-23435) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3343/ ........ Merged
revisions 410795 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_multihomed.c, /: res_pjsip_multihomed: Make address
replacement less aggressive. This change makes the
res_pjsip_multihomed module less aggressive when changing the
address in messages. It will now only occur if the transport in
use is bound to the any address OR if the system determined
source address matches the bound address of the transport in use.
Review: https://reviewboard.asterisk.org/r/3369/ ........ Merged
revisions 410793 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-17 22:24 +0000 [r410775] Russ Meyerriecks <rmeyerreicks@digium.com>
* /, main/callerid.c: callerid: Logic error in checksum processing
Callerid checksum-ing was being handled incorrectly here. When
the checksum is calculated to be 0x00, it will perform 0x100-0x00
which results in 0x100. This value will then fail the otherwise
correct callerid message. This patch changes the logic to simply
add the calculated checksum to the transmitted 2's compliment
checksum. Review: https://reviewboard.asterisk.org/r/3356/
(closes issue ASTERISK-23488) ........ This is a merge of merged
revisions 410750 410747 from
http://svn.asterisk.org/svn/asterisk/branches/12 I didn't want a
broken patch to be comitted to trunk so I pre-merge merged them.
2014-03-17 19:35 +0000 [r410684-410699] Mark Michelson <mmichelson@digium.com>
* res/res_mwi_external.c, res/res_pjsip/config_system.c,
configs/sorcery.conf.sample, include/asterisk/sorcery.h,
res/res_pjsip/pjsip_configuration.c, tests/test_sorcery_astdb.c,
tests/test_sorcery.c, tests/test_sorcery_realtime.c,
main/sorcery.c, /: Revert changes to sorcery that accidentally
got committed. These changes were still up for review and have
not been approved yet. I must have had the changes in my working
copy when making a different change. ........ Merged revisions
410696 from http://svn.asterisk.org/svn/asterisk/branches/12
* bridges/bridge_softmix.c, tests/test_sorcery.c, main/channel.c,
res/res_pjsip/config_system.c, res/res_mwi_external.c,
include/asterisk/bridge_channel.h, funcs/func_frame_trace.c,
configs/sorcery.conf.sample, res/res_pjsip/pjsip_configuration.c,
include/asterisk/sorcery.h, tests/test_sorcery_astdb.c,
include/asterisk/frame.h, main/bridge_channel.c,
tests/test_sorcery_realtime.c, main/sorcery.c,
res/res_stasis_playback.c, main/frame.c, /: Fix stuck channel in
ARI through the introduction of synchronous bridge actions.
Playing back a file to a channel in an ARI bridge would attempt
to wait until the playback concluded before returning. The method
used involved signaling the waiting thread in the ARI custom
playback function. The problem with this is that there were some
corner cases that were not accounted for: * If a bridge channel
could not be found, then we never would attempt the playback but
would still attempt to wait for the playback to complete. * If
the bridge playfile action failed to queue, we would still
attempt to wait for the playback to complete. * If the bridge
playfile action were queued but some circumstance caused the
playback not to occur (the bridge dies, the channel is removed
from the bridge), then we would never be notified. The solution
to this is to move the waiting logic into the bridge code. A new
bridge API function is added to queue a synchronous action on a
bridge. The waiting thread is notified when the queued frame has
been freed, either due to an error occurring or due to successful
playback. As a failsafe, the waiting thread has a 10 minute
timeout just in case there is a frame leak somewhere. Review:
https://reviewboard.asterisk.org/r/3338 ........ Merged revisions
410673 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-17 16:48 +0000 [r410672] Richard Mudgett <rmudgett@digium.com>
* /, apps/confbridge/conf_chan_announce.c: app_confbridge: Add
missing destructor call to announcer channel destructor. ........
Merged revisions 410671 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-16 20:27 +0000 [r410651] Matthew Jordan <mjordan@digium.com>
* /, res/stasis/app.c: stasis/app.c: Add some extra debugging for
subscription counts Events are sent to a connected ARI
application based on the things that ARI application cares about.
These subscriptions can be set up implicitly - such as when that
ARI application creates a new object - or explicitly, via the
application resource's subscription operations. Debugging *why*
something was being sent to an application - or why something was
not being sent to an application - was a bit tricky, as there was
no debug information for the subscriptions. This patch adds some
debug level 3 statements that show the subscription counts for
applications. (Level 3 was chosen as it matches the verbose level
3 statements elsewhere) ........ Merged revisions 410650 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-15 15:24 +0000 [r410639] Russell Bryant <russell@russellbryant.com>
* include/asterisk/framehook.h: framehook.h: Fix some doc typos.
There were a number of instances in this header file where
"function all" was intended to be "function call". This patch
fixes that up.
2014-03-14 21:56 +0000 [r410626] Mark Michelson <mmichelson@digium.com>
* /, tests/test_sorcery_realtime.c: Fix failing realtime sorcery
tests. The store realtime callback needs to return a positive
value for sorcery to treat the store as a success. ........
Merged revisions 410625 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 21:36 +0000 [r410624] Jonathan Rose <jrose@digium.com>
* main/manager.c, /: manager: fix memory leak in manager_add_filter
function (closes issue ASTERISK-23420) Reported by: Etienne
Lessard Patches: manager_eventfilter_leak uploaded by Etienne
Lessard (license 6394) ........ Merged revisions 410609 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410623 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 20:55 +0000 [r410591-410608] Mark Michelson <mmichelson@digium.com>
* /, main/db.c: Remove an extra ast_cond_wait() that slipped
through the patch. ........ Merged revisions 410606 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410607 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/config.c, res/res_sorcery_realtime.c: Handle the return
values of realtime updates and stores more accurately. Realtime
backends' update and store callbacks return the number of rows
affected, or -1 if there was a failure. There were a couple of
issues: * The config API was treating 0 as a successful return,
and positive values as a failure. Now the config API treats
anything >= 0 as a success. * res_sorcery_realtime was treating 0
as a successful return from the store procedure, and any positive
values as a failure. Now sorcery treats anything > 0 as a
success. It still considers 0 a "failure" since there is no
change to report to observers. Review:
https://reviewboard.asterisk.org/r/3341 ........ Merged revisions
410592 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_mwi.c: Prevent conflicts regarding unsolicited
and solicited MWI to an endpoint. If an endpoint is receiving
unsolicited MWI for a mailbox and then attempts to subscribe to
an AOR that provides MWI for the same mailbox, then the SUBSCRIBE
is rejected with a 500 response. Review:
https://reviewboard.asterisk.org/r/3345 ........ Merged revisions
410590 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 17:56 +0000 [r410589] Scott Griepentrog <sgriepentrog@digium.com>
* /, CHANGES: uniqueid: Update CHANGES to reflect new features Note
the new features provided by uniqueid in the CHANGES file. (issue
ASTERISK-23120) Review: https://reviewboard.asterisk.org/r/3316/
........ Merged revisions 410588 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 16:42 +0000 [r410575] Jonathan Rose <jrose@digium.com>
* /, main/acl.c, res/res_pjsip/pjsip_configuration.c,
contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py,
CHANGES, res/res_pjsip/config_transport.c,
include/asterisk/acl.h: PJSIP: TOS values should be represented
as decimals in sorcery objects (closes issue ASTERISK-23235)
Reported by: George Joseph Review:
https://reviewboard.asterisk.org/r/3324/ ........ Merged
revisions 410574 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 16:19 +0000 [r410567] Mark Michelson <mmichelson@digium.com>
* /, main/db.c: Prevent delayed astdb syncs. The syncing thread
sleeps for a second before waiting to be told to attempt to sync
again. If a signal were sent during this sleeping period, we
would end up having to wait until the next sync signal occurred
in order to sync up the astdb. This code rearrangement also
ensures that any pending transactions will be synced prior to
Asterisk shutting down. Patches: db_sync.patch by John Hardin
(License #6512) ........ Merged revisions 410556 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410559 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 16:17 +0000 [r410560] Jonathan Rose <jrose@digium.com>
* res/ari/resource_bridges.c, /: ARI/bridges: Forward
Playback/Recording Started/Finished to bridge topic (closes issue
ASTERISK-23444) Reported by: Ben Merrills Review:
https://reviewboard.asterisk.org/r/3340/ ........ Merged
revisions 410558 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-14 16:01 +0000 [r410542-410557] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/app.h, /, res/res_mwi_external.c, main/app.c:
res_mwi_external: Clear the stasis cache entry when the external
MWI is deleted. One of the things missing when external MWI
support was added was the ability to clear the stasis cache entry
of deleted external MWI mailboxes. Review:
https://reviewboard.asterisk.org/r/3325/ ........ Merged
revisions 410555 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/cdr.c: cdr.c: Add missing aow_unlock(cdr) in off nominal
path of handle_dial_message(). * Trivial common code hoisting in
handle_bridge_leave_message(). * Some whitespace fixing. ........
Merged revisions 410541 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-13 19:33 +0000 [r410528] Kinsey Moore <kmoore@digium.com>
* res/stasis/control.h, res/res_stasis.c, /, res/stasis/control.c:
ARI: Ensure managing application receives ChannelEnteredBridge
messages This fixes an issue where a Stasis application running
over ARI and subscribed to ari/events could miss the
ChannelEnteredBridge event because it did not subscribe to the
new bridge fast enough. To accomplish this, it subscribes the
application controlling the channel to the new bridge before
adding it to that bridge which required the stasis_app_control
structure to maintain a reference to the stasis_app. (closes
issue ASTERISK-23295) Review:
https://reviewboard.asterisk.org/r/3336/ ........ Merged
revisions 410527 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-13 13:25 +0000 [r410511] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_multihomed.c, /: Multiple revisions 410509-410510
........ r410509 | file | 2014-03-13 06:23:14 -0700 (Thu, 13 Mar
2014) | 2 lines res_pjsip_multihomed: Fix a bug where the 200 OK
for a REGISTER would contain the wrong contact. ........ r410510
| file | 2014-03-13 06:24:17 -0700 (Thu, 13 Mar 2014) | 2 lines
res_pjsip_multihomed: Remove change for testing fix. ........
Merged revisions 410509-410510 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-12 19:06 +0000 [r410492-410494] Richard Mudgett <rmudgett@digium.com>
* res/res_musiconhold.c, main/channel.c, /: res_musiconhold.c:
Generate MOH start/stop events whenever the MOH stream is
started/stopped. * Made res_musiconhold.c always post the
MusicOnHoldStart/MusicOnHoldStop events when it actually
starts/stops the music streams. This allows the events to always
happen when MOH starts/stops. The event posting code was moved to
the MOH alloc/release routines. * Made channel_do_masquerade()
stop any MOH on the original channel before masquerading so the
original channel will get a stop event with correct information.
* Cleaned up a couple odd codings in moh_files_alloc() and
moh_alloc() dealing with the music state variable. (issue
ASTERISK-23311) Reported by: Benjamin Keith Ford Review:
https://reviewboard.asterisk.org/r/3306/ ........ Merged
revisions 410493 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/confbridge/conf_state.c,
apps/confbridge/conf_state_single.c,
apps/confbridge/conf_state_inactive.c,
apps/confbridge/conf_state_single_marked.c, /: app_confbridge:
Make explicitly stop MOH if a user is kicked or hangs up while
MOH is playing. When MOH is playing to a user in a conference and
the user is kicked or hangs up from the conference then the AMI
MusicOnHoldStop events didn't happen. (Asterisk v11 AMI event:
MusicOnHold, state:Stop) (closes issue ASTERISK-23311) Reported
by: Benjamin Keith Ford Review:
https://reviewboard.asterisk.org/r/3306/ ........ Merged
revisions 410490 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410491 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-12 12:51 +0000 [r410452-410472] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_multihomed.c, /: res_pjsip_multihomed: Fix a bug
where outgoing messages for TCP would go out using UDP. This
change fixes a bug where the code which changes the transport did
not check whether the message is going out over UDP or not before
changing it. For TCP and TLS transports we don't need to change
the transport as the correct one is already chosen. ........
Merged revisions 410471 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_multihomed.c (added), /: res_pjsip_multihomed: Add
module which places the correct address within messages. Due to
how messages are handled within PJSIP it is not until a message
is actually sent that the destination is reliably known. This
means that the addresses placed within the message may not be of
the interface the message is being sent out on. This module
determines what interface a message is being sent on and updates
the message to contain the correct address if applicable. This
module was tested by myself in a virtualized environment with
multiple interfaces and also by Kinsey Moore in the following
configuration: Networks: * 10.24.16.0/21 ** hard phone ** default
gateway * 10.24.64.0/21 ** softphone with pjsip-based stack
Transport details: bind address: 0.0.0.0 protocol: UDP All
endpoints were tested with explicitly configured transports and
unconfigured transports. This was tested with inbound and
outbound calls, both of which were experiencing detrimental
effects from incorrect IP addresses in SIP messages. These
effects were only experienced by the soft phone on the 10.24.64.0
network since the messages to the hard phone on the 10.24.16.0
network had the correct IP address. (closes issue ASTERISK-23020)
Reported by: xrobau Review:
https://reviewboard.asterisk.org/r/3102/ ........ Merged
revisions 410451 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-10 17:21 +0000 [r410395] Richard Mudgett <rmudgett@digium.com>
* /, main/http.c: AST-2014-001: Stack overflow in HTTP processing
of Cookie headers. Sending a HTTP request that is handled by
Asterisk with a large number of Cookie headers could overflow the
stack. Another vulnerability along similar lines is any HTTP
request with a ridiculous number of headers in the request could
exhaust system memory. (closes issue ASTERISK-23340) Reported by:
Lucas Molas, researcher at Programa STIC, Fundacion; and Dr.
Manuel Sadosky, Buenos Aires, Argentina ........ Merged revisions
410380 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 410381 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410383 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-10 16:33 +0000 [r410369] Scott Griepentrog <sgriepentrog@digium.com>
* res/ari/resource_channels.c, main/manager.c, /: unqiueid: correct
max uniqueid length test This patch adds null string test prior
to checking for a max uniqueid value that was added in r410157.
........ Merged revisions 410368 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-10 13:30 +0000 [r410346] Kinsey Moore <kmoore@digium.com>
* /, channels/chan_sip.c: AST-2014-002: chan_sip: Exit early on bad
session timers request This change allows chan_sip to avoid
creation of the channel and consumption of associated file
descriptors altogether if the inbound request is going to be
rejected anyway. (closes issue ASTERISK-23373) Reported by: Corey
Farrell Patches: chan_sip-earlier-st-1.8.patch uploaded by Corey
Farrell (license 5909) chan_sip-earlier-st-11.patch uploaded by
Corey Farrell (license 5909) ........ Merged revisions 410308
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 410311 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410329 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-10 12:53 +0000 [r410307] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/pjsip_options.c, res/res_pjsip.c: AST-2014-003:
res_pjsip: When handling 401/407 responses don't assume a request
will have an endpoint. This change removes the assumption that an
outgoing request will always have an endpoint and makes the
authenticate_qualify option work once again. (closes issue
ASTERISK-23210) Reported by: Joshua Colp ........ Merged
revisions 410306 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-08 16:50 +0000 [r410288] George Joseph <george.joseph@fairview5.com>
* res/res_pjsip/config_auth.c, /, res/res_pjsip/location.c,
res/res_pjsip_outbound_registration.c,
res/res_pjsip_endpoint_identifier_ip.c,
include/asterisk/res_pjsip_cli.h, include/asterisk/sorcery.h,
res/res_pjsip/pjsip_cli.c, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip/config_transport.c, main/sorcery.c,
include/asterisk/res_pjsip.h: pjsip_cli: Create pjsip show
channel and contact, and general cli code cleanup. Created the
'pjsip show channel' and 'pjsip show contact' commands.
Refactored out the hated ast_hashtab. Replaced with
ao2_container. Cleaned up function naming. Internal only, no
public name changes. Cleaned up whitespace and brace formatting
in cli code. Changed some NULL checking from "if"s to
ast_asserts. Fixed some register/unregister ordering to reduce
deadlock potential. Fixed ast_sip_location_add_contact where the
'name' buffer was too short. Fixed some self-assignment issues in
res_pjsip_outbound_registration. (closes issue ASTERISK-23276)
Review: http://reviewboard.asterisk.org/r/3283/ ........ Merged
revisions 410287 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-08 15:45 +0000 [r410275] Matthew Jordan <mjordan@digium.com>
* /, res/ari/resource_channels.c: resource_channels: Check if a
passed in ID is NULL before checking its length Calling strlen on
a NULL string is explosive. This patch checks whether or not the
passed in string is NULL or zero length before checking to see if
the string is too long. ........ Merged revisions 410274 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 22:56 +0000 [r410227] Corey Farrell <git@cfware.com>
* /, channels/chan_sip.c: chan_sip: Fix deadlock of monlock between
unload_module and do_monitor Release monlock before calling
pthread_join. This ensures do_monitor cannot freeze by locking
monlock during module unload. (closes issue ASTERISK-21406)
Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3284/ ........ Merged
revisions 410224 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 410225 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410226 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 22:08 +0000 [r410212] Scott Griepentrog <sgriepentrog@digium.com>
* /, include/asterisk/sorcery.h: sorcery: correct field register
argument list This fixes mistakes I previously made in merging
gtjoseph's changes with mine. ........ Merged revisions 410211
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 21:54 +0000 [r410208-410210] Matthew Jordan <mjordan@digium.com>
* /, main/config_options.c: config_options: Display the see-also
information for CLI config option help The config option help
information has always parsed the <see-also> tags in the XML
documentation. Unfortunately, it just never bothered displaying
them on the CLI. With this patch, when you execute 'config show
help [module] [obj] [option]', it will display what other options
are useful to you. (closes issue ASTERISK-22008) Reported by:
Richard Mudgett ........ Merged revisions 410209 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip.c, /: res_pjsip: Fix documentation for one touch
recording see-also links The one touch recording options have
several see-also links between the various configuration options.
These were 'broken' by the snake casing of those options. This
patch corrects the see-also links such that they reference the
correct option names. ........ Merged revisions 410194 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 21:23 +0000 [r410207] Mark Michelson <mmichelson@digium.com>
* main/sorcery.c, res/res_sorcery_realtime.c, /,
include/asterisk/sorcery.h, tests/test_sorcery_realtime.c: Make
res_sorcery_realtime filter unknown retrieved results. When
retrieving data from a database or other realtime backend, it's
quite possible to retrieve variables that Asterisk does not care
about but that are legitimate to exist. Asterisk does not need to
throw a hissy fit when these variables are encountered but rather
just filter them out. Review:
https://reviewboard.asterisk.org/r/3305 ........ Merged revisions
410187 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 21:11 +0000 [r410191] Scott Griepentrog <sgriepentrog@digium.com>
* main/sorcery.c, /, include/asterisk/sorcery.h,
res/res_pjsip/pjsip_configuration.c: pjsip: allow and disallow
show same codecs In order to prevent confusion over the allow and
disallow list of codecs being the same an option for registering
a field as an alias is added. The alias field will be read from
the configuration file, but afterwards is not listed as a known
field. With disallow set as an alias, the CLI command pjsip show
endpoint # will list the allow= field, but not the disallow
field. (closes issue ASTERISK-23092) Review:
https://reviewboard.asterisk.org/r/3193/ ........ Merged
revisions 410190 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 20:41 +0000 [r410174-410185] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/devicestate.h, main/stasis_cache.c,
main/stasis_message.c, /, tests/test_devicestate.c,
include/asterisk/stasis.h, main/app.c, main/devicestate.c,
tests/test_stasis.c: stasis cache: Enhance to keep track of an
item from different entities. A stasis cache entry now contains
more than a single message/snapshot. It contains
messages/snapshots for the local entity as well as any remote
entities that post to the cached item. In addition callbacks can
be supplied when the cache is created to compute and post the
aggregate message/snapshot representing all entities stored in
the cache entry. * All stasis messages now have an eid to
indicate what entity posted it. * The stasis cache enhancements
allow device state to cache and aggregate the device states from
local and remote entities in a single operation. The cached
aggregate device state is available immediately after it is
posted to the stasis bus. This improves performance by
eliminating a cache dump and associated ao2 container traversals
to calculate the aggregate state. (closes issue ASTERISK-23204)
Reported by: Mark Michelson Review:
https://reviewboard.asterisk.org/r/3281/ ........ Merged
revisions 410184 from
http://svn.asterisk.org/svn/asterisk/branches/12
* tests/test_cel.c, channels/sig_pri.c, channels/sig_ss7.c,
include/asterisk/bridge.h, tests/test_cdr.c, channels/sig_pri.h,
channels/chan_dahdi.c, channels/sig_ss7.h, /: uniqueid: Fix
chan_dahdi, sig_pri, sig_ss7, test_cdr, and test_cel compiler
errors. (issue ASTERISK-23120) ........ Merged revisions 410171
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 15:47 +0000 [r410158] Scott Griepentrog <sgriepentrog@digium.com>
* tests/test_cdr.c, res/res_clioriginate.c, res/res_ari_bridges.c,
tests/test_substitution.c, res/res_stasis_playback.c,
channels/chan_multicast_rtp.c, apps/app_meetme.c, /,
main/bridge_basic.c, include/asterisk/channel_internal.h,
tests/test_app.c, apps/confbridge/conf_chan_record.c,
main/core_unreal.c, channels/chan_gtalk.c,
include/asterisk/stasis_app_playback.h,
res/ari/resource_bridges.c, channels/chan_jingle.c,
channels/chan_phone.c, pbx/pbx_spool.c,
res/ari/resource_bridges.h, res/parking/parking_tests.c,
channels/chan_motif.c, apps/app_confbridge.c,
res/ari/resource_channels.c, include/asterisk/pbx.h,
res/res_stasis.c, include/asterisk/bridge.h,
apps/app_voicemail.c, res/ari/resource_channels.h,
apps/app_dial.c, res/res_calendar_exchange.c,
channels/chan_vpb.cc, apps/app_page.c, apps/app_chanisavail.c,
include/asterisk/dial.h, main/core_local.c,
res/parking/parking_bridge_features.c,
tests/test_stasis_endpoints.c, res/parking/parking_bridge.c,
channels/chan_skinny.c, include/asterisk/stasis_app_snoop.h,
addons/chan_mobile.c, main/bridge_channel.c,
channels/chan_pjsip.c, channels/chan_mgcp.c,
channels/chan_unistim.c, main/pbx.c,
res/res_calendar_icalendar.c, main/ccss.c,
channels/chan_bridge_media.c, main/bridge.c,
tests/test_stasis_channels.c, apps/app_bridgewait.c,
apps/app_originate.c, res/res_calendar_caldav.c,
include/asterisk/channel.h, res/parking/parking_applications.c,
apps/app_followme.c, main/cel.c, apps/app_queue.c,
res/res_ari_channels.c, res/res_calendar_ews.c,
rest-api/api-docs/bridges.json, main/dial.c,
channels/chan_dahdi.c, channels/chan_h323.c, tests/test_cel.c,
rest-api/api-docs/channels.json,
include/asterisk/bridge_internal.h,
apps/confbridge/conf_chan_announce.c, res/res_calendar.c,
include/asterisk/core_unreal.h, addons/chan_ooh323.c,
res/stasis/control.c, channels/chan_sip.c,
main/channel_internal_api.c, include/asterisk/stasis_app.h,
res/res_stasis_snoop.c, channels/chan_console.c,
channels/chan_iax2.c, channels/chan_oss.c, apps/app_agent_pool.c,
main/channel.c, main/manager.c, channels/chan_misdn.c,
tests/test_voicemail_api.c, channels/chan_alsa.c,
channels/chan_nbs.c, main/message.c: uniqueid: channel linkedid,
ami, ari object creation with id's Much needed was a way to
assign id to objects on creation, and much change was necessary
to accomplish it. Channel uniqueids and linkedids are split into
separate string and creation time components without breaking
linkedid propgation. This allowed the uniqueid to be specified by
the user interface - and those values are now carried through to
channel creation, adding the assignedids value to every function
in the chain including the channel drivers. For local channels,
the second channel can be specified or left to default to a ;2
suffix of first. In ARI, bridge, playback, and snoop objects can
also be created with a specified uniqueid. Along the way, the
args order to allocating channels was fixed in chan_mgcp and
chan_gtalk, and linkedid is no longer lost as masquerade occurs.
(closes issue ASTERISK-23120) Review:
https://reviewboard.asterisk.org/r/3191/ ........ Merged
revisions 410157 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-07 05:04 +0000 [r410108] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: chan_sip: Allow static realtime members
to be qualified during module load. When a static realtime peer
with qualify=yes is loaded, Asterisk will fail to send an OPTIONS
request due to the lastms being equal to 0. This results in the
peer being unable to receive calls from Asterisk because the
status is permanently UNKNOWN. This patch allows an OPTIONS
request to be sent during module load by ignoring the lastms
value on startup only. Review:
https://reviewboard.asterisk.org/r/3294/ (closes issue
ASTERISK-17523) Reported by: Maciej Krajewski Tested by:
wushumasters patches: realtime_fix_11.7.0.txt uploaded by Trevor
Peirce (license 6112) ........ Merged revisions 410105 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 410106 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410107 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 23:47 +0000 [r410092] Richard Mudgett <rmudgett@digium.com>
* main/sorcery.c, /: sorcery.c: Fix off-nominal path ref and memory
leak in ast_sorcery_objectset_json_create(). * Made exit a loop
early on error in ast_sorcery_objectset_json_create(). * Removed
some dead code in ast_sorcery_objectset_create2(). ........
Merged revisions 410089 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 23:43 +0000 [r410091] Russell Bryant <russell@russellbryant.com>
* /, res/res_musiconhold.c: moh: fix a refcount error with realtime
MOH I observed a crash in res_musiconhold on an Asterisk 11
system using realtime MOH. Investigation of the backtrace showed
a corrupt mohclass, implying that it got destroyed before the
code expected it to. I went looking for reference counting errors
that could have caused this crash and this patch this result. It
contains 2 changes. 1) Remove a usless block of code that was
impossible to reach. There was even a comment indicating that it
was impossible to reach. The conditional includes
"!ast_test_flag(global_flags, MOH_CACHERTCLASSES)" and it's
inside of an if block with the opposite check
"ast_test_flag(global_flags, MOH_CACHERTCLASSES)". There's no
good reason to keep it around. 2) A similar block to #1 contained
a reference counting error. It stores state->class in the local
variable mohclass without increasing its reference count. The
reference count on mohclass is decremented at the end of the
function. This block of code probably very rarely runs, which
would help explain why this system was working fine for many
months before experiencing a crash. Review:
https://reviewboard.asterisk.org/r/3282/ ........ Merged
revisions 410043 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 410044 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 410090 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 22:39 +0000 [r410042] George Joseph <george.joseph@fairview5.com>
* res/res_pjsip/config_auth.c, funcs/func_sorcery.c (added),
res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c,
main/bucket.c, res/res_pjsip_endpoint_identifier_ip.c,
include/asterisk/config.h, include/asterisk/sorcery.h,
res/res_pjsip/pjsip_configuration.c, res/res_pjsip_acl.c,
CHANGES, tests/test_sorcery.c, res/res_pjsip/config_transport.c,
main/config.c, main/sorcery.c: sorcery: Create AST_SORCERY
dialplan function. This patch creates the AST_SORCERY dialplan
function which allows someone to retrieve any value from a
sorcery-based config file. It's similar to AST_CONFIG. The
creation of the function itself was fairly straightforward but it
required changes to the underlying sorcery infrastructure that
rippled into individual sorcery objects. The changes stemmed from
inconsistencies in how sorcery created ast_variable objectsets
from sorcery objects and the inconsistency in how individual
objects used that feature especially when it came to parameters
that can be specified multiple times like contact in aor and
match in identify. You can read more here...
http://lists.digium.com/pipermail/asterisk-dev/2014-February/065202.html
So, what this patch does, besides actually creating the
AST_SORCERY function, is the following... * Creates
ast_variable_list_append which is a helper to append one
ast_variable list to another. * Modifies the
ast_sorcery_object_field_register functions to accept the
already-defined sorcery_fields_handler callback. * Modifies
ast_sorcery_objectset_create to accept a parameter indicating
return type preference...a single ast_variable with all values
concatenated or an ast_variable list with multiple entries. Also
fixed a few bugs. * Modifies individual sorcery object
implementations to use the new function definition of the
ast_sorcery_object_field_register functions. * Modifies
location.c and res_pjsip_endpoint_identifier_ip.c to implement
sorcery_fields_handler handlers so they return multiple
occurrences as an ast_variable_list. * Added a whole bunch of
tests to test_sorcery. (closes issue ASTERISK-22537) Review:
http://reviewboard.asterisk.org/r/3254/
2014-03-06 19:04 +0000 [r410029] Jonathan Rose <jrose@digium.com>
* include/asterisk/acl.h, /, main/acl.c,
res/res_pjsip/pjsip_configuration.c, UPGRADE.txt,
contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py
(added), res/res_pjsip/config_transport.c: pjsip configuration:
Make transport TOS values consistent with endpoints Transport TOS
values were interpreted as DSCP values without being documented
as such. Endpoint TOS values (tos_audio/tos_video) behaved
normally as TOS values have historically. This patch makes the
transport TOS values behave as TOS values and makes all TOS
values readable as string values (e.g. AF11). In addition,
alembic scripts have been updated to use the proper field types
for all TOS/COS values. (issue ASTERISK-23235) Reported by:
George Joseph Review: https://reviewboard.asterisk.org/r/3304/
........ Merged revisions 410028 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 18:20 +0000 [r410027] Joshua Colp <jcolp@digium.com>
* res/ari/resource_channels.c, CHANGES,
res/ari/ari_model_validators.c,
rest-api/api-docs/recordings.json, res/ari/resource_bridges.c,
res/ari/ari_model_validators.h, /,
include/asterisk/stasis_app_recording.h,
res/res_stasis_recording.c: res_stasis_recording: Add a
"target_uri" field to recording events. This change adds a
target_uri field to the live recording object. It contains the
URI of what is being recorded. (closes issue ASTERISK-23258)
Reported by: Ben Merrills Review:
https://reviewboard.asterisk.org/r/3299/ ........ Merged
revisions 410025 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 15:58 +0000 [r410012] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_mwi.c, /: Don't attempt to link in an aggregate MWI
subscription if an endpoint does not aggregate MWI. Attempting to
link a NULL object into an ao2 container had been benign
previously, but since enabling DO_CRASH in the testsuite, this is
now causing a crash. It's better to be right here anyway.
........ Merged revisions 410011 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 02:22 +0000 [r409996] Matthew Jordan <mjordan@digium.com>
* res/res_fax_spandsp.c, /: res_fax_spandsp: Fix crash when passing
ulaw/alaw data to spandsp When acting as a T.38 fax gateway,
res_fax_spandsp would at times cause a crash in libspandsp. This
would occur when, during fax tone detection, a ulaw/alaw frame
would be passed to modem_connect_tones_rx. That particular
routine expects the data to be in slin format. This patch looks
at the frame type and, if the data is ulaw/alaw, converts the
format to slin before passing it to modem_connect_tones_rx.
Review: https://reviewboard.asterisk.org/r/3296 (closes issue
ASTERISK-20149) Reported by: Alexandr Gordeev Tested by: Michal
Rybarik patches: spandsp_g711decode.diff uploaded by Michal
Rybarik (license 6578) ........ Merged revisions 409990 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409991 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-06 00:33 +0000 [r409970-409977] Richard Mudgett <rmudgett@digium.com>
* apps/confbridge/conf_state_multi.c,
apps/confbridge/conf_state_inactive.c, /: app_confbridge: Remove
some noop code. ........ Merged revisions 409976 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_musiconhold.c: res_musiconhold.c: Remove some
unnecessary RAII_VAR() usage. * Made the moh_register() define
use useful parameter names. ........ Merged revisions 409967 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 20:41 +0000 [r409904-409919] Kinsey Moore <kmoore@digium.com>
* main/config.c, /: config: Fix inverted test The test of the
result of the stat() call was inverted such that its output was
only used if the call failed. This inverts the test so that the
output of stat() is used correctly. This was causing full reloads
on unchanged files. (closes issue ASTERISK-23383) Reported by:
David Woolley ........ Merged revisions 409916 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409917 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409918 from
http://svn.asterisk.org/svn/asterisk/branches/12
* bridges/bridge_native_rtp.c, /: bridge_native_rtp: Fix crash
involving masquerade It is possible for a channel to be
masqueraded out of a bridge which means it may no longer have RTP
glue to check upon leaving said bridge. If this situation
occurred (it's possible at least during dial and call pickup)
then Asterisk would crash. This change makes sure the glue is
checked before use. (closes issue AST-1290) Reported by: John
Bigelow ........ Merged revisions 409900 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 18:51 +0000 [r409889] Richard Mudgett <rmudgett@digium.com>
* contrib/ast-db-manage/cdr/versions,
contrib/ast-db-manage/cdr/versions/210693f3123d_create_cdr_table.py,
/,
contrib/ast-db-manage/config/versions/28887f25a46f_create_queue_tables.py
(added), contrib/ast-db-manage/cdr.ini.sample (added),
contrib/ast-db-manage/cdr/env.py, contrib/ast-db-manage/cdr
(added), contrib/ast-db-manage/cdr/script.py.mako: alembic: Add
missing queue and CDR table creation scripts. * Added the queues
and queue_members tables to the config alembic scripts. * Added
the CDR table alembic creation script. The CDR table is more of
an example for new setups since the actual table can be fully
customized in cdr_adaptive_odbc.conf. (closes issue
ASTERISK-23233) Reported by: jmls Review:
https://reviewboard.asterisk.org/r/3227/ ........ Merged
revisions 409885 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 18:47 +0000 [r409888] Mark Michelson <mmichelson@digium.com>
* funcs/func_presencestate.c, /: Fix documentation for
PRESENCE_STATE to properly illustrate how to create a presence
hint. There was a missing comma. This was discovered by Dan
Kaplan. ........ Merged revisions 409886 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409887 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 16:58 +0000 [r409836] David M. Lee <dlee@digium.com>
* main/config.c, /, configure, include/asterisk/autoconfig.h.in,
configure.ac: Corrected cross-platform stat nanosecond code When
nanosecond time resolution was added for identifying config file
changes, it didn't cover all of the myriad of ways that one might
obtain nanosecond time resolution off of struct stat. Rather than
complicate the #if even further figuring out one system from the
next, this patch directly tests for the three struct members I
know about today, and #ifdef's accordingly. Review:
https://reviewboard.asterisk.org/r/3273/ ........ Merged
revisions 409833 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409834 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409835 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 16:26 +0000 [r409831-409832] Moises Silva <moises.silva@gmail.com>
* res/res_http_websocket.c: Fix res/res_http_websocket.c build
failure in 32bit due to incorrect print format for uint64_t
* res/res_http_websocket.c, /: Fix WebRTC over WSS not working
Several fixes for the WebSockets implementation in
res/res_http_websocket.c * Flush the websocket session FILE* as
fwrite() may not actually guarantee sending the data to the
network. If we do not flush, it seems that buffering on the SSL
socket for outbound messages causes issues * Refactored
ast_websocket_read to take into account that SSL file descriptors
may be ready to read via fread() but poll() will not actually say
so because the data was already read from the network buffers and
is now in the libc buffers (closes issue ASTERISK-23099) (closes
issue ASTERISK-21930) Review:
https://reviewboard.asterisk.org/r/3248/ ........ Merged
revisions 409681 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409697 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 12:06 +0000 [r409780] Sean Bright <sean@malleable.com>
* contrib/scripts/astgenkey, contrib/scripts/astgenkey.8, /: Fix
references to 'keys' CLI commands in astgenkey ........ Merged
revisions 409777 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409778 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409779 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-05 06:17 +0000 [r409747] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* channels/chan_unistim.c: Add update_peer function to
unistim_rtp_glue, improve other unistim_rtp_glue functions
conforming to other channel drivers. Do not forget auto-detected
and user-selected phone settings on 'unistim reload' ........
Merged revisions 409705 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409745 from
http://svn.asterisk.org/svn/asterisk/branches/11
2014-03-05 01:05 +0000 [r409683] Richard Mudgett <rmudgett@digium.com>
* /, include/asterisk/stasis_internal.h: stasis: Made
internal_stasis_subscribe() prototype and definition match
exactly. ........ Merged revisions 409682 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-04 19:34 +0000 [r409627] Michael L. Young <elgueromexicano@gmail.com>
* funcs/func_audiohookinherit.c, /: func_audiohookinheritance:
Check If A Channel Was Specified This patch prevents a crash when
using the function audiohookinheritance without setting the
channel. (closes issue ASTERISK-23104) Reported by: Joel Vandal
Tested by: Joel Vandal Patches:
asterisk-23104_audiohook_inherit_no_channel-11.diff uploaded by
Michael L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/3272/ ........ Merged
revisions 409623 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409625 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409626 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-04 17:22 +0000 [r409587] Jonathan Rose <jrose@digium.com>
* /, res/res_rtp_asterisk.c: res_rtp_asterisk: Fix one way audio
problems with hold/unhold when using ICE ICE sessions will now be
restarted if sessions are changed to use new sets of remote
candidates. (closes issue ASTERISK-22911) Reported by: Vytis
Valentinavičius Review: https://reviewboard.asterisk.org/r/3275/
........ Merged revisions 409565 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409570 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-04 16:55 +0000 [r409569] Kinsey Moore <kmoore@digium.com>
* /, main/astobj2.c: AO2: Add an assert for bad objects This adds
an assert that will only be active if Asterisk is compiled with
DO_CRASH and allows the testsuite to fail tests that would
otherwise require log file parsing. ........ Merged revisions
409566 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 409567 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409568 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-04 14:55 +0000 [r409475] Sean Bright <sean@malleable.com>
* /, channels/chan_sip.c: Minor whitespace change to 'sip show
peers' output. (closes issue ASTERISK-23406) Reported by: ibercom
Tested by: ibercom Patches: asterisk-11.patch uploaded by ibercom
........ Merged revisions 409472 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409473 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409474 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-03 19:44 +0000 [r409423] Joshua Colp <jcolp@digium.com>
* /, res/res_stasis_recording.c: res_stasis_recording: Fix memory
leak of the absolute name. ........ Merged revisions 409422 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-03 02:08 +0000 [r409364] Matthew Jordan <mjordan@digium.com>
* main/asterisk.c, /: doxygen: Tweak the link back to ye olde
Digium website ........ Merged revisions 409361 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409362 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409363 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-02 17:03 +0000 [r409350] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* /, Makefile.rules: Makefile: replace -O6 with -O3 -O6 is not a
legal option of gcc. Unofficially gcc considers it to be
equivalent of -O3. clang chalks on it, though. This commit sets
the default optimization flag to be -O3, like gcc actually
considered it. Review: https://reviewboard.asterisk.org/r/3280/
........ Merged revisions 409308 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409344 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409346 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-01 20:28 +0000 [r409288] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, /: res_pjsip_session: Set options
(100rel, timers) on incoming sessions. This change passes options
to the UAS creation function. This in turn sets up 100rel and
session timer properties on the incoming session. Reported by
Julian Russell on asterisk-users mailing list. ........ Merged
revisions 409287 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-03-01 00:05 +0000 [r409257-409275] Richard Mudgett <rmudgett@digium.com>
* /, main/devicestate.c: devicestate.c: Simplified some logic in
_ast_device_state(). ........ Merged revisions 409274 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_cache.c, /: stasis_cache.c: Remove some unnecessary
RAII_VAR() usage. ........ Merged revisions 409272 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis.c, /: stasis.c: Misc code cleanups. * Remove some
unnecessary RAII_VAR() usage. * Made the struct
stasis_subscription ao2 object use the ao2 lock instead of a
redundant join_lock in the struct for ast_cond_wait(). * Removed
locks on some ao2 objects that don't need the lock. * Made the
topic pool entries container use the ao2 template functions. *
Add some missing allocation failure checks. * Add missing cleanup
in off nominal path of dispatch_message(). ........ Merged
revisions 409270 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: chan_sip: Add precautionary p->owner
checks. * Add precautionary p->owner checks in sip_hangup(),
get_refer_info(), get_also_info(), and
interpret_t38_parameters(). * Simplify some tangled logic in
get_refer_info(), get_also_info(), and add_rpid(). * Removed some
dead code in handle_request_invite(). (closes issue
ASTERISK-23323) Reported by: Walter Doekes Patches:
issueA23323-more_p_owner_checks-1.8.x.patch (license #5674)
uploaded by wdoekes (modified)
issueA23323-more_p_owner_checks-11.x.patch (license #5674)
uploaded by wdoekes (modified)
issueA23323-more_p_owner_checks-12.x.patch (license #5674)
uploaded by wdoekes (modified)
issueA23323-more_p_owner_checks-trunk.patch (license #5674)
uploaded by wdoekes (modified) ........ Merged revisions 409207
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 409255 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409256 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-28 21:24 +0000 [r409237] Kinsey Moore <kmoore@digium.com>
* apps/app_queue.c, /: app_queue: Fix documented AMI event name
During the rewrite of AMI events to use the Stasis bus, the name
of the QueueMemberPaused event was changed to QueueMemberPause.
This corrects documentation to reflect that. ........ Merged
revisions 409234 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-28 18:03 +0000 [r409159] Richard Mudgett <rmudgett@digium.com>
* /, channels/chan_sip.c: chan_sip: Fix crash in
ast_channel_hangupcause_set(). * Fix crash in
ast_channel_hangupcause_set() because p->owner not checked before
calling. Regression introduced by the fix for ASTERISK-22621.
(closes issue ASTERISK-23135) Reported by: OK (issue
ASTERISK-23323) Reported by: Walter Doekes ........ Merged
revisions 409156 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409157 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409158 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-27 19:54 +0000 [r409132] Jonathan Rose <jrose@digium.com>
* res/res_rtp_asterisk.c, /: Multiple revisions 409129-409130
........ r409129 | jrose | 2014-02-27 13:19:02 -0600 (Thu, 27 Feb
2014) | 15 lines res_rtp_asterisk: Fix checklist creating
problems in ICE sessions Prior to this patch, local candidate
lists including SRFLX would fail to start properly when building
ICE candidate check lists. This patch fixes that problem by
making sure that each SRFLX candidate is associated with the
proper base address so that the check list can create matches
properly. This patch was written by jcolp. The issue will be left
open to await testing by the issue participants. (issue
ASTERISK-23213) Reported by: Andrea Suisani Review:
https://reviewboard.asterisk.org/r/3256/ ........ r409130 | jrose
| 2014-02-27 13:38:10 -0600 (Thu, 27 Feb 2014) | 8 lines
res_rtp_asterisk: correct build error from r409129 Accidentally
placed a declaration below functional code (issue ASTERISK-23213)
Reported by: Andrea Suisani Review:
https://reviewboard.asterisk.org/r/3256/ ........ Merged
revisions 409129-409130 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409131 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-27 16:26 +0000 [r409091] David M. Lee <dlee@digium.com>
* utils/astman.c, /: Fix memory stomping bug in astman. This memset
complained in dev mod on my Ubuntu box. The memset is both
unnecessary and dangerous. At this point, m hasn't been
initialized yet, so the memset will write off to whatever address
happens to be on the stack at the time. ........ Merged revisions
409077 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 409083 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409087 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-27 16:08 +0000 [r409055] Corey Farrell <git@cfware.com>
* /, configs/res_fax.conf.sample: res_fax: Comment out default
settings from res_fax.conf. 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/ ........ Merged
revisions 409052 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 409053 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 409054 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-27 12:29 +0000 [r409000] Matthew Jordan <mjordan@digium.com>
* /, res/res_pjsip_sdp_rtp.c: res_pjsip_sdp_rtp: Apply
packetization rules on inbound SDP handling The setting
'use_ptime' is supposed to tell Asterisk to honour the ptime
attribute in an offer, preferring it to whatever packetization
preferences have been set internally. Currently, however,
something rather quirky will happen: (1) The SDP answer will be
constructed in create_outgoing_sdp_stream. This will use the
preferences from the endpoint, such that the 200 OK response will
add the packetization preferences from the endpoint, and not what
was offered. (2) When the 200 response is issued,
apply_negotiated_sdp_stream is called. This will call
apply_packetization, which will use the ptime attribute from the
offer internally. We end up telling the offerer to use the
internal ptime attribute, but we end up using the offered ptime
attribute. Hilarity ensues. This patch modifies the behaviour by
calling apply_packetization from negotiate_incoming_sdp_stream,
which is called prior to create_outgoing_sdp_stream. This causes
the format preferences on the session's media object to be set to
the inbound ptime value (if 'use_ptime' is enabled), such that
the construction of the answer gets the right value immediately.
Review: https://reviewboard.asterisk.org/r/3244/ ........ Merged
revisions 408999 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-26 23:35 +0000 [r408984] Richard Mudgett <rmudgett@digium.com>
* /, tests/test_stasis.c: test_stasis.c: Misc cleanups. * Make the
consumer ao2 object use the ao2 lock instead of a redundant lock
in the struct for ast_cond_wait(). * Fixed some curly brace
placements. * Fixed use of malloc(0). malloc(0) has variant
behavior. It is up to the implementation to determine if it
returns NULL or a valid pointer that can be later passed to
free(). ........ Merged revisions 408983 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-26 19:00 +0000 [r408971] Scott Griepentrog <sgriepentrog@digium.com>
* channels/chan_pjsip.c, /: pjsip: avoid edge case potential crash
in answer() When accidentally compiling against a wrong version
of pjsip headers with a different pjsip_inv_session size, the
invite_tsx structure could be null in the answer() function. This
led to a crash because it attempted to send the session response
with an uninitialized packet pointer. This patch presets packet
to null and adds a diagnostic log message to explain why the call
fails. Review: https://reviewboard.asterisk.org/r/3267/ ........
Merged revisions 408970 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-26 17:04 +0000 [r408958] Joshua Colp <jcolp@digium.com>
* res/res_ari.c, /: res_ari: Make some additional error responses
consistent with the rest of the system. This change makes some
error cases use ast_ari_response_error to construct their error
responses instead of manually doing it. This ensures they are
consistent with the other error responses. Based on the original
patch as done by Paul Belanger on the associated review. Review:
https://reviewboard.asterisk.org/r/2904/ ........ Merged
revisions 408957 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-26 13:47 +0000 [r408942-408944] Kinsey Moore <kmoore@digium.com>
* include/asterisk/res_pjsip_session.h, /: PJSIP: Fix some bad
spacing ........ Merged revisions 408943 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_refer.c: PJSIP: Prevent crash if channel has
gone away It is currently possible for an ast_sip_session to
exist without an associated channel as is the case when a new
invite is coming in or just after a hangup is issued on a
chan_pjsip channel. Part of the attended transfer code assumed
the channel would be non-NULL and used it as such causing a
crash. This bug was exposed thanks to the attended transfer ARI
test in the test suite. (closes issue ASTERISK-23287) Reported
by: Matt Jordan ........ Merged revisions 408941 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-26 08:57 +0000 [r408932] Igor Goncharovskiy <igor.goncharovsky@gmail.com>
* channels/chan_unistim.c: Implement functions handling keypress,
display icons and text for i2004 KEM support.
2014-02-25 17:51 +0000 [r408881-408883] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_exten_state.c, /,
res/res_pjsip_pidf_digium_body_supplement.c (added),
include/asterisk/res_pjsip_body_generator_types.h:
res_pjsip_exten_state: Presence for digium phones Added presence
support for digium phones. Review:
https://reviewboard.asterisk.org/r/3239/ ........ Merged
revisions 408882 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_send_to_voicemail.c (added),
res/res_pjsip_header_funcs.c: res_pjsip_send_to_voicemail:
transferring to voicemail for digium phones Added the ability for
transferring directly to voicemail on digium phones. Added a new
module that checks for the presence of a custom header and/or
diversion header within a sip REFER. If either is found and they
specify a sending to voicemail action then variables are added to
the channel allowing the user access to them in the dialplan.
Dialplan can then be written that branches based upon these
values allowing, for instace, for a single number to be used for
dialing and/or accessing voicemail directly. Also fixed a problem
where the PJSIP_HEADER function was allowing non pjsip channels
through (checked to make sure it has the correct channel type
before proceeding). Review:
https://reviewboard.asterisk.org/r/3245/ ........ Merged
revisions 408880 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-25 17:44 +0000 [r408879] Rusty Newton <rnewton@digium.com>
* configs/voicemail.conf.sample, /: configs/voicemail.conf.sample -
Make mailcmd sample text more explicit Made the wording a bit
more explicit. Didn't really change the meaning. ........ Merged
revisions 408876 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408877 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408878 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-22 23:31 +0000 [r408859] Matthew Jordan <mjordan@digium.com>
* /, main/asterisk.c: main: Initialize dialplan providing core
components prior to module pre-load It is possible to pre-load
pbx_config. As a result, pbx_config - which will load and parse
the dialplan - will attempt to use various dialplan components,
such as device state providers and presence state providers,
prior to them being initialized by the core. This would lead to a
crash, as the components had not created their Stasis cache
entries. This patch moves a number of core component
initializations before the module pre-load. This guarantees that
if someone does pre-load pbx_config - or other pbx modules - that
the Stasis caches for the various core components are created.
(closes issue ASTERISK-23320) Reported by: xrobau (closes issue
ASTERISK-23265) Reported by: Andrew Nagy Tested by: Andrew Nagy,
Rusty Newton ........ Merged revisions 408855 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-22 18:01 +0000 [r408840] Alexandr Anikin <may@telecom-service.ru>
* addons/chan_ooh323.c, /: ignore AST_CONTROL_PVT_CAUSE_CODE
without any messages (closes issue ASTERISK-23336) Reported by:
Alexander Semych ........ Merged revisions 408838 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408839 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-22 02:31 +0000 [r408788] Corey Farrell <git@cfware.com>
* /, utils/extconf.c, utils/conf2ael.c, res/ael/pval.c, main/pbx.c:
Remove extra defines of AST_PBX_MAX_STACK. * Ensure
AST_PBX_MAX_STACK is only defined in extconf.h and pbx.h. * Fix
incorrect function parameters in utils/extconf.c. (closes issue
ASTERISK-23141) Reported by: Maxim Review:
https://reviewboard.asterisk.org/r/3241/ ........ Merged
revisions 408785 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408786 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408787 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-21 18:37 +0000 [r408731] Kevin Harwell <kharwell@digium.com>
* main/rtp_engine.c, /: rtp_engine: Dynamic payload change in rtp
mapping not supported Asterisk didn't support the dynamic payload
change in rtp mapping in the 200 OK response. Scenario: Asterisk
sends the INVITE proposing alaw and telephone-event, it proposes
rtpmap:101 for telephone-event. Peer responds with 2xx, it
answers with alaw and telephone-event also, but it proposes a
different rtpmap number (rtpmap:103) for telephone-event.
Expected Behaviour: Asterisk should honour the rtpmapping in the
response and send DTMF packets using 103 as payload type for
DTMF. Actual Behaviour: Asterisk sends DTMF packets using payload
type 101. With this patch asterisk now supports changes that can
occur in the rtp mapping in the response. (closes issue
ASTERISK-23279) Reported by: NITESH BANSAL Review:
https://reviewboard.asterisk.org/r/3225/ Patches:
dynamic_payload_change.patch uploaded by nbansal (license 6418)
........ Merged revisions 408729 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408730 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-21 18:19 +0000 [r408712-408723] Richard Mudgett <rmudgett@digium.com>
* main/manager.c, /: manager: Fix AMI Status action of a single
channel. Fixed use of uninitialized ao2 container iterator in an
off-nominal condition. Either a memory allocation error or the
requested channel is an internal channel not exposed to the
outside. ........ Merged revisions 408715 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/sorcery.c, res/ari/resource_endpoints.c, /,
apps/app_meetme.c, res/res_fax.c, res/res_stasis_recording.c,
main/stasis_channels.c, res/res_sorcery_astdb.c,
include/asterisk/json.h: json: Fix off-nominal json ref counting
issues. * Fixed off-nominal json ref counting issue with using
the following API calls: ast_json_object_set() and
ast_json_array_append(). * Fixed off-nominal error reporting in
ast_ari_endpoints_list(). * Fixed some miscellaneous off-nominal
json ref counting issues in report_receive_fax_status() and
dial_to_json(). ........ Merged revisions 408713 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/json.c, /: json: Fix json API wrapper code for json library
versions earlier than 2.3.0. * Fixed json ref counting issue with
json API wrapper code for ast_json_object_update_existing() and
ast_json_object_update_missing() when the json library is earlier
than version 2.3.0. ........ Merged revisions 408711 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-21 16:49 +0000 [r408699] Corey Farrell <git@cfware.com>
* channels/chan_sip.c: chan_sip: prevent add_route from adding
empty header. Fix regression caused by ASTERISK-22582. Empty
Route headers were added when the route had a single strict hop.
(closes issue ASTERISK-23306) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3236/
2014-02-21 16:27 +0000 [r408645-408652] Kevin Harwell <kharwell@digium.com>
* main/rtp_engine.c, /: rtp_engine: Output mixup in
${CHANNEL(rtpqos,audio,all)} Fixed the output of
CHANNEL(rtpqos,audio,all) to use txjitter instead of rxjitter.
(closes issue ASTERISK-23261) Reported by: rsw686 Patches:
rtpqos.patch uploaded by rsw686 (license 5887) ........ Merged
revisions 408646 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408647 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408649 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/channel.c, /: channel.c: MOH is not working for transferee
after attended transfer Updated the code to check to see if MOH
is playing on the transferor and if so then start it on the
channel that replaces it during a masquerade. Example scenario of
the problem: Alice calls Bob and then Bob begins the attended
transfer process into a queue. Upon going on hold Alice hears
music and so does Bob once he is in the queue. Bob then transfers
Alice into the queue and then music for Alice stops even though
she should be hearing it since has now replaced Bob in the queue.
The problem that was occurring is that once the channel was
masqueraded the app (queues, confbridge, etc...) had no way of
knowing that the channel had just been swapped out thus it did
not start music for the present channel. Credit to Olle Johansson
for pointing me in the right direction on this issue. (closes
issue ASTERISK-19499) Reported by: Timo Teräs Review:
https://reviewboard.asterisk.org/r/3226/ ........ Merged
revisions 408642 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408643 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408644 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-21 10:45 +0000 [r408592] Alexandr Anikin <may@telecom-service.ru>
* /, addons/ooh323c/src/ooCalls.h: Fix type of roundTripDelay
variables ........ Merged revisions 408589 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408590 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408591 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-21 00:50 +0000 [r408539] Michael L. Young <elgueromexicano@gmail.com>
* /, apps/app_chanspy.c: app_chanspy: Documentation Update To
Clarify "x" Option When using the "x" option (specify a DTMF
digit to exit the application), it is not obvious in the
documentation that this only works when spying on a channel. If a
channel being used to spy on other channels is waiting to connect
to a channel or is no longer attached to a channel, the DTMF is
ignored. As noted on the issue tracker, since there are
workarounds available and this is a rarely used option we are
opting for a documentation change here. (closes issue
ASTERISK-22661) Reported by: Chris Hillman Patches:
asterisk-22661-doc-clarify-chan_spy.diff uploaded by Michael L.
Young (license 5026) Review:
https://reviewboard.asterisk.org/r/2990/ ........ Merged
revisions 408536 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408537 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408538 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-20 21:12 +0000 [r408519-408523] George Joseph <george.joseph@fairview5.com>
* /, res/res_pjsip/location.c,
res/res_pjsip_outbound_registration.c: pjsip_cli: Add pjsip
commands 'show registrations' and 'show contacts'. Added 'show
registrations' and 'show contacts' to pjsip cli to make things a
little more consistent. The output is exactly the same as the
list command. Just needed to add entries to their respective
ast_cli_entry structures. (closes issue ASTERISK-23275) Review:
http://reviewboard.asterisk.org/r/3210/ ........ Merged revisions
408522 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_cli.c, main/config.c: pjsip_cli: Fix
memory leak in ast_sip_cli_print_sorcery_objectset. Fixed memory
leaks in ast_sip_cli_print_sorcery_objectset and
ast_variable_list_sort. (closes issue ASTERISK-23266) Review:
http://reviewboard.asterisk.org/r/3200/ ........ Merged revisions
408520 from http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/sorcery.h,
res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip.c,
tests/test_sorcery.c, main/sorcery.c, /,
res/res_pjsip/config_system.c: sorcery: Create sorcery instance
registry. In order to retrieve an arbitrary sorcery instance from
a dialplan function (or any place else) there needs to be a
registry of sorcery instances. ast_sorcery_init now creates a
hashtab as a registry. ast_sorcery_open now checks the hashtab
for an existing sorcery instance matching the caller's module
name. If it finds one, it bumps the refcount and returns it. If
not, it creates a new sorcery instance, adds it to the hashtab,
then returns it. ast_sorcery_retrieve_by_module_name is a new
function that does a hashtab lookup by module name. It can be
called by the future dialplan function. res_pjsip/config_system
needed a small change to share the main res_pjsip sorcery
instance. tests/test_sorcery was updated to include a test for
the registry. (closes issue ASTERISK-22537) Review:
http://reviewboard.asterisk.org/r/3184/ ........ Merged revisions
408518 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-20 19:02 +0000 [r408503] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip.c, /: res_pjsip: Update documentation for
'use_avpf' option When 'use_avpf' is set to True, inbound offers
must use the AVPF/SAVPF RTP profile. However, when 'use_avpf' is
set to False, Asterisk will accept both AVP/SAVP or AVPF/SAVPF
RTP profiles in inbound offers. The documentation previously
implied that Asterisk would reject AVPF/SAVPF if 'use_avpf' was
set to False and a UA offered said profile in an INVITE request.
........ Merged revisions 408502 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-20 02:44 +0000 [r408450] Rusty Newton <rnewton@digium.com>
* /, apps/app_queue.c: apps/app_queue - Fix incorrect Macro
parameter documentation Macro is executed on the called channel,
not the calling channel. (closes issue ASTERISK-23069) Reported
By: Bryan Anderson ........ Merged revisions 408447 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408448 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408449 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-19 19:09 +0000 [r408386-408390] Richard Mudgett <rmudgett@digium.com>
* /, main/config.c: config: Add file size and nanosecond resolution
fields to the cached modified config file information. Repeatedly
modifying config files and reloading too fast sometimes fails to
reload the configuration because the cached modification
timestamp has one second resolution. * Added file size and
nanosecond resolution fields to the cached config file
modification timestamp information. Now if the file size changes
or the file system supports nanosecond resolution the modified
file has a better chance of being detected for reload. * Added a
missing unlock in an off-nominal code path. (closes issue
AST-1303) Review: https://reviewboard.asterisk.org/r/3235/
........ Merged revisions 408387 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408388 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408389 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_sorcery_astdb.c: res_sorcery_astdb.c: Fix regex
handling and keep simple prefix matching performance. The sorcery
astDB wizzard does not handle regex correctly if the pattern
begins with an anchor character. This patch attempts to convert
the anchored regex pattern to a prefix pattern supported by astDB
for performance reasons. If it is not able to convert the pattern
it falls back to getting all astDB members of the family and
doing a normal regex pattern matching on the retrieved records.
Review: https://reviewboard.asterisk.org/r/3161/ ........ Merged
revisions 408385 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-19 12:04 +0000 [r408315-408332] Alexandr Anikin <may@telecom-service.ru>
* addons/ooh323c/src/ooCapability.c, /,
addons/ooh323c/src/ooh245.c: process receiveAndTransmit user
input remote caps instead of receive only send receiveAndTransmit
user input our caps instead of receive only ........ Merged
revisions 408328 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408330 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408331 from
http://svn.asterisk.org/svn/asterisk/branches/12
* addons/ooh323c/src/ooh323.c, /: Allow different socket and
signalling ip on h.323 connection if gk mode is active Reported
by: Gabriele Odone Patches: ASTERISK-22738-1.patch Tested by:
Gabriele Odone (closes issue ASTERISK-22738) ........ Merged
revisions 408312 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408314 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-18 19:19 +0000 [r408299] Richard Mudgett <rmudgett@digium.com>
* contrib/ast-db-manage/config/env.py,
contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py,
contrib/ast-db-manage/config,
contrib/ast-db-manage/voicemail/env.py,
contrib/ast-db-manage/voicemail,
contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py,
contrib/ast-db-manage/config/versions,
contrib/ast-db-manage/config/versions/21e526ad3040_add_pjsip_debug_option.py,
contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py,
contrib/ast-db-manage/voicemail/versions, contrib/ast-db-manage,
/: alembic: Add svn:ignore *.pyc to directories and
svn:executable to *.py files. ........ Merged revisions 408297
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-17 15:36 +0000 [r408272] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip/location.c, UPGRADE.txt, res/res_pjsip.c,
res/res_pjsip_registrar.c, include/asterisk/res_pjsip.h: Store
SIP User-Agent information in contacts. When an endpoint sends a
REGISTER request to Asterisk, we now will associate the
User-Agent header with all contacts that were bound in that
REGISTER request. ........ Merged revisions 408270 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-16 03:25 +0000 [r408199-408227] Matthew Jordan <mjordan@digium.com>
* /, main/pbx.c: pbx: Handle a completely empty dialplan during a
context merge It is highly unlikely, but - at least in Asterisk
12 - theoretically possible to load Asterisk with no dialplan
whatsoever. If that occurs, and some other module (that is not a
pbx module) attempts to merge its contexts into the dialplan, the
existing merge routine will crash. This is because it is not
insane, and rightly believes that you provided some sort of
dialplan, somewhere. This patch will gracefully merge the
contexts in such a case. Note that this is highly unlikely to
occur in 1.8/11, as features will most likely provide some
dialplan via parking. However, in Asterisk 12, parking is now
provided by res_parking, and hence may create its dialplan later.
(closes issue ASTERISK-23297) Reported by: CJ Oster Review:
https://reviewboard.asterisk.org/r/3222 ........ Merged revisions
408200 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 408201 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408220 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, Makefile: buildsystem: Unbreak the build (infloop) on Asterisk
11+ Apparently r408084 ( https://reviewboard.asterisk.org/r/3212/
) broke the build. This patch fixes it by ignoring the .lastclean
dependencies if the MENUSELECT_EMBED variable is not defined.
patches: tmp.diff uploaded by wdoekes (License 5674) Review:
https://reviewboard.asterisk.org/r/3228/ ........ Merged
revisions 408193 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408194 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-14 21:44 +0000 [r408139-408141] Scott Griepentrog <sgriepentrog@digium.com>
* main/stasis_endpoints.c, /: ARI: correct upper/lower case URI
discrepancies URI's are supposed to be case sensitive and all
lower case. In practice some portions of URI's in ARI are case
insensitive and others are not, such as TECH, which in one
instance would match a lower case name and in another would not.
In this patch, the ast_endpoint_lastest_snapshot() function is
modified to change the TECH portion to full upper case before
lookup. This resolves the discrepancy noted by the reporter.
However I chose to avoid forcing the /ari prefix of the URI's to
be lower case for now. Except for the two cases here, all URI's
should be lower case, unless they are part of a resource name or
id. Review: https://reviewboard.asterisk.org/r/3211/ Reported by:
Zane Conkle (closes issue ASTERISK-23125) ........ Merged
revisions 408140 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/format.c, /: format.c: correct possible null pointer
dereference In ast_format_sdp_parse and ast_format_sdp_generate
the check checks for a valid interface and function were
potentially confusing, and hid an error in the test of the
presence of the function that is called later. This patch clears
up and corrects the test. Review:
https://reviewboard.asterisk.org/r/3208/ (closes issue
ASTERISK-23098) Reported by: marcelloceschia Patches:
main_format.patch uploaded by marcelloceschia (license 6036)
ASTERISK-23098.patch uploaded by coreyfarrell (license 5909)
........ Merged revisions 408137 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408138 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-14 13:31 +0000 [r408086] Walter Doekes <walter+asterisk@wjd.nu>
* Makefile, /: buildsystem: Don't force main to depend on
everything else. Directory 'main' only needs to depend on
embedded modules. If no module embedding is selected, the
dependency is dropped. Review:
https://reviewboard.asterisk.org/r/3212/ ........ Merged
revisions 408083 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 408084 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 408085 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-14 12:41 +0000 [r408070] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: chnan_sip: Set SIP_DEFER_BYE_ON_TRANSFER
prior to calling bridge blind transfer This patch moves setting
SIP_DEFER_BY_ON_TRANSFER prior to calling
ast_bridge_transfer_blind. This prevents a BYE from being sent
prior to the NOTIFY request that informs the transferor if the
transfer succeeded or failed. This patch also clears said flag
from the off nominal NOTIFY paths in the local_attended_transfer
code, as once we've sent the NOTIFY request it is safe to send by
the BYE request. This was caught by the
blind-transfer-accountcode test in the Asterisk Test Suite.
(closes issue ASTERISK-23290) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3214/ ........ Merged
revisions 408069 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-14 08:52 +0000 [r408059] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* Makefile, build_tools/install_subst (added): install_subst:
helper script for installing with path substitution A helper
script to copy a source file substituting any
__ASTERISK_<foo>_DIR__ with the content of $AST<foo>DIR. Review:
https://reviewboard.asterisk.org/r/3202/
2014-02-13 18:52 +0000 [r407990-408006] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pubsub.c, /, res/res_pjsip_mwi.c: Remove all PJSIP
MWI-specific use from our MWI code. PJSIP has built-in MWI code
that could be useful to some degree, but our utilization of the
API actually made our code a bit more cluttered since we had to
have special cases peppered throughout. With this change, we move
to using the pjsip_evsub API instead, which streamlines the code
by removing special cases. Review:
https://reviewboard.asterisk.org/r/3205 ........ Merged revisions
408005 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/location.c: Fix crash in AMI PJSIPShowEndpoint
action. If an AOR has no permanent contacts, then the
permanent_contacts container is never allocated. This makes the
code safe in the face of NULLs. I also changed the variable that
counts contacts from "num" to "total_contacts" since there are
now two variables that are indicate numbers of things. ........
Merged revisions 407988 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-13 15:51 +0000 [r407989] Kinsey Moore <kmoore@digium.com>
* main/logger.c, CHANGES: Logger: Add dynamic logger channels This
adds the ability to dynamically add and remove logger channels
from Asterisk via the CLI. (closes issue AST-1150) Review:
https://reviewboard.asterisk.org/r/3185/
2014-02-12 08:25 +0000 [r407970] Walter Doekes <walter+asterisk@wjd.nu>
* /, main/config.c: realtime: Fix ast_update2_realtime() on
raspberry pi. The old code depended on undefined va_arg
behaviour: calling a function twice with the same va_list
parameter and expecting it to continue where it left off. The
changed code behaves like the manpage says it should. Also added
a bunch of early returns to trap errors (e.g. OOM) instead of
crashing. The problem was found by Julian Lyndon-Smith. The
deviant behaviour on the raspberry PI also uncovered another bug
(fixed in r407875) in the res_config_pgsql.so driver. Reported
by: jmls Tested by: jmls Review:
https://reviewboard.asterisk.org/r/3201/ ........ Merged
revisions 407968 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-11 20:17 +0000 [r407958] Joshua Colp <jcolp@digium.com>
* main/sched.c: scheduler: Remove hashtab usage. This is a first
stab at tweaking the performance profile of the scheduler.
Removing the hashtab usage removes an extra memory allocation
when scheduling something and makes it so rescheduling does not
incur any memory allocation at all. Review:
https://reviewboard.asterisk.org/r/3199/
2014-02-11 03:18 +0000 [r407940] Matthew Jordan <mjordan@digium.com>
* res/ari/resource_channels.c, /: ari/resource_channels: Add
channel variables earlier in the creation process This patch
tweaks the behaviour of POST /channels with channel variables
such that the variables are passed into the pbx.c routines that
perform the origination. This allows the variables to be assigned
to the newly created channels immediately upon their
construction, as opposed to be assigned after the originate has
completed. The upshot of this is that the variables are available
on the channels if they execute in the dialplan, as opposed to
only being available once the channels are answered. Review:
https://reviewboard.asterisk.org/r/3183/ ........ Merged
revisions 407937 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-10 18:28 +0000 [r407926] Corey Farrell <git@cfware.com>
* channels/sip/include/reqresp_parser.h,
channels/sip/include/route.h (added), channels/chan_sip.c,
channels/sip/route.c (added), channels/sip/include/sip.h:
chan_sip: Isolate code that manages struct sip_route. * Move
route code to sip/route.c + sip/include/route.h * Rename
functions to sip_route_* * Replace ad-hoc list code with macro's
from linkedlists.h * Create sip_route_process_header() to
processes Path and Record-Route headers (previously done with
different code in build_route and build_path) * Add use of const
where possible * Move struct uriparams, struct contact and
contactliststruct from sip.h to reqresp_parser.h. sip/route.c
uses reqresp_parser.h but not sip.h, this was a problem. These
moved declares are not used outside of reqresp_parser. * While
modifying reqprep() the lack of {} caused me trouble. I added
them. * Code outside route.c treats sip_route as an opaque
structure, using macro's or procedures for all access. (closes
issue ASTERISK-22582) Reported by: Corey Farrell Review:
https://reviewboard.asterisk.org/r/3173/
2014-02-10 16:49 +0000 [r407876] Walter Doekes <walter+asterisk@wjd.nu>
* res/res_config_pgsql.c, /: res_config_pgsql: Fix
ast_update2_realtime calls. Fix so multiple updates from a single
call works (add missing ','). Remove bogus ast_free's that
weren't supposed to be there. Moved a few spaces for readability.
Review: https://reviewboard.asterisk.org/r/3194/ ........ Merged
revisions 407873 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407874 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407875 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-10 16:01 +0000 [r407859] Kinsey Moore <kmoore@digium.com>
* apps/app_confbridge.c, apps/confbridge/conf_state_multi_marked.c,
apps/confbridge/conf_state_empty.c,
apps/confbridge/conf_config_parser.c,
configs/confbridge.conf.sample, /,
apps/confbridge/include/confbridge.h, UPGRADE.txt: ConfBridge:
Correct prompt playback target Currently, when the first marked
user enters the conference that contains waitmarked users, a
prompt is played indicating that the user is being placed into
the conference. Unfortunately, this prompt is played to the
marked user and not the waitmarked users which is not very
helpful. This patch changes that behavior to play a prompt
stating "The conference will now begin" to the entire conference
after adding and unmuting the waitmarked users since the design
of confbridge is not conducive to playing a prompt to a subset of
users in a conference in an asynchronous manner. (closes issue
PQ-1396) Review: https://reviewboard.asterisk.org/r/3155/
Reported by: Steve Pitts ........ Merged revisions 407857 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407858 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-07 20:52 +0000 [r407767] Richard Mudgett <rmudgett@digium.com>
* /, channels/chan_iax2.c: chan_iax2: Add some more iaxs[] NULL
checks to a routine already full of them. ........ Merged
revisions 407764 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407765 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407766 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-07 20:17 +0000 [r407752] Matthew Jordan <mjordan@digium.com>
* /, main/security_events.c: security_events: Fix assertion failure
in dev-mode on optional IE parsing When formatting an optional
IE, the value is, of course, optional. As such, it is entirely
appropriate for ast_json_object_get to return NULL. If that
occurs, we now simply skip the IE that was requested, as it was
not provided by the entity that raised the event. Thanks to
George Joseph (gtjoseph) for catching this and reporting it in
#asterisk-dev ........ Merged revisions 407750 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-07 20:01 +0000 [r407749] Joshua Colp <jcolp@digium.com>
* main/timing.c, res/res_timing_pthread.c, res/res_timing_dahdi.c,
res/res_timing_timerfd.c, include/asterisk/timing.h,
res/res_timing_kqueue.c: timing: Improve performance for most
timing implementations. This change allows timing implementation
data to be stored directly on the timer itself thus removing the
requirement for many implementations to do a container lookup for
the same information. This means that API calls into timing
implementations can directly access the information they need
instead of having to find it. Review:
https://reviewboard.asterisk.org/r/3175/
2014-02-07 19:40 +0000 [r407748] Matthew Jordan <mjordan@digium.com>
* /, funcs/func_cdr.c: funcs/func_cdr: Handle empty time values
when extracting parsed values When extracting timestamps that are
parsed, time stamp values that are not set (time values of
0.000000) should not actually result in a parsed string. The
value should be skipped, and the result of the CDR function
should be an empty string. Prior to this patch, the result was
fed to the time formatting, which would result in an output of a
date/time in 1969. ........ Merged revisions 407747 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-07 18:29 +0000 [r407731] Richard Mudgett <rmudgett@digium.com>
* channels/chan_iax2.c, include/asterisk/frame.h,
configs/iax.conf.sample, /: chan_iax2: Block unnecessary control
frames to/from the wire. Establishing an IAX2 call between
Asterisk v1.4 and v1.8 (or later) results in an unexpected call
disconnect. The problem happens because newer values in the enum
ast_control_frame_type are not consistent between the branch
versions of Asterisk. For example: 1) v1.4 calls v1.8 (or later)
using IAX2 2) v1.8 answers and sends a connected line update
control frame. (on v1.8 AST_CONTROL_CONNECTED_LINE = 22) 3) v1.4
receives the control frame as an end-of-q (on v1.4
AST_CONTROL_END_OF_Q = 22) 4) v1.4 disconnects the call once the
receive queue becomes empty. Several things are done by this
patch to fix the problem and attempt to prevent it from happening
again in the future: * Added a warning at the definition of enum
ast_control_frame_type about how to add new control frame values.
* Made block sending and receiving control frames that have no
reason to go over the wire. * Extended the connectedline iax.conf
parameter to also include the redirecting information updates. *
Updated the connectedline iax.conf parameter documentation to
include a notice that the parameter must be "no" when the peer is
an Asterisk v1.4 instance. (closes issue AST-1302) Review:
https://reviewboard.asterisk.org/r/3174/ ........ Merged
revisions 407678 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407727 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407729 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-07 16:47 +0000 [r407677] Matthew Jordan <mjordan@digium.com>
* /, main/security_events.c: security_events: Fix error caused by
DTD validation error The appdocsxml.dtd specifies that a
"required" attribute in a parameter may have a value of yes, no,
true, or false. On some systems, specifying "False" instead of
"false" would cause a validation error. This patch fixes the
casing to explicitly match the DTD. ........ Merged revisions
407676 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-07 13:15 +0000 [r407625] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* /, configs/indications.conf.sample: indications.conf: add stutter
tone; end properly * If the "stutter" (voicemail indication) tone
is indeed a stutter tone, and it ends with a constant tone, make
sure that it is the dial tone. This was done for India (in),
Mexico (mx) and the Philippines (ph). * If no "stutter" tone
exists for a country, provide one. This was done for Spain (es),
Malaysia (my) and Venezuela (ve). Review:
https://reviewboard.asterisk.org/r/3158/ ........ Merged
revisions 407622 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407623 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407624 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-06 21:24 +0000 [r407602] Matthew Jordan <mjordan@digium.com>
* /, main/security_events.c, UPGRADE.txt, CHANGES: security_events:
Add AMI documentation; output optional fields This patch adds
documentation for the Security Events that are emited over AMI.
It also notes these events in the UPGRADE/CHANGES file. ........
Merged revisions 407589 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-06 19:58 +0000 [r407588] Rusty Newton <rnewton@digium.com>
* /, configs/pjsip.conf.sample: configs/pjsip.conf.sample:
Configuration section naming in pjsip.conf.sample needs a little
clarification There is a bit of nuance to how you name things in
pjsip.conf. This is a documentation patch to at least clear it up
a little for users. Review:
https://reviewboard.asterisk.org/r/3180/ ........ Merged
revisions 407587 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-06 18:11 +0000 [r407574] Kevin Harwell <kharwell@digium.com>
* /,
contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py:
pjsip realtime: already created enum failure for postgresql If an
enum had been previously created the alembic script would attempt
to re-create it and an error would be generated while running
migrations for a postgresql server. The work around for this is
to use the ENUM object type for postgres as opposed to the
generic enum type used by sqlalchemy. Using this type in the
script seems to work properly for both postgres and mysql.
........ Merged revisions 407572 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-06 17:55 +0000 [r407573] Richard Mudgett <rmudgett@digium.com>
* res/res_pjsip_logger.c,
res/res_pjsip/include/res_pjsip_private.h,
res/res_pjsip/pjsip_options.c, res/res_pjsip/config_transport.c,
include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c,
res/res_pjsip/config_auth.c, /, res/res_pjsip/location.c,
res/res_pjsip_outbound_registration.c,
res/res_pjsip_endpoint_identifier_ip.c,
include/asterisk/res_pjsip_cli.h, res/res_pjsip/pjsip_cli.c,
res/res_pjsip/pjsip_configuration.c,
res/res_pjsip/config_domain_aliases.c: res_pjsip: Updates and
adds more PJSIP CLI commands. * Adds identify, transport, and
registration support to the PJSIP CLI. * Creates three additional
callbacks, one for an iterator, one for a comparator, and one for
a container. This eliminates the link dependency from higher
level modules to lower level ones. * Eliminates duplicate sorting
in PJSIP CLI commands. * Cleans up PJSIP CLI output formatting. *
Pushes CLI command registration down to the implementing source
file. * Adds several ast_sip_destroy_sorcery functions to
complement existing ast_sip_sorcery_initialize functions. The
destroy functions unregister PJSIP CLI commands and PJSIP CLI
formatters. Reported by: George Joseph Review:
https://reviewboard.asterisk.org/r/3104/ ........ Merged
revisions 407568 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-05 23:04 +0000 [r407514] Rusty Newton <rnewton@digium.com>
* /, formats/format_wav.c: formats/format_wav: enhancing log
message "Not a wav file" to be clear on what is supported
Modifying the log message to be more specific as to what is
supported. Specifically it seems format_wav supports only PCM
encoded versions with a lower-case '.wav' extension. (closes
issues ASTERISK-22310) Reported by: Jim Credland Review:
https://reviewboard.asterisk.org/r/3188/ ........ Merged
revisions 407511 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407512 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407513 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-05 20:56 +0000 [r407462] Jonathan Rose <jrose@digium.com>
* CHANGES, /: CHANGES: Improved description of Name/Creator changes
to bridge ARI, adds AMI The changes log was written with language
that was a little too internal Asterisk specific, so it's been
changed to be more in the frame of reference of an ARI user.
Also, previously the AMI event changes were omitted from the
change log as well as the ability to include a bridge name in the
ARI post bridges command. ........ Merged revisions 407461 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-05 20:43 +0000 [r407459] Kinsey Moore <kmoore@digium.com>
* main/logger.c, /: Logger: Fix handling of absolute paths This
fixes path handling for log files so that an extra / is not
appended to the file path when the path is absolute (begins with
/). This would previously result in different but functionally
equivalent paths in the output of 'logger show channels'.
........ Merged revisions 407455 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407456 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407458 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-05 19:42 +0000 [r407443] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip/config_global.c, /: res_pjsip: When no global type
the debug option defaults to "yes" If the global section was not
specified in pjsip.conf then the configuration object does not
exist in sorcery so when retrieving "debug" option it would
return NULL. Then the NULL result was passed to ast_false utils
function which would return false because it wasn't set to some
representation of false, thus enabling sip debug logging. Made it
so if the global config object does not exist then it will return
a default of "no" for sip debugging. (issue ASTERISK-23038)
Reported by: Rusty Newton ........ Merged revisions 407442 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-05 17:42 +0000 [r407422-407425] Jonathan Rose <jrose@digium.com>
* CHANGES: CHANGES: Update changes log to include r403414 entry
Adds note of additional 0 for operator option on app_record
* CHANGES, /: CHANGES: Update changes log to include new bridge
fields added in r404042 ........ Merged revisions 407419 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-05 15:29 +0000 [r407407] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/playbacks.json, UPGRADE.txt,
rest-api/api-docs/sounds.json, rest-api/resources.json, CHANGES,
include/asterisk/manager.h, rest-api/api-docs/bridges.json,
rest-api/api-docs/deviceStates.json,
rest-api/api-docs/mailboxes.json,
rest-api/api-docs/asterisk.json,
rest-api/api-docs/applications.json,
rest-api/api-docs/channels.json,
rest-api/api-docs/recordings.json,
rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json,
/: ARI/AMI: Update versions; update UPGRADE/CHANGES notes for
12.1.0 changes Due to backwards compatible changes made to
AMI/ARI, the version needs to be bumped to 1.1.0/2.1.0,
respectively. ........ Merged revisions 407402 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-04 20:15 +0000 [r407275-407340] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/devicestate.h, /, main/devicestate.c:
devicestate: Make ast_devstate_changed_literal() return value and
doxygen consistent. Nothing actually cares about the value
anyway. (closes issue ASTERISK-23178) Reported by: Jonathan Rose
........ Merged revisions 407337 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407338 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407339 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Fix assertion
for pjsip.conf authorization list options. (closes issue
ASTERISK-23168) Reported by: George Joseph Review:
https://reviewboard.asterisk.org/r/3143/ ........ Merged
revisions 407324 from
http://svn.asterisk.org/svn/asterisk/branches/12
* configs/sip.conf.sample, main/tcptls.c, /: tcptls.c: Made TLS
handle a certificate chain file. Thanks to Guillaume Martres for
doing the necessary research to validate the change. (closes
issue ASTERISK-17727) Reported by: LN Patches:
use_certificate_chain.patch (license #5864) patch uploaded by st
documente_certificate_chain.patch (license #6576) patch uploaded
by Guillaume Martres ........ Merged revisions 407272 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407273 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407274 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-04 16:55 +0000 [r407260] Matthew Jordan <mjordan@digium.com>
* /, funcs/func_cdr.c: funcs/func_cdr: Fix non-epoch timestamps
broken by improper char array deref Thanks to snuffy for pointing
this issue out and fixing it. (closes issue ASTERISK-23250)
Reported by: snuffy patches: func_cdr-fix.diff uploaded by snuffy
(License 5024) ........ Merged revisions 407259 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-04 02:22 +0000 [r407217] Joshua Colp <jcolp@digium.com>
* res/res_clialiases.c, /: res_clialiases: Fix crash when reloading
and re-aliasing an alias that is in use. The code assumed that
unregistering the alias would always succeed while in practice
this is not actually true. A common case is the "reload" command
itself. If the cli_aliases.conf configuration file was changed
and reload executed the command would fail to unregister and
ultimately point to freed memory. The reload process now checks
whether unregistering succeeded or not and if not the old CLI
alias is retained. (closes issue ASTERISK-19773) Reported by:
Joel Vandal (closes issue ASTERISK-22757) Reported by: Gareth
Blades ........ Merged revisions 407205 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407210 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407213 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-04 02:07 +0000 [r407198] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Skinny - Fix deadlock when pickup of
no call. Locking issues in skinny when picking up a call that
doesn't exist. Cleaned up sub locking by fully removing and using
the chan lock instead. Also changed ast_call_pickup to check
whether chan was masq'd. (closes issue ASTERISK-23249) Reported
by: wedhorn Tested by: snuffy, myself Patches:
skinny-locking01.diff uploaded by wedhorn (license 5019) ........
Merged revisions 407197 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-03 01:31 +0000 [r407169] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /: cdrs: Check for applications to lock onto during
dial begin handling This patch brings CDR processing further in
line with r407085. During some dial operations, the application
would not be locked to the Dial application and would instead
continue to show the previously known application. In particular,
this would occur when a Parked call would time out. This was due
to a previous snapshot already locking the application to Park -
processing this in a Dial Begin allows the Dial application to
reassert its rightful place. (CDRs. Ugh.) But hooray for the
Parked Call tests for catching this in the Asterisk Test Suite.
........ Merged revisions 407166 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-01 16:26 +0000 [r407154] Joshua Colp <jcolp@digium.com>
* res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /,
res/stasis/app.c, res/ari/ari_model_validators.c,
res/res_stasis.c, main/stasis_bridges.c: res_stasis: Enable
transfers and provide events when they occur. This change enables
transfers within ARI created bridges and adds events for when
they occur. Unlike other events these will be received if *any*
subscribed object is involved in the transfer. (closes issue
ASTERISK-22984) Reported by: David M. Lee Review:
https://reviewboard.asterisk.org/r/3120/ ........ Merged
revisions 407153 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-02-01 00:25 +0000 [r407105] Corey Farrell <git@cfware.com>
* apps/app_stack.c, /: app_stack: protect against missing
parameters to STACK_PEEK and LOCAL_PEEK STACK_PEEK requires 2
parameters and LOCAL_PEEK requires 1 parameter. This protects
against situations where those parameters are blank or missing by
logging an error and returning. (closes issue ASTERISK-23220)
Reported by: James Sharp ........ Merged revisions 407100 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 407103 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407104 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-31 23:40 +0000 [r407083-407085] Matthew Jordan <mjordan@digium.com>
* apps/app_dial.c, main/cdr.c, main/pbx.c, /, main/bridge_after.c,
UPGRADE.txt, main/manager_channels.c: CDRs: fix a variety of dial
status problems, h/hangup handler creating CDRs This patch fixes
a number of small-ish problems that were noticed when witnessing
the records that the FreePBX dialplan produces: (1) Mid-call
events (as well as privacy options) have the ability to change
the overall state of the Dial operation after the called party
answers. This means that publishing the DialEnd event when the
called party is premature; we have to wait for the execution of
these subroutines to complete before we can signal the overall
status of the DialEnd. This patch moves that publication and adds
handlers for the mid-call events. (2) The AST_FLAG_OUTGOING
channel flag is cleared if an after bridge goto datastore is
detected. This flag was preventing CDRs from being recorded for
all outbound channels that had a 'continue' option enabled on
them by the Dial application. (3) The CDR engine now locks the
'Dial' application as being the CDR application if it detects
that the current CDR has entered that app. This is similar to the
logic that is done for Parking. In general, if we entered into
Dial, then we want that CDR to record the application as such -
this prevents pre-dial handlers, mid-call handlers, and other
shenaniganry from changing the application value. (4) The CDR
engine now checks for the AST_SOFTHANGUP_HANGUP_EXEC in more
places to determine if the channel is in hangup logic or dead. In
either case, we don't want to record changes in the channel. (5)
The default option for "endbeforehexten" has been changed to
"yes". In general, you don't want to see CDRs in the 'h' exten or
in hangup logic. Since the semantics of that option changed in
12, it made sense to update the default value as well. (6)
Finally, because we now have the ability to synchronize on the
messages published to the CDR topic, on shutdown the CDR engine
will now synchronize to the messages currently in flight. This
helps to ensure that all in-flight CDRs are written before
shutting down. (closes issue ASTERISK-23164) Reported by: Matt
Jordan Review: https://reviewboard.asterisk.org/r/3154 ........
Merged revisions 407084 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_dial.c, /: app_dial: Allow macro/gosub pre-bridge
execution to occur on priorities The parsing for the destination
of the macro/gosub uses the '^' character to separate out
context, extension, and priority. However, the logic for the
macro/gosub execution was written such that it would only do the
actual macro/gosub jump if a '^' character existed. This doesn't
apply when the macro/gosub jump occurs in a priority/priority
label. This patch changes the logic so that the parsing still
occurs, but the jump will occur even for priorities/priority
labels. (issue ASTERISK-23164) Review:
https://reviewboard.asterisk.org/r/3154 ........ Merged revisions
407041 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 407074 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 407082 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-31 23:15 +0000 [r407035-407037] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_logger.c, CHANGES, res/res_pjsip.c,
include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c,
contrib/ast-db-manage/config/versions/21e526ad3040_add_pjsip_debug_option.py
(added), /, configs/pjsip.conf.sample, UPGRADE.txt: res_pjsip:
Config option to enable PJSIP logger at load time. Added a
"debug" configuration option for res_pjsip that when set to "yes"
enables SIP messages to be logged. It is specified under the
"system" type. Also added an alembic script to add the option to
realtime. (closes issue ASTERISK-23038) Reported by: Rusty Newton
Review: https://reviewboard.asterisk.org/r/3148/ ........ Merged
revisions 407036 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_exten_state.c, /: res_pjsip_exten_state: Exporting
global symbols caused load order issues Removed the exportation
of global symbols from the module as it is no longer needed and
it could potentially cause load problems as on some systems it
would try to load before res_pjsip_pubsub ........ Merged
revisions 407034 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-31 23:04 +0000 [r407033] Richard Mudgett <rmudgett@digium.com>
* CHANGES, apps/app_chanspy.c: ChanSpy: Add ability to specify
channel uniqueids as well as channel names. * Made ChanSpy accept
a channel uniqueid or a fully specified channel name as the
chanprefix parameter if the 'u' option is specified. (closes
issue AFS-42) Review: https://reviewboard.asterisk.org/r/3160/
2014-01-31 22:39 +0000 [r407030-407032] Mark Michelson <mmichelson@digium.com>
* include/asterisk/res_pjsip_presence_xml.h (added), /: Add file
that apparently got missed in the merge. ........ Merged
revisions 407031 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pidf_body_generator.c (added),
include/asterisk/res_pjsip_exten_state.h (removed),
res/res_pjsip_pubsub.exports.in, /,
include/asterisk/res_pjsip_body_generator_types.h (added),
res/res_pjsip_mwi.c, res/res_pjsip_xpidf_body_generator.c
(added), res/res_pjsip_mwi_body_generator.c (added),
res/res_pjsip_pubsub.c, res/res_pjsip_pidf.c (removed),
res/res_pjsip_pidf_eyebeam_body_supplement.c (added),
res/res_pjsip_exten_state.c, res/res_pjsip/presence_xml.c
(added), include/asterisk/res_pjsip_pubsub.h: Decouple
subscription handling from NOTIFY/PUBLISH body generation. When
the PJSIP pubsub framework was created, subscription handlers
were required to state what event they handled along with what
body types they knew how to generate. While this serves well when
implementing a base RFC, it has problems when trying to extend
the body to support non-standard or proprietary body elements.
The code also was NOTIFY-specific, meaning that when the time
comes that we start writing code to send out PUBLISH requests
with MWI or presence bodies, we would likely find ourselves
duplicating code that had previously been written. This changeset
introduces the concept of body generators and body supplements. A
body generator is responsible for allocating a native structure
for a given body type, providing the primary body content,
converting the native structure to a string, and deallocating
resources. A body supplement takes the primary body content (the
native structure, not a string) generated by the body generator
and adds nonstandard elements to the body. With these elements
living in their own module, it becomes easy to extend our support
for body types and to re-use resources when sending a PUBLISH
request. Body generators and body supplements register themselves
with the pubsub core, similar to how subscription and publish
handlers had done. Now, subscription handlers do not need to know
what type of body content they generate, but they still need to
inform the pubsub core about what the default body type for a
given event package is. The pubsub core keeps track of what body
generators and body supplements have been registered. When a
SUBSCRIBE arrives, the pubsub core will check that there is a
subscription handler for the event in the SUBSCRIBE, then it will
check that there is a body generator that can provide the content
specified in the Accept header(s). Because of the nature of body
generators and supplements, it means res_pjsip_exten_state and
res_pjsip_mwi have been completely gutted. They no longer worry
about body types, instead calling
ast_sip_pubsub_generate_body_content() when they need to generate
a NOTIFY body. Review: https://reviewboard.asterisk.org/r/3150
........ Merged revisions 407016 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-31 22:23 +0000 [r407015-407029] Kevin Harwell <kharwell@digium.com>
* contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py,
contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py,
/, UPGRADE.txt: alembic: script modifications due to errors A
couple of the scripts had errors that would not allow a full
migration to take place. The extensions table needed to make its
'id' column a primary key in order to work with mysql. The other
script ...add_endpoints... was missing tables that it was trying
to add columns to. Added the primary key on id for extensions and
added the tables in for the missing pjsip configuration options.
While it is not ideal to modify already released scripts this was
a case where it had to be done due to errors in the script and
lacking a better alternative. Review:
https://reviewboard.asterisk.org/r/3167/ ........ Merged
revisions 407019 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_mwi.c: res_pjsip_mwi: Subscribe fails when
missing aor name When subscribing to MWI (res_pjsip_mwi) and the
sip uri did not contain a name (ex: sip:<ip address>) then the
subscription would fail since it would be unable to locate an
associated aor. This patch makes it so that when a subscribe
comes with no aor name then it will subscribe to all aors on the
located endpoint. (closes issue ASTERISK-23072) Reported by: Bob
M Review: https://reviewboard.asterisk.org/r/3164/ ........
Merged revisions 407014 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-31 15:08 +0000 [r407001] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip_nat.c, /: PJSIP: Fix address for ACK in NAT
situations In NAT scenarios where a call is placed to a
Grandstream phone, res_pjsip will sometimes send the ACK to a 200
OK to the private address of the device behind the NAT instead of
the address of the NAT device. This corrects that behavior by
rewriting the address in the Contact header in the incoming 200
OK and the dialog's target address if necessary (since it has
already been rewritten to the incorrect private address). (closes
issue ASTERISK-23106) Review:
https://reviewboard.asterisk.org/r/3168/ Reported by: Matt Jordan
........ Merged revisions 407000 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-31 05:31 +0000 [r406988] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Skinny: fix up possible double unlock
of chan. Return before chan is possibly unlocked a second time
when hanging up a channel in SUBSTATE_OFFHOOK. ........ Merged
revisions 406987 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-30 20:36 +0000 [r406936] Corey Farrell <git@cfware.com>
* main/udptl.c, res/res_rtp_asterisk.c, /: res_rtp_asterisk &
udptl: fix port selection to work with SELinux restrictions
ast_bind to a port reserved for another program by SELinux causes
errno == EACCES. This caused random failures when binding rtp or
udptl sockets. Treat EACCES as a non-fatal error, try next port.
(closes issue ASTERISK-23134) Reported by: Corey Farrell ........
Merged revisions 406933 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406934 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406935 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-30 17:35 +0000 [r406920] Sean Bright <sean@malleable.com>
* main/manager.c, /: Make a NOTICE about an invalid channel name
more useful. ........ Merged revisions 406918 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406919 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-29 00:44 +0000 [r406863] Russell Bryant <russell@russellbryant.com>
* /, configs/queues.conf.sample: queues.conf.sample Fix documented
default for persistentmembers Closes issue ASTERISK-22662
........ Merged revisions 406860 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406861 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406862 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-28 23:40 +0000 [r406789-406848] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_pubsub.c, /: res_pjsip_pubsub: potential crash on
timeout What seems to be happening is if a subscription has been
terminated and the subscription timeout/expires is less than the
time it takes for all pending transactions (currently on the
subscription) to end then the subscription timer will not have
been canceled yet and sub will be null. Since the subscription
has already been canceled nothing needs to be done so a null
check in the asterisk code is sufficient in working around this
problem. (closes issue ASTERISK-23129) Reported by: Dan Jenkins
........ Merged revisions 406847 from
http://svn.asterisk.org/svn/asterisk/branches/12
* cdr/cdr_radius.c, cel/cel_radius.c, /, configure,
include/asterisk/autoconfig.h.in, configure.ac: cdr_radius,
cel_radius: build agains libfreeradius-client Asterisk's RADIUS
module currently build against libradiusclient-ng, but this
project has been superseeded by libfreeradius-client. The API is
99% compatible except that the header name has changed, the
library name has changed, and the configuration file location has
changed. (closes issue ASTERISK-22980) Reported by: Jeremy Lainé
Patches: freeradius-client.patch uploaded by sharky (license
6561) ........ Merged revisions 406801 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406802 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406803 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip/include/res_pjsip_private.h, /,
include/asterisk/compat.h: res_pjsip,compat: INFINITY and NAN
undefined On some systems the values for INFINITY and NAN are not
defined thus causing a build error on those systems. Added
definitions for those if they had not previously been defined.
(closes issue ASTERISK-23056) Reported by: capouch Patches:
inf-nan-patch.txt uploaded by capouch (license 6564) ........
Merged revisions 406788 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-28 19:19 +0000 [r406778] Kinsey Moore <kmoore@digium.com>
* /, res/res_stasis_device_state.c: ARI: Make double subscribe
respond with success Currently, attempting to subscribe an
application to a device state that it has already subscribed to
will generate a 500 error response. This will now be treated as a
subscription refresh even though ARI subscriptions don't
currently support lifetimes and will respond with the normal
response for a successful subscription (200 OK). (closes issue
ASTERISK-23143) Reported by: Matt Jordan ........ Merged
revisions 406775 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-28 16:43 +0000 [r406724] Scott Griepentrog <sgriepentrog@digium.com>
* main/rtp_engine.c, /: rtp_engine: improved handling of
get_rtp_info failure In ast_rtp_instance_make_compatible(), after
a failure of channel tech call get_rtp_info() to return
peer_instance, the null pointer would be passed to ao2_ref,
producing an error that looked like a refernce counting problem
but is not. This patch corrects that and adds helpful LOG_ERROR
messages to indicate which failure path occurred. (issue
AST-1276) Review: https://reviewboard.asterisk.org/r/3156/
........ Merged revisions 406721 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406722 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406723 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-28 00:20 +0000 [r406710] Richard Mudgett <rmudgett@digium.com>
* /, tests/test_cel.c, tests/test_cdr.c: test_cdr.c, test_cel.c:
Correctly destroy created bridges. * Fixed the
test_cel_attended_transfer_bridges_link unit test to also account
for the local channel link being destroyed now that the bridges
are actually destroyed. * Made CDR unit test use its own version
of do_sleep() from the CEL unit tests. ........ Merged revisions
406707 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-27 22:54 +0000 [r406647-406696] Kevin Harwell <kharwell@digium.com>
* CHANGES: manager: ExtensionStatus event status human readable
Added a note in the changes file about the new 'StatusText' field
that was added to the 'ExtensionStatus' event. (issue
ASTERISK-23154) Reported by: Jonathan Rose
* main/manager.c: manager: ExtensionStatus event status human
readable When an 'ExtensionStatus' event was raised it included
the status as a numerical value, but did not include a text
description of the status. Added a 'StatusText' field to the
event which is a string representation of the extension status.
Also added this to the 'Extension State' command response.
(closes issue ASTERISK-23154) Reported by: Jonathan Rose
2014-01-27 20:38 +0000 [r406646] Russell Bryant <russell@russellbryant.com>
* main/config.c, /: Allow nested #includes in extconfig.conf
extconfig.conf was hard-coded to not allow nested includes for
some reason. The code has been this way since a patch was merged
for ASTERISK-3333 (revision 4889), which was a significant update
to this code ("Merge config updates"). I can't figure out any
good reason why this should be limited. This patch just removes
the limit and uses the default nesting depth limit. Closes issue
ASTERISK-17837 Review: https://reviewboard.asterisk.org/r/3159/
........ Merged revisions 406643 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406644 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406645 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-27 08:17 +0000 [r406618] Walter Doekes <walter+asterisk@wjd.nu>
* main/manager.c, UPGRADE.txt, configs/manager.conf.sample:
manager: The eventfilter= option now takes an extended regex. In
pre-trunk versions (...12) it accepts a basic regex, which is
confusing because all other regexes in asterisk are of the
extended kind. Review: https://reviewboard.asterisk.org/r/3147/
2014-01-27 01:25 +0000 [r406595] Russell Bryant <russell@russellbryant.com>
* main/file.c, include/asterisk/channel.h, main/channel.c, /:
Protect ast_filestream object when on a channel The
ast_filestream object gets tacked on to a channel via
chan->timingdata. It's a reference counted object, but the
reference count isn't used when putting it on a channel. It's
theoretically possible for another thread to interfere with the
channel while it's unlocked and cause the filestream to get
destroyed. Use the astobj2 reference count to make sure that as
long as this code path is holding on the ast_filestream and
passing it into the file.c playback code, that it knows it's
valid. Bug reported by Leif Madsen. Review:
https://reviewboard.asterisk.org/r/3135/ ........ Merged
revisions 406566 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406567 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406574 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-26 23:04 +0000 [r406517] Richard Mudgett <rmudgett@digium.com>
* /, main/tcptls.c: tcptls.c: Add missing cleanup on off nominal
path. ........ Merged revisions 406514 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406515 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406516 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-26 14:19 +0000 [r406503] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* contrib/scripts/live_ast: live_ast: run wrapped programs with
exec live_ast can be used as a wrapper script to run asterisk,
gdb or valgrind. In those cases it runs them and returns the
result. It is more useful to use 'exec' to avoid having another
odd process in the chain. Review:
https://reviewboard.asterisk.org/r/3110/
2014-01-26 02:11 +0000 [r406490] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, /: res_pjsip_session: Be less strict
with core requested outgoing capabilities. The core may
(depending on circumstances) request a single codec on outgoing
calls. Many channel drivers ignore or treat this as a suggestion
while still including configured codecs. The res_pjsip_session
logic treated this as an explicit request, leaving out other
configured codecs. This change makes res_pjsip_session behave
like other channel driver and simply adds the requested codec to
the list. (closes issue ASTERISK-23082) Reported by: xrobau
Review: https://reviewboard.asterisk.org/r/3140/ ........ Merged
revisions 406489 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-24 23:33 +0000 [r406466] Richard Mudgett <rmudgett@digium.com>
* /, main/cel.c: CEL: Protect data structures during reload and
shutdown. The CEL data structures need to be protected during a
configuration reload and shutdown. Asterisk crashed during a
shutdown because CEL events were still in flight and the CEL data
structures were already destroyed. * Protected the cel_backends,
cel_dialstatus_store, and cel_linkedids ao2 containers with a
global ao2 object wrapper. * Added NULL checks before use of the
cel_backends, cel_dialstatus_store, and cel_linkedids ao2
containers in case the CEL module is already shutdown. * Fixed
overloading of the cel_linkedids held objects reference count.
During shutdown any held objects would be leaked. * Fixed memory
leak of cel_linkedids held objects if the LINKEDID_END is not
being tracked. The objects in the cel_linkedids container were
not removed if the LINKEDID_END event is not used. * Added access
protection to the cel_backends container during the CLI "cel show
status" command. * Made cel_backends, cel_dialstatus_store, and
cel_linkedids use the standard ao2 callback templates for the
hash and cmp functions. * Eliminated unnecessary uses of
RAII_VAR(). * Made ast_cel_engine_init() cleanup alocated
resources on failure. (closes issue AST-1253) Reported by:
Guenther Kelleter Review:
https://reviewboard.asterisk.org/r/3128/ ........ Merged
revisions 406417 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406418 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406465 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-24 22:34 +0000 [r406416] Jonathan Rose <jrose@digium.com>
* main/utils.c, CHANGES: Thread Debugging: Add LWP to core show
locks output This patch adds the LWP to core show locks output if
it is available. Review: https://reviewboard.asterisk.org/r/3142/
2014-01-24 22:18 +0000 [r406407] Richard Mudgett <rmudgett@digium.com>
* main/manager.c, /: manager: Register atexit shutdown routine only
once. * Made register atexit shutdown routine only once in
__init_manager(). * Fixed some initial load failure conditions in
__init_manager(). * Made reset options to defaults on reload when
the reload will actually happen. * Removed unnecessary container
traversals of the white/black filters during manager_free_user().
* ast_free() does not need a NULL check before calling. ........
Merged revisions 406359 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406400 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406401 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-24 21:46 +0000 [r406399] Jonathan Rose <jrose@digium.com>
* res/res_config_pgsql.c, /: res_config_pgsql: Fix a memory leak
and use RAII_VAR for cleanup when practical Review:
https://reviewboard.asterisk.org/r/3141/ ........ Merged
revisions 406360 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406361 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406389 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-24 18:13 +0000 [r406343] Richard Mudgett <rmudgett@digium.com>
* main/manager.c, /: manager: Protect data structures during
shutdown. Occasionally, the manager module would get an
"INTERNAL_OBJ: bad magic number" error on a "core restart
gracefully" command if an AMI connection is established. * Added
ao2_global_obj protection to the sessions global container. *
Fixed the order of unreferencing a session object in
session_destroy(). * Removed unnecessary container traversals of
the white/black filters during session_destructor(). (closes
issue AST-1242) Reported by: Guenther Kelleter Review:
https://reviewboard.asterisk.org/r/3144/ ........ Merged
revisions 406341 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406342 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-23 23:43 +0000 [r406328] Mark Michelson <mmichelson@digium.com>
* /: Today is not my day for writing code that compiles. ........
Merged revisions 406327 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-23 22:56 +0000 [r406312] Michael L. Young <elgueromexicano@gmail.com>
* /, addons/res_config_mysql.c: res_config_mysql: Fix Setting The
Column Name Incorrectly When support for a realtime sorcery
module was added in revision 386731, the wrong property was
accidentally used for setting the column name to be updated in
the database table. This patch fixes the typo. (closes issue
ASTERISK-23177) Reported by: Denis Tested by: Denis Patches:
asterisk-23177-use-field-name.diff by Michael L. Young (license
5026) ........ Merged revisions 406311 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-23 21:18 +0000 [r406298] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pidf.c, /: Multiple revisions 406294-406295
........ r406294 | mmichelson | 2014-01-23 15:00:24 -0600 (Thu,
23 Jan 2014) | 11 lines Fix presence body errors found during
testing: * PIDF bodies were reporting an "open" state in many
cases where it should have been reporting "closed" * XPIDF bodies
had XML nodes placed incorrectly within the hierarchy. * SIP URIs
in XPIDF bodies did not go through XML sanitization * XML
sanitization had some errors: * Right angle bracket was being
replaced with "&rt;" instead of "&gt;" * Double quote,
apostrophe, and ampersand were not being escaped. ........
r406295 | mmichelson | 2014-01-23 15:09:35 -0600 (Thu, 23 Jan
2014) | 11 lines Fix presence body errors found during testing: *
PIDF bodies were reporting an "open" state in many cases where it
should have been reporting "closed" * XPIDF bodies had XML nodes
placed incorrectly within the hierarchy. * SIP URIs in XPIDF
bodies did not go through XML sanitization * XML sanitization had
some errors: * Right angle bracket was being replaced with "&rt;"
instead of "&gt;" * Double quote, apostrophe, and ampersand were
not being escaped. ........ Merged revisions 406294-406295 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-22 22:24 +0000 [r406269] Scott Griepentrog <sgriepentrog@digium.com>
* main/pbx.c, /, utils/extconf.c: pbx.c: Pre-initialize timezone to
avoid crash on destroy In ast_build_timing, initialize the
timezone value to NULL in order to avoid deferencing an
uninitialized value later when calling ast_destroy_timing. The
timezone value could be uninitialized if ast_build_timing were to
fail due to a zero length time string. (closes issue
ASTERISK-22861) Reported by: Sebastian Murray-Roberts Review:
https://reviewboard.asterisk.org/r/3134/ Patches:
ast_build_timing-initialize-timezone.patch uploaded by
coreyfarrell (license 5909) ........ Merged revisions 406241 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406245 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406264 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-22 19:36 +0000 [r406153-406224] Kinsey Moore <kmoore@digium.com>
* /, apps/app_confbridge.c: ConfBridge: Fix channel parameter
documentation Confbridge AMI and CLI commands for mute, unmute,
and setting the single video source can accept channel prefixes
in lieu of a full channel name, but documentation states only
that it is required and is a channel name. This corrects the
documentation. (closes issue PQ-1397) Reported by: Steve Pitts
........ Merged revisions 406217 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406223 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: chan_sip: Decline image streams on
unsupported transports This change allows chan_sip to decline
individual image streams over unsupported transports in the SDP
of the 200 response. Previously, an image stream offer with
RTP/AVP as the transport would cause chan_sip to respond with a
488. (closes issue ASTERISK-22988) Reported by: adomjan Original
patch by: adomjan ........ Merged revisions 406170 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406171 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406172 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_playback.c, /: res_stasis_playback: Correct error
argument order Several of the playback error messages for invalid
media input in res_stasis_playback.c had the media name and
channel name reversed. They now correctly identify the channel
name and media name. Reported by: skrusty ........ Merged
revisions 406152 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-21 21:48 +0000 [r406134] Rusty Newton <rnewton@digium.com>
* /, res/res_pjsip.c: res_pjsip: Documentation improvement for
Endpoint and AOR mailbox options. Making the help text for both
more explicit regarding the format of mailbox identifiers. i.e.
clarifying the format for app_voicemail mailboxes vs mailboxes
from external MWI sources through modules such as
res_external_mwi. ........ Merged revisions 406133 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-21 21:08 +0000 [r406082] Walter Doekes <walter+asterisk@wjd.nu>
* main/manager.c, /, configs/manager.conf.sample: manager: Clarify
eventfilter documentation. Textual changes only. Review:
https://reviewboard.asterisk.org/r/3133/ ........ Merged
revisions 406079 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406080 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406081 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-21 20:28 +0000 [r406006-406078] Kinsey Moore <kmoore@digium.com>
* channels/chan_mgcp.c, /: chan_mgcp: Enforce locking for oseq This
restricts direct usage of global oseq so that all accesses are
locked and threads are not racing to get oseq values that they
did not claim. This also fixes a build error in res_pktccops
under dev mode. (closes issue ASTERISK-23100) Reported by:
adomjan Patch by: adomjan ........ Merged revisions 406037 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 406038 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 406049 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_outbound_registration.c, res/res_pjsip.c: PJSIP:
Handle headers in a list appropriately The PJSIP header parsing
function (pjsip_parse_hdr) can generate more than one header
instance from a single header field. These header instances exist
as a list attached to the returned header and must be handled
appropriately when they are added to a message or else only the
first header instance will be used. This changes the linked list
functions used in outbound proxy code to merge the lists
properly. ........ Merged revisions 406020 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/resource_sounds.h, res/ari/resource_bridges.h,
res/ari/resource_device_states.h, res/ari/resource_mailboxes.h,
res/ari/resource_asterisk.h, rest-api/api-docs/channels.json,
res/ari/resource_applications.h, res/ari/resource_channels.c,
res/res_ari_playbacks.c, res/res_ari_sounds.c,
rest-api-templates/asterisk_processor.py,
res/ari/resource_channels.h, res/res_ari_bridges.c, /,
res/res_ari_device_states.c,
rest-api-templates/ari_resource.h.mustache,
res/res_ari_mailboxes.c, res/res_ari_asterisk.c,
res/res_ari_applications.c,
rest-api-templates/res_ari_resource.c.mustache,
rest-api-templates/body_parsing.mustache (added),
res/res_ari_channels.c, res/ari/resource_playbacks.h,
rest-api-templates/param_parsing.mustache: ARI: Support channel
variables in originate This adds back in support for specifying
channel variables during an originate without compromising the
ability to specify query parameters in the JSON body. This was
accomplished by generating the body-parsing code in a separate
function instead of being integrated with the URI query parameter
parsing code such that it could be called by paths with body
parameters. This is transparent to the user of the API and
prevents manual duplication of code or data structures. (closes
issue ASTERISK-23051) Review:
https://reviewboard.asterisk.org/r/3122/ Reported by: Matt Jordan
........ Merged revisions 406003 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-20 23:25 +0000 [r405985] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Skinny: fix up handling of fragmented
packets. Bad offset in reading second or more fragment of skinny
packets. Fixed to offset by char (single byte) rather than size
of req. ........ Merged revisions 405982 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-20 22:23 +0000 [r405947] Richard Mudgett <rmudgett@digium.com>
* channels/sig_pri.c, /: chan_dahdi/PRI: Suppress CONNECTED_LINE
updates when nothing in the udpate is valid. * Also simplified
some subddress handling code. (closes issue ASTERISK-23008)
Reported by: Michael Cargile ........ Merged revisions 405926
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 405927 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405928 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-20 21:56 +0000 [r405925] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Skinny: fix up session logging.
Logging from the skinny session loop was providing some incorrect
reasons for exiting the loop. Cleaned up messages and handling so
correct reason displayed. ........ Merged revisions 405924 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-20 18:18 +0000 [r405910] Jonathan Rose <jrose@digium.com>
* channels/chan_pjsip.c, /: chan_pjsip: Provide a means for
tracking device state when holding/unholding Previously PJSIP did
not track hold/unhold and it would always simply be 'inuse'. This
patch fixes that. review:
https://reviewboard.asterisk.org/r/3129/ ........ Merged
revisions 405908 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-19 00:01 +0000 [r405894] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Skinny: fix reversed device reset from
CLI. Existing code would do a full device restart when "skinny
reset device" was entered at the CLI and do a reset when "skinny
reset device restart" entered. ........ Merged revisions 405893
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-17 22:09 +0000 [r405878] Sean Bright <sean@malleable.com>
* /, channels/chan_sip.c: Make sure the maxptime attribute is added
to the correct offers. ........ Merged revisions 405877 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-17 21:33 +0000 [r405862-405876] Scott Griepentrog <sgriepentrog@digium.com>
* main/format_pref.c, main/sorcery.c, main/frame.c, /,
include/asterisk/format_pref.h, res/res_pjsip_sdp_rtp.c: pjsip:
fix support for allow=all This change adds improvements to
support for allow=all in pjsip.conf so that it functions as
intended. Previously, the allow/disallow socery configuration
would set & clear codecs from the media.codecs and media.prefs
list, but if all was specified the prefs list was not updated.
Then a call would fail when create_outgoing_sdp_stream() created
an SDP with no audio codecs. A new function
ast_codec_pref_append_all() is provided to add all codecs to the
prefs list - only those not already on the list. This enables the
configuration to specify a codec preference, but still add all
codecs, and even then remove some codecs, as shown in this
example: allow = ulaw, alaw, all, !g729, !g723 Also, the display
order of allow in cli output is updated to match the
configuration by using prefs instead of caps when generating a
human readable string. Finally, a change to
create_outgoing_sdp_stream() skips a codec when it does not have
a payload code instead of the call failing. (closes issue
ASTERISK-23018) Reported by: xrobau Review:
https://reviewboard.asterisk.org/r/3131/ ........ Merged
revisions 405875 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/http.c: http: supported chunked Transfer-Encoding This
change implements support for HTTP Transfer-Encoding chunked in
both JSON and Form (post vars) body content. A new function
ast_http_get_contents() handles both regular and chunked mode
body, returning after the entire body is received. (closes issue
ASTERISK-23068) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3125/ ........ Merged
revisions 405861 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-17 18:55 +0000 [r405778-405844] Rusty Newton <rnewton@digium.com>
* res/res_pjsip.c, /: Fixing some XML syntax issues with my
previous commit at r405777 for ASTERISK-23071 ........ Merged
revisions 405843 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c, doc/asterisk.8, main/features.c,
configs/sip.conf.sample, apps/app_queue.c, apps/app_transfer.c,
channels/chan_iax2.c: Documentation: doc fixes across various
parts of the code for ASTERISK issues 23061,23028,23046,23027
Fixes typos of "transfered" instead of "transferred" in various
code. Fixes incorrect gosub param help text for app_queue. Fixes
Asterisk man pages containing unquoted minus signs. Adds note
about the "textsupport" option in sip.conf.sample. (issue
ASTERISK-23061) (issue ASTERISK-23028) (issue ASTERISK-23046)
(issue ASTERISK-23027) (closes issue ASTERISK-23061) (closes
issue ASTERISK-23028) (closes issue ASTERISK-23046) (closes issue
ASTERISK-23027) Reported by: Eugene, Jeremy Laine, Denis
Pantsyrev Patches: transferred.patch uploaded by Jeremy Laine
(license 6561) hyphen.patch uploaded by Jeremy Laine (license
6561) sip.conf.sample.patch uploaded by Eugene (license 6360)
........ Merged revisions 405791 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 405792 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405829 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip.c, /: res_pjsip: enhance documentation for
mailboxes options, for both endpoints and aors Made documentation
more explicit as to the use of the both options. (issue
ASTERISK-23071) (closes issue ASTERISK-23071) Reported by: Matt
Jordan ........ Merged revisions 405777 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-17 14:17 +0000 [r405766] Walter Doekes <walter+asterisk@wjd.nu>
* res/res_musiconhold.c, CHANGES: Enable wide band audio in
musiconhold streams. Review:
https://reviewboard.asterisk.org/r/3112/
2014-01-16 20:06 +0000 [r405747-405749] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip/pjsip_options.c, /: res_pjsip: AOR option
qualify_frequency not respected on startup If an endpoint had
previously dynamically registered a contact and the contact
information was successfully stored in astdb then upon restart
the qualify notifications would not be sent out if the
qualify_frequency was set. This was due to the fact that only
permanent contacts were being checked and scheduled for qualifies
on startup. Modified the code to check and schedule all
registered contacts at startup. (closes issue ASTERISK-23062)
Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/3124/ ........ Merged
revisions 405748 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /: manager: Originate doesn't abort on failed
format_cap allocation action_originate responds to the remote
system with an error when cap==NULL, but doesn't return (abort
the originate). Patched to return. (closes issue ASTERISK-23034)
Reported by: Corey Farrell Patches: ASTERISK-23034.patch uploaded
by coreyfarrell (license 5909) ........ Merged revisions 405745
from http://svn.asterisk.org/svn/asterisk/branches/11 ........
Merged revisions 405746 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-16 19:33 +0000 [r405744] Kinsey Moore <kmoore@digium.com>
* /, res/res_pjsip.c: PJSIP: Fix outbound OPTIONS support When path
support was added and contacts were made available during request
creation and transmission, the code path used by outbound qualify
support was not modified correctly and was causing request
creation to fail. This ensures that outbound request creation
with only a contact and no dialog, endpoint, or uri can succeed
which restores qualify support. Reported by: gtjoseph Reported
by: kharwell ........ Merged revisions 405743 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-16 19:13 +0000 [r405644-405695] Kevin Harwell <kharwell@digium.com>
* /, res/res_fax.c, configs/res_fax.conf.sample: 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) ........
Merged revisions 405656 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 405693 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405694 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_pjsip.c: chan_pjsip: initial device state on
endpoints is INVALID When endpoints get loaded their device state
gets set to 'INVALID' because the channel driver has not been
loaded yet. Fixed by updating the device state for every endpoint
upon load of the channel driver. (closes issue ASTERISK-23065)
Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/3123/ ........ Merged
revisions 405643 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-15 16:51 +0000 [r405586-405589] Jonathan Rose <jrose@digium.com>
* CHANGES: Make 12 - 12.1 CHANGES log the same as in 12
* CHANGES, /: Include CHANGES info for r405553 ........ Merged
revisions 405585 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-15 16:36 +0000 [r405584] Joshua Colp <jcolp@digium.com>
* /, cel/cel_manager.c: cel_manager: Don't crash if configuration
file is invalid. The cel_manager module did not properly handle
the case where the configuration file was invalid. The module
will now output a warning message and disable itself if this
occurs. Reported by: Bryan Walters ........ Merged revisions
405581 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 405582 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405583 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-15 13:16 +0000 [r405566] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c,
res/res_pjsip_path.c (added), res/res_pjsip_mwi.c,
res/res_pjsip/pjsip_distributor.c, res/res_pjsip_diversion.c,
channels/chan_pjsip.c, res/res_pjsip_registrar.c,
res/res_pjsip_refer.c, include/asterisk/res_pjsip.h,
include/asterisk/res_pjsip_session.h, res/res_pjsip_notify.c, /,
res/res_pjsip_messaging.c, res/res_pjsip_caller_id.c,
res/res_pjsip_t38.c, res/res_pjsip.c,
res/res_pjsip/pjsip_options.c, res/res_pjsip_nat.c,
res/res_pjsip_session.c,
contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py
(added), res/res_pjsip_header_funcs.c: PJSIP: Add Path header
support This adds Path support to chan_pjsip in res_pjsip_path.c
with minimal additions in res_pjsip_registrar.c to store the path
and additions in res_pjsip_outbound_registration.c to enable
advertisement of path support to registrars and intervening
proxies. Path information is stored on contacts and is enabled
via Address of Record (AoRs) and Registration configuration
sections. While adding path support, it became necessary to be
able to add SIP supplements that handled messages outside of
sessions, so a framework for handling these types of hooks was
added in parallel to the already-existing session supplements and
several senders of out-of-dialog requests were refactored as a
result. (closes issue ASTERISK-21084) Review:
https://reviewboard.asterisk.org/r/3050/ ........ Merged
revisions 405565 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-14 23:44 +0000 [r405554] Jonathan Rose <jrose@digium.com>
* res/res_stasis_mailbox.exports.in (added),
res/ari/ari_model_validators.h, rest-api/api-docs/mailboxes.json
(added), include/asterisk/stasis_app_mailbox.h (added),
res/ari/resource_mailboxes.c (added), /, res/ari.make,
res/res_ari_mailboxes.c (added), res/ari/resource_mailboxes.h
(added), res/res_stasis_mailbox.c (added),
rest-api/resources.json, res/ari/ari_model_validators.c: ARI: Add
mailboxes resource for controlling and polling external MWI Adds
the following AMI commands: PUT mailboxes/mailboxName modifies
mailbox state and implicitly creates new mailboxes GET
mailboxes/mailboxName retrieves a JSON representation of a single
mailbox if it exists GET mailboxes retrieves a JSON array of all
mailboxes DELETE mailbox/mailboxName deletes a mailbox Note that
res_mwi_external must be loaded for these functions to actually
do anything. Review: https://reviewboard.asterisk.org/r/3117/
........ Merged revisions 405553 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-14 21:46 +0000 [r405542] Richard Mudgett <rmudgett@digium.com>
* main/strings.c, /: string container: Remove unnecessary RAII_VAR
usage and string object lock. ........ Merged revisions 405541
from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-14 18:15 +0000 [r405437] Scott Griepentrog <sgriepentrog@digium.com>
* /, channels/chan_sip.c: chan_sip: fix Local From tag on outbound
register regression In ASTERISK-12117, an improvement to insure
consistant local from tags on outbound registrations resulted in
an undesirable behavior - caused by leftover unexpired sip_pvt
dialogs (with the previous cseq number), resulting in many
uncessary REGISTER requests. Instead of significant rework of
transmit_register(), this change deletes the dialogs after a 200
OK response indiciating a successful registration, keeping the
old dialogs from interfering with normal operation. (closes issue
ASTERISK-22946) Reported by: Stephan Eisvogel Review:
https://reviewboard.asterisk.org/r/3109/ ........ Merged
revisions 405433 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 405434 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405435 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-14 18:14 +0000 [r405436] Richard Mudgett <rmudgett@digium.com>
* apps/app_verbose.c, main/asterisk.c, configs/logger.conf.sample,
main/cli.c, include/asterisk/logger.h, main/pbx.c,
main/manager.c, /, funcs/func_timeout.c, apps/app_dumpchan.c,
main/logger.c, UPGRADE.txt: verbosity: Fix performance of console
verbose messages. The per console verbose level feature as
previously implemented caused a large performance penalty. The
fix required some minor incompatibilities if the new rasterisk is
used to connect to an earlier version. If the new rasterisk
connects to an older Asterisk version then the root console
verbose level is always affected by the "core set verbose"
command of the remote console even though it may appear to only
affect the current console. If an older version of rasterisk
connects to the new version then the "core set verbose" command
will have no effect. * Fixed the verbose performance by not
generating a verbose message if nothing is going to use it and
then filtered any generated verbose messages before actually
sending them to the remote consoles. * Split the "core set debug"
and "core set verbose" CLI commands to remove the per module
verbose support that cannot work with the per console verbose
level. * Added a silent option to the "core set verbose" command.
* Fixed "core set debug off" tab completion. * Made "core show
settings" list the current console verbosity in addition to the
root console verbosity. * Changed the default verbose level of
the 'verbose' setting in the logger.conf [logfiles] section. The
default is now to once again follow the current root console
level. As a result, using the AMI Command action with "core set
verbose" could again set the root console verbose level and
affect the verbose level logged. (closes issue AST-1252) Reported
by: Guenther Kelleter Review:
https://reviewboard.asterisk.org/r/3114/ ........ Merged
revisions 405431 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405432 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-14 16:43 +0000 [r405420] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip/pjsip_distributor.c: Fix erroneous behavior when
sending auth rejection to artificial endpoint. We were not
including an authentication challenge when sending a 401 response
to unmatched endpoints. This was due to the conversion to use a
vector for authentication section names on an endpoint. The
vector for artificial endpoints was empty, resulting in the
challenge being sent back containing no challenges. This is
worked around by placing a bogus value in the artificial
endpoint's auth vector. This value is never looked up by
anything, since they instead will directly call
ast_sip_get_artificial_auth().
2014-01-14 03:27 +0000 [r405369] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Skinny: do not add call to missed
calls list if answered elsewhere. Patch updates skinny devices
with a SKINNY_CONNECTED callstate if an inbound ringing or
callwaiting call is answered elsewhere. ........ Merged revisions
405367 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-13 13:34 +0000 [r405339] Kinsey Moore <kmoore@digium.com>
* /, res/res_pjsip/pjsip_cli.c: res_pjsip: Fix CLI tab completion
issues This fixes several issues with the new res_pjsip CLI tab
completion such as output of headers during tab completion and
being able to tab-complete more items than the code actually
handled (further items would simply be ignored). (closes issue
ASTERISK-23081) Review: https://reviewboard.asterisk.org/r/3115/
Reported by: xrobau ........ Merged revisions 405338 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-12 22:24 +0000 [r405326] Joshua Colp <jcolp@digium.com>
* res/ari/resource_playbacks.c, res/ari/resource_channels.c,
include/asterisk/ari.h, res/ari/resource_bridges.c,
res/ari/resource_recordings.c, res/ari/resource_device_states.c,
res/res_ari.c, res/ari/resource_endpoints.c, /,
res/ari/resource_applications.c: res_ari: Fix various memory
leaks. This change fixes a few memory leaks that were found based
on a mailing list post. 1. Some JSON response messages were never
freed. This was caused by the documentation stating that message
references were stolen when in reality they were not. The code
now follows the documentation and usage has been updated. 2. HTTP
response headers were never freed. 3. The variable list for
wildcards paths was never freed. (closes issue ASTERISK-23128)
Reported by: Kenneth Watson (on list) Review:
https://reviewboard.asterisk.org/r/3119/ ........ Merged
revisions 405325 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-12 22:13 +0000 [r405313-405314] Matthew Jordan <mjordan@digium.com>
* apps/app_forkcdr.c, /, funcs/func_cdr.c, include/asterisk/cdr.h,
apps/app_cdr.c, main/cdr.c: CDRs: Synchronize dialplan
applications that manipulate CDRs with the engine In
https://reviewboard.asterisk.org/r/3057/, applications and
functions that manipulate CDRs were made to interact over Stasis.
This was done to synchronize manipulations of CDRs from the
dialplan with the updates the engine itself receives over the
message bus. This change rested on a faulty premise: that
messages published to the CDR topic or to a topic that forwards
to the CDR topic are synchronized with the messages handled by
the CDR topic subscription in the CDR engine. This is not the
case. There is no ordering guaranteed for two messages published
to the same topic; ordering is only guaranteed if a message is
published to the same subscriber. Stasis was modified in r405311
to allow a publisher to synchronize on the subscriber. This patch
uses that API to synchronize the CDR publishers with the CDR
engine message router, which maintains the overall topic
subscription. (closes issue ASTERISK-22884) Reported by: Matt
Jordan Review: https://reviewboard.asterisk.org/r/3099/ ........
Merged revisions 405312 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis.c, main/stasis_message_router.c, /,
include/asterisk/stasis.h,
include/asterisk/stasis_message_router.h, tests/test_stasis.c:
stasis: Add methods to allow for synchronous publishing to
subscriber This patch adds an API call to Stasis that allows a
publisher to publish a stasis message that will not return until
a specific subscriber handles the message. Since a subscriber can
have their own forwarding topic which orders messages from many
topics, this allows a publisher who knows of that subscriber to
synchronize to that subscriber regardless of the forwarding
relationships between topics. This is of particular use for
dialplan applications that need to synchronize on a particular
subscriber's handling of a message. (issue ASTERISK-22884)
Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3099/ ........ Merged
revisions 405311 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-10 20:00 +0000 [r405299] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip/security_events.c: Print "<unknown>" for
artificial endpoint in PJSIP security events. Previously, this
printed a UUID, which was not very clear when dealing with an
artificial endpoint. Review:
https://reviewboard.asterisk.org/r/3113 ........ Merged revisions
405298 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-10 18:17 +0000 [r405284] Richard Mudgett <rmudgett@digium.com>
* /, main/logger.c: Logging callid: Fix some sizeof() references
per coding guidelines. ........ Merged revisions 405281 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405282 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-09 23:52 +0000 [r405270] Jonathan Rose <jrose@digium.com>
* res/res_pjsip_session.c: PJSIP: Add unhold on reinvite without
SDP behavior Review: https://reviewboard.asterisk.org/r/3106/
2014-01-09 23:50 +0000 [r405269] Damien Wedhorn <voip@facts.com.au>
* channels/chan_dahdi.c, /: Fix chan_dahdi copile issue in
dev-mode. Error "unused variable i in dahdi_create_channel_range"
when compiling in dev-mode. Small restructure to
dahdi_create_channel_range to move the for(x) loop and int i,x to
a block within the IFDEF. ........ Merged revisions 405268 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-09 23:39 +0000 [r405267] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip.c, /, res/res_pjsip_messaging.c:
res_pjsip_messaging: potential for field values in from/to
headers to be missing Added in ability to specify display name
format ("name" <sip:name@ipaddr:port>) for a given URI and made
sure it was fully propagated to the outgoing message. Also made
it so outoing messages in res_pjsip always send as "sip:".
(closes issue ASTERISK-22924) Reported by: Anthony Messina
Review: https://reviewboard.asterisk.org/r/3094/ ........ Merged
revisions 405266 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-09 20:34 +0000 [r405254] Kinsey Moore <kmoore@digium.com>
* main/astobj2.c, res/res_pjsip_session.c, /,
include/asterisk/astobj2.h: astobj2: Correct ao2_iterator opacity
violations This corrects the ao2_iterator opacity violations in
res_pjsip_session.c by adding a global function to get the number
of elements inside the container hidden behind the iterator.
(closes issue ASTERISK-23053) Review:
https://reviewboard.asterisk.org/r/3111/ Reported by: Richard
Mudgett ........ Merged revisions 405253 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-09 16:52 +0000 [r405236] Kevin Harwell <kharwell@digium.com>
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fails to resume
WebRTC call from hold In ast_rtp_ice_start if the ice session
create check list failed, start check was never initiated and
ice_started was never set to true. Upon re-entering the function
(for instance, [un]hold) it would try to create the check list
again with duplicate remote candidates. Fixed so that if the
create check list fails the necessary data structures are
properly re-initialized for any subsequent retries. Note, it was
decided to not stop ice support (by calling ast_rtp_ice_stop) on
a check list failure because it possible things might still work.
However, a debug message was added to help with any future
troubleshooting. (closes issue ASTERISK-22911) Reported by: Vytis
Valentinavičius Patches: works_on_my_machine.patch uploaded by
xytis (license 6558) ........ Merged revisions 405234 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405235 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-09 15:50 +0000 [r405217] Matthew Jordan <mjordan@digium.com>
* /, apps/app_confbridge.c,
apps/confbridge/conf_state_multi_marked.c: app_confbridge: Fix
crash caused when waitmarked/marked users leave together When
waitmarked users join a ConfBridge, the conference state is
transitioned from EMPTY -> INACTIVE. In this state, the users are
maintined in a waiting users list. When a marked user joins, the
ConfBridge conference transitions from INACTIVE -> MULTI_MARKED,
and all users are put onto the active list of users. This process
works correctly. When the marked user leaves, if they are the
last marked user, the MULTI_MARKED state does the following: (1)
It plays back a message to the bridge stating that the leader has
left the conference. This requires an unlocking of the bridge.
(2) It moves waitmarked users back to the waiting list (3) It
transitions to the appropriate state: in this case, INACTIVE
However, because it plays the prompt back to the bridge before
moving the users and before finishing the state transition, this
creates a race condition: with the bridge unlocked, waitmarked
users who leave the conference (or are kicked from it) can cause
a state transition of the bridge to another state before the
conference is transitioned to the INACTIVE state. This causes the
state machine to get a bit wonky, often leading to a crash when
the MULTI_MARKED state attempts to conclude its processing. This
patch fixes this problem: (1) It prevents kicked users from being
kicked again. That's just a nicety. (2) More importantly, it
fixes the race condition by only playing the prompt once the
state has transitioned correctly to INACTIVE. If waitmarked users
sneak out during the prompt being played, no harm no foul.
Review: https://reviewboard.asterisk.org/r/3108/ Note that the
patch committed here is essentially the same as uploaded by Simon
Moxon on ASTERISK-22740, with the addition of the double kick
prevention. (closes issue AST-1258) Reported by: Steve Pitts
(closes issue ASTERISK-22740) Reported by: Simon Moxon patches:
ASTERISK-22740.diff uploaded by Simon Moxon (license 6546)
........ Merged revisions 405215 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405216 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-09 14:15 +0000 [r405163] Walter Doekes <walter+asterisk@wjd.nu>
* /, apps/app_dumpchan.c: "Minimun" typo. ........ Merged revisions
405160 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 405161 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405162 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-08 17:23 +0000 [r405144] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip/security_events.c: Use proper case for checking
if digest authentication is used. ........ Merged revisions
405131 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-08 16:34 +0000 [r405129-405130] Kinsey Moore <kmoore@digium.com>
* /, configure, configure.ac, pbx/pbx_lua.c: pbx_lua: Add support
for Lua 5.2 This adds support for Lua 5.2 in pbx_lua which is
available on newer operating systems. (closes issue
ASTERISK-23011) Review: https://reviewboard.asterisk.org/r/3075/
Reported by: George Joseph Patch by: George Joseph ........
Merged revisions 405090 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 405091 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405124 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: Add the missing part of r400140 When the
patch to add retry-on-forbidden-response was committed, part of
the patch for chan_sip was not committed which caused the feature
to be entirely nonfunctional. This corrects the code in question.
(closes issue ASTERISK-17138) Review:
https://reviewboard.asterisk.org/r/2874 ........ Merged revisions
405033 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 405081 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 405083 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-07 19:56 +0000 [r405020-405035] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_acl.c: res_pjsip_acl: Fix another case of
assuming a contact will always contain a URI. ........ Merged
revisions 405034 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_nat.c: res_pjsip_nat: Don't assume a Contact
header will always contain a URI. If the 'rewrite_contact' option
was enabled and a Contact header was received which contained a
'*' a crash would occur. This change makes the res_pjsip_nat
module ignore the Contact header if it contains only a '*'.
(closes issue ASTERISK-23101) Reported by: Matt Jordan ........
Merged revisions 405019 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-06 21:55 +0000 [r404953-405007] Richard Mudgett <rmudgett@digium.com>
* apps/app_voicemail.c, /: app_voicemail: Explicitly set
defaultenabled=yes ........ Merged revisions 405006 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_mwi_external_ami.c (added): External MWI AMI support.
The external MWI AMI interface provides a thin wrapper around the
core external MWI resource. The resource adds the following AMI
actions: MWIGet, MWIDelete, and MWIUpdate. (closes issue AFS-46)
Review: https://reviewboard.asterisk.org/r/3061/ ........ Merged
revisions 404954 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_mwi_external.c (added), configs/sorcery.conf.sample,
include/asterisk/res_mwi_external.h (added),
res/res_mwi_external.exports.in (added), apps/app_voicemail.c:
External MWI core support. * The core external MWI resource
provides for MWI message counts persistence using sorcery. With
sorcery, the user is able to configure which sorcery wizzard
backend to use if the default astdb is not desired. * The core
external MWI resoruce provides some debugging CLI commands
enabled by defining MWI_DEBUG_CLI. The debugging CLI commands
are: "mwi delete all", "mwi delete like <regex>", "mwi delete
mailbox <mailbox>", "mwi list all", "mwi list like <regex>", "mwi
show mailbox <mailbox>", and "mwi update mailbox <mailbox> [<new>
[<old>]]". (closes issue AFS-43) Review:
https://reviewboard.asterisk.org/r/3061/ ........ Merged
revisions 404952 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-05 16:01 +0000 [r404924-404936] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_outbound_registration.c:
res_pjsip_outbound_registration: Don't assume that a registration
client will always exist. ........ Merged revisions 404935 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_outbound_registration.c:
res_pjsip_outbound_registration: Create registration client in pj
thread. Depending on which threading was loading the outbound
registration it was possible for the registration client to be
allocated outside of a pj thread. This change moves the creation
inside the synchronous task where it is guaranteed it will occur
in a pj thread. Reported by: Rob Thomas ........ Merged revisions
404923 from http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-04 10:52 +0000 [r404912] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* main/asterisk.c, /: asterisk.c: suppress live_dangerously warning
on rasterisk Even since the fixes of AST-2013-007, Asterisk
prints the following warning on startup if the user decided to
live dangerously: Privilege escalation protection disabled! See
https://wiki.asterisk.org/wiki/x/1gKfAQ for more details. This
message is intended for the logs and interactive startup. No need
for it to appear on a remote console. This commit removes it from
there. (closes issue ASTERISK-23084) Review:
https://reviewboard.asterisk.org/r/3101/ ........ Merged
revisions 404861 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404888 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404911 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-03 22:00 +0000 [r404860] Kevin Harwell <kharwell@digium.com>
* cel/cel_pgsql.c, /: cel_pgsql: module not correctly reloading
Upon reload the module unconditionally "unloaded" the module
(freeing memory and setting pointers to NULL) and then when
attempting a "load" if the config file had not changed then
nothing would be reinitialized. By moving the "unload" to occur
conditionally (reload only) after an attempted configuration
load, but before module "loading" alleviates the issue. The
module now loads/unloads/reloads correctly. (closes issue
ASTERISK-22871) Reported by: Matteo ........ Merged revisions
404857 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 404858 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404859 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-03 21:45 +0000 [r404844-404856] Matthew Jordan <mjordan@digium.com>
* /, res/res_pjsip_logger.c: res_pjsip_logger: Add the
ASTERISK_FILE_VERSION macro Registering yourself with the
Asterisk core is the nice thing to do, even when you're a logging
module. ........ Merged revisions 404855 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_authenticator_digest.c, tests/test_utils.c:
res_pjsip_authenticator_digest: Fix md5 hash buffer An md5 hash
is 32 bytes long. The char buffer must be at least 33 bytes to
avoid clobbering of the stack. This patch also fixes a potential
clobbering in test_utils.c. Thanks to Andrew Nagy for reporting
and testing this out in #asterisk-dev Reported by: Andrew Nagy
Tested by: Andrew Nagy ........ Merged revisions 404843 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-03 20:02 +0000 [r404787-404832] Kevin Harwell <kharwell@digium.com>
* main/manager.c: manager: UserEvent including action on output AMI
action UserEvent event response would include the action header
in its keyvalue pairs list. Adjusted the start of the header loop
to skip over the action part. (closes issue ASTERISK-22899)
Reported by: outtolunc Patches:
svn_manager.c.skip_action.diff.txt uploaded by outtolunc (license
5198)
* channels/chan_dahdi.c, /: chan_dahdi: dahdi show channels slices
PRI channel dnid on output dahdi show channels output slices the
callerid (which is dnid copied over on PRI channels). If the
channel naming structures look like: 'DAHDI/i1/1408409XXXX-6'
then the output slices 1408409XXXX down to 1408409XXX. This patch
just opens it up to 15 chars so you can see the whole thing.
(closes issue ASTERISK-22918) Reported by: outtolunc Patches:
svn_chan_dahdi.c.format12_15.diff.txt uploaded by outtolunc
(license 5198) ........ Merged revisions 404784 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404785 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404786 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-03 18:33 +0000 [r404783] Richard Mudgett <rmudgett@digium.com>
* tests/test_stasis.c, /: test_stasis.c: Fix ref leak in normal
execution path. ........ Merged revisions 404764 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-03 18:31 +0000 [r404782] Kevin Harwell <kharwell@digium.com>
* /, apps/app_meetme.c: app_meetme: compiler warning Fixed a
compiler warning (errors in 'dev-mode') given by gcc version
4.8.1. The one in app_meetme involved the
'sizeof-pointer-memaccess' (see:
http://gcc.gnu.org/gcc-4.8/porting_to.html) warning. Fixed so it
would no longer issue a warning and can compile again in
'dev-mode'. Review: https://reviewboard.asterisk.org/r/3098/
........ Merged revisions 404742 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404773 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404781 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-03 17:27 +0000 [r404726-404738] Joshua Colp <jcolp@digium.com>
* res/res_pjsip/pjsip_configuration.c, /, res/res_pjsip/location.c:
res_pjsip: Ensure more URI validation happens in pj threads.
........ Merged revisions 404737 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_outbound_registration.c:
res_pjsip_outbound_registration: Ensure URI validation happens in
a pjlib thread. This change moves outbound registration URI
validation into the task executed within a pjlib thread. Reported
by: Andrew Nagy ........ Merged revisions 404725 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-02 19:38 +0000 [r404677] Scott Griepentrog <sgriepentrog@digium.com>
* /, funcs/func_strings.c: func_strings: use memmove to prevent
overlapping memory on strcpy When calling REPLACE() with an empty
replace-char argument, strcpy is used to overwrite the the
matching <find-char>. However as the src and dest arguments to
strcpy must not overlap, it causes other parts of the string to
be overwritten with adjacent characters and the result is
mangled. Patch replaces call to strcpy with memmove and adds a
test suite case for REPLACE. (closes issue ASTERISK-22910)
Reported by: Gareth Palmer Review:
https://reviewboard.asterisk.org/r/3083/ Patches:
func_strings.patch uploaded by Gareth Palmer (license 5169)
........ Merged revisions 404674 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404675 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404676 from
http://svn.asterisk.org/svn/asterisk/branches/12
2014-01-02 19:08 +0000 [r404664] Kevin Harwell <kharwell@digium.com>
* channels/chan_pjsip.c, include/asterisk/res_pjsip.h, /,
configs/pjsip.conf.sample, res/res_pjsip/pjsip_configuration.c,
CHANGES, res/res_pjsip.c: res_pjsip: add 'set_var' support on
endpoints Added a new 'set_var' option for ast_sip_endpoint(s).
For each variable specified that variable gets set upon creation
of a pjsip channel involving the endpoint. (closes issue
ASTERISK-22868) Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/3095/ ........ Merged
revisions 404663 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-31 22:51 +0000 [r404620-404653] Joshua Colp <jcolp@digium.com>
* channels/chan_pjsip.c, res/res_pjsip_session.c, /: chan_pjsip:
Handle hanging up before calling. Channel creation in Asterisk is
broken up into two steps: requesting and calling. In some cases a
channel may be requested but never called. This happens in the
ChanIsAvail dialplan application for determining if something is
reachable or not. The PJSIP channel driver did not take this
situation into account and attempted to end a session that was
never called out on. The code now checks the session state to
determine if the session has been called out on and if not
terminates it instead of ending it. (closes issue ASTERISK-23074)
Reported by: Kilburn ........ Merged revisions 404652 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_endpoint_identifier_ip.c:
res_pjsip_endpoint_identifier_ip: Accept hostnames in the 'match'
field. Hostnames specified in the 'match' field will be resolved
and all addresses returned. Each address will be added to the
endpoint identifier for the matching process. Reported by: Rob
Thomas ........ Merged revisions 404613 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-31 21:39 +0000 [r404606] Kevin Harwell <kharwell@digium.com>
* cel/cel_pgsql.c, /: cel_pgsql: deadlock on unload and
core_event_dispatcher A deadlock can happen between a thread
unloading or reloading the cel_pgsql module and the
core_event_dispatcher taskprocessor thread. Description of what
is happening: Thread 1 (for example, a netconsole thread): a
"module reload cel_pgsql" is launched the thread enter the
"my_unload_module" function (cel_pgsql.c) the thread acquire the
write lock on psql_columns the thread enter the
"ast_event_unsubscribe" function (event.c) the thread try to
acquire the write lock on ast_event_subs[sub->type] Thread 2
(core_event_dispatcher taskprocessor thread): the taskprocessor
pop a CEL event the thread enter the "handle_event" function
(event.c) the thread acquire the read lock on
ast_event_subs[sub->type] the thread callback the "pgsql_log"
function (cel_pgsql.c), since it's a subscriber of CEL events the
thread try to acquire a read lock on psql_columns (closes issue
ASTERISK-22854) Reported by: Etienne Lessard Patches:
cel_pgsql_fix_deadlock_event.patch uploaded by hexanol (license
6394) ........ Merged revisions 404603 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404604 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404605 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-31 20:27 +0000 [r404593] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_outbound_registration.c, /:
res_pjsip_outbound_registration: Add validation for 'server_uri'
and 'client_uri'. When applying configuration for outbound
registrations the 'server_uri' and 'client_uri' fields were not
validated. The code will now confirm that they exist and that
they contain parseable SIP URIs. Reported by: Andrew Nagy
........ Merged revisions 404592 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-30 23:25 +0000 [r404582] Kevin Harwell <kharwell@digium.com>
* main/channel.c, /: channels.c: core show channeltypes slicing
'core show channeltypes' type column is being sliced, resulting
in incomplete type names. (closes issue ASTERISK-22919) Reported
by: outtolunc Patches: svn_channel.c.format_15.diff.txt uploaded
by outtolunc (license 5198) ........ Merged revisions 404579 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404581 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-24 17:12 +0000 [r404567-404569] David M. Lee <dlee@digium.com>
* UPGRADE-12.txt, /: Added note to UPGRADE.txt about the default
value of live_dangerously changing ........ Merged revisions
404568 from http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/http.c: http: Properly reject requests with
Transfer-Encoding set Asterisk does not support any of the
transfer encodings specified in HTTP/1.1, other than the default
"identity" encoding. According to RFC 2616: A server which
receives an entity-body with a transfer-coding it does not
understand SHOULD return 501 (Unimplemented), and close the
connection. A server MUST NOT send transfer-codings to an
HTTP/1.0 client. This patch adds the 501 Unimplemented response,
instead of the hard work of actually implementing other
recordings. This behavior is especially problematic for Node.js
clients, which use chunked encoding by default. (closes issue
ASTERISK-22486) Review: https://reviewboard.asterisk.org/r/3092/
........ Merged revisions 404565 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-24 02:20 +0000 [r404554] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_pubsub.c: res_pjsip_pubsub: Ensure dialog
manipulation happens on proper thread. When destroying a
subscription we remove the serializer from its dialog and
decrease its reference count. Depending on which thread dropped
the subscription reference count to 0 it was possible for this to
occur in a thread where it is not possible. (closes issue
ASTERISK-22952) Reported by: Matt Jordan ........ Merged
revisions 404553 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-23 16:38 +0000 [r404542] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* channels/chan_dahdi.c, configs/chan_dahdi.conf.sample,
UPGRADE-12.txt: chan_dahdi: enable ignore_failed_channels by
default If ignore_failed_channels is set to "true" for a channel,
the channel will continue to be configured even if configuring it
has failed. This allows Asterisk to start before all the DAHDI
initialization is done and thus not force the starting order
dahdi -> asterisk. Review:
https://reviewboard.asterisk.org/r/3063/
2013-12-21 03:35 +0000 [r404532] Matthew Jordan <mjordan@digium.com>
* /, res/res_pjsip/pjsip_cli.c: res_pjsip/pjsip_cli: fix
compilation error caused by passing ast_free When wanting to pass
*free as a function pointer, ast_free_ptr has to be used instead
of ast_free. This allows it to be compiled with MALLOC_DEBUG
enabled. ........ Merged revisions 404531 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 22:04 +0000 [r404511-404512] David M. Lee <dlee@digium.com>
* rest-api/api-docs/channels.json, res/ari/resource_channels.c,
res/res_ari_channels.c, res/ari/resource_channels.h, /,
rest-api/api-docs/applications.json: ari: Remove support for
specifying channel vars during origination. When we added support
for specifying channel variables for an origination, we didn't
consider how that would interact with another feature, namely
specifying request parameters in a JSON request body. The method
of specifying channel variables (as a flat JSON object passed in
the JSON body) interferes with parsing parameters out of the
request body. Unfortunately, fixing this would be a backward
incompatible change. In the interest of keeping the API sane and
keeping our release schedule, we're dropping the feature for
specifying channel variables in the origination request. We will
bring the feature back soon, as a backward compatible addition to
the API. (closes issue ASTERISK-23051) Review:
https://reviewboard.asterisk.org/r/3088 ........ Merged revisions
404509 from http://svn.asterisk.org/svn/asterisk/branches/12
* /: Remove automerge properties ........ Merged revisions 404488
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 21:32 +0000 [r404507] Matthew Jordan <mjordan@digium.com>
* include/asterisk/config.h, main/config.c, main/channel.c,
res/res_pjsip/location.c, include/asterisk/res_pjsip_cli.h
(added), res/res_pjsip/pjsip_cli.c (added),
include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip/include/res_pjsip_private.h,
res/res_pjsip_registrar.c, main/sorcery.c,
include/asterisk/res_pjsip.h, CREDITS,
res/res_pjsip/config_auth.c, /,
res/res_pjsip_endpoint_identifier_ip.c: res_pjsip: Add PJSIP CLI
commands Implements the following cli commands: pjsip list aors
pjsip list auths pjsip list channels pjsip list contacts pjsip
list endpoints pjsip show aor(s) pjsip show auth(s) pjsip show
channels pjsip show endpoint(s) Also... Minor modifications made
to the AMI command implementations to facilitate reuse. New
function ast_variable_list_sort added to config.c and config.h to
implement variable list sorting. (issue ASTERISK-22610) patches:
pjsip_cli_v2.patch uploaded by george.joseph (License 6322)
........ Merged revisions 404480 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 21:18 +0000 [r404461] Scott Griepentrog <sgriepentrog@digium.com>
* /, main/say.c: say.c: correct time for polish In
ast_say_date_with_format_pl(), change ast_say_number() to use
tm_sec instead of tm_mn. (closes issue ASTERISK-22856) Reported
by: Robert Mordec Review:
https://reviewboard.asterisk.org/r/3082/ Patches: say.c.patch
uploaded by veilen (license 6555) ........ Merged revisions
404456 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 404457 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404458 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 20:28 +0000 [r404452] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_refer.c: Fix issue where PJSIP blind transferer
dialog may not complete as planned. When transferring to a
dialplan extension that will not place any outbound calls, the
only control frames that the PJSIP REFER framehook will receive
are inconsequential (such as unhold or srcchange). As such, we
shouldn't allow for the reception of those types of frames
prevent us from signaling to the transferring party that the
transfer has completed successfully once voice frames are read.
Thanks to Jonathan Rose for pointing this out. ........ Merged
revisions 404439 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 20:05 +0000 [r404438] Matthew Jordan <mjordan@digium.com>
* /, res/ari/resource_applications.h,
res/res_stasis_device_state.c: res_stasis_device_state: Set
resource type for subscriptions to deviceState The documentation
for ARI already specifies that the device state resource when
used for subscribing for events is "deviceState", not
"device_state". The code, however, used "device_state"; although
this was inconsistent as well in doxygen comments in
resource_applications. Because the actual resource being
subscribed to is /deviceStates/{device}/, it makes sense for the
resource type specifier to be deviceState. Note that the key
value in the events is still "device_state". ........ Merged
revisions 404437 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 20:00 +0000 [r404436] Richard Mudgett <rmudgett@digium.com>
* res/ari/resource_channels.c, tests/test_scoped_lock.c,
tests/test_stasis.c, res/parking/parking_manager.c,
res/ari/resource_bridges.c, res/ari/resource_endpoints.c, /,
res/res_pjsip/location.c, tests/test_cel.c: ao2_iterator:
Mini-audit of the ao2_iterator loops in the new code files. *
Fixed several places where ao2_iterator_destroy() was not called.
* Fixed several iterator loop object variable reference problems.
* Fixed res_parking AMI actions returning non-zero. Only the AMI
logoff action can return non-zero. Review:
https://reviewboard.asterisk.org/r/3087/ ........ Merged
revisions 404434 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 19:25 +0000 [r404433] Matthew Jordan <mjordan@digium.com>
* include/asterisk/manager.h, /: manager: bump version to 2.0.0 AMI
has received substantial updates over the past year. Not only has
the syntax been vastly improved and made consistent (which
entails many event changes), but the underlying things that those
events convey have changed substantially as well. After some
conversation in #asterisk-dev, it was agreed that this is a good
time to jump to 2. At the same time, since ARI will most likely
use semantic versioning, we might as well use that for AMI as
well. That also affords us greater meaning for the AMI version.
........ Merged revisions 404421 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 19:06 +0000 [r404420] Richard Mudgett <rmudgett@digium.com>
* /, main/sounds_index.c: Whitespace fixes. ........ Merged
revisions 404419 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-20 17:22 +0000 [r404406] Rusty Newton <rnewton@digium.com>
* /, configs/pjsip.conf.sample: Documentation: Updates for info
about NAT-related settings and fixes for pjsip.conf.sample Added
another NAT example to pjsip.conf.sample. We had a few mentions
of NAT configuration throughout the sample, but I added another
for a little bit more clarity. Additionally many pjsip options
were affected by the change to snake case, so I fixed any
instances of those options in pjsip.conf. I regenerated the
config option list (at the bottom of the file) from a new xml
config doc dump, so all the snake case changes should be
reflected there, as well as any other changes to those options.
(issue ASTERISK-23004) (closes issue ASTERISK-23004) Reported by:
Matt Jordan Review: https://reviewboard.asterisk.org/r/3086/
........ Merged revisions 404405 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 20:48 +0000 [r404387] Scott Griepentrog <sgriepentrog@digium.com>
* main/security_events.c: security_events: log events with
descriptive names This patch updates the log messages to include
descriptive names for event types. This is an improvement over
having only cryptic type numbers. (closes issue ASTERISK-22909)
Reported by: outtolunc Review:
https://reviewboard.asterisk.org/r/3081/ Patches:
svn_security_events.c.names.diff.txt uploaded by outtolunc
(license 5198)
2013-12-19 18:16 +0000 [r404376] Richard Mudgett <rmudgett@digium.com>
* /, CHANGES: Put notice in CHANGES as well as UPGRADE.txt.
........ Merged revisions 404375 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 18:00 +0000 [r404370-404372] Joshua Colp <jcolp@digium.com>
* res/res_pjsip/pjsip_outbound_auth.c, /: res_pjsip: Ignore 401/407
responses for transactions and dialogs we don't know about. Under
normal conditions it is unlikely we will ever receive a response
for a transaction or dialog we don't know about but if any are
received ignore them. ........ Merged revisions 404371 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_session.c: res_pjsip_session: Fix SDP
negotiation when resending an INVITE with authentication. The
process for resending an INVITE with authentication involves
restarting the UAC session. We were incorrectly passing in that a
new offer is being sent, causing the SDP negotiation to get into
a (technically speaking) funky state. ........ Merged revisions
404369 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 17:45 +0000 [r404368] Mark Michelson <mmichelson@digium.com>
* include/asterisk/channel.h, res/res_pjsip.c, main/channel.c, /,
include/asterisk/autochan.h: Fix a deadlock that occurred due to
a conflict of masquerades. For the explanation, here is a
copy-paste of the review board explanation: Initially, it was
discovered that performing an attended transfer of a multiparty
bridge with a PJSIP channel would cause a deadlock. A PBX thread
started a masquerade and reached the point where it was calling
the fixup() callback on the "original" channel. For chan_pjsip,
this involves pushing a synchronous task to the session's
serializer. The problem was that a task ahead of the fixup task
was also attempting to perform a channel masquerade. However,
since masquerades are designed in a way to only allow for one to
occur at a time, the task ahead of the fixup could not continue
until the masquerade already in progress had completed. And of
course, the masquerade in progress could not complete until the
task ahead of the fixup task had completed. Deadlock. The initial
fix was to change the fixup task to be asynchronous. While this
prevented the deadlock from occurring, it had the frightful side
effect of potentially allowing for tasks in the session's
serializer to operate on a zombie channel. Taking a step back
from this particular deadlock, it became clear that the problem
was not really this one particular issue but that masquerades
themselves needed to be addressed. A PJSIP attended transfer
operation calls ast_channel_move(), which attempts to both set up
and execute a masquerade. The problem was that after it had set
up the masquerade, the PBX thread had swooped in and tried to
actually perform the masquerade. Looking at changes that had been
made to Asterisk 12, it became clear that there never is any time
now that anyone ever wants to set up a masquerade and allow for
the channel thread to actually perform the masquerade. Everyone
always is calling ast_channel_move(), performs the masquerade
itself before returning. In this patch, I have removed all blocks
of code from channel.c that will attempt to perform a masquerade
if ast_channel_masq() returns true. Now, there is no distinction
between setting up a masquerade and performing the masquerade. It
is one operation. The only remaining checks for
ast_channel_masq() and ast_channel_masqr() are in ast_hangup()
since we do not want to interrupt a masquerade by hanging up the
channel. Instead, now ast_hangup() will wait for a masquerade to
complete before moving forward with its operation. The
ast_channel_move() function has been modified to basically
in-line the logic that used to be in ast_channel_masquerade().
ast_channel_masquerade() has been killed off for real.
ast_channel_move() now has a lock associated with it that is used
to prevent any simultaneous moves from occurring at once. This
means there is no need to make sure that ast_channel_masq() or
ast_channel_masqr() are already set on a channel when
ast_channel_move() is called. It also means the channel container
lock is not pulling double duty by both keeping the container
locked and preventing multiple masquerades from occurring
simultaneously. The ast_do_masquerade() function has been renamed
to do_channel_masquerade() and is now internal to channel.c. The
function now takes explicit arguments of which channels are
involved in the masquerade instead of a single channel. While it
probably is possible to do some further refactoring of this
method, I feel that I would be treading dangerously. Instead, all
I did was change some comments that no longer are true after this
changeset. The other more minor change introduced in this patch
is to res_pjsip.c to make ast_sip_push_task_synchronous() run the
task in-place if we are already a SIP servant thread. This is
related to this patch because even when we isolate the channel
masquerade to only running in the SIP servant thread, we would
still deadlock when the fixup() callback is reached since we
would essentially be waiting forever for ourselves to finish
before actually running the fixup. This makes it so the fixup is
run without having to push a task into a serializer at all.
(closes issue ASTERISK-22936) Reported by Jonathan Rose Review:
https://reviewboard.asterisk.org/r/3069 ........ Merged revisions
404356 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 17:13 +0000 [r404355] Richard Mudgett <rmudgett@digium.com>
* main/udptl.c, addons/chan_ooh323.c, /, channels/chan_sip.c,
include/asterisk/udptl.h: udptl: Dead code elimination.
ast_udptl_bridge was not used. Removing dead code starting with
ast_udptl_bridge() eliminated the code in this change. Note: This
code has actually been dead since Asterisk v1.4 when it was first
put in. Review: https://reviewboard.asterisk.org/r/3079/ ........
Merged revisions 404354 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 17:03 +0000 [r404353] Scott Griepentrog <sgriepentrog@digium.com>
* /, res/res_fax.c: res_fax.c: crash on framehook with no dsp in
fax detect In fax_detect_framehook() a null pointer reference can
occur where a voice frame is processed but no dsp is attached to
the fax detection structure. The code block that rejects frames
that detection cannot be processed on is checking for dsp but
falls through when it should instead return, as this change
implements. (closes issue ASTERISK-22942) Reported by: adomjan
Review: https://reviewboard.asterisk.org/r/3076/ ........ Merged
revisions 404351 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404352 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 16:52 +0000 [r404350] Richard Mudgett <rmudgett@digium.com>
* configs/skinny.conf.sample, res/res_xmpp.c, res/res_jabber.c,
CHANGES, channels/chan_iax2.c, channels/sig_pri.c,
channels/h323/chan_h323.h, configs/iax.conf.sample,
channels/sig_pri.h, channels/chan_dahdi.c,
include/asterisk/app.h, channels/chan_skinny.c,
channels/chan_dahdi.h, channels/chan_h323.c, main/app.c,
UPGRADE-12.txt, configs/sip.conf.sample,
channels/sip/include/sip.h, channels/chan_mgcp.c,
apps/app_voicemail.c, channels/chan_unistim.c,
configs/chan_dahdi.conf.sample, /, channels/chan_sip.c,
configs/voicemail.conf.sample, funcs/func_vmcount.c: Voicemail:
Remove mailbox identifier format (box@context) assumptions in the
system. This change is in preparation for external MWI support.
Removed code from the system for normal mailbox handling that
appends @default to the mailbox identifier if it does not have a
context. The only exception is the legacy hasvoicemail users.conf
option. The legacy option will only work for app_voicemail
mailboxes. The system cannot make any assumptions about the
format of the mailbox identifer used by app_voicemail. chan_sip
and chan_dahdi/sig_pri had the most changes because they both
tried to interpret the mailbox identifier. chan_sip just stored
and compared the two components. chan_dahdi actually used the box
information. The ISDN MWI support configuration options had to be
reworked because chan_dahdi was parsing the box@context format to
get the box number. As a result the mwi_vm_boxes chan_dahdi.conf
option was added and is documented in the chan_dahdi.conf.sample
file. Review: https://reviewboard.asterisk.org/r/3072/ ........
Merged revisions 404348 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 16:33 +0000 [r404346] Scott Griepentrog <sgriepentrog@digium.com>
* main/db.c, /: astdb: crash in sqlite3 during shutdown When
Asterisk is shut down, the astdb_atexit() function releases
(finalize) the previously initiated (prepared) SQL statements in
sqlite3. Another thread making a subsequent request can cause a
crash in sqlite3. This patch eliminates that issue by resetting
the statement pointer after it is released/cleared. The sqlite3
code detects the null pointer, and aborts the operation cleanly.
(closes issue AST-1265) Reported by: Alexander Hömig (closes
issue ASTERISK-22350) Reported by: Birger "WIMPy" Harzenetter
Review: https://reviewboard.asterisk.org/r/3078/ ........ Merged
revisions 404344 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404345 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 12:18 +0000 [r404333] Joshua Colp <jcolp@digium.com>
* main/channel.c, /: channel: Add a missing ast_channel_unlock when
allocating a Surrogate channel. ........ Merged revisions 404332
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 08:35 +0000 [r404321] Alexandr Anikin <may@telecom-service.ru>
* addons/ooh323c/src/oochannels.c, addons/ooh323c/src/ooGkClient.c,
addons/chan_ooh323.c, /, addons/ooh323c/src/ooGkClient.h: Handle
temporary failures on gk registration Introduce new 'stopped'
state for gk client and restart gk client on failures Remove
ooh323 stack command lock as it is not need now. (closes issue
ASTERISK-21960) Reported by: Dmitry Melekhov Patches:
ASTERISK-21960.patch ASTERISK-21960-stacklockup-2.patch Tested
by: Dmitry Melekhov ........ Merged revisions 404318 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404320 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 02:59 +0000 [r404307] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Fixup some skinny bugs causing Fracks
and ao2 cleanup issues. Moved channel locking into setsubstate so
that a process can complete working on a sub before another
starts changing it. The existing code was causing some Fracks
with schedule deletion. Removed multiple rtp cleanup. Now only
cleansup up once, fixing ao2 object cleanup issues. ........
Merged revisions 404306 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 00:50 +0000 [r404295] Matthew Jordan <mjordan@digium.com>
* include/asterisk/cdr.h, CHANGES, apps/app_cdr.c, main/cdr.c,
apps/app_forkcdr.c, main/pbx.c, /, funcs/func_cdr.c,
apps/app_disa.c, UPGRADE-12.txt: app_cdr,app_forkcdr,func_cdr:
Synchronize with engine when manipulating state When doing the
rework of the CDR engine that pushed all of the logic into cdr.c
and made it respond to changes in channel state over Stasis, we
knew that accessing the CDR engine from the dialplan would be
"slightly" non-deterministic. Dialplan threads would be accessing
CDRs while Stasis threads would be updating the state of said
CDRs - whereas in the past, everything happened on the dialplan
threads. Tests have shown that "slightly" is in reality "very".
This patch synchronizes things by making the dialplan
applications/functions that manipulate CDRs do so over Stasis.
ForkCDR, NoCDR, ResetCDR, CDR, and CDR_PROP now all use Stasis to
send their requests over to the CDR engine, and synchronize on
the channel Stasis topic via a subscription so that they return
their values/control to the dialplan at the appropriate time.
While going through this, the following changes were also made: *
DISA, which can reset the CDR when a user successfully
authenticates, now just uses the ResetCDR app to do this. This
prevents having to duplicate the same Stasis synchronization
logic in that application. * Answer no longer disables CDRs. It
actually didn't work anyway - calling DISABLE on the channel's
CDR doesn't stop the CDR from getting the Answer time - it just
kills all CDRs on that channel, which isn't what the caller would
intend. (closes issue ASTERISK-22884) (closes issue
ASTERISK-22886) Review: https://reviewboard.asterisk.org/r/3057/
........ Merged revisions 404294 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-19 00:32 +0000 [r404293] Damien Wedhorn <voip@facts.com.au>
* /, channels/chan_skinny.c: Fixup skinny registration following
network issues. On session registration, if device is already
reporting that it is connected to a device, an innocuous packet
(update time) is sent to the already connected device. If the tcp
connection is down, the device will be unregistered and the new
connection allowed. Without this patch, network issues can see a
situation where a device can not reregister until after
3*timeout. ........ Merged revisions 404292 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 23:00 +0000 [r404280] Jason Parker <jparker@digium.com>
* main/manager.c, /: Add AMI event for presence state. Review:
https://reviewboard.asterisk.org/r/3039/ ........ Merged
revisions 404275 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404279 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 21:12 +0000 [r404264] Richard Mudgett <rmudgett@digium.com>
* addons/ooh323c/src/ooTimer.c, /: ooh323c: Fix gcc 4.6.3 compiler
warnings. ........ Merged revisions 404212 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404219 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404263 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 20:48 +0000 [r404260-404262] Kevin Harwell <kharwell@digium.com>
* channels/chan_oss.c, /: chan_oss.c: channel being locked twice
and unlocked once Removed channel lock as it is now being down in
ast_channel_alloc ........ Merged revisions 404261 from
http://svn.asterisk.org/svn/asterisk/branches/12
* pbx/pbx_realtime.c, channels/chan_alsa.c, main/stasis_channels.c,
addons/chan_mobile.c, main/bridge_channel.c, tests/test_cdr.c,
channels/chan_pjsip.c, res/parking/parking_manager.c,
channels/chan_mgcp.c, channels/chan_unistim.c, main/pbx.c,
funcs/func_timeout.c, /, apps/app_meetme.c, main/bridge.c,
tests/test_stasis_channels.c, include/asterisk/channel.h,
channels/chan_gtalk.c, channels/sig_pri.c, apps/app_queue.c,
main/cel.c, main/stasis_bridges.c, channels/chan_jingle.c,
channels/chan_phone.c, channels/chan_dahdi.c, main/dial.c,
channels/sig_analog.c, include/asterisk/stasis_channels.h,
res/res_agi.c, channels/chan_motif.c, tests/test_cel.c,
apps/app_confbridge.c, res/res_stasis.c, res/res_pjsip_refer.c,
apps/app_voicemail.c, apps/app_dial.c, channels/chan_vpb.cc,
addons/chan_ooh323.c, main/pickup.c, include/asterisk/aoc.h,
include/asterisk/stasis_bridges.h, apps/app_userevent.c,
apps/app_disa.c, channels/chan_console.c,
include/asterisk/channelstate.h, main/core_local.c,
channels/chan_iax2.c, main/endpoints.c, channels/chan_oss.c,
res/parking/parking_bridge_features.c, apps/app_agent_pool.c,
main/channel.c, channels/chan_misdn.c, channels/chan_skinny.c:
channel locking: Add locking for channel snapshot creation
Original commit message by mmichelson (asterisk 12 r403311):
"This adds channel locks around calls to create channel snapshots
as well as other functions which operate on a channel and then
end up creating a channel snapshot. Functions that expect the
channel to be locked prior to being called have had their
documentation updated to indicate such." The above was initially
committed and then reverted at r403398. The problem was found to
be in core_local.c in the publish_local_bridge_message function.
The ast_unreal_lock_all function locks and adds a reference to
the returned channels and while they were being unlocked they
were not being unreffed when no longer needed. Fixed by unreffing
the channels. Also in bridge.c a lock was obtained on
"other->chan", but then an attempt was made to unlock "other" and
not the previously locked channel. Fixed by unlocking
"other->chan" (closes issue ASTERISK-22709) Reported by: John
Bigelow ........ Merged revisions 404237 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 19:36 +0000 [r404211] Alexandr Anikin <may@telecom-service.ru>
* addons/chan_ooh323.c, configs/ooh323.conf.sample: Introduce new
config option 'aniasdni'. If yes then asterisk set dialed number
as own id back to the caller on incoming h.323 calls. Option can
be set globally or per user section. (closes issue
ASTERISK-22020) Reported by: Ross Beer
2013-12-18 19:28 +0000 [r404210] Joshua Colp <jcolp@digium.com>
* channels/chan_mgcp.c, main/pbx.c, channels/chan_sip.c,
apps/confbridge/conf_chan_record.c, tests/test_app.c,
tests/test_stasis_channels.c, main/core_unreal.c,
include/asterisk/channel.h, channels/chan_console.c,
channels/chan_oss.c, channels/chan_jingle.c,
channels/chan_misdn.c, channels/chan_h323.c, tests/test_cel.c,
channels/chan_nbs.c, channels/chan_pjsip.c, res/res_calendar.c,
apps/app_voicemail.c, channels/chan_unistim.c,
tests/test_substitution.c, channels/chan_vpb.cc,
addons/chan_ooh323.c, channels/chan_multicast_rtp.c, /,
apps/app_meetme.c, res/res_stasis_snoop.c, channels/chan_gtalk.c,
channels/chan_iax2.c, main/channel.c, channels/chan_dahdi.c,
channels/chan_phone.c, channels/chan_skinny.c,
res/parking/parking_tests.c, channels/chan_motif.c,
tests/test_voicemail_api.c, channels/chan_alsa.c, main/message.c,
addons/chan_mobile.c, tests/test_cdr.c: channels: Return
allocated channels locked. This change makes ast_channel_alloc
return allocated channels locked. By doing so no other thread can
acquire, lock, and manipulate the channel before it is completely
set up. (closes issue AST-1256) Review:
https://reviewboard.asterisk.org/r/3067/ ........ Merged
revisions 404204 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 19:10 +0000 [r404198] Alexandr Anikin <may@telecom-service.ru>
* addons/chan_ooh323.c: Implement module reload command for
chan_ooh323 (close issue ASTERISK-22817) Patches:
ooh323_module_reload.patch
2013-12-18 12:46 +0000 [r404185] Matthew Jordan <mjordan@digium.com>
* rest-api/api-docs/applications.json,
rest-api/api-docs/playbacks.json,
rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json,
rest-api/resources.json, rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json,
rest-api/api-docs/deviceStates.json,
rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json,
/, rest-api/api-docs/asterisk.json: ari: Bump the version of ARI
to 1.0.0 (closes issue ASTERISK-23007) ........ Merged revisions
404184 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 12:01 +0000 [r404138] Joshua Colp <jcolp@digium.com>
* res/res_calendar.c, /: res_calendar: Protect channel when adding
datastore. This change adds a missing channel lock when adding a
datastore to a channel. ........ Merged revisions 404135 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404136 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404137 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 00:36 +0000 [r404100] Rusty Newton <rnewton@digium.com>
* /, funcs/func_strings.c: func_strings: Documentation fix for
QUOTE() Example output was inaccurate. (issue ASTERISK-22970)
(closes issue ASTERISK-22970) Reported by: Gareth Palmer Patches:
func_strings.patch uploaded by Gareth Palmer (license 5169)
........ Merged revisions 404081 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 404087 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 404099 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-18 00:17 +0000 [r404051] Matthew Jordan <mjordan@digium.com>
* /, LICENSE: LICENSE: Update language to include ARI ........
Merged revisions 404050 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-17 23:57 +0000 [r404049] Jonathan Rose <jrose@digium.com>
* /, tests/test_cel.c, tests/test_cdr.c: tests: fix
ast_bridge_base_new calls not using the additional arguments
r404042 gave ast_bridge_base_new two new arguments for setting a
bridge creator and name. Unfortunately since a couple test
modules aren't compiled by default, I missed the fact that this
change impacted those tests and caused compilation failures
against them. ........ Merged revisions 404048 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-17 23:38 +0000 [r404047] Rusty Newton <rnewton@digium.com>
* include/asterisk/test.h, main/channel.c, main/rtp_engine.c, /,
channels/chan_iax2.c, apps/app_chanspy.c, apps/app_mixmonitor.c:
Several components: fixing Typos in comments and code,
"avaliable" instead of "available" (issue ASTERISK-23021) (closes
issue ASTERISK-23021) Reported by: Jeremy Lainé Tested by: Rusty
Newton Patches: available.patch uploaded by Jeremy Lainé (license
6561) ........ Merged revisions 404046 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-17 23:25 +0000 [r404043] Jonathan Rose <jrose@digium.com>
* apps/app_bridgewait.c, res/ari/ari_model_validators.c,
doc/appdocsxml.xslt, main/stasis_bridges.c,
rest-api/api-docs/bridges.json, res/ari/resource_bridges.c,
apps/app_agent_pool.c, res/parking/parking_bridge.c,
res/ari/ari_model_validators.h, main/manager_bridges.c,
res/ari/resource_bridges.h, include/asterisk/bridge_internal.h,
apps/app_confbridge.c, res/res_stasis.c,
include/asterisk/bridge.h, res/res_ari_bridges.c, /,
main/bridge.c, main/bridge_basic.c,
include/asterisk/stasis_bridges.h, include/asterisk/stasis_app.h:
bridging: Give bridges a name and a known creator Bridges have
two new optional properties, a creator and a name. Certain
consumers of bridges will automatically provide bridges that they
create with these properties. Examples include app_bridgewait,
res_parking, app_confbridge, and app_agent_pool. In addition, a
name may now be provided as an argument to the POST function for
creating new bridges via ARI. (closes issue AFS-47) Review:
https://reviewboard.asterisk.org/r/3070/ ........ Merged
revisions 404042 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-17 18:35 +0000 [r404028-404030] Joshua Colp <jcolp@digium.com>
* res/res_sorcery_config.c, /: res_sorcery_config: Output an error
message when an object can't be created. If object creation fails
an error message will now be output with the id, type, and
configuration file. ........ Merged revisions 404029 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/framehook.c: framehooks: Re-iterate if framehook provides
different frame. Framehooks can be used in a reactive manner to
execute specific logic when a frame is received with a certain
type and payload. Since it is possible for framehooks to provide
frames it was possible for this reactive framehook to be unaware
of frames it is looking for. This change makes it so that when
framehooks return a modified frame the code will now re-iterate
(from the beginning) and call any previous framehooks that have
not provided a modified frame themselves. Review:
https://reviewboard.asterisk.org/r/3046/ ........ Merged
revisions 404027 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-17 14:41 +0000 [r404008-404009] David M. Lee <dlee@digium.com>
* /, configs/asterisk.conf.sample, main/asterisk.c: Changed the
default for live_dangerously to no ........ Merged revisions
404006 from http://svn.asterisk.org/svn/asterisk/branches/12
* channels/pjsip, /: Setting svn:ignore ........ Merged revisions
403748 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-17 12:59 +0000 [r403994] Matthew Jordan <mjordan@digium.com>
* /, res/ari/resource_channels.c: ari/resource_channels: When
creating a channel, specify a default format (SLIN) When creating
channels via ARI, the current code fails to provide any default
format capabilities. For non-virtual channels this isn't really a
problem - the channels typically receive their capabilities as a
result of the underlying channel driver configuration. For
virtual channels (such as Local channels), the lack of any format
capabilities causes the Asterisk core to make some 'odd' choices
with respect to the translation paths. The issue reporter had
some paths that had 3 hops on each channel leg, causing multiple
transcodings and some really crappy audio/performance. By
specifying a baseline of SLIN, we prevent that from occurring.
Note that this is what AMI does when it performs an Originate, as
does res_clioriginate. Review:
https://reviewboard.asterisk.org/r/3068/ (issue ASTERISK-22962)
Reported by: Matt DiMeo ........ Merged revisions 403993 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-16 19:11 +0000 [r403960] David M. Lee <dlee@digium.com>
* include/asterisk/pbx.h, main/asterisk.c, funcs/func_realtime.c,
main/pbx.c, main/tcptls.c, funcs/func_db.c, /,
README-SERIOUSLY.bestpractices.txt, configs/asterisk.conf.sample,
funcs/func_shell.c, funcs/func_env.c, funcs/func_lock.c,
UPGRADE-12.txt: security: Inhibit execution of privilege
escalating functions This patch allows individual dialplan
functions to be marked as 'dangerous', to inhibit their execution
from external sources. A 'dangerous' function is one which
results in a privilege escalation. For example, if one were to
read the channel variable SHELL(rm -rf /) Bad Things(TM) could
happen; even if the external source has only read permissions.
Execution from external sources may be enabled by setting
'live_dangerously' to 'yes' in the [options] section of
asterisk.conf. Although doing so is not recommended. Also, the
ABI was changed to something more reasonable, since Asterisk 12
does not yet have a public release. (closes issue ASTERISK-22905)
Review: http://reviewboard.digium.internal/r/432/ ........ Merged
revisions 403913 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 403917 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 403959 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-16 18:31 +0000 [r403958] Jonathan Rose <jrose@digium.com>
* /, main/bridge.c: transfers: Fix bug setting both BLINDTRANSFER
and ATTENDEDTRANSFER The ast_bridge_set_transfer_variables
function is supposed to wipe whichever variable isn't being set.
Instead it was setting both to the new value. Oops. (issue
AFS-24) ........ Merged revisions 403957 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-16 16:12 +0000 [r403857-403865] Scott Griepentrog <sgriepentrog@digium.com>
* main/pbx.c, /: pbx.c: put copy of ast_exten.data on stack to
prevent memory corruption During dialplan execution in
pbx_extension_helper(), the contexts global read lock prevents
link list corruption, but was released with a pointer to the
ast_exten and data later used in variable substitution. Instead,
this patch removes pbx_substitute_variables() and locates a copy
of the ast_exten data on the stack before releasing the lock,
where ast_exten could get free'd by another thread performing a
module reload. (issue AST-1179) Reported by: Thomas Arimont
(issue AST-1246) Reported by: Alexander Hömig Review:
https://reviewboard.asterisk.org/r/3055/ ........ Merged
revisions 403862 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 403863 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 403864 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_sms.c: app_sms: BufferOverflow when receiving odd
length 16 bit message This patch prevents an infinite loop
overwriting memory when a message is received into the
unpacksms16() function, where the length of the message is an odd
number of bytes. (closes issue ASTERISK-22590) Reported by: Jan
Juergens Tested by: Jan Juergens ........ Merged revisions 403856
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-15 01:39 +0000 [r403824] Matthew Jordan <mjordan@digium.com>
* channels/pjsip/dialplan_functions.c, /: pjsip/dialplan_functions:
Use the right buffer length when printing URIs While
entertaining, sizeof(buflen) is not the same as buflen. Doh.
........ Merged revisions 403823 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-14 17:28 +0000 [r403810-403812] Joshua Colp <jcolp@digium.com>
* include/asterisk/res_pjsip.h, /, res/res_pjsip/location.c,
res/res_pjsip/pjsip_options.c, res/res_pjsip.c: res_pjsip: Apply
outbound proxy to all SIP requests. Objects which are involved in
SIP request creation and sending now allow an outbound proxy to
be specified. For cases where an endpoint is used the outbound
proxy specified there will be applied. (closes issue
ASTERISK-22673) Reported by: Antti Yrjola Review:
https://reviewboard.asterisk.org/r/3022/ ........ Merged
revisions 403811 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_channels.c, apps/app_queue.c,
res/ari/ari_model_validators.c, apps/app_dial.c,
res/ari/ari_model_validators.h, main/dial.c,
include/asterisk/stasis_channels.h,
rest-api/api-docs/events.json, /, res/stasis/app.c: res_stasis:
Expose event for call forwarding and follow forwarded channel.
This change adds an event for when an originated call is
redirected to another target. This event contains the original
channel and the newly created channel. If a stasis subscription
exists on the original originated channel for a stasis
application then a new subscription will also be created on the
stasis application to the redirected channel. This allows the
application to follow the call path completely. (closes issue
ASTERISK-22719) Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/3054/ ........ Merged
revisions 403808 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-13 21:35 +0000 [r403797] Jonathan Rose <jrose@digium.com>
* /, res/res_pjsip_messaging.c, main/message.c: documentation: Add
PJSIP technology to messaging documentation ........ Merged
revisions 403796 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-13 20:17 +0000 [r403784] Richard Mudgett <rmudgett@digium.com>
* /, main/test.c: test.c: Fix too sticky unit test failed status.
Rerunning a failed unit test after loading any required modules
should allow the test to report a pass status if it now passes.
........ Merged revisions 403782 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-13 20:13 +0000 [r403783] Jonathan Rose <jrose@digium.com>
* /, main/bridge.c, main/bridge_basic.c, include/asterisk/bridge.h,
res/parking/parking_bridge_features.c,
res/parking/parking_manager.c: Transfers: Make Asterisk set
ATTENDEDTRANSFER/BLINDTRANSFER more reliably There were still a
few cases in which ATTENDEDTRANSFER and BLINDTRANSFER wouldn't be
set on channels involved with blind and attended transfers. This
would happen with features that were initialized by channel
driver specific mechanisms in multiparty calls. This patch
resolves those cases while attempted to keep the behavior for
setting those variables as consistent as possible. (closes issue
AFS-24) Review: https://reviewboard.asterisk.org/r/3040/ ........
Merged revisions 403781 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-13 18:33 +0000 [r403750-403768] Kevin Harwell <kharwell@digium.com>
* main/channel.c, /, channels/chan_sip.c,
include/asterisk/channel.h, bridges/bridge_native_rtp.c,
channels/chan_pjsip.c: bridge_native_rtp: Deadlock during 4-way
conference creation The change contains a slightly adjusted patch
that was on the issue (submitted by kmoore). A fix was made by
adding in a bridge lock while calling bridge_start/stop from the
framehook callback. Since the framehook callback is not called
from the bridging core the bridge is not locked, but needs to be
before calling bridge_start. (closes issue ASTERISK-22749)
Reported by: Kinsey Moore Review:
https://reviewboard.asterisk.org/r/3066/ Patches:
lock_inversion.diff uploaded by kmoore (license 6273) ........
Merged revisions 403767 from
http://svn.asterisk.org/svn/asterisk/branches/12
* rest-api/api-docs/channels.json, res/ari/resource_channels.c,
res/res_ari_channels.c, res/ari/resource_channels.h, /,
main/http.c: ARI: Allow specifying channel variables during a
POST /channels Added the ability to specify channel variables
when creating/originating a channel in ARI. The variables are
sent in the body of the request and should be formatted as a
single level JSON object. No nested objects allowed. For example:
{"variable1": "foo", "variable2": "bar"}. (closes issue
ASTERISK-22872) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3052/ ........ Merged
revisions 403752 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_answer.c, rest-api/api-docs/bridges.json,
res/ari/resource_bridges.c, res/res_ari_bridges.c,
res/stasis/command.c, res/res_stasis_playback.c, /,
res/stasis/control.c, res/stasis/command.h,
include/asterisk/stasis_app.h,
include/asterisk/stasis_app_impl.h, res/res_stasis_recording.c:
ARI: Adding a channel to a bridge while a live recording is
active blocks Added the ability to have rules that are checked
when adding and/or removing channels to/from a bridge. In this
case, if a channel is currently recording and someone attempts to
add it to a bridge an "is recording" rule is checked, fails, and
a 409 conflict is returned. Also command functions now return an
integer value that can be descriptive of what kind of problems,
if any, occurred before or during execution. (closes issue
ASTERISK-22624) Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/2947/ ........ Merged
revisions 403749 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-13 05:00 +0000 [r403737] Matthew Jordan <mjordan@digium.com>
* /, channels/Makefile: channels/Makefile: clean pjsip directory
........ Merged revisions 403736 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-13 00:40 +0000 [r403726] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/app.h, tests/test_voicemail_api.c, main/app.c:
test_voicemail_api: Add check for a registered voicemail provider
before tests. It is much nicer diagnosing a test failure if
app_voicemail is actually loaded.
2013-12-12 19:46 +0000 [r403714] Scott Griepentrog <sgriepentrog@digium.com>
* contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py
(added), /: realtime: Create extensions in alembic ast-db-manage
contribution When the alembic scripts were written for creating
Asterisk realtime databases the extensions table for dialplan
wasn't included. This update creates the extensions table.
(closes issue ASTERISK-22815) Reported by: Zone Conkle Review:
https://reviewboard.asterisk.org/r/3064/ ........ Merged
revisions 403713 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-12 19:18 +0000 [r403707] Jonathan Rose <jrose@digium.com>
* /, channels/chan_pjsip.c: chan_pjsip: Revert r403587 This patch
was intended to eliminate a deadlock that occurs when masquerades
occur in pjsip channels, but has some potential side effects.
Mark Michelson is currently working on addressing this problem
from another angle. (issue ASTERISK-22936) Reported by: Jonathan
Rose ........ Merged revisions 403705 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-11 20:24 +0000 [r403687] Kevin Harwell <kharwell@digium.com>
* include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c, /,
configs/pjsip.conf.sample, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip_messaging.c,
res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip.c:
res_pjsip_messaging: send message to a default outbound endpoint
In some cases messages need to be sent to a direct URI (sip:<ip
address>). This patch adds in that support by using a default
outbound endpoint. When sending messages, if no endpoint can be
found then the default one is used. To facilitate this a new
default_outbound_endpoint option was added to the globals section
for pjsip.conf. Review: https://reviewboard.asterisk.org/r/2944/
........ Merged revisions 403680 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-11 19:22 +0000 [r403652] Russell Bryant <russell@russellbryant.com>
* /, channels/chan_sip.c: Reset peer outboundproxy on sip.conf
reload If you set a peer's outboundproxy and then removed it from
the config, this would not get picked up in a config reload. This
patch fixes that by resetting it in set_peer_defaults(). Closes
ASTERISK-19454 Review: https://reviewboard.asterisk.org/r/3065/
........ Merged revisions 403634 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 403635 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 403639 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-11 19:19 +0000 [r403643] Richard Mudgett <rmudgett@digium.com>
* apps/app_voicemail.c, include/asterisk/app.h,
include/asterisk/doxyref.h, main/app.c: app_voicemail: Voicemail
callback registration/unregistration function improvements. * The
voicemail registration/unregistration functions now take a struct
of callbacks instead of a lengthy parameter list of callbacks. *
The voicemail registration/unregistration functions now prevent a
competing module from interfering with an already registered
callback supplying module.
2013-12-11 13:06 +0000 [r403617-403619] Matthew Jordan <mjordan@digium.com>
* channels/pjsip/dialplan_functions.c,
include/asterisk/res_pjsip_session.h, channels/pjsip (added), /,
funcs/func_channel.c, channels/pjsip/include,
channels/pjsip/include/dialplan_functions.h, res/res_pjsip_t38.c,
channels/pjsip/include/chan_pjsip.h, channels/Makefile,
channels/chan_pjsip.c, main/xmldoc.c: func_channel, chan_pjsip:
Add CHANNEL read function support for chan_pjsip This patch adds
CHANNEL read support for chan_pjsip. This allows the dialplan to
use the CHANNEL function on a chan_pjsip channel to obtain
run-time information about the channel from the PJSIP channel
driver and the PJSIP stack. This includes: * RTP information,
including source/destination media addresses, whether or not the
media is secure, held, and other properties. * RTCP information.
This includes sets of parseable information, as well as
individual statistic attriutes. * PJSIP information. This
includes URIs, local/remote signalling addresses, whether or not
the signalling is secure, and other properties. * The endpoint
name. This can be used in conjunction with the PJSIP_ENDPOINT
function to obtain more detailed endpoint information. Review:
https://reviewboard.asterisk.org/r/3038/ ........ Merged
revisions 403618 from
http://svn.asterisk.org/svn/asterisk/branches/12
* Makefile, funcs/func_pjsip_endpoint.c (added), doc/snapshots.xslt
(removed), /, doc/appdocsxml.xslt (added), doc/appdocsxml.dtd,
main/sorcery.c: func_pjsip_endpoint: Add PJSIP_ENDPOINT function
for querying endpoint details This patch adds a new function,
PJSIP_ENDPOINT, which lets the dialplan query, for any endpoint,
any property configured on an endpoint. This function is a
companion to the CHANNEL function, which can be used to extract
the endpoint name for a channel. Review:
https://reviewboard.asterisk.org/r/3035 ........ Merged revisions
403616 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-10 15:15 +0000 [r403605] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_authenticator_digest.c: Fix correct authentication
behavior for artificial endpoint. When switching to using a
vector for authentication, I initialized the vector for the
artificial endpoint to be of size 1. However, this does not
result in AST_VECTOR_SIZE() returning 1 since there isn't
actually anything in the vector. Rather than trifle with the
vector by putting unnecessary elements in, I simply changed the
callback in res_pjsip_authenticator_digest.c to explicitly report
that the artificial endpoint requires authentication. Thanks to
Joshua Colp for pointing this out.
2013-12-09 22:59 +0000 [r403576-403588] Jonathan Rose <jrose@digium.com>
* /, channels/chan_pjsip.c: chan_pjsip: Fix a sticking channel lock
caused by channel masquerades (closes issue ASTERISK-22936)
Reported by: Jonathan Rose Review:
https://reviewboard.asterisk.org/r/3042/ ........ Merged
revisions 403587 from
http://svn.asterisk.org/svn/asterisk/branches/12
* CHANGES, main/dial.c, apps/app_page.c, include/asterisk/dial.h:
app_page: Add predial handlers for app_page. (closes issue
AFS-14) Review: https://reviewboard.asterisk.org/r/3045/
2013-12-09 19:24 +0000 [r403544-403560] Richard Mudgett <rmudgett@digium.com>
* /, res/res_sorcery_astdb.c: Reverting regex part of -r403545 at
request of file. res_sorcery_astdb.c: Fix get multiple records by
regex. * Fix sorcery_astdb_retrieve_regex() pattern matching. Let
the regexec() function match the stored key values instead of
having astdb prefilter them. Previoiusly you could only use a
simple regex pattern when the pattern began with '^'. ........
Merged revisions 403559 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_sorcery_astdb.c: res_sorcery_astdb.c: Fix get multiple
records by regex. * Fix sorcery_astdb_retrieve_regex() pattern
matching. Let the regexec() function match the stored key values
instead of having astdb prefilter them. Previoiusly you could
only use a simple regex pattern when the pattern began with '^'.
* Fix off nominal memory leak in sorcery_astdb_retrieve_regex().
........ Merged revisions 403545 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/sorcery.c, /: sorcery: Eliminate shadowing a varaible that
caused confusion. * Eliminated shadowing of the
__ast_sorcery_apply_config() name parameter causing confusion. *
Fix potential crash from sorcery.conf user input in
__ast_sorcery_apply_config() if the user supplied a malformed
config line that is missing the sorcery object type name. *
Remove redundant test in __ast_sorcery_apply_config(). !config
and config == CONFIGS_STATUS_FILEMISSING are identical. ........
Merged revisions 403541 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-09 18:32 +0000 [r403543] Joshua Colp <jcolp@digium.com>
* /, main/endpoints.c: endpoints: Keep a reference to channel ids
when creating snapshot. The snapshot process for endpoints uses
the channel ids present on the endpoint itself. Without keeping a
reference it was possible for the strings to be freed underneath
any consumer of an endpoint snapshot. A reference is now held by
the snapshot to the channel ids and released when the snapshot is
destroyed. (issue ASTERISK-22801) Reported by: Matt Jordan
........ Merged revisions 403542 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-09 18:14 +0000 [r403528] Richard Mudgett <rmudgett@digium.com>
* main/sorcery.c, /: sorcery: Whitespace You would think that a new
file would start off without any whitespace oddities. ........
Merged revisions 403527 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-09 17:29 +0000 [r403512-403526] Mark Michelson <mmichelson@digium.com>
* apps/app_confbridge.c, CHANGES,
apps/confbridge/conf_state_multi_marked.c: Add a
CONFBRIDGE_RESULT channel variable to discern why a channel left
a ConfBridge. Review: https://reviewboard.asterisk.org/r/3009
* CHANGES, apps/app_mixmonitor.c: Create function for retrieving
Mixmonitor instance data. For the time, this is only useful for
retrieving the filename. The purpose of this function is to
better facilitate multiple mixmonitors per channel. Setting a
MIXMONITOR_FILENAME channel variable is not conducive to such
behavior, so allowing finer grained access to individual
mixmonitor properties improves the situation. The
MIXMONITOR_FILENAME channel variable is still set, though, so
there is no worry about backwards compatibility. Review:
https://reviewboard.asterisk.org/r/3023
2013-12-09 16:41 +0000 [r403511] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_nat.c, /: res_pjsip_nat: Add NAT module to session
dialogs. Due to the way pjproject internally works it was
possible for the NAT module to not be invoked on messages with-in
a session dialog. This means that the various parts of the
message would not get rewritten with the source IP address and
port. This change uses a session supplement to add the NAT module
to the dialog on the first incoming or outgoing INVITE. (closes
issue ASTERISK-22941) Reported by: Leif Madsen ........ Merged
revisions 403510 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-09 16:10 +0000 [r403499] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip/config_auth.c,
res/res_pjsip_outbound_authenticator_digest.c,
res/res_pjsip_authenticator_digest.c,
res/res_pjsip_outbound_registration.c,
res/res_pjsip/pjsip_configuration.c,
res/res_pjsip/pjsip_distributor.c, res/res_pjsip.c,
include/asterisk/res_pjsip.h: Switch PJSIP auth to use a vector.
Since Asterisk has a vector API now, places where arrays are
manually resized don't really make sense any more. Since the auth
work in PJSIP was freshly-written, it was easy to reform it to
use a vector. Review: https://reviewboard.asterisk.org/r/3044
2013-12-09 03:21 +0000 [r403436-403466] Matthew Jordan <mjordan@digium.com>
* /, res/res_fax_spandsp.c: res_fax_spandsp: Always init T.38
session to avoid crashes during state change Prior to this patch,
res_fax_spandsp was conservative with how it initialized the
spandsp T.38 context. It would only initialize it if the driver
thought the current state was a T.38 fax. While this works fine
in nominal situations, in certain off nominal situations,
res_fax_spandsp can believe that a T.38 fax will not occur when
in fact one has started. In particular, this was discovered when
res_fax would fall back to audio after timing out on a T.38
upgrade. The SIP channel driver would continue to retry the
re-INVITE and - if the remote end responded after res_fax timed
out with a 200 OK - a T.38 frame would be delivered to the
res_fax stack when it no longer expected it. As it turns out,
there does not appear to be any downside to always initializing
the T.38 context, other than the actual memory allocation. Since
that avoids this off nominal situation (and others which are
equally likely hard to predict), this is the safest way to avoid
this problem. Much thanks to Torrey as well for providing a
scenario that reproduces this issue. (closes issue
ASTERISK-21242) Reported by: Ashley Winters Tested by: Torrey
Searle patches: always-init-t38.patch uploaded by awinters
(License 6477) A_PARTY.xml uploaded by tsearle (License 5334)
........ Merged revisions 403449 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 403450 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 403458 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_config_sqlite.c: res_config_sqlite: Check for CDR
unregistration failures If the CDR unregistration fails due to an
inflight CDR, the res_config_sqlite module needs to bail on
unloading itself. Otherwise, the config could be unloaded
(including the CDR table name) while the CDR engine posts a CDR
to the still registered backend, resulting in a crash. ........
Merged revisions 403435 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-05 23:40 +0000 [r403414] Jonathan Rose <jrose@digium.com>
* apps/app_record.c: app_record: Add an option that allows DTMF '0'
to act as an additional terminator Using this terminator when
active results in ${RECORD_STATUS} being set to 'OPERATOR'
instead of 'DTMF' (closes issue AFS-7) Review:
https://reviewboard.asterisk.org/r/3041/
2013-12-05 22:10 +0000 [r403402-403404] David M. Lee <dlee@digium.com>
* addons/chan_mobile.c, main/bridge_channel.c, tests/test_cdr.c,
channels/chan_pjsip.c, res/parking/parking_manager.c,
channels/chan_mgcp.c, channels/chan_unistim.c, main/pbx.c, /,
apps/app_meetme.c, funcs/func_timeout.c, main/bridge.c,
tests/test_stasis_channels.c, main/core_unreal.c,
include/asterisk/channel.h, channels/chan_gtalk.c, main/cel.c,
apps/app_queue.c, channels/sig_pri.c, main/stasis_bridges.c,
channels/chan_jingle.c, channels/chan_phone.c,
channels/chan_dahdi.c, main/dial.c, channels/sig_analog.c,
include/asterisk/stasis_channels.h, res/res_agi.c,
channels/chan_motif.c, channels/chan_h323.c, tests/test_cel.c,
apps/app_confbridge.c, res/res_stasis.c, res/res_pjsip_refer.c,
apps/app_voicemail.c, apps/app_dial.c, channels/chan_vpb.cc,
addons/chan_ooh323.c, channels/chan_sip.c, main/pickup.c,
include/asterisk/aoc.h, include/asterisk/stasis_bridges.h,
apps/app_userevent.c, apps/app_disa.c, main/core_local.c,
include/asterisk/channelstate.h, channels/chan_console.c,
channels/chan_iax2.c, main/endpoints.c, channels/chan_oss.c,
res/parking/parking_bridge_features.c, apps/app_agent_pool.c,
main/channel.c, channels/chan_misdn.c, channels/chan_skinny.c,
pbx/pbx_realtime.c, channels/chan_alsa.c, main/stasis_channels.c,
channels/chan_nbs.c: Reverting r403311. It's causing ARI tests to
hang. ........ Merged revisions 403398 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/stasis/control.c: ari: Fix deadlock problem with functions
that use autoservice. The code for getting channel variables from
ARI assumed that you needed to lock the channel in order to
properly execute functions and read channel variables.
Apparently, this is not the case, since any dialplan function
that puts the channel into autoservice deadlocks when attempting
to remove the channel from autoservice. ........ Merged revisions
403342 from http://svn.asterisk.org/svn/asterisk/branches/12
* /: Multiple revisions 403304,403310 ........ r403304 | dlee |
2013-12-02 12:34:50 -0600 (Mon, 02 Dec 2013) | 1 line Fixed the
filename for the ari.conf docs ........ r403310 | file |
2013-12-03 10:32:12 -0600 (Tue, 03 Dec 2013) | 5 lines Revert
revision 403304: Fixed the filename for the ari.conf docs The
changed value refers to the name of the module. The name of the
configuration file is specified in the configFile section.
........ Merged revisions 403304,403310 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-04 21:42 +0000 [r403378] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip_registrar.c: res_pjsip_registrar: undefined
function pointer symbol Used a static wrapper around the
offending function to alleviate the issue. Reported by: rmudgett
........ Merged revisions 403377 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-04 20:54 +0000 [r403365] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_t38.c, /: res_pjsip_t38: Don't pass T.38 control
frames through to other hooks. This crept up during gateway
testing where the gateway would receive the request to negotiate
and assume it came from the remote side, causing the gateway
state machine to go a little, to a use a technical term, "wonky".
........ Merged revisions 403364 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-04 18:41 +0000 [r403350] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip.c: Initialize the hash value argument to
pj_hash_get() to 0. Passing a non-zero value causes PJLIB to use
the given input as the hash value. Passing zero causes the
parameter to become an output parameter that receives the hash
value that was computed based on the given key. This change
essentially makes ast_sip_dict_get() properly retrieve the
desired value. ........ Merged revisions 403349 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-03 18:01 +0000 [r403330] Joshua Colp <jcolp@digium.com>
* /, configure, include/asterisk/autoconfig.h.in, configure.ac,
res/res_pjsip_session.c: res_pjsip_session: Add support for
PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE flag. Newer versions of PJSIP
have changed to using a flag for the
PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE instead of a define. This adds
a configure check to detect the presence of the flag and use it
if found. ........ Merged revisions 403329 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-03 17:35 +0000 [r403327] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip_registrar_expire.c, res/res_pjsip/pjsip_options.c,
tests/test_sorcery.c, include/asterisk/bucket.h, main/sorcery.c,
/, main/bucket.c: sorcery, bucket: Change observer remove calls
to take const callbacks struct. * Make
ast_sorcery_observer_remove() accept a const callbacks struct. *
Make ast_sorcery_observer_remove() tolerant of the sorcery
parameter being NULL. Now it can be called within a module unload
routine if the sorcery initialization fails. * Fix
ast_sorcery_observer_add() to fail if the container link fails.
........ Merged revisions 403324 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-03 17:07 +0000 [r403314] Mark Michelson <mmichelson@digium.com>
* channels/chan_nbs.c, main/bridge_channel.c, res/res_stasis.c,
channels/chan_pjsip.c, res/parking/parking_manager.c,
apps/app_voicemail.c, channels/chan_unistim.c,
channels/chan_vpb.cc, addons/chan_ooh323.c, /,
include/asterisk/aoc.h, apps/app_meetme.c, main/bridge.c,
apps/app_userevent.c, channels/chan_gtalk.c,
channels/chan_iax2.c, main/endpoints.c, main/stasis_bridges.c,
main/channel.c, channels/chan_phone.c, channels/chan_dahdi.c,
main/dial.c, channels/sig_analog.c, channels/chan_skinny.c,
res/res_agi.c, channels/chan_motif.c, pbx/pbx_realtime.c,
channels/chan_alsa.c, main/stasis_channels.c,
apps/app_confbridge.c, addons/chan_mobile.c, tests/test_cdr.c,
res/res_pjsip_refer.c, channels/chan_mgcp.c, apps/app_dial.c,
main/pbx.c, channels/chan_sip.c, main/pickup.c,
funcs/func_timeout.c, tests/test_stasis_channels.c,
main/core_unreal.c, include/asterisk/stasis_bridges.h,
apps/app_disa.c, include/asterisk/channel.h, main/core_local.c,
include/asterisk/channelstate.h, channels/chan_console.c,
main/cel.c, apps/app_queue.c, channels/sig_pri.c,
channels/chan_oss.c, res/parking/parking_bridge_features.c,
apps/app_agent_pool.c, channels/chan_jingle.c,
channels/chan_misdn.c, include/asterisk/stasis_channels.h,
channels/chan_h323.c, tests/test_cel.c: Add channel locking for
channel snapshot creation. This adds channel locks around calls
to create channel snapshots as well as other functions which
operate on a channel and then end up creating a channel snapshot.
Functions that expect the channel to be locked prior to being
called have had their documentation updated to indicate such.
........ Merged revisions 403311 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-03 16:39 +0000 [r403313] Joshua Colp <jcolp@digium.com>
* main/media_index.c, /: media_index: Make media indexing tolerable
of bad symlinks. Media indexing will now skip over files and
directories that stat will not return information about. This can
occur under normal conditions when a symbolic link points to a
location that no longer exists. ........ Merged revisions 403312
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-02 18:12 +0000 [r403292] Alexandr Anikin <may@telecom-service.ru>
* addons/chan_ooh323.c, /: Check and reject non-digits e164 values
on peers and general sections in ooh323.conf Regenerate e164
endpoint list on reload ooh323 (issue ASTERISK-22901) Reported
by: Cyril CONSTANTIN Patches: ASTERISK-22901.patch ........
Merged revisions 403288 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 403290 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-12-01 21:13 +0000 [r403257-403272] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_session.c: res_pjsip_session: Apply fromuser and
fromdomain to all requests as documented. ........ Merged
revisions 403271 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_t38.c, /: res_pjsip_t38: Add the framehook to the
channel only on first INVITE. The check for determining whether
the T.38 framehook should be added to the channel or not has now
been changed to guarantee adding only occurs on the first
incoming or outgoing INVITE. ........ Merged revisions 403258
from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip/security_events.c, res/res_pjsip/pjsip_options.c,
res/res_pjsip.c, res/res_pjsip_transport_websocket.c,
include/asterisk/res_pjsip.h, /, res/res_pjsip/location.c:
res_pjsip_transport_websocket: Fix security events and simplify
implementation. Transport type determination for security events
has been simplified to use the type present on the message itself
instead of searching through configured transports to find the
transport used. The actual WebSocket transport has also been
simplified. It now leverages the existing PJSIP transport manager
for finding the active WebSocket transport for outgoing messages.
This removes the need for res_pjsip_transport_websocket to store
a mapping itself. (closes issue ASTERISK-22897) Reported by: Max
E. Reyes Vera J. Review: https://reviewboard.asterisk.org/r/3036/
........ Merged revisions 403256 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-30 14:12 +0000 [r403241] Joshua Colp <jcolp@digium.com>
* res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /,
res/ari/ari_model_validators.c: res_ari: Add Recording events to
the validator. ........ Merged revisions 403240 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-28 02:12 +0000 [r403208-403224] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_sdp_rtp.c, /: res_pjsip_sdp_rtp: Don't produce an
invalid media stream with no formats. Depending on configuration
it was possible for a media stream to be created without any
media formats. The produced SDP would fail internal validation
and cause a crash. The code will now no longer add media streams
with no formats to the SDP, allowing it to pass validation and
work. (closes issue ASTERISK-22858) Reported by: Anthony Messina
........ Merged revisions 403223 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_header_funcs.c, /: res_pjsip_header_funcs: Don't
add headers to re-INVITEs. When sending a re-INVITE to an
endpoint it was possible for received headers to be added as well
(since they are stored for retrieval using the PJSIP_HEADER
dialplan function). This caused a broken (and potentially large)
SIP INVITE to be produced and sent. This changes the module so it
will no longer add headers to re-INVITEs. (closes issue
ASTERISK-22882) Reported by: David M. Lee ........ Merged
revisions 403221 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_playback.c, /: res_stasis_playback: Add 'number',
'digits', and 'characters' URI scheme implementations. This
change adds new URI scheme implementations for playing numbers,
digits, and characters. This is done as part of the normal
playback mechanism and can be used with queueing to create a
combined sentence. Review:
https://reviewboard.asterisk.org/r/3028/ ........ Merged
revisions 403209 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_configuration.c, res/res_pjsip.c,
res/res_pjsip_session.c, include/asterisk/res_pjsip.h:
res_pjsip_session: Add configurable behavior for redirects. The
action taken when a redirect occurs is now configurable on a
per-endpoint basis. The redirect can either be treated as a
redirect to a local extension, to a URI that is dialed through
the Asterisk core, or to a URI that is dialed within PJSIP
itself. (closes issue ASTERISK-21710) Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/2963/ ........ Merged
revisions 403207 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-27 17:32 +0000 [r403192] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/astdb.h: astdb: Tweak some doxygen comments.
2013-11-27 16:12 +0000 [r403180] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Fix crash when
reloading certain configurations. Certain options available that
specify a SIP URI perform validation on the provided URI using
the PJSIP URI parser. This operation requires that the thread
executing it be registered with the PJLIB library. During reloads
this was done on a thread which was NOT registered with it. This
fixes the problem by creating a task which reloads the
configuration on a PJSIP thread. (closes issue ASTERISK-22923)
Reported by: Anthony Messina ........ Merged revisions 403179
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-27 15:48 +0000 [r403177] David M. Lee <dlee@digium.com>
* res/res_ari_channels.c, include/asterisk/ari.h,
rest-api-templates/param_parsing.mustache,
include/asterisk/http.h, res/res_ari_recordings.c,
res/res_ari_endpoints.c, main/http.c,
rest-api-templates/swagger_model.py, res/res_ari_playbacks.c,
res/res_ari_sounds.c, rest-api-templates/asterisk_processor.py,
res/res_ari_bridges.c, tests/test_ari.c, res/res_ari.c, /,
res/res_ari_device_states.c, res/res_ari_asterisk.c,
rest-api-templates/res_ari_resource.c.mustache,
res/res_ari_applications.c: ari:Add application/json parameter
support The patch allows ARI to parse request parameters from an
incoming JSON request body, instead of requiring the request to
come in as query parameters (which is just weird for POST and
DELETE) or form parameters (which is okay, but a bit asymmetric
given that all of our responses are JSON). For any operation that
does _not_ have a parameter defined of type body (i.e.
"paramType": "body" in the API declaration), if a request
provides a request body with a Content type of
"application/json", the provided JSON document is parsed and
searched for parameters. The expected fields in the provided JSON
document should match the query parameters defined for the
operation. If the parameter has 'allowMultiple' set, then the
field in the JSON document may optionally be an array of values.
(closes issue ASTERISK-22685) Review:
https://reviewboard.asterisk.org/r/2994/
2013-11-27 15:31 +0000 [r403161-403174] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Update
handling of some options to work with new option names. Some
options (such as call_group and pickup_group) share the same
configuration handler and decide what logic to use based on the
name of the option. These handlers were not updated to check for
the new option names and were treating the options as invalid.
This change simply updates the handlers with the proper names of
the options. (closes issue ASTERISK-22922) Reported by: Anthony
Messina ........ Merged revisions 403173 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, configure, include/asterisk/autoconfig.h.in, configure.ac: Fix
a configure issue with PJSIP transaction group lock detection.
The configure check did not use the provided paths for pjproject
if provided when looking for transaction group lock support.
........ Merged revisions 403160 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-23 17:48 +0000 [r403133-403135] Kevin Harwell <kharwell@digium.com>
* res/ari.make, rest-api/api-docs/applications.json,
res/ari/resource_device_states.h (added),
include/asterisk/stasis_app_device_state.h (added),
res/ari/resource_applications.h, res/res_stasis.c,
include/asterisk/devicestate.h, rest-api/api-docs/events.json,
res/res_stasis_device_state.exports.in (added), res/stasis/app.c,
res/res_ari_device_states.c (added), /,
include/asterisk/stasis_app.h, main/devicestate.c,
res/stasis/app.h, rest-api/resources.json,
res/res_stasis_device_state.c (added),
res/ari/ari_model_validators.c, res/ari/ari_model_validators.h,
res/ari/resource_device_states.c (added),
rest-api/api-docs/deviceStates.json (added),
rest-api-templates/ari.make.mustache: ARI: Implement device state
API Created a data model and implemented functionality for an ARI
device state resource. The following operations have been added
that allow a user to manipulate an ARI controlled device:
Create/Change the state of an ARI controlled device PUT
/deviceStates/{deviceName}&{deviceState} Retrieve all ARI
controlled devices GET /deviceStates Retrieve the current state
of a device GET /deviceStates/{deviceName} Destroy a device-state
controlled by ARI DELETE /deviceStates/{deviceName} The ARI
controlled device must begin with 'Stasis:'. An example
controlled device name would be Stasis:Example. A
'DeviceStateChanged' event has also been added so that an
application can subscribe and receive device change events. Any
device state, ARI controlled or not, can be subscribed to. While
adding the event, the underlying subscription control mechanism
was refactored so that all current and future resource
subscriptions would be the same. Each event resource must now
register itself in order to be able to properly handle
[un]subscribes. (issue ASTERISK-22838) Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/3025/ ........ Merged
revisions 403134 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_registrar.c, main/sorcery.c,
include/asterisk/res_pjsip.h, include/asterisk/acl.h,
res/res_pjsip/config_auth.c, include/asterisk/utils.h,
res/res_pjsip.exports.in, /,
res/res_pjsip_endpoint_identifier_ip.c, main/acl.c, main/utils.c,
res/res_pjsip.c, res/res_pjsip_exten_state.c,
include/asterisk/res_pjsip_pubsub.h, res/res_pjsip/location.c,
res/res_pjsip_outbound_registration.c, res/res_pjsip_mwi.c,
res/res_pjsip/pjsip_configuration.c, include/asterisk/sorcery.h,
include/asterisk/strings.h,
res/res_pjsip/include/res_pjsip_private.h,
res/res_pjsip_pubsub.c, res/res_pjsip/config_transport.c:
res_pjsip: AMI commands and events. Created the following AMI
commands and corresponding events for res_pjsip:
PJSIPShowEndpoints - Provides a listing of all pjsip endpoints
and a few select attributes on each. Events: EndpointList - for
each endpoint a few attributes. EndpointlistComplete - after all
endpoints have been listed. PJSIPShowEndpoint - Provides a detail
list of attributes for a specified endpoint. Events:
EndpointDetail - attributes on an endpoint. AorDetail - raised
for each AOR on an endpoint. AuthDetail - raised for each
associated inbound and outbound auth TransportDetail - transport
attributes. IdentifyDetail - attributes for the identify object
associated with the endpoint. EndpointDetailComplete - last event
raised after all detail events. PJSIPShowRegistrationsInbound -
Provides a detail listing of all inbound registrations. Events:
InboundRegistrationDetail - inbound registration attributes for
each registration. InboundRegistrationDetailComplete - raised
after all detail records have been listed.
PJSIPShowRegistrationsOutbound - Provides a detail listing of all
outbound registrations. Events: OutboundRegistrationDetail -
outbound registration attributes for each registration.
OutboundRegistrationDetailComplete - raised after all detail
records have been listed. PJSIPShowSubscriptionsInbound - A
detail listing of all inbound subscriptions and their attributes.
Events: SubscriptionDetail - on each subscription detailed
attributes SubscriptionDetailComplete - raised after all detail
records have been listed. PJSIPShowSubscriptionsOutbound - A
detail listing of all outboundbound subscriptions and their
attributes. Events: SubscriptionDetail - on each subscription
detailed attributes SubscriptionDetailComplete - raised after all
detail records have been listed. (issue ASTERISK-22609) Reported
by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2959/
........ Merged revisions 403131 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-23 12:52 +0000 [r403118-403120] Joshua Colp <jcolp@digium.com>
* res/res_stasis_playback.c, rest-api/api-docs/events.json, /,
res/res_stasis_recording.c, res/ari/ari_model_validators.c,
rest-api/api-docs/recordings.json,
res/ari/ari_model_validators.h: ari: Add events for playback and
recording. While there were events defined for playback and
recording these were not actually sent. This change implements
the to_json handlers which produces them. (closes issue
ASTERISK-22710) Reported by: Jonathan Rose Review:
https://reviewboard.asterisk.org/r/3026/ ........ Merged
revisions 403119 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_snoop.exports.in (added), /,
include/asterisk/stasis_app_snoop.h (added),
rest-api/api-docs/channels.json, res/res_stasis_snoop.c (added),
main/audiohook.c, res/ari/resource_channels.c,
res/res_ari_channels.c, res/ari/resource_channels.h: ari: Add
Snoop operation for spying/whispering on channels. The Snoop
operation can be invoked on a channel to spy or whisper on it. It
returns a channel that any channel operations can then be invoked
on (such as record to do monitoring). (closes issue
ASTERISK-22780) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/3003/ ........ Merged
revisions 403117 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-23 00:22 +0000 [r403106] Rusty Newton <rnewton@digium.com>
* apps/app_voicemail.c: app_voicemail: when forwarding a message,
play vm-msgforwarded instead of vm-msgsaved In the last release
of sounds, 1.4.25 we added a vm-msgforwarded prompt for various
core languages. Now we use that prompt. (issue ASTERISK-21413)
(closes issue ASTERISK-21413) Reported by: netwrkr Tested by:
newtonr
2013-11-22 23:57 +0000 [r403095] Kinsey Moore <kmoore@digium.com>
* tests/test_stasis.c, /, tests/test_stasis_channels.c: Make sure
unit tests compile This fixes the unit tests that were broken by
r403069 and several functions requiring a new parameter for
sanitization of JSON messages generated from object snapshots.
........ Merged revisions 403094 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-22 22:37 +0000 [r403083] Kevin Harwell <kharwell@digium.com>
* /,
contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py,
res/res_pjsip/pjsip_configuration.c: res_pjsip: convert
configuration settings names to snake case some more Updated the
alembic script for pjsip. Also, the dtls config parsing stuff was
expecting strings with no underscores, so removed the underscores
from the option name before passing it to the parser. ........
Merged revisions 403082 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-22 20:10 +0000 [r403070] Kinsey Moore <kmoore@digium.com>
* res/res_stasis.c, main/stasis_endpoints.c,
res/ari/resource_endpoints.c, main/rtp_engine.c, /,
res/stasis/app.c, include/asterisk/stasis_bridges.h,
include/asterisk/stasis.h, include/asterisk/stasis_app.h,
main/stasis_bridges.c, res/ari/resource_bridges.c, main/json.c,
main/stasis_message.c, include/asterisk/stasis_channels.h,
main/stasis_channels.c, res/ari/resource_channels.c,
include/asterisk/stasis_endpoints.h: ARI: Don't leak
implementation details This change prevents channels used as
implementation details from leaking out to ARI. It does this by
preventing creation of JSON blobs of channel snapshots created
from those channels and sanitizing JSON blobs of bridge snapshots
as they are created. This introduces a framework for excluding
information from output targeted at Stasis applications on a
consumer-by-consumer basis using channel sanitization callbacks
which could be extended to bridges or endpoints if necessary.
This prevents unhelpful error messages from being generated by
ast_json_pack. This also corrects a bug where BridgeCreated
events would not be created. (closes issue ASTERISK-22744)
Review: https://reviewboard.asterisk.org/r/2987/ Reported by:
David M. Lee ........ Merged revisions 403069 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-22 17:27 +0000 [r403051] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_acl.c, res/res_pjsip.c,
res/res_pjsip/config_transport.c, res/res_pjsip/config_global.c,
/, configs/pjsip.conf.sample, res/res_pjsip/config_system.c,
contrib/scripts/sip_to_pjsip/sip_to_pjsip.py,
res/res_pjsip/pjsip_configuration.c: res_pjsip: convert
configuration settings names to snake case Renamed, where
appropriate, the configuration options for chan/res_pjsip to use
snake case (compound words separated by an underscore). For
example, faxdetect will become fax_detect, recordofffeature will
become record_off_feature, etc... Review:
https://reviewboard.asterisk.org/r/3002/ ........ Merged
revisions 403022 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-22 17:12 +0000 [r403017] Joshua Colp <jcolp@digium.com>
* /, main/translate.c: translate: Move freeing of frame to after it
is used. When translating from one format to another it is
possible to inform the translation function that the source frame
should be freed. This was previously done immediately but shortly
afterwards the frame that was freed was accessed and used again.
This change moves code around a bit so that the frame is now
freed after it has been completely used. (closes issue
ASTERISK-22788) Reported by: Corey Farrell Patches:
translate-access-after-free-11up.patch uploaded by coreyfarrell
(license 5909) translate-access-after-free-1.8.patch uploaded by
coreyfarrell (license 5909) ........ Merged revisions 403014 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 403015 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 403016 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-22 16:43 +0000 [r403013] Richard Mudgett <rmudgett@digium.com>
* apps/app_directed_pickup.c, CHANGES: PickupChan: Add ability to
specify channel uniqueids as well as channel names. * Made
PickupChan() search by channel uniqueids if the search could not
find a channel by name. * Ensured PickupChan() never considers
the picking channel for pickup. * Made PickupChan() option p use
a common search by name routine. The original search was
erroneously case sensitive. (issue AFS-42) Review:
https://reviewboard.asterisk.org/r/3017/
2013-11-21 22:38 +0000 [r402995] Jonathan Rose <jrose@digium.com>
* CHANGES, apps/app_directory.c: app_directory: Set variable
indicating reason directory exited By the time the directory
application exits, a channel variable DIRECTORY_RESULT will be
set for the channel that invoked it which can be used to
determine the reason for exit. The changes log and the
app_directory documentation contain specific details about each
of the possible values for DIRECTORY_RESULT. Review:
https://reviewboard.asterisk.org/r/3016/
2013-11-21 22:36 +0000 [r402982-402994] David M. Lee <dlee@digium.com>
* rest-api-templates/ari_resource.c.mustache, /,
rest-api-templates/res_ari_resource.c.mustache: ari: Fix #include
to match generated headers for snakeCase resource files ........
Merged revisions 402993 from
http://svn.asterisk.org/svn/asterisk/branches/12
* rest-api-templates/make_ari_stubs.py, /: ari: Fix generators for
resources with camelCase names. For the new deviceState resource,
we need to properly generate device_state.[ch] files. ........
Merged revisions 402981 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-21 19:22 +0000 [r402969] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip_session.c, /: res_pjsip_session: Fix memory leak of
direct media format capabilities The direct media format
capabilities are always allocated in ast_sip_session_alloc and
were not freed in the session destructor. Whoops. (This being the
third whoops caught by Scott and Nitesh's valgrind work for the
Asterisk Test Suite. Nifty!) ........ Merged revisions 402968
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-21 19:09 +0000 [r402945-402957] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/app.h, /: voicemail: Fixup some doxygen
comments. ........ Merged revisions 402956 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/bucket.c: bucket: Fix scheme ref leak in
__ast_bucket_scheme_register(). ........ Merged revisions 402944
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-21 17:53 +0000 [r402942-402943] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip_sdp_rtp.c, /: res_pjsip_sdp_rtp: Fix use of
uninitialized value in PJSIP In PJMEDIA,
pjmedia_sdp_rtpmap_to_attr will attempt to use the string
rtpmap.param regardless of its length value. Simply setting the
length to 0 does not prevent the garbage on the stack in
rtpmap.param.ptr from being formatted in a sprintf call. This
patch initializes the string to NULL so that at the very least,
something is provided to the function that is predictable.
........ Merged revisions 402941 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_mwi.c: res_pjsip_mwi: Fix memory leak of MWI
subscriptions container This patch fixes a reference counting
memory leak on the ao2_container created as part of
create_mwi_subscriptions. When we create the container in this
routine, the intent is to hand lifetime ownership over to the
global container unsolicited_mwi. When
ao2_global_obj_replace_unref is called, the reference count on
mwi_subscriptions (the container) will be bumped by 1; however,
the function does not decrement the reference count on
mwi_subscriptions when this occurs. This will prevent the
container from being fully disposed of when Asterisk exits (or on
any subsequent call to this operation, such as during a reload).
........ Merged revisions 402940 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-21 15:57 +0000 [r402928-402929] David M. Lee <dlee@digium.com>
* res/res_stasis.c, /: stasis: Fixed scoping problem with bridge
tracking. ........ Merged revisions 402817 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/resource_channels.c, res/res_ari_channels.c,
res/ari/resource_channels.h, /, res/stasis/control.c,
include/asterisk/stasis_app.h, rest-api/api-docs/channels.json:
ari: Add silence generator controls This patch adds the ability
to start a silence generator on a channel via ARI. This generator
will play silence on the channel (avoiding audio timeouts on the
peer) until it is stopped, or some other media operation is
started (like playing media, starting music on hold, etc.).
(closes issue ASTERISK-22514) Review:
https://reviewboard.asterisk.org/r/3019/ ........ Merged
revisions 402926 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-19 23:17 +0000 [r402892] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_caller_id.c: res_pjsip_caller_id: Don't
overwrite user portion of the From header when fromuser is set.
The fromuser option is used to explicitly set the user within the
From header. The res_pjsip_caller_id module did not take this
setting into account when determining if the From header could be
modified or not. (closes issue ASTERISK-22866) Reported by:
Anthony Messina ........ Merged revisions 402891 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-16 13:51 +0000 [r402865] Joshua Colp <jcolp@digium.com>
* res/res_pjsip/pjsip_distributor.c, /, configure,
include/asterisk/autoconfig.h.in, configure.ac: res_pjsip: Add
support for building against pjproject with SIP transaction group
lock support. SIP transaction group lock support has been
backported into our pjproject. Since the code now internally uses
a group lock the code is now changed to unlock it if present.
Note that the act of finding the transaction is what actually
returns it locked. For further information about group locks
check out the wiki page at:
http://trac.pjsip.org/repos/wiki/Group_Lock (issue
ASTERISK-22818) Reported by: Matt Jordan ........ Merged
revisions 402864 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-15 22:38 +0000 [r402854] Jonathan Rose <jrose@digium.com>
* apps/app_confbridge.c, CHANGES,
apps/confbridge/conf_config_parser.c,
configs/confbridge.conf.sample,
apps/confbridge/include/confbridge.h: Confbridge: Add option to
review the recording similar to announce_join_leave Review:
https://reviewboard.asterisk.org/r/3008/
2013-11-15 14:37 +0000 [r402839] Kinsey Moore <kmoore@digium.com>
* /, main/cel.c: CEL: Fix crash when using CELGenUserEvent This
fixes a crash when CELGenUserEvent is called from the dialplan
while CEL is disabled. Currently, CEL does not create its topics
and forwards if it is not enabled and external entities may
depend on these topics blindly since they should always be
available. This patch breaks up route creation and topic/forward
creation such that the CEL topics and forwards will always exist
while the router and its associated routes will be torn down and
recreated as necessary. (closes issue ASTERISK-22799) Review:
https://reviewboard.asterisk.org/r/3010/ Reported by: Matt Jordan
........ Merged revisions 402838 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-14 21:36 +0000 [r402820-402829] Richard Mudgett <rmudgett@digium.com>
* apps/app_directed_pickup.c: Pickup: Pickup() and PickupChan()
parameter parsing improvements. * Made Pickup() and PickupChan()
tollerate empty pickup values. i.e., You can now have
Pickup(&&exten@context). * Made PickupChan() use the standard
option flag parsing code.
* apps/app_directed_pickup.c: Pickup: Ensure using PICKUPMARK never
considers the picking channel.
2013-11-14 20:32 +0000 [r402819] Jonathan Rose <jrose@digium.com>
* CHANGES, main/pbx.c, apps/app_sayunixtime.c: Say: If
SAY_DTMF_INTERRUPT is set to an ast_true value, jump on DTMF
Similar to how background works, if a say application is called
with this variable set to 'true', 'yes', 'on', etc. then using
DTMF while the say action is in progress will result in the
channel jumping to that extension in the dialplan. Review:
https://reviewboard.asterisk.org/r/3011/
2013-11-13 23:11 +0000 [r402805] Joshua Colp <jcolp@digium.com>
* rest-api/api-docs/channels.json, res/ari/resource_channels.c,
res/res_ari_channels.c, res/ari/resource_channels.h, /,
res/stasis/control.c, include/asterisk/stasis_app.h:
res_ari_channels: Add the ability to stop locally generated
ringing on a channel. Using the 'ring' operation it is possible
to start locally generated ringback if the channel is answered.
This change adds the ability to stop it by using DELETE. ........
Merged revisions 402804 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-12 23:17 +0000 [r402788-402795] Kevin Harwell <kharwell@digium.com>
* res/ari/resource_endpoints.c, /: ari endpoints: GET
/ari/endpoints/{invalid-tech} should return a 404 Was returning a
404 on a valid technology with an empty list of endpoints. Now
checking against the channel tech to make sure the tech itself is
valid and not just an empty list of endpoints. (issue
ASTERISK-22803) Reported by: David M. Lee ........ Merged
revisions 402793 from
http://svn.asterisk.org/svn/asterisk/branches/12
* rest-api/api-docs/endpoints.json, res/ari/resource_endpoints.c,
/, res/res_ari_endpoints.c: ari endpoints: GET
/ari/endpoints/{invalid-tech} should return a 404 Implementation
listing endpoints by technology returned an empty array if no
matching endpoints were found. Fixed so a "404 Not Found" will be
returned instead. (closes issue ASTERISK-22803) Reported by:
David M. Lee ........ Merged revisions 402787 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-12 19:38 +0000 [r402768-402778] Mark Michelson <mmichelson@digium.com>
* /, main/channel.c: Switch to a scoped lock to avoid missing
unlocks in failure returns. ........ Merged revisions 402769 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/channel.c, /: Move a NULL check to a place that makes more
sense. Two variables were being checked for NULLity immediately
after being declared NULL. I moved the NULL check until after the
variables are allocated. This allows for the "channelvars" option
in manager.conf to work as intended again. ........ Merged
revisions 402767 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-12 16:49 +0000 [r402758] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_messaging.c, res/res_pjsip_header_funcs.c, /:
pjsip_messaging, pjsip_header_funcs: Crashes due to NULL pointer
dereferences Both res_pjsip_messaging and res_pjsip_header_funcs
were causing asterisk to crash because they were trying to
dereference a NULL pointer. In the case of res_pjsip_messaging it
was attempting to "print" a contact header that did not exist. In
fact contact headers should not be part of a SIP MESSAGE, so the
offending code was simply removed. In the case of
res_pjsip_header_funcs a null private channel tech was being
passed to the function and then later dereferenced. Added null
checks (and error logging) to the read/write function handlers to
guard against crashing. (closes issue ASTERISK-22821) Reported
by: Anthony Messina ........ Merged revisions 402757 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-12 16:34 +0000 [r402756] Kinsey Moore <kmoore@digium.com>
* /, apps/app_celgenuserevent.c: CELGenUserEvent: Fix error message
from ast_json_pack This prevents NULL from being passed into an
ast_json_pack call when no extra information is passed to the
application which prevents an error message about NULL arguments
from being generated. ........ Merged revisions 402755 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-12 15:27 +0000 [r402741] David M. Lee <dlee@digium.com>
* res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /:
Fixed a typ. ........ Merged revisions 402738 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-12 15:03 +0000 [r402711] Kinsey Moore <kmoore@digium.com>
* channels/chan_dahdi.c, /: chan_dahdi: Fix crash during caller ID
read Asterisk will sometimes core dump during caller id read on
analog channels due to a negative return value from the read() in
my_get_callerid that slips through as a negative length argument
to callerid_feed() if the errno returned by DAHDI is ELAST. This
change ensures that the negative return is treated properly even
when it is ELAST. (closes issue ASTERISK-22746) Reported by:
Michael Walton Patches: chan_dahdi_cid_crash_fix.r401410.patch
uploaded by Michael Walton (License 6502) ........ Merged
revisions 402708 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 402709 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402710 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-11 20:28 +0000 [r402698] Jonathan Rose <jrose@digium.com>
* apps/app_confbridge.c: Confbridge: add test events for dynamic
menus test Adds a couple of test events for conference menu
actions so that it's easy to discern when those menu actions have
been triggered. (issue ASTERISK-22760) Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/2999/
2013-11-11 19:31 +0000 [r402688] Mark Michelson <mmichelson@digium.com>
* apps/app_confbridge.c, /: Get rid of some inaccurate comments.
I'm doing some unrelated work in app_confbridge and finding these
"invalid pin" comments to be annoying. Get out! ........ Merged
revisions 402686 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402687 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-11 15:37 +0000 [r402648] Kinsey Moore <kmoore@digium.com>
* /, apps/app_queue.c: app_queue: Honor penalty limits of 0 In the
current app_queue code from 1.8 up to trunk the upper and lower
penalties can be set to 0 but the value is interpreted to be
disabled instead of actually setting limits. This is especially
evident if min and max limits are set to 0 and members with
penalties of 0 and 1 are in the queue since the member with
penalty 1 will still receive calls. This patch adjusts the
special disabled value to be INT_MAX instead of 0. (closes issue
ASTERISK-20862) Review: https://reviewboard.asterisk.org/r/2995/
Reported by: Schmooze Com ........ Merged revisions 402645 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 402646 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402647 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 23:07 +0000 [r402607] Scott Griepentrog <sgriepentrog@digium.com>
* /, channels/chan_sip.c, channels/sip/include/sip.h: chan_sip:
keep same local (from) tag for outgoing register requests For
outbound register requests the tag on the From line was updated
every 20 seconds prior to a successful registration and also once
for each registration renewal. That behavior can possibly cause
the registration to be denied because of the different tag, and
is not aligned with the intention of RFC 3261 8.1.3.5 "...
request constitutes a new transaction and SHOULD have the same
value of the Call-ID, To, and From of the previous request...".
This updates chan_sip to have a field to keep the local tag in
the registration structure and use that tag for registration
requests where the callid is also unchanged. (closes issue
ASTERISK-12117) Reported by: Pawel Pierscionek Review:
https://reviewboard.asterisk.org/r/2988/ ........ Merged
revisions 402604 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 402605 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402606 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 20:37 +0000 [r402595] Richard Mudgett <rmudgett@digium.com>
* /, res/res_stasis.c: res_stasis.c: Fix locking issues with the
app_bridge_moh container. * Fix unlinking from the
app_bridges_moh container in remove_bridge_moh() without a lock
under normal circumstances. * Made check
ast_bridge_set_after_callback() return value in
bridge_moh_create() to handle failure. * Fixed SCOPED_AO2LOCK()
locking over too much scope in stasis_app_bridge_moh_channel()
and stasis_app_bridge_moh_stop(). * Fixed unusual usage of
ao2_unlink_flag() in control_unlink(). * Fixed orphaned bridge
from off nominal path in stasis_app_bridge_create(). * Fixed
strange construct in stasis_app_unsubscribe(). From a bad merge?
* Made load_module() cleanup on failure. Review:
https://reviewboard.asterisk.org/r/2962/ ........ Merged
revisions 402593 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 19:33 +0000 [r402585] Jonathan Rose <jrose@digium.com>
* /, main/security_events.c, configs/manager.conf.sample, CHANGES,
include/asterisk/manager.h, main/manager.c: security_events: Push
out security events over AMI events Security Events will now be
written to any listener of the new 'security' class Review:
https://reviewboard.asterisk.org/r/2998/ ........ Merged
revisions 402584 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 19:22 +0000 [r402583] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip.c, /: Clarify an ambiguous error message. ........
Merged revisions 402582 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 18:53 +0000 [r402571-402572] David M. Lee <dlee@digium.com>
* /, res/res_pjsip/config_system.c: res_pjsip: Print a helpful
error message if sorcery registration fails ........ Merged
revisions 402570 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/resource_playbacks.h, /: Changes from make ari-stubs
after r402560 ........ Merged revisions 402561 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 17:59 +0000 [r402562] Kevin Harwell <kharwell@digium.com>
* rest-api/resources.json, res/ari/resource_playback.h (removed),
res/res_ari_playbacks.c (added), res/ari/resource_playbacks.h
(added), /, res/ari.make, rest-api/api-docs/playback.json
(removed), res/ari/resource_playback.c (removed),
res/res_ari_playback.c (removed),
rest-api/api-docs/playbacks.json (added),
res/ari/resource_playbacks.c (added): ARI playback: Rename ARI
Playback to Playbacks Before playback was the only non plural
resource. It has been renamed to playbacks for consistency.
(closes issue ASTERISK-22737) Reported by: Paul Belanger ........
Merged revisions 402560 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 17:29 +0000 [r402557] David M. Lee <dlee@digium.com>
* res/res_ari.c, main/manager.c, /, main/http.c: ari: Add
application/x-www-form-urlencoded parameter support ARI POST
calls only accept parameters via the URL's query string. While
this works, it's atypical for HTTP API's in general, and
specifically frowned upon with RESTful API's. This patch adds
parsing for application/x-www-form-urlencoded request bodies if
they are sent in with the request. Any variables parsed this way
are prepended to the variable list supplied by the query string.
(closes issue ASTERISK-22743) Review:
https://reviewboard.asterisk.org/r/2986/ ........ Merged
revisions 402555 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-08 14:58 +0000 [r402546] Kevin Harwell <kharwell@digium.com>
* apps/app_dahdiras.c, utils/extconf.c, main/asterisk.c:
app_dahdiras: Use waitpid instead of wait4. Several places in the
code were using wait4 while other places were using waitpid. This
change makes all places use waitpid in order to make things more
consistent and since the 'rusage' object passed in/out of wait4
was never used. (closes issue ASTERISK-22557) Reported by:
YvesGael Patches: asterisk-11.5.1-wait4.patch uploaded by hurdman
(license 6537)
2013-11-07 23:42 +0000 [r402538] Jonathan Rose <jrose@digium.com>
* res/res_pjsip_authenticator_digest.c, /: PJSIP: Improve error
handling in digest authenticator Previously, regardless of
whether failure to authenticate was due to lacking any
authentication or actually failing authentication, the Digest
Authenticator would simply return that a challenge was still
needed. It will continue to do that when no authentication
information is in the received SIP digest, but when
authentication information is present and does not pass
authentication, that will be treated as an authentication error.
This is to ensure that PJSIP will issue security events indicated
failed auths. ........ Merged revisions 402537 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-07 21:10 +0000 [r402529] David M. Lee <dlee@digium.com>
* res/ari/resource_applications.c, res/ari/resource_playback.c,
rest-api/api-docs/channels.json, res/ari/resource_applications.h,
res/ari/resource_channels.c, res/ari/resource_playback.h,
rest-api/api-docs/recordings.json, res/ari/resource_recordings.c,
rest-api-templates/ari_resource.c.mustache,
rest-api-templates/asterisk_processor.py,
res/ari/resource_channels.h, rest-api/api-docs/endpoints.json,
res/ari/resource_endpoints.c, res/ari/resource_recordings.h,
res/ari/resource_events.c, res/res_ari_playback.c,
res/res_ari_applications.c, res/ari/resource_endpoints.h,
res/ari/resource_events.h, rest-api/api-docs/sounds.json,
res/ari/resource_sounds.c, res/res_ari_channels.c,
rest-api/api-docs/bridges.json, res/ari/resource_bridges.c,
res/ari/resource_sounds.h, res/res_ari_recordings.c,
res/ari/resource_bridges.h, rest-api/api-docs/asterisk.json,
res/ari/resource_asterisk.c, res/res_ari_endpoints.c,
rest-api/api-docs/applications.json,
rest-api/api-docs/playback.json, res/res_ari_events.c,
res/ari/resource_asterisk.h, rest-api-templates/swagger_model.py,
res/res_ari_sounds.c, res/res_ari_bridges.c, /,
rest-api-templates/ari_resource.h.mustache,
rest-api-templates/rest_handler.mustache, res/res_ari_asterisk.c,
rest-api-templates/res_ari_resource.c.mustache: ari: User better
nicknames for ARI operations While working on building client
libraries from the Swagger API, I noticed a problem with the
nicknames. channel.deleteChannel() channel.answerChannel()
channel.muteChannel() Etc. We put the object name in the nickname
(since we were generating C code), but it makes OO generators
redundant. This patch makes the nicknames more OO friendly. This
resulted in a lot of name changing within the res_ari_*.so
modules, but not much else. There were a couple of other fixed I
made in the process. * When reversible operations (POST /hold,
POST /unhold) were made more RESTful (POST /hold, DELETE
/unhold), the path for the second operation was left in the API
declaration. This worked, but really the two operations should
have been on the same API. * The POST /unmute operation had still
not been REST-ified. Review:
https://reviewboard.asterisk.org/r/2940/ ........ Merged
revisions 402528 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-06 21:58 +0000 [r402518] Kevin Harwell <kharwell@digium.com>
* /, apps/app_queue.c: app_queue: crash if first agent is "busy" If
the first agent/member (via CLI "queue show") in a queue is
"busy" (dnd, circuit busy, etc...) and no agents answered then
app_queue would crash. This occurred because while the calling of
agent(s) remained valid the channel on "busy" agent would be set
to NULL and then later dereferenced upon a second "rna" function
call. The original intention of the code is to have only valid
"call attempt" objects (channels != NULL) checked while
attempting to call agent(s). It does this by building a
"call_next" list of valid "call attempt" objects. In the case of
the "busy" agent subsequent builds of the valid "call attempt"
list would sometimes include (the case mentioned above) an
invalid "call attempt" object. The fix was to make sure the "call
attempt" list was appropriately built on every iteration. A NULL
sanity check was also added at the original offending spot of the
crash just in case another one slipped by somehow. (closes issue
ASTERISK-22644) Reported by: Marco Signorini Review:
https://reviewboard.asterisk.org/r/2983/ ........ Merged
revisions 402517 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-05 21:17 +0000 [r402502-402508] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: chan_sip: Use AST_AF* defined constant
when calling ast_get_ip While the structure passed to ast_get_ip
should be set memset to 0, thus initializing the ss_family member
to 0, explicitly setting it to AST_AF_UNSPEC is more portable.
........ Merged revisions 402507 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c, /: chan_iax2: Fix incorrect usage of
ast_get_ip involving uninitialized struct This started off as a
fix for the failing IAX2 acl_call test in the Asterisk Test
Suite. When inspecting why that test was failing, it became clear
that all attempts to bind to any local loopback address was
failing: [Nov 2 15:56:28] VERBOSE[15787] chan_iax2.c: == Binding
IAX2 to address 127.0.0.1:4569 [Nov 2 15:56:28] DEBUG[15787]
netsock2.c: Splitting '127.0.0.1' into... [Nov 2 15:56:28]
DEBUG[15787] netsock2.c: ...host '127.0.0.1' and port ''. [Nov 2
15:56:28] ERROR[15787] netsock2.c: getaddrinfo("127.0.0.1",
"(null)", ...): ai_family not supported [Nov 2 15:56:28]
WARNING[15787] acl.c: Unable to lookup '127.0.0.1' While there's
conceivably other ways for getaddrino to return EAI_FAMILY, the
most common way is if AF_INET, AF_INET6, or AF_UNSPEC is not
provided as the desired family. The culprit was the call to
ast_get_ip, defined in acl.h. This function uses the family from
the passed in addr object (which it will also populate when it
returns!) when it eventually calls getaddrinfo. This patch fixes
the use of ast_get_ip that were not specifying the family in
chan_iax2. This prevents uninitialized use of the structure, so
that the addresses resolve correctly. Review:
https://reviewboard.asterisk.org/r/2991 ........ Merged revisions
402505 from http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/acl.h, /, include/asterisk/netsock2.h: netsock2:
Define AST_AF_* enum constants to their AF_* equivalents This
patch explicitly defines AST_AF_* enum constants to their
sys/socket.h defined equivalents. It is certainly unclear why
these constants actually have to exist, given that netsock2.h
includes sys/socket.h; however, since the code base is already
liberally sprinkled with the usage of AST_AF_* (as well as with
direct calls to AF_*), this will at least keep the semantics
consistent between their usage across systems. ........ Merged
revisions 402503 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_channels.c, /: stasis_channels: Don't give preference
to ANI info in channel snapshots When publishing channel
snapshots, we currently compute the caller ID name and number by
giving preference first to ani.{name|number}, then to
id.{name|number}. However, when a channel driver (such as
chan_sip) updates the caller ID, it typically only updates the
caller ID stored in id.{name|number}. This means that we are
currently giving preference to stale information. When looking at
the rest of the code base, the only other place where we appear
to use this same logic is in app_amd. Everywhere else, we treat
the party information in ani as being separate to the party
information in id. This patch publishes only the caller ID name
and number in the snapshot field for caller_name and caller_num.
Note that the information in ANI is still available in
caller_ani. Review: https://reviewboard.asterisk.org/r/2992/
........ Merged revisions 402501 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-04 21:02 +0000 [r402453] Kevin Harwell <kharwell@digium.com>
* /, channels/chan_sip.c: chan_sip: notify dialog info ignores
presentation indicator in callerid The presentation indicator in
a callerid (e.g. set by dialplan function
Set(CALLERID(name-pres)= ...)) is not checked when SIP Dialog
Info Notifies are generated during extension monitoring. Added a
check to make sure the name and/or number presentations on the
callee (remote identity) are set to allow. If they are restricted
then "anonymous" is used instead. (closes issue AST-1175)
Reported by: Thomas Arimont Review:
https://reviewboard.asterisk.org/r/2976/ ........ Merged
revisions 402450 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402452 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-02 04:30 +0000 [r402406-402439] Richard Mudgett <rmudgett@digium.com>
* main/stasis.c, main/stasis_message_router.c, /,
include/asterisk/vector.h: vector: Uppercase API to follow C
convention. C does not support templates like C++. ........
Merged revisions 402438 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/lock.h, main/stasis.c,
main/stasis_message_router.c, /, include/asterisk/vector.h:
vector: Update API to be more flexible. Made the vector macro API
be more like linked lists. 1) Added a name parameter to
ast_vector() to name the vector struct. 2) Made the API take a
pointer to the vector struct instead of the struct itself. 3)
Added an element cleanup macro/function parameter when removing
an element from the vector for ast_vector_remove_cmp_unordered()
and ast_vector_remove_elem_unordered(). 4) Added
ast_vector_get_addr() in case the vector element is not a simple
pointer. * Converted an inline vector usage in
stasis_message_router to use the vector API. It needed the API
improvements so it could be converted. * Fixed topic reference
leak in router_dtor() when the stasis_message_router is
destroyed. * Fixed deadlock potential in stasis_forward_all() and
stasis_forward_cancel(). Locking two topics at the same time
requires deadlock avoidance. * Made internal_stasis_subscribe()
tolerant of a NULL topic. * Made stasis_message_router_add(),
stasis_message_router_add_cache_update(),
stasis_message_router_remove(), and
stasis_message_router_remove_cache_update() tolerant of a NULL
message_type. * Promoted a LOG_DEBUG message to LOG_ERROR as
intended in dispatch_message(). Review:
https://reviewboard.asterisk.org/r/2903/ ........ Merged
revisions 402429 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/confbridge/conf_state_single.c,
apps/confbridge/conf_state_inactive.c,
apps/confbridge/conf_state_single_marked.c, /,
apps/confbridge/include/confbridge.h,
apps/confbridge/conf_state_multi.c, apps/app_confbridge.c,
apps/confbridge/conf_state_multi_marked.c,
apps/confbridge/conf_state.c: confbridge: Separate user muting
from system muting overrides. The system overrides the user
muting requests when MOH is playing or a waitmarked user is
waiting for a marked user to join. System muting overrides
interfere with what the user may wish the muting to be when the
system override ends. * User muting requests are now independent
of the system muting overrides. The effective muting is now the
logical or of the user request and system override. * Added a
Muted flag to the CLI "confbridge list <conference>" command. *
Added a Muted header to the AMI ConfbridgeList action
ConfbridgeList event. (closes issue AST-1102) Reported by: John
Bigelow Review: https://reviewboard.asterisk.org/r/2960/ ........
Merged revisions 402425 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402427 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/config.c, apps/confbridge/conf_config_parser.c,
configs/confbridge.conf.sample, /: config: Allow ConfBridge DTMF
menus to have '#' as the first digit. ConfBridge allows custom
DTMF menus to be created in the confbridge.conf file by assigning
a DTMF key sequence to a sequence of actions as follows:
DTMF-sequence = action,action... Unfortunately, the normal config
file processing code interprets an initial '#' character as
starting a directive such as #include. * Add the ability to
escape the first non-blank character in a config line so the '#'
character can be used without triggering the directive processing
code. (closes issue AFS-2) (closes issue ASTERISK-22478) Reported
by: Nicolas Tanski Patches: jira_asterisk_22478_v11.patch
(license #5621) patch uploaded by rmudgett (modified) Review:
https://reviewboard.asterisk.org/r/2969/ ........ Merged
revisions 402407 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402416 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/app.h, /, main/app.c: voicemail: Simplify
callback pointer declarations and add doxygen. * Typedefed and
added doxegen for the voicemail callback functions. * Simplified
the prototypes for ast_install_vm_functions() and
ast_install_vm_test_functions() to use the new function typedefs.
* Simplified the voicemail callback function pointer variable
declarations to use the new function typedefs. ........ Merged
revisions 402398 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-01 22:48 +0000 [r402397] Jonathan Rose <jrose@digium.com>
* apps/confbridge/conf_config_parser.c,
apps/confbridge/include/confbridge.h, apps/app_confbridge.c,
CHANGES: app_confbridge: Make the CONFBRIDGE function be able to
create dynamic menus Also adds the ability to clear all profile
items and makes behavior more consistent with documentation as
when choosing whether to use CONFBRIDGE datastore profiles or the
application arguments to the confbridge application. (closes
issue ASTERISK-22760) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2971/
2013-11-01 21:51 +0000 [r402388] Scott Griepentrog <sgriepentrog@digium.com>
* main/manager_bridges.c, /, main/bridge.c,
include/asterisk/bridge.h: Manager: Add equivalent AMI actions
for the bridge CLI commands. Adds the following AMI events,
closely following their CLI counterparts: BridgeDestroy
BridgeKick BridgeTechnologyList BridgeTechnologySuspend
BridgeTechnologyUnsuspend BridgeDestroy kicks an entire bridge,
where BridgeKick kicks just one channel off the bridge. When
kicking a channel, specifying the bridge also (optional) insures
it is not removed from the wrong bridge. The BridgeTechnology
events allow viewing and changing suspension status, which
affects only subsequent not active bridging. (closes
ASTERISK-22356) Reported by: Richard Mudgett Review:
https://reviewboard.asterisk.org/r/2973/ ........ Merged
revisions 402387 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-01 16:31 +0000 [r402368] David M. Lee <dlee@digium.com>
* /, rest-api-templates/api.wiki.mustache: ari wiki docs: add notes
about allowMultiple parameters. This patch adds a note to any
parameter that has 'allowMultiple' set in the Swagger
documentation. (closes issue ASTERISK-22704) ........ Merged
revisions 402367 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-01 14:38 +0000 [r402359] Joshua Colp <jcolp@digium.com>
* include/asterisk/stasis_app.h, rest-api/api-docs/channels.json,
res/ari/resource_channels.c, res/res_ari_channels.c,
res/ari/resource_channels.h, res/res_stasis_playback.c, /,
res/stasis/control.c: res_ari_channels: Add ring operation, dtmf
operation, hangup reasons, and tweak early media. The ring
operation sends ringing to the specified channel it is invoked
on. The dtmf operation can be used to send DTMF digits to the
specified channel of a specific length with a wait time in
between. Finally hangup reasons allow you to specify why a
channel is being hung up (busy, congestion). Early media behavior
has also been tweaked slightly. When playing media to a channel
it will no longer automatically answer. If it has not been
answered a progress indication is sent instead. (closes issue
ASTERISK-22701) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2916/ ........ Merged
revisions 402358 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-01 12:40 +0000 [r402349] Kinsey Moore <kmoore@digium.com>
* res/res_rtp_asterisk.c, /, channels/chan_sip.c,
include/asterisk/rtp_engine.h: chan_sip: Fix RTCP port for SRFLX
ICE candidates This corrects one-way audio between Asterisk and
Chrome/jssip as a result of Asterisk inserting the incorrect RTCP
port into RTCP SRFLX ICE candidates. This also exposes an ICE
component enumeration to extract further details from candidates.
(closes issue ASTERISK-21383) Reported by: Shaun Clark Review:
https://reviewboard.asterisk.org/r/2967/ ........ Merged
revisions 402345 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402348 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-11-01 12:33 +0000 [r402337-402347] Joshua Colp <jcolp@digium.com>
* /, include/asterisk/stasis_app.h, res/ari/resource_channels.c:
res_ari_channels: Fix a deadlock when originating multiple
channels close to eachother. If a Stasis application is specified
an implicit subscription is done on the originated channel. This
was previously done with the channel lock held which is dangerous
as the underlying code locks the container and iterates items.
This change releases the lock on the originated channel before
subscribing occurs. (closes issue ASTERISK-22768) Reported by:
Matt Jordan Review: https://reviewboard.asterisk.org/r/2979/
........ Merged revisions 402346 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/stasis/control.c: res_stasis: Ensure the channel is always
departed from the bridge when it leaves. This change adds a
command to the command queue to explicitly depart the channel
from the bridge when it is told it has left. If the channel has
already been departed or has entered a different bridge this
command will become a no-op. (closes issue ASTERISK-22703)
Reported by: John Bigelow (closes issue ASTERISK-22634) Reported
by: Kevin Harwell Review:
https://reviewboard.asterisk.org/r/2965/ ........ Merged
revisions 402336 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-31 22:09 +0000 [r402328] Mark Michelson <mmichelson@digium.com>
* /, contrib/scripts/sip_to_pjsip/sip_to_pjsip.py,
contrib/scripts/sip_to_res_sip (removed),
contrib/scripts/sip_to_pjsip (added),
contrib/scripts/sip_to_pjsip/astconfigparser.py,
contrib/scripts/sip_to_pjsip/astdicts.py: Update the conversion
script from sip.conf to pjsip.conf (closes issue ASTERISK-22374)
Reported by Matt Jordan Review:
https://reviewboard.asterisk.org/r/2846 ........ Merged revisions
402327 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-31 16:06 +0000 [r402286-402290] Matthew Jordan <mjordan@digium.com>
* main/loader.c, /: core/loader: Don't call dlclose in a while loop
For awhile now, we've noticed continuous integration builds
hanging on CentOS 6 64-bit build agents. After resolving a number
of problems with symbols, strange locks, and other shenanigans,
the problem has persisted. In all cases, gdb shows the Asterisk
process stuck in loader.c on one of the infinite while loops that
calls dlclose repeatedly until success. The documentation of
dlclose states that it returns 0 on success; any other value on
error. It does not state that repeatedly calling it will
eventually clear those errors. Most likely, the repeated calls to
dlclose was to force a close by exhausting the references on the
library; however, that will never succeed if: (a) There is some
fundamental error at work in the loaded library that precludes
unloading it (b) Some other loaded module is referencing a symbol
in the currently loaded module This results in Asterisk sitting
forever. Since we have matching pairs of dlopen/dlclose, this
patch opts to only call dlclose once, and log out as an ERROR if
dlclose fails to return success. If nothing else, this might help
to determine why on the CentOS 6 64-bit build agent things are
not closing successfully. Review:
https://reviewboard.asterisk.org/r/2970 ........ Merged revisions
402287 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 402288 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402289 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/media_index.c, /: medix_index: Display errors when library
calls fail Based on feedback from ipengineer in #asterisk, when
the media indexer cannot access a sound file on the system (or
otherwise fails) Asterisk displays a "Cannot frob file" error but
fails to tell you why. This is especially problematic as the
media_indexer failing will rpevent Asterisk from starting, as it
is in the core. We now display the errno error messages so folks
can figure out what they've done wrong. ........ Merged revisions
402285 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-31 14:45 +0000 [r402277] David M. Lee <dlee@digium.com>
* /, res/stasis/app.c: stasis: add functions embarrassingly missing
from r400522 I neglected to implement two of the endpoint
subscription functions when I did the work. Normally, you'll only
hit that when you unsubscribe from a specific endpoint. ........
Merged revisions 402276 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-30 17:54 +0000 [r402266] Kevin Harwell <kharwell@digium.com>
* channels/chan_pjsip.c, /, res/res_pjsip_messaging.c:
pjsip_messaging: Added debug for in dialog messaging (issue
ASTERISK-22777) Reported by: Matt Jordan ........ Merged
revisions 402265 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-29 23:43 +0000 [r402227] Rusty Newton <rnewton@digium.com>
* /, sounds/Makefile: Updates for 1.4.25 core sounds and 1.4.14
extra sounds, plus new en_GB language set The new sound packages
relate to issues: ASTERISK-22544, ASTERISK-22411, ASTERISK-21413,
ASTERISK-20782 Modified sounds/Makefile for the new sound
versions and to account for the new en_GB language set. (issue
ASTERISK-22659) (closes issue ASTERISK-22659) (closes issue
ASTERISK-22411) (closes issue ASTERISK-22544) ........ Merged
revisions 402224 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 402225 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402226 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-29 12:57 +0000 [r402155] Matthew Jordan <mjordan@digium.com>
* main/xmldoc.c, main/channel.c, main/pbx.c, /, main/translate.c:
Remove some spammy debug messages; improve clarity of others
Debug messages aren't free. Even when the debug level is
sufficiently low such that the messages are never evaluated,
there is a cost to having to parse Asterisk logs that contain
debug messages that (a) fail to convey sufficient information or
(b) occur so frequently as to be next to meaningless. Based on
having to stare at lots of DEBUG messages, this patch makes the
following changes: * channel.c: When copying variables from a
parent channel to a child channel, specify the channels involved.
Do not log anything for a variable that is not inherited; the
fact that it doesn't have an _ or __ already signifies that it
won't be inherited. * pbx.c: Specify what function evaluation has
occurred that created the result. * translate.c: Bump up the
translator path messages to 10. I've never once had to use these
debug messages, and for each format that is registered (on
startup) and unregistered (on shutdown) the entire f^2 matrix is
logged out. For short tests in the Asterisk Test Suite, this
should make finding the actual test much easier. * xmldoc.c: The
debug message that 'blah' is not found in the tree is expected.
Often, description elements - which are not required - are not
provided. This debug message adds no additional value, as it is
not indicative of an error or helpful in debugging which element
did not contain a 'blah' element as a child. If an element is
supposed to contain a child element, then that XML tree should
have failed validation in the first place. Review:
https://reviewboard.asterisk.org/r/2966/ ........ Merged
revisions 402150 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 402151 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402154 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-29 12:51 +0000 [r402149-402153] Kinsey Moore <kmoore@digium.com>
* rest-api/api-docs/channels.json, res/ari/resource_channels.c,
res/res_ari_channels.c, res/ari/resource_channels.h, /: ARI:
Remove channels/{channelId}/dial This removes the
/ari/channels/{channelId}/dial URI since it is redundant, overly
complex, is likely to become more externally complex over time,
and is too high-level compared with other ARI operations. See the
following for further information:
http://lists.digium.com/pipermail/asterisk-app-dev/2013-October/000002.html
(closes issue ASTERISK-22784) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2968/ ........ Merged
revisions 402152 from
http://svn.asterisk.org/svn/asterisk/branches/12
* bridges/bridge_native_rtp.c, /: bridge_native_rtp: Ensure bridge
is torn down When a bridge transitions away from one tech to
another, the tech going away is provided a dummy bridge with no
channels in it to tear down. Currently this means that the
teardown code exits prematurely and does not tear anything down.
This change tears down RTP bridging for the channel provided in
the leave bridge tech callback. This also reverts the majority of
r400403 since it is now redundant. (closes issue ASTERISK-22628)
(closes issue ASTERISK-22676) Reported by: John Bigelow Reported
by: Kevin Harwell Tested by: John Bigelow Review:
https://reviewboard.asterisk.org/r/2905/ Patches:
native_rtp_fix.diff uploaded by Kinsey Moore (License 6273)
........ Merged revisions 402148 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-29 11:15 +0000 [r402140] Joshua Colp <jcolp@digium.com>
* /, rest-api/api-docs/playback.json, res/res_ari_playback.c:
res_ari_playback: Add missing 404 error response for GET and
DELETE. (closes issue ASTERISK-22722) Reported by: Richard
Mudgett ........ Merged revisions 402139 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-28 22:10 +0000 [r402128-402130] David M. Lee <dlee@digium.com>
* /, doc: Ignore full docs ........ Merged revisions 402127 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /: Put back several merge revisions that were lost in r402054
* /: Put back several merge revisions that were lost in r401962
2013-10-28 15:08 +0000 [r402113-402117] Michael L. Young <elgueromexicano@gmail.com>
* /, UPGRADE-11.txt, UPGRADE-12.txt: Fix UPGRADE.txt Due To Merging
From Branch 11 When merging in the patch for ASTERISK-22728, the
UPGRADE.txt file was changed incorrectly. That change should have
gone into ASTERISK-11.txt. This commit is to fix that. Also,
another comment in the UPGRADE-11.txt was missing and this commit
adds that as well. ........ Merged revisions 402115 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c, UPGRADE-12.txt: chan_sip: Clarify
'Forcerport' Setting Displayed When Running "sip show peers"
While looking at ASTERISK-22236, Walter Doekes pointed out that
when running "sip show peers", the setting being displayed can be
confusing. The display of "N" used to mean NAT (i.e. yes). The
NAT setting has gone through many different changes resulting in
the display of different characters to try and convey what the
current setting is for 'Forcerport' (A for Auto and Forcerport is
currently on, a for Auto but Forcerport is off, Y for yes, and N
for no). During the initial code review to try and clarify these
settings (especially since "N" no longer meant what it used to
mean in prior versions of Asterisk), Mark Michelson suggested
using the full space available to display the settings which
helped to make the settings very clear. That was a great
suggestion. Therefore, this patch does the following: * The
column for 'Forcerport' now will show: Auto (Yes), Auto (No),
Yes, or No. * A column for the 'Comedia' setting has been added.
It too will display the setting in a non-cryptic way: Auto (Yes),
Auto (No), Yes, or No. * UPGRADE.txt has been updated to document
this change. (closes issue ASTERISK-22728) Reported by: Walter
Doekes Tested by: Michael L. Young Patches:
asterisk-forcerport-display-clarification_v3.diff uploaded by
Michael L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/2941 ........ Merged revisions
402111 from http://svn.asterisk.org/svn/asterisk/branches/11
........ Merged revisions 402112 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-27 23:22 +0000 [r402073-402091] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /: Filter out internal channels from dial message
handling Surrogate channels would pop up from time to time in
dial message handling. This would cause a WARNING message to
appear, indicating that the Surrogate channel had no CDR. This
patch filters out those channels that have the internal
implementation flag set, such that the WARNING message isn't
displayed. ........ Merged revisions 402090 from
http://svn.asterisk.org/svn/asterisk/branches/12
* cdr/cdr_sqlite3_custom.c, /, cdr/cdr_syslog.c, cdr/cdr_sqlite.c,
cdr/cdr_adaptive_odbc.c, addons/cdr_mysql.c,
include/asterisk/cdr.h, cdr/cdr_pgsql.c, cdr/cdr_odbc.c,
cdr/cdr_radius.c, cdr/cdr_custom.c, cdr/cdr_manager.c,
cdr/cdr_tds.c, cdr/cdr_csv.c, main/cdr.c: Prevent CDR backends
from unregistering while billing data is in flight This patch
makes it so that CDR backends cannot be unregistered while active
CDR records exist. This helps to prevent billing data from being
lost during restarts and shutdowns. Review:
https://reviewboard.asterisk.org/r/2880/ ........ Merged
revisions 402081 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, contrib/ast-db-manage/config/env.py,
contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py,
contrib/ast-db-manage/voicemail/env.py: Update Alembic database
scripts for external scripting and PostgreSQL, Oracle This patch
does the following: 1) The env scripts have been updated to be
tolerant of a NULL configuration file. This occurs when
configuration is provided by an external script, such that the
actual config.ini file is not used. 2) Enum types have all been
given names. This is needed for PostgreSQL script generation. 3)
The identifier meetme_confno_starttime_endtime is greater than 30
characters, and hence invalid for Oracle databases. This has been
truncated down to meetme_confno_start_end. ........ Merged
revisions 400383 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-26 12:56 +0000 [r402065] Joshua Colp <jcolp@digium.com>
* channels/chan_pjsip.c, include/asterisk/res_pjsip_session.h, /:
chan_pjsip: Fix a crash when direct media is enabled and an ACK
is received after the channel is hung up. (closes issue
ASTERISK-22731) Reported by: Kinsey Moore ........ Merged
revisions 402064 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-26 00:36 +0000 [r402056] Richard Mudgett <rmudgett@digium.com>
* res/res_stasis.c, /: res_stasis.c: Made use the ao2_container
callback templates. * Made res_stasis.c use the OBJ_SEARCH_XXX
defines. ........ Merged revisions 402055 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-26 00:27 +0000 [r402054] Scott Griepentrog <sgriepentrog@digium.com>
* main/rtp_engine.c, /, include/asterisk/rtp_engine.h: rtp_engine:
fix rtp payloads copy and improve argument names In function
ast_rtp_instance_early _bridge_make_compatible the use of
instance 0/1 as arguments doesn't clearly communicate a direction
that the copying of payloads from the source channel to the
destination channel will occur, making it more probable to have
the arguments to ast_rtp_codecs_payloads_copy() put in the
reverse order. This patch renames the arguments with _dst and
_src suffixes and corrects the copy direction. (closes issue
ASTERISK-21464) Reported by: Kevin Stewart Review:
https://reviewboard.asterisk.org/r/2894/ ........ Merged
revisions 402000 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 Test shows
rtpmap:119 being copied per this change, but is not in sip invite
........ Merged revisions 402042 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 402043 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-25 23:58 +0000 [r402004-402045] Richard Mudgett <rmudgett@digium.com>
* /, main/taskprocessor.c: taskprocessor: Made use pthread_equal()
to compare thread ids. * Removed another silly use of RAII_VAR().
RAII_VAR() and SCOPED_LOCK() are not silver bullets that allow
you to turn off your brain. ........ Merged revisions 402044 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/stasis/app.c: You'd think that new files would be free of
whitespace issues. But you would be wrong. ........ Merged
revisions 402003 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-25 22:01 +0000 [r401999-402002] Jonathan Rose <jrose@digium.com>
* res/ari/resource_bridges.c, res/res_ari_bridges.c, /,
rest-api/api-docs/channels.json, res/ari/resource_channels.c,
res/res_ari_channels.c, rest-api/api-docs/bridges.json: ARI:
channel/bridge recording errors when invalid format specified
Asterisk will now issue 422 if recording is requested against
channels or bridges with an unknown format (closes issue
ASTERISK-22626) Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/2939/ ........ Merged
revisions 402001 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_recording.c, rest-api/api-docs/channels.json,
res/ari/resource_channels.c, res/ari/ari_model_validators.c,
res/res_ari_channels.c, rest-api/api-docs/bridges.json,
rest-api/api-docs/recordings.json, res/ari/resource_bridges.c,
res/ari/ari_model_validators.h, res/res_ari_bridges.c,
rest-api/api-docs/events.json, /: ARI recordings: Issue HTTP
failures for recording requests with file conflicts If a file
already exists in the recordings directory with the same name as
what we would record, issue a 422 instead of relying on the
internal failure and issuing success. (closes issue
ASTERISK-22623) Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/2922/ ........ Merged
revisions 401973 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-25 20:51 +0000 [r401962] Scott Griepentrog <sgriepentrog@digium.com>
* include/asterisk/pbx.h, main/pbx.c, /: pbx.c: fix confused match
caller id that deleted exten still in hash This fixes a bug where
a zero length callerid match adjacent to a no match callerid
extension entry would be deleted together, which then resulted in
hashtable references to free'd memory. A third state of the
matchcid value has been added to indicate match to any extension
which allows enforcing comparison of matchcid on/off without
errors. (closes issue AST-1235) Reported by: Guenther Kelleter
Review: https://reviewboard.asterisk.org/r/2930/ ........ Merged
revisions 401959 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401960 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401961 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-25 17:41 +0000 [r401898-401939] Jonathan Rose <jrose@digium.com>
* /, res/res_pjsip/pjsip_distributor.c,
res/res_pjsip_endpoint_identifier_user.c: PJSIP: Add log messages
when requests are received for non-existent endpoints (closes
issue ASTERISK-22552) Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/2934/ ........ Merged
revisions 401938 from
http://svn.asterisk.org/svn/asterisk/branches/12
* utils/clicompat.c, utils/refcounter.c, /: Put clicompat-r2.patch
back in We've figured out how to resolve the problems this was
causing in 12/trunk, so this can go back in now. (issue
ASTERISK-22467) Reported by: Corey Farrell Patches:
clicompat-r2.patch uploaded by coreyfarrell (license 5909)
........ Merged revisions 401914 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401935 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401936 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, utils/clicompat.c: revert clicompat-r2.patch from r401704
Patch caused the following build errors against testsuite
https://bamboo.asterisk.org/bamboo/browse/AST-ATRUNKBUILD4-244
(issue ASTERISK-22467) Reported by: Corey Farrell ........ Merged
revisions 401895 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401896 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401897 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-25 16:09 +0000 [r401886] Kevin Harwell <kharwell@digium.com>
* /, channels/chan_sip.c: chan_sip: Allow a sip peer to accept both
AVP and AVPF calls Adapts the behaviour of avpf to only impact
the format of outgoing calls. For inbound calls, both AVP and
AVPF calls will be accepted regardless of the value of avpf in
the configuration. (closes issue ASTERISK-22005) Reported by:
Torrey Searle Patches: optional_avpf_trunk.patch uploaded by
tsearle (license 5334) ........ Merged revisions 401884 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401885 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-25 13:49 +0000 [r401873] David M. Lee <dlee@digium.com>
* tests/test_json.c, /: test_json: Fix deprecation warnings After a
series of upgrades over recent weeks, I've discovered that
test_json.c won't compile in dev mode any more for me. One of
gcc-4.8.2, OS X Mavericks or Xcode 5 has decided to deprecate
tempnam. Which, in general, is a good thing. But for test code
that just needs a temporary file, it's just annoying. This patch
replaces usage of tempname with mkstemp, avoiding the deprecation
warning. It also removes the temporary files when the test is
complete, which apparently we weren't doing before (oops).
Review: https://reviewboard.asterisk.org/r/2957/ ........ Merged
revisions 401872 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-24 21:06 +0000 [r401836] Kevin Harwell <kharwell@digium.com>
* /, main/logger.c: Logging: Logging types ignored after specifying
a verbose level If one specified a verbose level within a logging
facility in logger.conf then any component after it was ignored.
Fixed so all values are correctly read. (closes issue
ASTERISK-22456) Reported by: Kevin Harwell ........ Merged
revisions 401833 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401835 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-24 20:48 +0000 [r401834] David M. Lee <dlee@digium.com>
* rest-api-templates/models.wiki.mustache,
rest-api/api-docs/events.json, /,
rest-api-templates/swagger_model.py,
rest-api-templates/ari_model_validators.c.mustache: The Swagger
1.2 specification for type extension ended up being slightly
different than my proposal. Instead of putting an 'extends' field
on the subtype, the base type has a 'subTypes' field, which is a
list of the subTypes. Given that its a messaging model and not an
object model, kinda makes sense. This patch changes the
events.json api-doc, and the python translators to take the new
format into account. Other changes that are in Swagger 1.2 were
not adopted, since the spec is still in flux, and could change
before it's finalized. A summary of changes to the Swagger-1.2
spec can be found at
https://github.com/wordnik/swagger-core/wiki/1.2-transition.
(closes issue ASTERISK-22440) Review:
https://reviewboard.asterisk.org/r/2909/ ........ Merged
revisions 401701 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-24 20:34 +0000 [r401622-401832] Jonathan Rose <jrose@digium.com>
* /, main/utils.c: utils: Fix memory leaks and missed
unregistration of CLI commands on shutdown Final set of patches
in a series of memory leak/cleanup patches by Corey Farrell
(closes issue ASTERISK-22467) Reported by: Corey Farrell Patches:
main-utils-1.8.patch uploaded by coreyfarrell (license 5909)
main-utils-11.patch uploaded by coreyfarrell (license 5909)
main-utils-12up.patch uploaded by coreyfarrell (license 5909)
........ Merged revisions 401829 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401830 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401831 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, tests/test_linkedlists.c: test_linkedlists: Fix memory leak
(issue ASTERISK-22467) Reported by: Corey Farrell Patches:
test_linkedlists-1.8.patch uploaded by coreyfarrell (license
5909) test_linkedlists-11up.patch uploaded by coreyfarrell
(license 5909) ........ Merged revisions 401790 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401791 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401792 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/jitterbuf.c: jitterbuf: Fix memory leak on jitter buffer
reset (issue ASTERISK-22467) Reported by: Corey Farrell Patches:
jitterbuf-jb_reset-leak-1.8.patch
jitterbuf-jb_reset-leak-11up.patch ........ Merged revisions
401786 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 401787 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401788 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/astobj2.c, /: astobj2: Unregister debug CLI commands at exit
(issue ASTERISK-22467) Reported by: Corey Farrell Patches:
astobj2-clean-debug-cli-1.8-11.patch uploaded by coreyfarrell
(license 5909) astobj2-clean-debug-cli-12up.patch uploaded by
coreyfarrell (license 5909) ........ Merged revisions 401781 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401783 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401784 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_voicemail.c, /: app_voicemail: Memory Leaks against
tests (issue ASTERISK-22467) Reported by: Corey Farrell Patches:
app_voicemail-1.8.patch uploaded by coreyfarrell (license 5909)
app_voicemail-11up.patch uploaded by coreyfarrell (license 5909)
........ Merged revisions 401743 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401744 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401745 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/app.c, main/asterisk.c, utils/clicompat.c,
channels/chan_dahdi.c, codecs/ilbc/doCPLC.c, main/data.c, /:
memory leaks: Memory leak cleanup patch by Corey Farrell (second
set) Also covers ast_app_parse_timelen-fail-zero-length.patch,
but the patch was replaced with one of my own. (issue
ASTERISK-22467) Reported by: Corey Farrell Patches:
chan_dahdi-cleanup_push.patch uploaded by coreyfarrell (license
5909) clicompat-r2.patch uploaded by coreyfarrell (license 5909)
codecs-ilbc-doCPLC.patch uploaded by coreyfarrell (license 5909)
data-cleanup-test-registration.patch uploaded by coreyfarrell
(license 5909) main-asterisk-kill-listener.patch uploaded by
coreyfarrell (license 5909) ........ Merged revisions 401704 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401705 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401706 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, tests/test_dlinklists.c, funcs/func_math.c,
channels/sip/reqresp_parser.c, main/test.c,
main/editline/readline.c: memory leaks: Memory leak cleanup patch
by Corey Farrell (first set) (issue ASTERSIK-22467) Reported by:
Corey Farrell Patches:
chan_sip-parse_contact_header_test-free-contacts.patch uploaded
by coreyfarrell (license 5909) cli-filename-completion-leak.patch
uploaded by coreyfarrell (license 5909) func_math.patch uploaded
by corefarrell (license 5909) main-test-cleanup.patch uploaded by
coreyfarrell (license 5909) test_dlinklists.patch uploaded by
coreyfarrell (license 5909) ........ Merged revisions 401660 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401661 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401662 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/translate.c, res/res_rtp_asterisk.c: res_rtp_asterisk:
Address jittery DTMF events in RTP streams (closes issue
ASTERISK-21170) Reported by: NITESH BANSAL Patches:
dtmf-timestamp.patch uploaded by NITESH BANSAL (license 6418)
Review: https://reviewboard.asterisk.org/r/2938/ ........ Merged
revisions 401619 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401620 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401621 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-23 16:52 +0000 [r401582] Richard Mudgett <rmudgett@digium.com>
* /, cdr/cdr_adaptive_odbc.c: cdr_adaptive_odbc: Also apply a
filter when the CDR value is empty. Extra CDR records are written
if a filtered CDR value is empty because the filter is not
checked. (closes issue ASTERISK-22272) Reported by: Jordi Llull
Chavarria ........ Merged revisions 401577 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401579 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401581 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-23 16:48 +0000 [r401580] John Bigelow <jbigelow@digium.com>
* /, main/bridge_channel.c: Add a test suite event to indicate when
the atxfer 3-way feature is detected This adds a test suite event
that indicates to tests when the attended transfer three-way call
feature is detected. Review:
https://reviewboard.asterisk.org/r/2912/ ........ Merged
revisions 401578 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-23 15:23 +0000 [r401540] Kinsey Moore <kmoore@digium.com>
* channels/chan_mgcp.c, /: chan_mgcp: Properly handle malformed
media lines This corrects a situation in which a media line was
not parsed properly and resulted in a crash. (closes issue
ASTERISK-21190) Reported by: adomjan Patches:
chan_mgcp.c-sscnaf_fix uploaded by adomjan (License 5448)
........ Merged revisions 401537 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401538 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401539 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-23 11:16 +0000 [r401500] Joshua Colp <jcolp@digium.com>
* /, channels/chan_sip.c: chan_sip: Fix an issue where an
incompatible audio format may be added to SDP. If preferred
codecs included any non-audio format the code would mistakenly
add the audio format, even if it was not a joint capability with
the remote side. (closes issue ASTERISK-21131) Reported by:
nbougues Patches: patch_unsupported_codec_1.8.patch uploaded by
nbougues (license 6470) ........ Merged revisions 401497 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401498 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401499 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-23 02:36 +0000 [r401489] Michael L. Young <elgueromexicano@gmail.com>
* channels/chan_iax2.c, configs/iax.conf.sample, /: chan_iax2: Fix
Binding To Multiple Addresses Again When reworking chan_iax2 for
IPv6, the ability to bind to multiple addresses was removed by
mistake. This patch restores this functionality and adds notes
about IPv6 addresses in the sample config. (closes issue
ASTERISK-22741) Reported by: Joshua Colp Tested by: Michael L.
Young Patches: asterisk-22741-fix-binding-multiple-addr.diff
uploaded by Michael L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/2945/ ........ Merged
revisions 401488 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-22 23:10 +0000 [r401450] Matthew Jordan <mjordan@digium.com>
* /, res/res_rtp_asterisk.c: res_rtp_asterisk: Fix crash when RTCP
is not available during SSRC change In r400089, a patch was put
in to correct erroneous RTCP statistic resets. Unfortunately,
ast_rtp_read can be called on an RTP instance that does not have
RTCP information. This patch prevents that crash by only
resetting the statistics if we do actually have an RTCP instance.
(issue AST-1174) (closes issue ASTERISK-22667) Reported by: John
Bigelow ........ Merged revisions 401445 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401446 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401447 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-22 19:04 +0000 [r401421-401435] Richard Mudgett <rmudgett@digium.com>
* apps/app_queue.c, /: app_queue: Fix CLI "queue remove member"
queue_log entry. The queue_log entry resulting from CLI "queue
remove member" when log_membername_as_agent is enabled is wrong.
It always uses the interface name instead of the member name in
the queue_log entry. * Get the queue member before removing it
from the queue so the member name is available for the queue_log
entry. (closes issue ASTERISK-21826) Reported by: Oscar Esteve
Patches: fix_membername.diff (license #6505) patch uploaded by
Oscar Esteve (modified to fix potential ref leak) ........ Merged
revisions 401433 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401434 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/bridge_channel.c,
include/asterisk/bridge_channel_internal.h, /, main/bridge.c:
Bridging: Fix orphaned bridge if neither of the joining channels
can join. The original issue noted that the bridge is orphaned
when res_parking.so is not loaded and a call uses the dial kK
flags. A similar issue happens when only one of the park flags is
used. In this case you have the bridge with one or the other
channel left in it. The channel and bridge will stay around until
the channel hangs up. * Fixed the initial bridge channel push
failure to act as if the channel were kicked out of the bridge.
The bridge then decides if it needs to be dissolved. (closes
issue ASTERISK-22629) Reported by: Kevin Harwell Review:
https://reviewboard.asterisk.org/r/2928/ ........ Merged
revisions 401424 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/parking/parking_bridge_features.c,
res/parking/parking_bridge.c, /: res_parking: Give parking
timeout comebacktoorigin channel DTMF features. Parking timeouts
did not set any DTMF features for the channel calling the parker
back. * Added code to set the parkedcalltransfers,
parkedcallreparking, parkedcallhangup, and parkedcallrecording
options appropriately for the channels when a parking timeout
occurs. The recall channel DTMF options are set using the
BRIDGE_FEATURES channel variable to allow the other timeout
options to have the DTMF features available. (closes issue
ASTERISK-22630) Reported by: Kevin Harwell Review:
https://reviewboard.asterisk.org/r/2942/ ........ Merged
revisions 401422 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_parking.c: res_parking: Update XML documention for
DTMF features after parking timeout. * Updated the XML
documentation to indicate that the parkedcalltransfers,
parkedcallreparking, parkedcallhangup, and parkedcallrecording
configuration options also apply to parking timeouts. (issue
ASTERISK-22630) Reported by: Kevin Harwell Review:
https://reviewboard.asterisk.org/r/2942/ ........ Merged
revisions 401420 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-22 15:17 +0000 [r401411] Joshua Colp <jcolp@digium.com>
* apps/app_dial.c: Add an 'R' option to Dial which sends ringing
until early media has been received. (closes issue
ASTERISK-10487) Reported by: Gaspar Zoltan Patches: 10487.patch
uploaded by n8ideas (license 6075)
2013-10-21 21:06 +0000 [r401365] Mark Michelson <mmichelson@digium.com>
* /, main/bridge_channel.c: Remove a noisy debug message from
bridging code. This particular debug message, during a stress
test, was logged so often that it appeared that there may be a
memory leak in the logger code. In actuality, there was no memory
leak, but the logger thread was having a hard time keeping up
with the demands of the rest of the system. Since this debug
message has no value at all, the best way to fix the problem was
to just remove the message. (closes issue AST-1225) reported by
John Bigelow Patches: spammy_log.diff uploaded by Mark Michelson
(License #5049) ........ Merged revisions 401364 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-21 19:50 +0000 [r401328] Kevin Harwell <kharwell@digium.com>
* /, main/editline/term.c: Segfault in LIBEDIT_INTERNAL after
tgetstr(), when libncurses5-dev isn't installed Include the
appropriate declarations when not using termcap, but term+curses
and [n]curses do not exist. (closes issue ASTERISK-22351)
Reported by: A. Iglesias Patches:
issueA22351_libedit_internal_without_ncurses_dev.patch uploaded
by wdoekes (license 5674) ........ Merged revisions 401325 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401326 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401327 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-21 18:59 +0000 [r401316-401317] David M. Lee <dlee@digium.com>
* rest-api/api-docs/channels.json, /: Fixing r401281; the model
name is Channel, with a capital C ........ Merged revisions
401315 from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_ari.c, /: Fixed malformed Access-Control-Allow-Methods
header. Was causing Safari to barf on POST and DELETE. ........
Merged revisions 401106 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-19 21:57 +0000 [r401292] Kinsey Moore <kmoore@digium.com>
* /, channels/chan_iax2.c: Fix IAX2 incoming call address lookups
This fixes address lookup for incoming calls without a peer
definition. The address family was unset instead of being set to
AST_AF_UNSPEC which was causing lookup failures on "127.0.0.1".
This is one of the causes of the current failure of the app_page
integration test. Review:
https://reviewboard.asterisk.org/r/2933/ ........ Merged
revisions 401291 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-19 14:45 +0000 [r401282] Joshua Colp <jcolp@digium.com>
* res/ari/resource_channels.h, main/pbx.c, /,
rest-api/api-docs/channels.json, res/ari/resource_channels.c,
res/res_ari_channels.c: Return a channel snapshot when
originating using ARI, and subscribe the Stasis application to
it. This change allows a user of ARI to know what channel it has
originated and also follow any progress. If a Stasis application
is provided it will be automatically subscribed to the originated
channel immediately. (closes issue ASTERISK-22485) Reported by:
David Lee Review: https://reviewboard.asterisk.org/r/2910/
........ Merged revisions 401281 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 22:52 +0000 [r401272] Richard Mudgett <rmudgett@digium.com>
* /, res/parking/parking_controller.c: res_parking: Remove setting
useless flag. ........ Merged revisions 401271 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 21:51 +0000 [r401263] David M. Lee <dlee@digium.com>
* contrib/scripts/get_swagger_ui.sh (added), Makefile, /,
static-http: This is just a quick script for dumping swagger-ui
into static-http, so that it can be served by the Asterisk web
server. I had to change the Makefile in order to recursively
install content from the static-http directory, hence the code
review instead of just putting it in. Review:
https://reviewboard.asterisk.org/r/2924/ ........ Merged
revisions 401261 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 18:44 +0000 [r401249] Mark Michelson <mmichelson@digium.com>
* main/sorcery.c, main/cli.c, main/manager.c, /, main/bridge.c,
main/bucket.c: Resolve some memory leaks due to incorrect for
loop / ao2 ref usage. A common idiom in Asterisk is to due
something like: for (ao2_obj = list_beginning; ao2_obj =
next_item; ao2_ref(ao2_obj, -1)) { ...do stuff... } This is nice
because it automatically takes care of the object references for
you. However, there is a pitfall here. If a break statement is in
the for loop, then the current reference is not cleaned up. In
some cases, this is on purpose, but in others there is a leak.
This commit fixes the leak cases. ........ Merged revisions
401248 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 16:59 +0000 [r401233-401240] Richard Mudgett <rmudgett@digium.com>
* /, res/res_fax.c, include/asterisk/channel.h, apps/app_dial.c,
main/channel.c: Add channel lock protection around translation
path setup. Most callers of ast_channel_make_compatible() happen
before the channels enter a two party bridge. With the new
bridging framework, two party bridging technologies may also call
ast_channel_make_compatible() when there is more than one thread
involved with the two channels. * Added channel lock protection
in set_format() and ast_channel_make_compatible_helper() when
dealing with the channel's native formats while setting up a
translation path. * Fixed best_src_fmt and best_dst_fmt usage
consistency in ast_channel_make_compatible_helper(). The call to
ast_translator_best_choice() got them backwards. * Updated some
callers of ast_channel_make_compatible() and the function
documentation. There is actually a difference between the two
channels passed in. * Fixed the deadlock potential in res_fax.c
dealing with ast_channel_make_compatible(). The deadlock
potential was already there anyway because res_fax called
ast_channel_make_compatible() with chan locked. (closes issue
ASTERISK-22542) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2915/ ........ Merged
revisions 401239 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, include/asterisk/bridge.h: Tweak ast_bridge_depart() doxygen.
........ Merged revisions 401232 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 16:06 +0000 [r401216-401224] Mark Michelson <mmichelson@digium.com>
* include/asterisk/bridge.h, /: Remove the bit about requiring
ast_bridge_depart() to be called before ast_bridge_destroy().
........ Merged revisions 401223 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/bridge.h, /: Clarify in ast_bridge_destroy()
about how departable channels must be handled. ........ Merged
revisions 401212 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 15:14 +0000 [r401184] Michael L. Young <elgueromexicano@gmail.com>
* /, channels/chan_sip.c: Remove Port Restriction When Checking For
NAT When trying to determine if a peer is behind NAT, we should
not be using the ports when comparing addresses. This patch
removes the port from being checked and just useds the addresses
now. (closes issue ASTERISK-22729) Reported by: Michael L. Young
Tested by: Michael L. Young Patches:
asterisk-remove-using-port-for-nat-check.diff uploaded by Michael
L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/2927/ ........ Merged
revisions 401182 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401183 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-18 14:50 +0000 [r401181] Walter Doekes <walter+asterisk@wjd.nu>
* main/channel.c, /: Properly copy/remove the device state cache
flag over a masquerade. In r378303 the
AST_FLAG_DISABLE_DEVSTATE_CACHE flag was added that tells the
devstate system to not cache states for non-real devices.
However, when optimizing away channels (ast_do_masquerade), that
flag wasn't copied. In my case, using Local devices as queue
members created a situation where the endpoint was considered in
use, but the state change of the device being available again was
ignored (not cached). The endpoint channel was optimized into the
(previously) Local channel, but kept the do-not-cache flag. The
end result being that the queue member apparently stayed in use
forever. (closes issue ASTERISK-22718) Reported by: Walter Doekes
Review: https://reviewboard.asterisk.org/r/2925/ ........ Merged
revisions 401178 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401179 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401180 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-17 20:39 +0000 [r401169] Michael L. Young <elgueromexicano@gmail.com>
* /, channels/chan_sip.c: Fix Setting A chan_sip Dialog's
SIP_NAT_FORCE_RPORT Flag A condition was added in a commit to fix
ASTERISK-21374, that, if the SIP_PAGE3_NAT_AUTO_RPORT flag was
set, to then copy a peer's SIP_NAT_FORCE_RPORT flag to the
dialog. This condition should not have been there since it
assumed that if Asterisk is in an environment where NAT is
involved, that the auto_* nat settings or force_rport setting
would be on in the global settings. If the nat setting in the
global setting is set to 'nat=no' and then turned on for peers
(which is not quite the recommended way, although it is allowed)
this flag is never copied to the dialog resulting in problems
like, REGISTER replies going to the wrong port. This patch
removes this conditional check and will now always use the peer's
flag which by this point in the code the checks on whether the
peer is behind NAT or not (if using auto_force_rport) have
already been run. (closes issue ASTERISK-22236) Reported by:
Filip Frank Tested by: Michael L. Young Patches:
asterisk-2236-always-set-rport.diff uploaded by Michael L. Young
(license 5026) Review: https://reviewboard.asterisk.org/r/2919/
........ Merged revisions 401167 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401168 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-17 18:25 +0000 [r401159] Jonathan Rose <jrose@digium.com>
* res/res_parking.c, /: res_parking: Fix bug where reloading
immediately wipes new parkpos extensions (closes issue
ASTERISK-22631) Reported by: Kevin Harwell ........ Merged
revisions 401158 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-17 15:41 +0000 [r401122] Kinsey Moore <kmoore@digium.com>
* /, res/res_xmpp.c, res/res_jabber.c: Reduce log level of a
non-pubsub error message Drop an error log message to debug level
1 since distributed device state functions correctly when
receiving this message and it spams the logs. (closes issue
ASTERISK-22410) Reported by: abelbeck Patches:
asterisk-1.8-res_jabber-log-nonpubsub-error-to-debug.patch
uploaded by abelbeck (License 5903)
asterisk-11-res_xmpp-log-nonpubsub-error-to-debug.patch uploaded
by abelbeck (License 5903) ........ Merged revisions 401119 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401120 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401121 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-16 21:22 +0000 [r401108] Richard Mudgett <rmudgett@digium.com>
* /, res/ari/resource_playback.c: ARI: Fix crash when POST
/playback/{id}/control does not have an operation parameter.
(closes issue ASTERISK-22680) Reported by: John Bigelow ........
Merged revisions 401107 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-16 17:01 +0000 [r401097] David M. Lee <dlee@digium.com>
* rest-api/resources.json, /: Oops. Leftover /stasis reference
........ Merged revisions 401096 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-16 14:02 +0000 [r401088] Kinsey Moore <kmoore@digium.com>
* rest-api/api-docs/bridges.json, res/ari/resource_channels.h, /,
res/ari/resource_bridges.h, rest-api/api-docs/channels.json:
Clarify documentation for channel and bridge list This makes it
clear that the ARI API calls for listing channels and bridges
will list all channels or bridges in the system and not just
those that are in or are controlled by a Stasis application.
(closes issue ASTERISK-22635) Reported by: Kevin Harwell ........
Merged revisions 401087 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-16 12:19 +0000 [r401079] Walter Doekes <walter+asterisk@wjd.nu>
* /, apps/app_queue.c: Don't check all realtime queues when doing
"queue show some_queue". When using realtime queues, queues have
to be fetched from the database every now and then to see if any
info has been changed or to see if the queue has been removed.
When fetching info for an individual queue, the pruning of other
queues is unnecessarily costly. Review:
https://reviewboard.asterisk.org/r/2907/ ........ Merged
revisions 401049 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 401076 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401077 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-16 00:12 +0000 [r401041] Paul Belanger <paul.belanger@polybeacon.com>
* /, rest-api/api-docs/bridges.json, res/res_ari_bridges.c: Use
POST / DELETE to toggle ARI bridge moh Review:
https://reviewboard.asterisk.org/r/2911/ ........ Merged
revisions 401040 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-15 23:44 +0000 [r401020-401039] Richard Mudgett <rmudgett@digium.com>
* main/translate.c: translate.c: Some minor code tweaks. *
Consistently compare format2index() return value so matrix_get()
cannot get passed negative values. * Optimize
ast_translator_best_choice() to defer initializing things until
needed. Also cached the matrix_get() return value rather than
repeatedly calling it.
* /, channels/dahdi/bridge_native_dahdi.c: bridge_native_dahdi:
Return channel join failure if could not make the channels
compatible. ........ Merged revisions 401030 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_iax2.c: chan_iax2: Fix channel left locked in
off nominal code path. ........ Merged revisions 401016 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 401017 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-15 20:03 +0000 [r401019] Kinsey Moore <kmoore@digium.com>
* rest-api/api-docs/bridges.json, res/res_ari_bridges.c, /: Ensure
bridge record error responses validate This adds the list of
expected errors to the /bridges/{bridgeId}/record ARI
documentation so that outbound 4xx errors validate properly.
Previously, this would result in a response validation failure.
(closes issue ASTERISK-22627) Reported by: Joshua Colp ........
Merged revisions 401018 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-15 15:30 +0000 [r401007] Paul Belanger <paul.belanger@polybeacon.com>
* rest-api/api-docs/channels.json, res/res_ari_channels.c, /: Use
POST / DELETE to toggle hold / moh for ARI channels This change
updates how we handle toggle events, rather then create two
different function names, we'll just use POST / DELETE from HTTP
to handle it. Review: https://reviewboard.asterisk.org/r/2906/
........ Merged revisions 400999 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-15 15:26 +0000 [r400998] Mark Michelson <mmichelson@digium.com>
* /, channels/chan_sip.c: Prevent chan_sip from sending duplicate
BYEs. When a 200 OK for an initial INVITE is received, we were
doing the right thing by ACKing and sending an immediate BYE.
However, we also were doing the wrong thing and queuing an answer
frame, thus causing the call to be answered. This would cause the
call to be hung up by the channel thread, thus resulting in a
second BYE being sent out. In this fix, I also have set the
hangupcause to be correct since the initial BYE being sent by
Asterisk had an unknown hangup cause. I have changed to using
"Bearer capabilty not available" since the call was hung up due
to an SDP offer/answer error. (closes issue ASTERISK-22621)
reported by Kinsey Moore ........ Merged revisions 400970 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400971 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400984 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-15 13:44 +0000 [r400959] David M. Lee <dlee@digium.com>
* /, rest-api-templates/asterisk_processor.py: My doc correction in
r400842 had a silly bug. Because I added a wiki_description to
models and not their properties, the rendered wiki page had the
model description instead of the property descriptions, which
looks very silly indeed. (closes issue ASTERISK-22705) ........
Merged revisions 400958 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-14 22:52 +0000 [r400913-400950] Richard Mudgett <rmudgett@digium.com>
* channels/chan_dahdi.c, configs/chan_dahdi.conf.sample,
channels/chan_dahdi.h: chan_dahdi: Add config support for hwgain
settings. * Add hwtxgain and hwrxgain config options to
chan_dahdi.conf with documentation in chan_dahdi.conf.sample.
(closes issue ASTERISK-22429) Reported by: Jaco Kroon Patches:
jira_asterisk_22429_hwgain_trunk.patch (license #5621) patch
uploaded by rmudgett
* channels/chan_dahdi.c, /, channels/chan_dahdi.h: chan_dahdi:
Reflect the set software gain in the CLI "dahdi show channel"
output. * Remember the swgain setting from CLI "dahdi set swgain"
command so the CLI "dahdi show channel" output will reflect the
current setting. * Updated CLI "dahdi set hwgain" and "dahdi set
swgain" documentation. (issue ASTERISK-22429) Reported by: Jaco
Kroon Patches: jira_asterisk_22429_v1.8_v2.patch (license #5621)
patch uploaded by rmudgett ........ Merged revisions 400907 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400909 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400911 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-14 22:03 +0000 [r400912] Mark Michelson <mmichelson@digium.com>
* /, channels/chan_sip.c: chan_sip: Do not increment the SDP
version between 183 and 200 responses. Bumping the SDP version
number can cause interoperability problems since receivers of the
responses will expect that a 200 SDP will be identical to a
previous 183 SDP. (closes issue ASTERISK-21204) reported by
NITESH BANSAL Patches:
dont-increment-session-version-in-2xx-after-183.patch uploaded by
NITESH BANSAL (License #6418) ........ Merged revisions 400906
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 400908 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400910 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-14 15:54 +0000 [r400891] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip_outbound_registration.c: pjsip outbound
registration: Log message says received a 408 when we didn't If
the server didn't exist that we are trying to register to the log
message would say that a 408 was received from that server when
in reality one wasn't. Added log messages stating no response was
received if the response does not exist. (closes issue
ASTERISK-22554) Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/2893/ ........ Merged
revisions 400890 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-14 15:01 +0000 [r400882] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip_mwi.c, /: Remove duplicate module info block The
module info block was repeated twice. Once is sufficient.
........ Merged revisions 400881 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-13 15:42 +0000 [r400873] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_session.c, /: Fix a race condition in
res_pjsip_session with rapidly terminating the session. The
INVITE session state callback wrongly assumes that a session will
always exist, but when rapidly terminating the session this
assumption goes out the window. As all handler code for the
INVITE session state callback requires the session it will now
just exit immediately if no session exists. (closes issue
ASTERISK-22668) Reported by: John Bigelow ........ Merged
revisions 400872 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-12 16:53 +0000 [r400864] Kinsey Moore <kmoore@digium.com>
* /, res/res_pjsip_outbound_authenticator_digest.c: Fix realm
comparison for outbound auth When generating the list of
authentication credentials to pass to PJSIP, Asterisk was using
the raw pointer of a pj_str_t which is not always
NULL-terminated. This sometimes resulted in incorrect text for
the realm and a failure to match the realm for authentication
purposes which was causing the outbound nominal auth pjsip basic
call test to bounce. This now uses the pj_str_t that contains the
realm instead of generating a new one. Thanks to John Bigelow for
helping to narrow this down. ........ Merged revisions 400863
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-11 17:05 +0000 [r400855] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/channel.h, /: channel.h: whitespace changes.
........ Merged revisions 400854 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-11 16:36 +0000 [r400851-400852] David M. Lee <dlee@digium.com>
* /, res/ari/resource_bridges.h, rest-api/api-docs/playback.json,
rest-api-templates/api.wiki.mustache, res/res_ari_playback.c,
rest-api/api-docs/channels.json, res/ari/resource_playback.h,
rest-api/api-docs/bridges.json,
rest-api-templates/asterisk_processor.py,
res/ari/resource_channels.h,
rest-api-templates/models.wiki.mustache: Multiple revisions
400508,400842-400843,400848 ........ r400508 | dlee | 2013-10-03
23:54:51 -0500 (Thu, 03 Oct 2013) | 1 line Corrected response
class for stopPlayback ........ r400842 | dlee | 2013-10-10
14:23:24 -0500 (Thu, 10 Oct 2013) | 1 line Correct some ARI wiki
rendering errors ........ r400843 | dlee | 2013-10-10 14:26:19
-0500 (Thu, 10 Oct 2013) | 1 line Updated /play resource docs.
The playback of http: resources isn't implemented... yet ........
r400848 | dlee | 2013-10-11 11:18:46 -0500 (Fri, 11 Oct 2013) | 5
lines Fix a stupid copy/paste error in ARI docs. Patches:
ari-doc-patch.txt uploaded by jbigelow (license 5091) ........
Merged revisions 400508,400842-400843,400848 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /: Fixed merge tracking for r400360, which was somehow lost
2013-10-11 16:28 +0000 [r400850] Richard Mudgett <rmudgett@digium.com>
* bridges/bridge_softmix.c, /: Softmix: Fix crash when switching
from softmix to another bridge technology. The crash is caused by
a race condition when switching between native RTP and softmix
bridging technologies. In this situation, the bridging technology
is switched from native RTP to softmix, and then back to native
RTP fast enough that the softmix private data gets destroyed
before the softmix mixing thread gets started. Thanks to Kinsey
Moore for the crash analysis. * Fix race condition when starting
the softmix mixing thread and switching to another bridge
technology. (closes issue ASTERISK-22678) Reported by: John
Bigelow Patches: jira_asterisk_22678_v12.patch (license #5621)
patch uploaded by rmudgett Tested by: John Bigelow ........
Merged revisions 400849 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-10 18:21 +0000 [r400825-400834] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip/location.c: Perform validation of permanent
contacts on AORs in res_pjsip. ........ Merged revisions 400833
from http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_configuration.c, res/res_pjsip.c: Fix an
assertion in res_pjsip when specifying an invalid outbound proxy.
This change fixes two issues when setting an outbound proxy: 1.
The outbound proxy URI was not parsed and validated during
configuration. 2. If an outgoing dialog was created and the
outbound proxy could not be set an assertion would occur because
the usage count on the dialog was not decremented. The
documentation has also been updated to specify that a full URI
must be specified for the outbound proxy. (closes issue
ASTERISK-22672) Reported by: Antti Yrjola ........ Merged
revisions 400824 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-09 11:02 +0000 [r400772-400813] Matthew Jordan <mjordan@digium.com>
* res/res_pjsip_header_funcs.c, /: Use 'z' as the format specifier
for size_t Using 'lu' will produce a compiler warning for some
versions of gcc and on some architectures. 'z' should be portable
as a format specifier for size_t. ........ Merged revisions
400812 from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_header_funcs.c (added), /: Add PJSIP_HEADER
function for manipulation of SIP headers in the PJSIP stack This
patch adds support to the PJSIP stack in Asterisk for SIP header
manipulation. Note that this is analagous to
SIPAddHeader/SIPRemoveHeader. For PJSIP_HEADER, an incoming
supplemental session callback is registered that takes the
pjsip_hdrs from the incoming session and stores them in a linked
list in the session datastore. Calls to PJSIP_HEADER traverse
over the list and return the nth matching header where 'n' is the
'number' argument to the function. When adding a header, the
first call creates a datastore and linked list and adds the
datastore to the session. The header is then created as a
pjsip_hdr and added to the list. An outgoing supplemental session
callback then traverses the list and adds the headers to the
outgoing pjsip_msg. When removing a header, the list created with
PJSIP_HEADER(add,...) is traversed and all matching entries are
removed. (closes issue ASTERISK-22498) Reported by: George Joseph
patch: res_pjsip_header_funcs_v1.patch uploaded by george.joseph
(License 6322) ........ Merged revisions 400771 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 22:33 +0000 [r400770] Kinsey Moore <kmoore@digium.com>
* /, configure, configure.ac: Add warning when compiling with iODBC
support When running configure, libiodbc2 development headers
will fulfill the requirement for ODBC development headers, but
will not function properly. This adds a warning when libiodbc2
development headers are detected instead of unixodbc development
headers. (closes issue ASTERISK-22459) Reported by: Patrick
Maille Tested by: Walter Doekes Patches:
issueA22459_warn_when_using_iodbc.patch uploaded by Walter Doekes
(License 5674) ........ Merged revisions 400767 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400768 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400769 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 21:20 +0000 [r400759] Richard Mudgett <rmudgett@digium.com>
* apps/app_agent_pool.c, /: app_agent_pool: Fix AMI/CLI AgentLogoff
soft preventing agents from logging back in. * Clear the
deferred_logoff flag when an agent logs in. (closes issue
ASTERISK-22669) Reported by: John Bigelow ........ Merged
revisions 400754 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 20:52 +0000 [r400750] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip.c, res/res_pjsip/config_transport.c: Switch from
using pjsip_strerror to pj_strerror. pjsip_strerror is only aware
of PJSIP-specific error codes. pj_strerror() is aware of all
PJProject error codes and OS-specific error codes. This
specifically fixes an oft-seen error in transport configuration
code where EADDRINUSE would result in "Unknown PJSIP error
120098" instead of a useful message. ........ Merged revisions
400749 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 20:18 +0000 [r400728-400744] Richard Mudgett <rmudgett@digium.com>
* configs/confbridge.conf.sample, /,
apps/confbridge/include/confbridge.h, apps/app_confbridge.c,
CHANGES, apps/confbridge/conf_config_parser.c: app_confbridge:
Can now set the language used for announcements to the
conference. ConfBridge now has the ability to set the language of
announcements to the conference. The language can be set on a
bridge profile in confbridge.conf or by the dialplan function
CONFBRIDGE(bridge,language)=en. (closes issue ASTERISK-19983)
Reported by: Jonathan White Patches: M19983_rev2.diff (license
#5138) patch uploaded by junky (modified) Tested by: rmudgett
........ Merged revisions 400741 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400742 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/confbridge/conf_config_parser.c, /: app_confbridge: Fix
duplicate default_user profile. * Fixed looking in the wrong
profiles container to see if the default_user profile is already
created in verify_default_profiles(). The bridge profile
container is never going to hold user profiles. :) ........
Merged revisions 400723 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400724 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 18:19 +0000 [r400684-400704] Kinsey Moore <kmoore@digium.com>
* funcs/func_config.c, /: Fix func_config list entry allocation The
AST_CONFIG dialplan function defined in func_config.c allocates
its config file list entries using ast_malloc. List entry
allocations destined for use with Asterisk's linked list API must
be ast_calloc()d or otherwise initialized so that list pointers
are set to NULL. These uses of ast_malloc have been replaced by
ast_calloc to prevent dereferencing of uninitialized pointer
values when traversing the list. (closes issue ASTERISK-22483)
Reported by: Brian Scott ........ Merged revisions 400694 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400697 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400701 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c, /: Fix STUN crash when using IPv6 any
address Ensure that when chan_sip binds to the IPv6 any address
([::]), IPv4 candidates are also added. (closes issue
ASTERISK-21917) Reported by: Torrey Searle Patches:
0023_ipv6_stun_crash.patch uploaded by Torrey Searle (License
5334) ........ Merged revisions 400681 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400682 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 15:44 +0000 [r400683] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip/pjsip_options.c, /: Push CLI qualify into the
threadpool. If you run Asterisk in the background and then
connect to it through a separate console, the thread that runs
CLI commands is not registered with PJLIB. Thus PJLIB does not
like it when you attempt to send OPTIONS requests from that
thread. So now we push the task into the threadpool, which we
know to be registered with PJLIB. Thanks to Antti Yrjola for
reporting this. ........ Merged revisions 400680 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-08 15:12 +0000 [r400662-400672] Richard Mudgett <rmudgett@digium.com>
* /, res/res_agi.c, apps/app_queue.c: Make app_queue and res_agi
independent of AMI being enabled. The
https://reviewboard.asterisk.org/r/2888/ review changes manager
to not subscribe to stasis when it is disabled for performance
reasons. When manager is disabled app_queue and res_agi decline
to load and fail to clean up what they have already allocated. *
Made app_queue and res_agi clean up allocated resources when they
decline to load. * Made app_queue and res_agi use their own
subscriptions to the stasis topics instead of borrowing manager's
message router structure inappropriately. (closes issue
ASTERISK-22604) Reported by: rmudgett Review:
https://reviewboard.asterisk.org/r/2902/ ........ Merged
revisions 400671 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, include/asterisk/stasis.h, apps/app_queue.c,
include/asterisk/manager.h: Miscellaneous stand alone comment
cleanups. ........ Merged revisions 400661 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-06 17:13 +0000 [r400625] Michael L. Young <elgueromexicano@gmail.com>
* /, apps/app_queue.c: app_queue: Fix Queuelog EXITWITHKEY only
logging two of four fields Commit r62462 added two extra fields
for logging "the original position the caller entered the queue
at, and the amount of time the caller was waiting in the queue."
But when r75969 was merged from 1.4 into trunk (r75977), these
two fields disappeared. Those two extra fields were not logged in
1.4 and when the patch was merged, those fields went away.
Therefore, this is a regression and was caught by the reporter
because he was reading the awesome "Asterisk: The Definitive
Guide" book. (closes issue ASTERISK-22197) Reported by: Dalius M.
Tested by: Dalius M. Patches:
asterisk-22197-q-log-exitwithkey.diff uploaded by Michael L.
Young (license 5026) Review:
https://reviewboard.asterisk.org/r/2901/ ........ Merged
revisions 400622 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400623 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400624 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-05 00:59 +0000 [r400593] Richard Mudgett <rmudgett@digium.com>
* /, channels/iax2/include/parser.h: chan_iax2: Fix compile error.
........ Merged revisions 400588 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-04 21:41 +0000 [r400568] Michael L. Young <elgueromexicano@gmail.com>
* main/acl.c, include/asterisk/netsock2.h, CHANGES,
channels/chan_iax2.c, channels/iax2/parser.c, main/netsock.c,
main/netsock2.c, /, channels/iax2/include/parser.h: Add IPv6
Support To chan_iax2 This patch adds IPv6 support to chan_iax2.
Yay! (closes issue ASTERISK-22025) Patches:
iax2-ipv6-v5-reviewboard.diff by Michael L. Young (license 5026)
Review: https://reviewboard.asterisk.org/r/2660/ ........ Merged
revisions 400567 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-04 19:32 +0000 [r400553] David M. Lee <dlee@digium.com>
* rest-api/api-docs/applications.json (added), /: Added missing
file from r400522 ........ Merged revisions 400552 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-04 19:11 +0000 [r400533-400543] Jonathan Rose <jrose@digium.com>
* res/res_pjsip_logger.c, /: chan_pjsip: Make logger togglable
without loading/unloading This patch makes the res_pjsip_logger
do a few things... First, it will be built and installed by
default now, so end users won't need to enable it in menuselect.
Second, while it is loaded, it no longer will immediately issue
log messages. Upon loading, it is in the disabled state and must
be turned on with the new CLI command. The CLI command 'pjsip set
logger <on/off/host> has been added and can be used to do the
following: pjsip set logger on: Enables logger for all PJSIP
traffic pjsip set logger off: Disables logger for all PJSIP
traffic pjsip set logger host <host>: Enables logger for the
specific host Review: https://reviewboard.asterisk.org/r/2900/
........ Merged revisions 400542 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /,
contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py
(added), configs/extconfig.conf.sample,
configs/sorcery.conf.sample,
contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py:
chan_pjsip: Add alembic scripts for generating db tables for
PJSIP Also updates sample configurations for sorcery and
extconfig to demonstrate how to use databases created by that
alembic script. (closes issue ASTERISK-22133) Reported by: Matt
Jordan Review: https://reviewboard.asterisk.org/r/2892/ ........
Merged revisions 400532 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-04 16:01 +0000 [r400523] Matthew Jordan <mjordan@digium.com>
* res/res_stasis.c, main/asterisk.c,
rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json,
res/stasis/app.c, /,
rest-api-templates/ari_model_validators.h.mustache,
include/asterisk/endpoints.h, res/res_ari_applications.c (added),
res/ari/resource_endpoints.h, include/asterisk/stasis_app.h,
res/stasis/app.h, rest-api/resources.json,
include/asterisk/_private.h, res/ari/ari_model_validators.c,
main/endpoints.c, res/ari/ari_model_validators.h, main/json.c,
res/res_ari_model.c, res/ari.make,
res/ari/resource_applications.c (added),
res/ari/resource_applications.h (added): ARI: Add subscription
support This patch adds an /applications API to ARI, allowing
explicit management of Stasis applications. * GET /applications -
list current applications * GET /applications/{applicationName} -
get details of a specific application * POST
/applications/{applicationName}/subscription - explicitly
subscribe to a channel, bridge or endpoint * DELETE
/applications/{applicationName}/subscription - explicitly
unsubscribe from a channel, bridge or endpoint Subscriptions work
by a reference counting mechanism: if you subscript to an event
source X number of times, you must unsubscribe X number of times
to stop receiveing events for that event source. Review:
https://reviewboard.asterisk.org/r/2862 (issue ASTERISK-22451)
Reported by: Matt Jordan ........ Merged revisions 400522 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-04 15:49 +0000 [r400511-400521] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip.c: Enclose the To URI and update its user
portion if a request user has been specified. ........ Merged
revisions 400520 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_session.c, /: Replace the connection address at the
SDP level if altering the SDP with the external media address.
........ Merged revisions 400510 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 23:20 +0000 [r400482] Jonathan Rose <jrose@digium.com>
* /, channels/chan_sip.c: chan_sip: Don't ignore expires value in
contact header if it lacks semicolon (closes issue
ASTERISK-22574) Reported by: Filip Jenicek Patches:
chan_sip_expires.patch uploaded by Filip Jenicek (license 6277)
........ Merged revisions 400469 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400470 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400471 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 21:46 +0000 [r400461] Matthew Jordan <mjordan@digium.com>
* /, main/channel_internal_api.c: Remove publication of a channel
snapshot when the technology is set This patch removes said
publication for a few reasons: (1) It is unnecessary. Association
of the channel technology with a specific channel is an
implementation detail that should be assumed to "just happen",
and consumers of Stasis don't need to be informed about it. (2)
Publication of said message can now cause crashes, as the actual
creation of a channel in normal locations now stages its
messages. As a result, things that create dummy channels (such as
the SIP RTP QOS unit test) and associate them with a channel
technology were now crashing, as the channel itself was not known
by Stasis. ........ Merged revisions 400460 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 20:22 +0000 [r400452] Mark Michelson <mmichelson@digium.com>
* bridges/bridge_native_rtp.c, /,
include/asterisk/bridge_technology.h: Fix assumption in
bridge_native_rtp.c regarding number of participants in a bridge.
When a party leaves a bridge, there may be more participants in
the bridge than expected. As such, it is important not to make
assumptions regarding the list of channels in a bridge. This
change makes it so that when a party leaves a native RTP bridge,
we unbridge it and the party it was bridged with. Previously, the
first and last channels in the list were unbridged since it was
assumed that these were the two channels that had been bridged.
As previously stated, a new party had been inserted into the
bridge, so this logic did not work properly. (closes issue
ASTERISK-22615) reported by Matt Jordan Review:
https://reviewboard.asterisk.org/r/2899 ........ Merged revisions
400403 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 19:32 +0000 [r400443] Joshua Colp <jcolp@digium.com>
* /, main/cdr.c: When serializing CDR variables (like for "core
show channels") don't output an error if CDRs aren't enabled.
........ Merged revisions 400442 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 19:30 +0000 [r400441] Kinsey Moore <kmoore@digium.com>
* /, main/security_events.c: Fix security events for AMI invalid
password In r337595, additional security events were added for
chan_sip authentication failures. The new IEs added to the
existing invalid password event were defined as required IEs, but
existing users of the event did not set the new IEs and could not
since they didn't apply to existing uses. They are now marked as
optional IEs. (closes issue ASTERISK-22578) Reported by: Matt
Jordan ........ Merged revisions 400421 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400440 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 19:06 +0000 [r400402] Joshua Colp <jcolp@digium.com>
* res/ari/resource_channels.c, /: Fix a crash caused by muting and
unmuting a channel in ARI without specifying a direction. (closes
issue ASTERISK-22637) Reported by: Scott Griepentrog Patch by
Matt Jordan, whose office I have taken over in the name of
Canada. ........ Merged revisions 400401 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 18:51 +0000 [r400399] Richard Mudgett <rmudgett@digium.com>
* /, main/cel.c: cel: Some whitespace cleanups ........ Merged
revisions 400398 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 18:32 +0000 [r400385-400397] Kinsey Moore <kmoore@digium.com>
* res/res_rtp_multicast.c, /: res_rtp_multicast: Ensure SSRC is set
properly This fixes a bug where the SSRC field on multicast RTP
can be stuck at 0 which can cause problems for endpoints trying
to make sense of incoming streams. (closes issue ASTERISK-22567)
Reported by: Simone Camporeale Patches:
22567_res_mulitcast_ssrc.patch uploaded by Simone Camporeale
(License 6536) ........ Merged revisions 400393 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400394 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400395 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, configure, include/asterisk/autoconfig.h.in, configure.ac,
main/xml.c: Detect and use xsltCleanupGlobals when available This
introduces usage of an additional libxslt cleanup function,
xsltCleanupGlobals, when the configure script detects that it is
available. Early versions of the library did not include this
function. (closes issue ASTERISK-22570) Reported by: Corey
Farrell Patches: xsltCleanupGlobals.patch uploaded by Corey
Farrell (License 5909) ........ Merged revisions 400384 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 16:28 +0000 [r400374] Richard Mudgett <rmudgett@digium.com>
* channels/chan_vpb.cc, /: chan_vpb: Make compile again. ........
Merged revisions 400373 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 14:59 +0000 [r400363-400364] Mark Michelson <mmichelson@digium.com>
* tests/test_cel.c, /: Get rid of uses of stasis_topic_wait()
........ Merged revisions 400362 from
http://svn.asterisk.org/svn/asterisk/branches/12
* pbx/pbx_spool.c, main/manager.c, main/format_cap.c,
channels/chan_skinny.c, res/res_agi.c, channels/chan_motif.c,
channels/chan_alsa.c, apps/app_confbridge.c,
addons/chan_mobile.c, channels/chan_mgcp.c,
res/res_clioriginate.c, channels/chan_bridge_media.c,
channels/chan_sip.c, tests/test_format_api.c,
res/res_pjsip_sdp_rtp.c, bridges/bridge_simple.c,
apps/app_originate.c, res/parking/parking_applications.c,
main/core_local.c, channels/chan_console.c, channels/chan_oss.c,
include/asterisk/format_cap.h, res/res_pjsip_session.c,
res/ari/resource_bridges.c, channels/chan_jingle.c,
channels/chan_misdn.c, channels/dahdi/bridge_native_dahdi.c,
res/res_pjsip/pjsip_configuration.c, main/file.c,
channels/chan_h323.c, channels/chan_nbs.c,
bridges/bridge_native_rtp.c, tests/test_config.c,
res/res_stasis.c, channels/chan_pjsip.c, channels/chan_unistim.c,
channels/chan_multicast_rtp.c, addons/chan_ooh323.c,
main/rtp_engine.c, /, main/ccss.c, apps/app_meetme.c,
bridges/bridge_holding.c, main/bridge_basic.c,
bridges/bridge_softmix.c, channels/chan_gtalk.c,
channels/chan_iax2.c, main/media_index.c, main/channel.c,
channels/chan_phone.c, channels/chan_dahdi.c, main/dial.c: Cache
string values of formats on ast_format_cap() to save processing.
Channel snapshots have string representations of the channel's
native formats. Prior to this change, the format strings were
re-created on ever channel snapshot creation. Since channel
native formats rarely change, this was very wasteful. Now, string
representations of formats may optionally be stored on the
ast_format_cap for cases where string representations may be
requested frequently. When formats are altered, the string cache
is marked as invalid. When strings are requested, the cache
validity is checked. If the cache is valid, then the cached
strings are copied. If the cache is invalid, then the string
cache is rebuilt and copied, and the cache is marked as being
valid again. Review: https://reviewboard.asterisk.org/r/2879
........ Merged revisions 400356 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-03 14:52 +0000 [r400361] Joshua Colp <jcolp@digium.com>
* res/res_pjsip_sdp_rtp.c, res/res_pjsip_t38.c, /: Fix crashes in
res_pjsip_sdp_rtp and res_pjsip_t38 when a stream is rejected and
external_media_address is set. The callback function for changing
the media address in streams wrongly assumes that a connection
line will always be present. This is false as no line is present
if a stream has been rejected. (closes issue ASTERISK-22645)
Reported by: Rusty Newton ........ Merged revisions 400360 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 22:22 +0000 [r400335] Mark Michelson <mmichelson@digium.com>
* main/stasis_wait.c (removed), res/ari/resource_endpoints.c, /,
include/asterisk/stasis.h, tests/test_cel.c,
include/asterisk/stasis_endpoints.h, channels/chan_pjsip.c,
main/stasis.c, main/stasis_endpoints.c: Multiple revisions
400318-400319 ........ r400318 | mmichelson | 2013-10-02 17:08:49
-0500 (Wed, 02 Oct 2013) | 12 lines Remove unnecessary waits from
stasis. Since caches are updated on publisher threads, there is
no need to wait for the cache updates to occur after a stasis
message is published. In the case of chan_pjsip device state
changes, this set of changes caused an improvement to
performance. Review: https://reviewboard.asterisk.org/r/2890
........ r400319 | mmichelson | 2013-10-02 17:10:54 -0500 (Wed,
02 Oct 2013) | 3 lines Remove svn:mergeinfo property. ........
Merged revisions 400318-400319 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 21:33 +0000 [r400317] Michael L. Young <elgueromexicano@gmail.com>
* channels/chan_iax2.c, /: Cast Integer Argument To Unsigned Char
The member reg in the peercnt structure is an unsigned char and
peercnt_modify() is expecting an unsigned char argument which
gets assigned to peercnt->reg. This patch fixes that by casting
the integer argument being passed to peercnt_modify to unsigned
char. ........ Merged revisions 400314 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400315 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400316 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 21:26 +0000 [r400313] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, main/manager.c, /, main/cel.c: Only create Stasis
subscriptions when enabled Subscribing to Stasis isn't free. As
such, this patch makes AMI, CDR, and CEL - the "big 3" - only
subscribe when enabled. Toggling their availability via a .conf
file will unsubscribe/subscribe as appropriate. Review:
https://reviewboard.asterisk.org/r/2888/ ........ Merged
revisions 400312 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 20:31 +0000 [r400304] Richard Mudgett <rmudgett@digium.com>
* main/pbx.c, /: Originate: Make setting caller id on outgoing call
use either name or number. Previous code was requiring both name
and number to be available. Also restored a comment block on why
caller id is also set on an outgoing call leg in addition to
connected line from earlier versions of Asterisk. ........ Merged
revisions 400303 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 19:20 +0000 [r400295] Kinsey Moore <kmoore@digium.com>
* /, rest-api/api-docs/asterisk.json: Correct allowable values for
ARI general information filter ........ Merged revisions 400291
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 19:17 +0000 [r400287] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /: Fix the CDR CLI command 'cdr show active
{channel}' When the switch from channel names to channel unique
IDs happened, the poor CLI command got left in the dust. This
fixes the command so that users can once again see how Asterisk
is messing up your billing information. ........ Merged revisions
400286 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 18:44 +0000 [r400285] Joshua Colp <jcolp@digium.com>
* /, res/res_pjsip_t38.c: Fix a crash in res_pjsip_t38 caused by
the wrong assumption that a session will always have a channel.
When starting up or shutting down this assumption is false.
........ Merged revisions 400284 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 18:28 +0000 [r400282] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
* Makefile, doc/astdb2sqlite3.8 (added), /, doc/astdb2bdb.8
(added): man pages for astdb2bdb and astdb2sqlite3 Review:
https://reviewboard.asterisk.org/r/2898/ ........ Merged
revisions 400279 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400281 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 17:12 +0000 [r400269-400271] Richard Mudgett <rmudgett@digium.com>
* apps/app_stack.c, res/stasis_recording/stored.c, main/json.c,
main/stasis_cache.c, res/res_ari.c, /, main/utils.c:
MALLOC_DEBUG: Fix some misuses of free() when MALLOC_DEBUG is
enabled. * There were several places in ARI where an external
library was mallocing memory that must always be released with
free(). When MALLOC_DEBUG is enabled, free() is redirected to the
MALLOC_DEBUG version. Since the external library call still uses
the normal malloc(), MALLOC_DEBUG complains that the freed memory
block is not registered and will not free it. These cases must
use ast_std_free(). * Changed calls to asprintf() and vasprintf()
to the equivalent ast_asprintf() and ast_vasprintf() versions
respectively. ........ Merged revisions 400270 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/sig_ss7.c, /: sig_ss7: Fix compiler warnings. ........
Merged revisions 400268 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-02 16:23 +0000 [r400246-400266] Joshua Colp <jcolp@digium.com>
* channels/chan_alsa.c, main/stasis_channels.c, channels/sig_ss7.c,
channels/chan_pjsip.c, channels/chan_mgcp.c,
channels/chan_unistim.c, apps/app_dial.c, main/pbx.c, /,
channels/chan_sip.c, main/bridge.c, include/asterisk/channel.h,
channels/chan_gtalk.c, channels/chan_console.c,
channels/sig_pri.c, channels/chan_iax2.c, channels/chan_jingle.c,
main/channel.c, channels/chan_dahdi.c, main/dial.c,
include/asterisk/stasis_channels.h, channels/chan_skinny.c,
channels/chan_motif.c: Reduce channel snapshot creation and
publishing by up to 50%. This change introduces the ability to
stage channel snapshot creation and publishing by suppressing the
implicit creation and publishing that some functions have. Once
all operations are executed the staging is marked as done and a
single snapshot is created and published. Review:
https://reviewboard.asterisk.org/r/2889/ ........ Merged
revisions 400265 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_session.c, /: Fix a random one way audio issue in
PJSIP. Due to the asynchronous design of the PJMEDIA SDP
negotiator it was possible for the SDP to be negotiated *after* a
channel was created and after it was being wait on by an
application. It is only after negotiation occurs that the file
descriptors for RTP are placed on the channel. Since the channel
was already being waited on these file descriptors were not
monitored, causing incoming media to never be read. This change
wakes up any application waiting on the channel so that added
file descriptors end up being monitored. (closes issue AST-1227)
Reported by: John Bigelow ........ Merged revisions 400256 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/stasis/control.c, include/asterisk/stasis_app.h,
res/ari/resource_channels.c: Allow specifying a channel to dial
an extension and context in an ARI dial operation. (issue
ASTERISK-22625) Reported by: Scott Griepentrog ........ Merged
revisions 400254 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip_session.c: Retrieve and store the hostname only
once so multiple threads do not potentially initialize it at the
same time. ........ Merged revisions 400245 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-01 21:19 +0000 [r400228-400237] Richard Mudgett <rmudgett@digium.com>
* channels/chan_dahdi.c, channels/sig_analog.c, /: chan_dahdi: Fix
analog parking using flash-hook. Transferring an analog call
using a flash-hook to parking would fail to park the call and
result in an invalid ao2 object unref. * Park the correct bridged
channel. ........ Merged revisions 400236 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/features_config.c, /: Features: Rearm the parking config
options have moved warning for each reload. ........ Merged
revisions 400227 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-10-01 15:54 +0000 [r400218] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /: Filter out internal channels for bridge leave
messages and parked call messages Granted, if you manage to park
a Conference announcer channel, something has gone horrifically
wrong. ........ Merged revisions 400217 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-30 21:40 +0000 [r400206] Jonathan Rose <jrose@digium.com>
* configs/features.conf.sample, /, configs/res_parking.conf.sample:
configuration samples: Pull all parking related stuff out of
features.conf This patch also adds documentation for parking from
features.conf to res_parking.conf ........ Merged revisions
400205 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-30 19:58 +0000 [r400195-400197] Matthew Jordan <mjordan@digium.com>
* /, funcs/func_cdr.c: Parse arguments passed to the CDR_PROP
function correctly I can only blame this on a bad merge, because
this in no way worked properly the way it was written. Mea culpa.
The function should now parse its arguments correctly and
function properly. (Note that the API used by the CDR_PROP
function has working unit tests... this was merely bad coding of
the actual registered function) (closes issue ASTERISK-22613)
Reported by: Private Name ........ Merged revisions 400196 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: Remove spurious event raised when CDRs are
reloaded The Reload event is now raised by the module loading
core. As such, the Reload event in the CDR engine was a duplicate
and not needed. ........ Merged revisions 400194 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-30 18:55 +0000 [r400186] David M. Lee <dlee@digium.com>
* tests/test_devicestate.c, include/asterisk/sem.h (added),
tests/test_taskprocessor.c, res/res_pjsip_mwi.c,
res/res_pjsip/include/res_pjsip_private.h, tests/test_stasis.c,
res/parking/parking_manager.c, res/res_security_log.c,
channels/chan_mgcp.c, main/stasis_cache_pattern.c, main/pbx.c,
include/asterisk/vector.h (added), /, main/ccss.c,
apps/app_meetme.c, include/asterisk/taskprocessor.h,
configs/stasis.conf.sample (removed), configure.ac,
res/parking/parking_applications.c, channels/sig_pri.c,
apps/app_queue.c, main/cel.c, main/stasis.c,
channels/chan_dahdi.c, funcs/func_presencestate.c,
main/stasis_message_router.c, configure,
apps/confbridge/confbridge_manager.c, res/res_agi.c,
main/manager_system.c, res/res_stasis_test.c, main/sem.c (added),
main/manager_channels.c, res/res_pjsip_refer.c,
main/manager_mwi.c, apps/app_voicemail.c, main/stasis_cache.c,
main/stasis_wait.c, main/stasis_config.c (removed),
include/asterisk/stasis_internal.h, res/stasis/app.c,
channels/chan_sip.c, include/asterisk/autoconfig.h.in,
main/manager_endpoints.c, main/channel_internal_api.c,
include/asterisk/stasis.h, main/devicestate.c,
main/taskprocessor.c, res/res_xmpp.c, main/sounds_index.c,
include/asterisk/stasis_message_router.h, channels/chan_iax2.c,
res/res_jabber.c, main/endpoints.c, main/astobj2.c,
res/res_chan_stats.c, res/parking/parking_bridge_features.c,
tests/test_stasis_endpoints.c, main/cdr.c, main/channel.c,
main/manager_bridges.c, main/manager.c, channels/chan_skinny.c:
Multiple revisions 399887,400138,400178,400180-400181 ........
r399887 | dlee | 2013-09-26 10:41:47 -0500 (Thu, 26 Sep 2013) | 1
line Minor performance bump by not allocate manager variable
struct if we don't need it ........ r400138 | dlee | 2013-09-30
10:24:00 -0500 (Mon, 30 Sep 2013) | 23 lines Stasis performance
improvements This patch addresses several performance problems
that were found in the initial performance testing of Asterisk
12. The Stasis dispatch object was allocated as an AO2 object,
even though it has a very confined lifecycle. This was replaced
with a straight ast_malloc(). The Stasis message router was
spending an inordinate amount of time searching hash tables. In
this case, most of our routers had 6 or fewer routes in them to
begin with. This was replaced with an array that's searched
linearly for the route. We more heavily rely on AO2 objects in
Asterisk 12, and the memset() in ao2_ref() actually became
noticeable on the profile. This was #ifdef'ed to only run when
AO2_DEBUG was enabled. After being misled by an erroneous comment
in taskprocessor.c during profiling, the wrong comment was
removed. Review: https://reviewboard.asterisk.org/r/2873/
........ r400178 | dlee | 2013-09-30 13:26:27 -0500 (Mon, 30 Sep
2013) | 24 lines Taskprocessor optimization; switch Stasis to use
taskprocessors This patch optimizes taskprocessor to use a
semaphore for signaling, which the OS can do a better job at
managing contention and waiting that we can with a mutex and
condition. The taskprocessor execution was also slightly
optimized to reduce the number of locks taken. The only
observable difference in the taskprocessor implementation is that
when the final reference to the taskprocessor goes away, it will
execute all tasks to completion instead of discarding the
unexecuted tasks. For systems where unnamed semaphores are not
supported, a really simple semaphore implementation is provided.
(Which gives identical performance as the original taskprocessor
implementation). The way we ended up implementing Stasis caused
the threadpool to be a burden instead of a boost to performance.
This was switched to just use taskprocessors directly for
subscriptions. Review: https://reviewboard.asterisk.org/r/2881/
........ r400180 | dlee | 2013-09-30 13:39:34 -0500 (Mon, 30 Sep
2013) | 28 lines Optimize how Stasis forwards are dispatched This
patch optimizes how forwards are dispatched in Stasis.
Originally, forwards were dispatched as subscriptions that are
invoked on the publishing thread. This did not account for the
vast number of forwards we would end up having in the system, and
the amount of work it would take to walk though the forward
subscriptions. This patch modifies Stasis so that rather than
walking the tree of forwards on every dispatch, when forwards and
subscriptions are changed, the subscriber list for every topic in
the tree is changed. This has a couple of benefits. First, this
reduces the workload of dispatching messages. It also reduces
contention when dispatching to different topics that happen to
forward to the same aggregation topic (as happens with all of the
channel, bridge and endpoint topics). Since forwards are no
longer subscriptions, the bulk of this patch is simply changing
stasis_subscription objects to stasis_forward objects (which,
admittedly, I should have done in the first place.) Since this
required me to yet again put in a growing array, I finally
abstracted that out into a set of ast_vector macros in
asterisk/vector.h. Review:
https://reviewboard.asterisk.org/r/2883/ ........ r400181 | dlee
| 2013-09-30 13:48:57 -0500 (Mon, 30 Sep 2013) | 28 lines Remove
dispatch object allocation from Stasis publishing While looking
for areas for performance improvement, I realized that an unused
feature in Stasis was negatively impacting performance. When a
message is sent to a subscriber, a dispatch object is allocated
for the dispatch, containing the topic the message was published
to, the subscriber the message is being sent to, and the message
itself. The topic is actually unused by any subscriber in
Asterisk today. And the subscriber is associated with the
taskprocessor the message is being dispatched to. First, this
patch removes the unused topic parameter from Stasis subscription
callbacks. Second, this patch introduces the concept of
taskprocessor local data, data that may be set on a taskprocessor
and provided along with the data pointer when a task is pushed
using the ast_taskprocessor_push_local() call. This allows the
task to have both data specific to that taskprocessor, in
addition to data specific to that invocation. With those two
changes, the dispatch object can be removed completely, and the
message is simply refcounted and sent directly to the
taskprocessor. Review: https://reviewboard.asterisk.org/r/2884/
........ Merged revisions 399887,400138,400178,400180-400181 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-30 15:57 +0000 [r400142] Kinsey Moore <kmoore@digium.com>
* /, channels/chan_sip.c, configs/pjsip.conf.sample,
res/res_pjsip_outbound_registration.c, configs/sip.conf.sample,
CHANGES: chan_sip: Allow Asterisk to retry after 403 on register
This adds a global option in chan_sip to allow it to continue
attempting registration if a 403 is received, clearing the cached
nonce and treating it as a non-fatal response. Normally, this
would cause registration attempts to that endpoint to stop. This
also adds a similar per-outbound-registration option to
chan_pjsip which allows the retry interval to be altered for 403
responses to REGISTER requests. (closes issue ASTERISK-17138)
Review: https://reviewboard.asterisk.org/r/2874/ Reported by:
Rudi ........ Merged revisions 400137 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400140 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400141 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-28 22:57 +0000 [r400059-400122] Matthew Jordan <mjordan@digium.com>
* /, res/res_pjsip_notify.c, configs/pjsip_notify.conf.sample
(added): res_pjsip_notify: Add documentation We forgot to add
documentation for res_pjsip_notify, which would prevent it from
being loaded. Whoops. This patch also updates res_pjsip_notify to
use pjsip_notify.conf, which now has its own sample file in the
configs directory as well. Review:
https://reviewboard.asterisk.org/r/2835/ ........ Merged
revisions 400121 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Correct erroneous
lost packet information in RTCP reports RTCP's calculation of the
number of lost packets in an RTP stream is based on that stream's
sequence number count, the number of received packets, and how
many packets we expect to receive. When the SSRC for an RTP
stream changes, there can - and almost always will be - a large
jump in the next packet's timestamp and sequence number. If we
don't reset the number of received packets, sequence number
count, and other metrics used by RTCP, the next RR/SR report will
use the previous SSRC's values to calculate the lost packet count
for the new SSRC - resulting in a very large number of lost
packets. This patch modifies res_rtp_asterisk such that, if it
detects a SSRC change, it will reset the various values used by
the RTCP calculations. From the perspective of RTCP, this appears
as a new media stream - which is what it is. Review:
https://reviewboard.asterisk.org/r/2886/ (closes issue AST-1174)
Reported by: Thomas Arimont ........ Merged revisions 400089 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400093 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400108 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, configure, configure.ac: Add check for openSUSE when detecting
bfd library In ASTERISK-17842, some additional library checks
were added to the configure script so that the bfd library could
be found on CentOS and Fedora systems. As it turns out, openSUSE
requires an additional library. This patch adds another check to
the configure script for openSUSE that will add that library.
Review: https://reviewboard.asterisk.org/r/2885/ (closes issue
AST-1169) Reported by: Guenther Kelleter ........ Merged
revisions 400073 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400075 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400077 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: CDR: Improve handling of parking; resolve
assertion when originating into park This patch covers two
problems: 1) Currently, when a call is transferred into a parking
lot from a bridge (using either the blind transfer or one touch
parking mechanisms), the application fails to be set to "Park" in
the resulting CDR record for the parked channel. This is due to
the ParkedCall message arriving before the BridgeEnter for the
channel entering the parking bridge. The ParkedCall message isn't
handled as the CDR for the channel has already been finalized
(due to the channel having left its two party bridge), and the
BridgeEnter - which creates the new CDR - doesn't have the
parking information. This patch modifies the behavior so that
reception of a ParkedCall message will - if not handled by a CDR
chain - cause a new CDR to be created and put into the Parking
state. 2) It fixes a FRACK that occurred when a channel is
originated into a parking space. The DialedPending state - which
occurs for both Dialed and Originated channels - assumed that it
couldn't handle the parking transitions due to it having a Party
B; however, Originated channels don't have a Party B. As such,
the existing CDR needs to transition into the parking state -
this patch does that. Review:
https://reviewboard.asterisk.org/r/2877/ (closes issue
ASTERISK-22482) Reported by: Richard Mudgett ........ Merged
revisions 400062 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_queue.c: app_queue: Make manager events tolerant of
Local channel shenanigans app_queue currently attempts to handle
Local channel optimizations in an effort to provide accurate
information in Stasis messages (and their corresponding AMI
events) as well as the Queue log. Sometimes, however, things
don't go as planned. Consider the following scenario: SIP/foo <->
L;1 <-> L;2 <-> SIP/agent SIP/agent answers, triggering a Local
channel optimization. app_queue will normally do the following: *
Listen for the Local optimization events and update our agent
accordingly to SIP/agent in the queue log and messages * When we
get a hangup, publish the AgentComplete event based on our
information (SIP/foo and SIP/agent) However, as with all things
that depend on sanity from something as capricious as Local
channels, things can go wrong: (1) SIP/agent immediately hangs up
upon answering. This triggers a race condition between
termination messages coming from SIP/agent and the ongoing Local
channel optimization messages. (Note that this can also occur
with SIP/foo) (2) In a race condition, Asterisk can (rarely)
deliver the hangup messages prior to the Local channel
optimization. In that case, the messages *may* arrive to
app_queue in the following order: * Hangup SIP/Agent * Hangup
SIP/foo * Optimize L;1/L;2 * Hangup L;2 * Hangup L;1 When
app_queue receives the hangup of the agent or the caller, it will
attempt to publish the AgentComplete event. However, it now has a
problem - it thinks its agent is the ;1 side of the Local
channel, as it never received the optimization event. At the same
time, that channel is already gone. This results in getting NULL
from the Stasis cache. What's more, we can't really wait for the
optimization message, as we are currently handling the hangup of
the channel that the optimization event would tell us to use.
This patch modifies the behavior in app_queue such that, since we
still have a lot of pertinent queue information (interface, queue
name, etc.), we now raise the event with what information we
know. The channels involved now may or may not be present. Users
will still at least get the "AgentComplete" event, which
"completes" the known Agent information. Review:
https://reviewboard.asterisk.org/r/2878/ (closes issue
ASTERISK-22507) Reported by: Richard Mudgett ........ Merged
revisions 400060 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/manager.c, /: manager: Fix crash when appending a manager
channel variable In r399887, a minor performance improvement was
introduced by not allocating the manager variable struct if it
wasn't used. Unfortunately, when directly accessing an
ast_channel struct, manager assumed that the struct was always
allocated. Since this was no longer the case, things got a bit
crashy. This fixes that problem by simply bypassing appending
variables if the manager channel variable struct isn't there.
........ Merged revisions 400058 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-27 21:58 +0000 [r400016-400021] Richard Mudgett <rmudgett@digium.com>
* apps/app_cdr.c, res/res_parking.c, /: app_cdr and res_parking:
Fix some resource leaks. * app_cdr left the ResetCDR application
registered. * res_parking leaked a ref to config global. (closes
issue ASTERISK-22566) Reported by: Corey Farrell Patches:
ASTERISK-22566-r2.patch (license #5909) patch uploaded by Corey
Farrell ........ Merged revisions 400020 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/sip/reqresp_parser.c, /, channels/chan_sip.c: chan_sip:
Increase some scratch buffer sizes dealing with caller id. *
Eliminated an unnecessary initialization in check_user_full().
(closes issue ASTERISK-22477) Reported by: Michael Shepelev
........ Merged revisions 400013 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 400014 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 400015 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-27 19:18 +0000 [r400000] Sean Bright <sean@malleable.com>
* configs/sip.conf.sample: Remove some trailing whitespace and
steal revision 400000.
2013-09-27 18:28 +0000 [r399991] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip.c, res/res_pjsip_session.c,
include/asterisk/res_pjsip.h, res/res_pjsip.exports.in:
res_pjsip: crash when using localnet and
external_signaling_address options There was a collision of
mod_data use on the transaction between using a nat hook and an
session response callback. During state change it was assumed
what was in the mod_data was nothing or the response callback.
However, it was possible for it to also contain a nat hook thus
resulting in a bad cast and a crash. Added the ability to store
multiple data elements in mod_data via a hash table. In this
instance, mod_data now stores a hash table of the two values that
can be retrieved using an associated string key. (closes issue
ASTERISK-22394) Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/2843/ ........ Merged
revisions 399990 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-27 17:46 +0000 [r399978] Jonathan Rose <jrose@digium.com>
* channels/sip/include/sip.h, /, channels/chan_sip.c: chan_sip:
Reject calls on 200 OKs if no SDP has been received When Asterisk
receives a 200 OK in response to an invite, that peer should have
sent an SDP at some point by then. If the channel has never
received an SDP, media won't have been set and the remote address
won't be known. Endpoints in general should not be doing this.
This patch makes it so that Asterisk will simply hang up a call
if it sends a 200 OK at this point. So far this odd behavior for
endpoints has only been observed in tests which involved manually
created SIP transactions in SIPp. (closes issue ASTERISK-22424)
Reported by: Jonathan Rose Review:
https://reviewboard.asterisk.org/r/2827/ ........ Merged
revisions 399939 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399962 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399976 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-27 17:11 +0000 [r399938] Richard Mudgett <rmudgett@digium.com>
* include/asterisk/astobj2.h, tests/test_astobj2.c, main/astobj2.c,
/: astobj2: Remove OBJ_CONTINUE support. OBJ_CONTINUE was a
strange feature that came into the world under suspicious
circumstances to support an abuse of the ao2_container by
chan_iax2. Since chan_iax2 no longer uses OBJ_CONTINUE, it is
safe to remove it. The simplified code should help performance
slightly and make understanding the code easier. Review:
https://reviewboard.asterisk.org/r/2887/ ........ Merged
revisions 399937 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-27 14:35 +0000 [r399925] Mark Michelson <mmichelson@digium.com>
* /, bridges/bridge_native_rtp.c: Fix refleaks of ast_rtp_instance
structures. These refleaks were causing bridged calls not to
close their RTP ports. Thus a call would leave open 4 ports (RTP
for party A, RTCP for party A, RTP for party B, and RTCP for
party B). This led to an eventual depletion of available RTP
ports. ........ Merged revisions 399924 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-27 14:08 +0000 [r399913] Kinsey Moore <kmoore@digium.com>
* tests/test_cel.c, main/cel.c, /, include/asterisk/cel.h: Restore
usefulness of the CEL Peer field This change makes the CEL peer
field useful again for BRIDGE_ENTER and BRIDGE_EXIT events and
fills the field with a comma-separated list of all channels in
the bridge other than the channel that is entering or exiting the
bridge. Review: https://reviewboard.asterisk.org/r/2840/ (closes
issue ASTERISK-22393) ........ Merged revisions 399912 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-26 18:51 +0000 [r399898] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_registrar.c, include/asterisk/res_pjsip.h,
res/res_pjsip.exports.in, /, res/res_pjsip/security_events.c:
pjsip: race condition in registrar While handling a registration
request a race condition could occur if/when two+ clients
registered at the same time. This happened when one request
obtained a copy of the current contacts for an AOR and another
request did the same before the first request updated. Thus the
second would update and overwrite the first (or vice-versa
depending on which actually updated first). In the case of it
being the same contact two "add" events would be raised. pjsip
registration handling is now serialized to alleviate this issue.
(closes issue AST-1213) Reported by: John Bigelow Review:
https://reviewboard.asterisk.org/r/2860/ ........ Merged
revisions 399897 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-26 14:13 +0000 [r399875] Rusty Newton <rnewton@digium.com>
* /, apps/app_dial.c: Adding a few words to the Dial option 'r'
help text to clarify its tone argument description ........
Merged revisions 399874 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-25 20:38 +0000 [r399844] Richard Mudgett <rmudgett@digium.com>
* channels/sig_ss7.c, channels/chan_dahdi.c, /: chan_dahdi: CLI
"core stop gracefully" has needless delay for PRI and SS7. The
PRI and SS7 link control threads are not stopped correctly when
the chan_dahdi.so module is unloaded. The link control threads
pri_dchannel() and ss7_linkset() are not awakened from a poll()
to cancel the thread. * Added a SIGURG signal after requesting
the thread cancel to break the link control thread poll()
immediately. For SS7 it was slightly worse, the link poll()
timeout would always be whatever was the last libss7 scheduled
event time used. If no libss7 scheduled event was pending, the
thread could run more often than necessary. * Set nextms to 60
seconds for the ss7_linkset() poll() if there is no other libss7
scheduled event. ........ Merged revisions 399818 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399834 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399842 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-25 19:43 +0000 [r399799] Rusty Newton <rnewton@digium.com>
* /, res/res_pjsip.c: Broke the build - Fixing XML DTD violation
added in r399782, missing <para> tags inside a <note> ........
Merged revisions 399798 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-25 19:29 +0000 [r399797] Michael L. Young <elgueromexicano@gmail.com>
* /, channels/chan_sip.c: chan_sip: Fix Realtime Peer Update
Problem When Un-registering And Expires Header In 200ok 1st Issue
When a realtime peer sends an un-REGISTER request, Asterisk
un-registers the peer but the database table record still has
regseconds and fullcontact for the peer. This results in calls
attempting to be routed to the peer which is no longer
registered. The expected behavior is to get busy/congested when
attempting to call an un-registered peer through the dialplan.
What was discovered is that we are clearing out the peer's
registration in the database in parse_register_contact() when
calling expire_register() but then upon returning from
parse_register_contact(), update_peer() is run which stores back
in the database table regseconds and fullcontact. 2nd Issue The
reporter pointed out that the 200 ok being returned by Asterisk
after un-registering a peer contains a Contact header with
;expires= and the Expires header is not set to 0. This is
actually a regression. Tests were created for this second issue
(ASTERISK-22548). The tests have been reviewed and a Ship It! was
received on those tests. This patch does the following: * Do not
ignore the Expires header value even when it is set to 0. The
patch sets the pvt->expiry earlier on in the function so that it
is set properly and used. * If pvt->expiry is 0, do not call
update_peer since that means the peer has already been
un-registered and there is no need to update the database record
again since nothing has changed. (closes issue ASTERISK-22428)
Reported by: Ben Smithurst Tested by: Ben Smithurst, Michael L.
Young Patches:
asterisk-22428-rt-peer-update-and-expires-header.diff by Michael
L. Young (license 5026) Review:
https://reviewboard.asterisk.org/r/2869/ ........ Merged
revisions 399794 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399795 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399796 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-25 18:38 +0000 [r399782] Rusty Newton <rnewton@digium.com>
* /, res/res_pjsip.c: Fixing documentation for the configOption
"external_media_address" of both Endpoints and Transports
Re-using some of Mark Michelson's text from an E-mail discussion
for: * Modifying synopsis for both options * Adding description
to both options * Changing name of "external_media_address" for
Endpoint configuration to "media_address" in anticipation of the
option name being changed. (As it is not really specific to
external destinations) (issue ASTERISK-22405) (closes issue
ASTERISK-22405) Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/2850/ ........ Merged
revisions 399781 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-24 22:55 +0000 [r399737-399750] Richard Mudgett <rmudgett@digium.com>
* /, main/astobj2.c: astobj2: Made use OBJ_SEARCH_xxx identifiers
as field enum values internally. * Made ao2_unlink to protect
itself from stray OBJ_SEARCH_xxx values passed in. ........
Merged revisions 399749 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c, /: chan_iax2: Prevent some needless
breaking of the native IAX2 bridge. * Clean up some twisted code
in the iax2_bridge() loop. * Add AST_CONTROL_VIDUPDATE and
AST_CONTROL_SRCCHANGE to a list of frames to prevent the native
bridge loop from breaking. * Passing the
AST_CONTROL_T38_PARAMETERS frame should also allow FAX over a
native IAX2 bridge. (issue ABE-2912) Review:
https://reviewboard.asterisk.org/r/2870/ ........ Merged
revisions 399697 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399708 from
http://svn.asterisk.org/svn/asterisk/branches/11 For v12 and
above this is really just documentation until IAX2 native
bridging is restored. ........ Merged revisions 399736 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-24 19:22 +0000 [r399667-399696] Matthew Jordan <mjordan@digium.com>
* apps/app_queue.c, /: app_queue: Don't be quite so aggressive in
initializing the array We only need the first character. ........
Merged revisions 399695 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_queue.c, /: app_queue: Initialize array holding
MixMonitor exec options If the channel variable MONITOR_EXEC is
set, app_queue will pass the specified execution parameters to
the MixMonitor application when a queue is recorded. If that
channel variable is not set, the buffer that holds the escaped
value was not being initialized to NULL, and so would be passed
to the MixMonitor application with garbage. Hilarity ensued as
app_mixmonitor attempted to execute gobeldy-gook. ........ Merged
revisions 399681 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/stasis_bridges.c, tests/test_cdr.c, main/cdr.c, /: Fix a
performance problem CDRs There is a large performance price
currently in the CDR engine. We currently perform two
ao2_callback calls on a container that has an entry for every
channel in the system. This is done to create matching pairs
between channels in a bridge. As such, the portion of the CDR
logic that this patch deals with is how we make pairings when a
channel enters a mixing bridge. In general, when a channel enters
such a bridge, we need to do two things: (1) Figure out if anyone
in the bridge can be this channel's Party B. (2) Make pairings
with every other channel in the bridge that is not already our
Party B. This is a two step process. In the first step, we look
through everyone in the bridge and see if they can be our Party B
(single_state_process_bridge_enter). If they can - yay! We mark
our CDR as having gotten a Party B. If not, we keep searching. If
we don't find one, we wait until someone joins who can be our
Party B. Step 2 is where we changed the logic
(handle_bridge_pairings and bridge_candidate_process).
Previously, we would first find candidates - those channels in
the bridge with us - from the active_cdrs_by_channel container.
Because a channel could be a candidate if it was Party B to an
item in the container, the code implemented multiple
ao2_container callbacks to get all the candidates. We also had to
store them in another container with some other meta information.
This was rather complex and costly, particularly if you have 300
Local channels (600 channels!) going at once. Luckily, none of it
is needed: when a channel enters a bridge (which is when we're
figuring all this stuff out), the bridge snapshot tells us the
unique IDs of everyone already in the bridge. All we need to do
is: For all channels in the bridge: If the channel is us or our
Party B that we got in step 1, skip it Compare us and the
candidate to figure out who is Party A (based on some specific
rules) If we are Party A: Make a new CDR for us, append it to our
chain, and set the candidate as Party B If they are Party A: If
they don't have a Party B: Make a new CDR for them, append us to
their chain, and us as Party B Otherwise: Copy us over as Party B
on their existing CDR. This patch does that. Because we now use
channel unique IDs to find the candidates during bridging,
active_cdrs_by_channel now looks up things using uniqueid instead
of channel name. This makes the more complex code simpler; it
does, however, have the drawback that dialplan applications and
functions will be slightly slower as they have to iterate through
the container looking for the CDR by name. That's a small price
to pay however as the bridging code will be called a lot more
often. This patch also does two other minor changes: (1) It
reduces the container size of the channels in a bridge snapshot
to 1. In order to be predictable for multi-party bridges, the
order of the channels in the container must be stable; that is,
it must always devolve to a linked list. (2) CDRs and the
multi-party test was updated to show the relationship between two
dialed channels. You still want to know if they talked -
previously, dialed channels were always ignored, which is wrong
when they have managed to get a Party B. (closes issue
ASTERISK-22488) Reported by: Richard Mudgett Review:
https://reviewboard.asterisk.org/r/2861/ ........ Merged
revisions 399666 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-23 12:03 +0000 [r399625] Joshua Colp <jcolp@digium.com>
* res/res_pjsip.c, res/res_pjsip_session.c, /: Fix crash in
res_pjsip on load if error occurs, and prevent unloading of
res_pjsip and res_pjsip_session. During load time in res_pjsip if
an error occurred the operation would attempt to rollback all
operations done during load. This is not permitted by PJSIP as it
will assert if the operation has not been done. This fix changes
the code so it will only rollback what has been initialized
already. Further changes also prevent res_pjsip and
res_pjsip_session from being unloaded. This is due to limitations
within PJSIP itself. The library environment can only be changed
to a certain extent and does not provide the ability, currently,
to deinitialize certain required functionality. (closes issue
ASTERISK-22474) Reported by: Corey Farrell ........ Merged
revisions 399624 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-21 04:49 +0000 [r399578-399608] Richard Mudgett <rmudgett@digium.com>
* res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix ref leaks in
ast_rtcp_read(). Moved rtcp_report RAII_VAR declaration into the
loop so it is unref'ed after every loop. Moved message_blob to
loop and switched it to a regular variable. The regular variable
was used since message_blob is used in a very contained way.
(closes issue ASTERISK-22565) Reported by: Corey Farrell Patches:
rtcp_report-leak.patch (license #5909) patch uploaded by Corey
Farrell Tested by: Corey Farrell ........ Merged revisions 399607
from http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/media_index.c: media_index: Fix
process_description_file() memory leak of file_id_persist.
........ Merged revisions 399596 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/features_config.c: features_config: Fix config ref leak
of parkinglots. This leak happend for just about every channel
created. ........ Merged revisions 399585 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, apps/app_queue.c: app_queue: Fix json blob ref leak. The json
ref from queue_member_blob_create() was never released. ........
Merged revisions 399583 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/json.c, /: json: Make it obvious that ast_json_unref() is
NULL safe. It looked like the safety check was done after the
NULL pointer was used. ........ Merged revisions 399576 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-20 22:44 +0000 [r399566] Kinsey Moore <kmoore@digium.com>
* main/config_options.c, /: Ensure global types in the config
framework are initialized If a config object was allocated but
one of its global objects was never encountered, then the global
object's defaults were never applied. Ensure that global objects
are initialized properly upon allocation instead of on
configuration. Review: https://reviewboard.asterisk.org/r/2866/
........ Merged revisions 399564 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399565 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-20 22:06 +0000 [r399554] Jonathan Rose <jrose@digium.com>
* main/dial.c, /: originate/call forwarding: Fix a crash when
forwarding a call from originate (closes issue ASTERISK-22487)
Reported by: David M. Lee Review:
https://reviewboard.asterisk.org/r/2868/ ........ Merged
revisions 399553 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-20 16:18 +0000 [r399533] Joshua Colp <jcolp@digium.com>
* /, channels/chan_pjsip.c: Add a missing session supplement
unregistration in chan_pjsip for ACKs. (closes issue
ASTERISK-22453) Reported by: Corey Farrell Patches:
chan_pjsip_session_unregister_supplement.patch uploaded by Corey
Farrell (license 5909) ........ Merged revisions 399531 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-20 14:26 +0000 [r399515] Kevin Harwell <kharwell@digium.com>
* /, main/logger.c: Fix memory leak in logger. Fixed a memory leak
discovered in the logger where a temporary string buffer was not
being freed. (closes issue ASTERISK-22540) Reported by: John
Hardin ........ Merged revisions 399513 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399514 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-19 23:20 +0000 [r399503] Richard Mudgett <rmudgett@digium.com>
* /, main/optional_api.c: optional_api: Make always use the
standard malloc functions even with MALLOC_DEBUG. ........ Merged
revisions 399501 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-19 17:01 +0000 [r399459] Jonathan Rose <jrose@digium.com>
* /, channels/chan_sip.c: chan_sip: Make direct media reinvites for
T38 put Asterisk in the media path Prior to this patch, Asterisk
would incorrectly use the previous endpoint addresses in SDP in
spite of providing its own port. T38 is never meant to be done
through directmedia and Asterisk should always be in the media
path for these streams. (closes issue ASTERISK-17273) Reported
by: Kevin Stewart (closes issue ASTERISK-18706) Reported by:
Jeremy Kister Review: https://reviewboard.asterisk.org/r/2853/
........ Merged revisions 399456 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399457 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399458 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-18 20:04 +0000 [r399405] Kinsey Moore <kmoore@digium.com>
* /, main/abstract_jb.c: Fix jitter buffer log file creation This
adjusts '/'-to-'#' replacement to replace all instances of '/'
instead of just the first to ensure that the jitter buffer log
file gets the correct name as per Richard Kenner's suggestion.
(closes issue ASTERISK-21036) Reported by: Richard Kenner
........ Merged revisions 399402 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399403 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399404 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-18 17:23 +0000 [r399368-399378] Matthew Jordan <mjordan@digium.com>
* /, build_tools/prep_tarball: Update prep_tarball with new
documentation files on the Asterisk wiki This will now pull both
a command reference for the version being prepared, as well as an
Admin Guide that applies to all versions of Asterisk. (issue
ASTERISK-22439) Reported by: Olle Johansson ........ Merged
revisions 399351 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399373 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399376 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, bridges/bridge_softmix.c: Add a WARNING in bridge_softmix when
a timing module isn't loaded If bridge_softmix fails to be
created because no timing source is present in Asterisk, this
will currently fail gracefully but with (most likely) a generic
error message by whatever module tried to create the softmix
bridge. This patch adds a more explicit warning so you can
actually diagnose and fix the problem. Review:
https://reviewboard.asterisk.org/r/2857/ ........ Merged
revisions 399353 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399365 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-18 17:15 +0000 [r399352] Richard Mudgett <rmudgett@digium.com>
* main/config_options.c: Make config framework able to reload
module configs with multiple config files. The config framework
is supposed to be able to load configs that come from multiple
config files. The principle example is chan_sip's sip.conf and
users.conf. Unfortunately, it only does this correctly on initial
load. This patch causes the module's config to be reloaded
entirely if any of the config files change. (closes issue
ASTERISK-22009) Reported by: Richard Mudgett Review:
https://reviewboard.asterisk.org/r/2859/
2013-09-18 14:56 +0000 [r399340] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_messaging.c, /: res_pjsip_messaging: Register
message technology as pjsip pjsip's message technology was being
registered as 'sip', which was causing it to not load due it
conflicting with chan_sip's registered 'sip' technology for
messaging. It now registers as 'pjsip'. However, due to this
change the "to" field for outgoing pjsip messages need to be
prefixed with 'pjsip:' instead of 'sip:'. Incoming messages to
res_pjsip_messaging will automatically have their "to" fields
altered in order to accommodate the change. Outgoing messages
also handle changing it back to 'sip' before being sent so the
pjsip library will properly handle it. (closes issue
ASTERISK-22445) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2833/ ........ Merged
revisions 399339 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-18 00:13 +0000 [r399295] Michael L. Young <elgueromexicano@gmail.com>
* /, main/features_config.c: Fix Segfault In features-config.c When
Application Has No Arguments Some applications do not require
arguments. Therefore, when parsing application maps in
features.conf, it is possible that app_data will be set to NULL.
* This patch sets app_data to "" if it is NULL. Review:
https://reviewboard.asterisk.org/r/2804 ........ Merged revisions
399294 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-17 23:10 +0000 [r399284] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_sdp_rtp.c, res/res_pjsip/pjsip_configuration.c,
res/res_pjsip_t38.c, include/asterisk/res_pjsip.h, /: Change the
"external_media_address" PJSIP endpoint option to
"media_address". The endpoint option does not apply to
communication with external entities. Rather, the option is
applied to all communications with the endpoint. The
external_media_address transport configuration option may
override the endpoint option if it turns out that we are going to
be communicating with an external entity. Two things of note: 1)
I have not updated the XML documentation. This is being taken
care of by Rusty as part of his work on issue ASTERISK-22405 2)
This commit is likely to cause testsuite failures since there are
tests that use the external_media_address endpoint option, and
they will need to be changed over. Well, I'm planning to get that
updated ASAP after this commit. (closes issue ASTERISK-22528)
reported by Rusty Newton ........ Merged revisions 399283 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-17 18:44 +0000 [r399269] Kevin Harwell <kharwell@digium.com>
* main/logger.c, main/asterisk.c, /: Remote console: more output
discrepancies The remote console continued to have issues with
its output. In this case CLI command output would either not show
up (if verbose level = 0) or would contain verbose prefixes (if
verbose level > 0) once log messages were sent to the remote
console. The fix now now adds verbose prefix data to all new
lines contained in a verbose log string. (closes issue
ASTERISK-22450) Reported by: David Brillert (closes issue
AST-1193) Reported by: Guenther Kelleter Review:
https://reviewboard.asterisk.org/r/2825/ ........ Merged
revisions 399267 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399268 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-17 17:55 +0000 [r399258] Richard Mudgett <rmudgett@digium.com>
* /, include/asterisk/features_config.h: Fix doxygen to use correct
units of features.conf options. ........ Merged revisions 399257
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-17 17:10 +0000 [r399238-399248] Mark Michelson <mmichelson@digium.com>
* main/bridge_basic.c, main/features_config.c, /: Fix other
timeouts (atxferloopdelay and atxfernoanswertimeout) to use
seconds instead of milliseconds. Thanks to Richard Mudgett for
pointing this out. ........ Merged revisions 399247 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/features_config.c, /, include/asterisk/features_config.h,
main/bridge_basic.c: Switch transferdigittimeout to be configured
as seconds instead of milliseconds. This was an unintentional
consequence of the update of features.conf to use the config
framework in Asterisk 12. Thanks to Marco Signorini on the
Asterisk developers list for pointing out the problem. ........
Merged revisions 399237 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-17 14:58 +0000 [r399226] Kevin Harwell <kharwell@digium.com>
* apps/confbridge/conf_state_multi_marked.c, /: Confbridge: empty
conference not being torn down Confbridge would not properly tear
down an empty conference bridge when all users were kicked via
end_marked=yes and at least one user was also set to wait_marked.
This occurred because while end_marked users were being kicked
and at least one was also set to wait_marked then the leave
wait_marked handler would be called on that user, but there would
be no waiting user (still considered active). The waiting users
would decrement and now be negative. The conference would remain,
but be put into an inactive state. The solution was to move from
the active list to the wait list, those users with wait_marked
set right before kicking. This allows both the active and wait
users to decrement correctly and the confbridge to tear down
properly. A crashed also occurred when trying to list the
specific conference from the CLI. This happened because the
conference specified was invalid. Since the conference properly
tears down now there is no way to reference it thus alleviating
the crash as well. (closes issue ASTERISK-21859) Reported by:
Chris Gentle Review: https://reviewboard.asterisk.org/r/2848/
........ Merged revisions 399222 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399225 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-16 18:36 +0000 [r399161-399208] Richard Mudgett <rmudgett@digium.com>
* tests/test_ari_model.c, /: Fix module load errors for
test_ari_model.so. You cannot use a function pointer variable
with an external function from another dynamically loaded module
because data variables are always resolved even with RTLD_LAZY. *
Added wrapper functions for ast_ari_validate_int() and
ast_ari_validate_string() to use instead for the function pointer
variable. (closes issue ASTERISK-22457) Reported by: David M. Lee
........ Merged revisions 399207 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_speech_utils.c, /, res/res_speech.exports.in:
app_speech_utils: Fix unresolved symbol ast_speech_get_setting().
Fixes regression introduced by -r374096. * Made
res_speech.export.in export ast_* symbols instead of specific
functions. * Made app_speech_utils.c declare that it is dependent
upon res_speech. (issue ASTERISK-17136) Reported by: Richard
Kenner ........ Merged revisions 399197 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c, /: chan_iax2: Fix saving the wrong expiry
time in astdb. When a new IAX2 client registers, the astdb
database is updated with the value of minregexpire defined in
iax.conf instead of using the expiry time that is provided by the
client. The provided expiry time of the client is updated after
inserting the astdb entry. As a consequence, restarting or
reloading asterisk creates clients whose registration may expire
before they reregister. The clients are therefore unavailable
after minregexpire seconds until they reregister. * Move updating
of the expiry time to before inserting into the astdb. (closes
issue ASTERISK-22504) Reported by: Stefan Wachtler Patches:
chan_iax2.c.patch (license #6533) patch uploaded by Stefan
Wachtler ........ Merged revisions 399158 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399159 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399160 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-16 02:37 +0000 [r399147] Matthew Jordan <mjordan@digium.com>
* main/cdr.c, /: Filter internal channels out of bridge enter/leave
message handling Some channels exist merely as an implementation
detail in Asterisk, such as ConfBridge's announcer/recorder
channels. These channels should never be exposed to the outside
world, or to interfaces that report on Asterisk. We already
filter out such channels in snapshot processing; however, we
failed to filter out bridge related messages that involved these
channels. This patch filters out bridge related messages that are
for such channels. This prevents a spurious WARNING message from
being displayed when those channels move in and out of bridges.
........ Merged revisions 399146 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 22:19 +0000 [r399138] Richard Mudgett <rmudgett@digium.com>
* res/parking/parking_bridge_features.c, apps/app_agent_pool.c,
include/asterisk/features.h, main/channel.c,
res/parking/parking_tests.c, include/asterisk/bridge_channel.h,
main/features.c, tests/test_cel.c, main/bridge_channel.c,
tests/test_cdr.c, apps/confbridge/conf_chan_announce.c,
include/asterisk/bridge.h, res/res_pjsip_refer.c, /,
channels/chan_sip.c, res/stasis/control.c, main/bridge.c,
main/bridge_basic.c, main/core_unreal.c,
res/parking/parking_applications.c, main/core_local.c: Restore
Dial, Queue, and FollowMe 'I' option support. The Dial, Queue,
and FollowMe applications need to inhibit the bridging initial
connected line exchange in order to support the 'I' option. *
Replaced the pass_reference flag on ast_bridge_join() with a
flags parameter to pass other flags defined by enum
ast_bridge_join_flags. * Replaced the independent flag on
ast_bridge_impart() with a flags parameter to pass other flags
defined by enum ast_bridge_impart_flags. * Since the Dial, Queue,
and FollowMe applications are now the only callers of
ast_bridge_call() and ast_bridge_call_with_flags(), changed the
calling contract to require the initial COLP exchange to already
have been done by the caller. * Made all callers of
ast_bridge_impart() check the return value. It is important. As a
precaution, I also made the compiler complain now if it is not
checked. * Did some cleanup in parking_tests.c as a result of
checking the ast_bridge_impart() return value. An independent,
but associated change is: * Reduce stack usage in
ast_indicate_data() and add a dropping redundant connected line
verbose message. (closes issue ASTERISK-22072) Reported by:
Joshua Colp Review: https://reviewboard.asterisk.org/r/2845/
........ Merged revisions 399136 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 20:55 +0000 [r399101] David M. Lee <dlee@digium.com>
* /, main/astobj2.c: Don't write to /tmp/refs when REF_DEBUG is not
defined. If MALLOC_DEBUG is enabled, then the debug destructor
for the container is used, which would erroneously write to
/tmp/refs. This patch only uses the debug destructor if ref_debug
is used. (closes issue ASTERISK-22536) ........ Merged revisions
399098 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 399099 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399100 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 14:50 +0000 [r399082-399084] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_session.c,
include/asterisk/res_pjsip.h, res/res_pjsip.exports.in, /: Create
more accurate Contact headers for dialogs when we are the UAS.
(closes issue AST-1207) reported by John Bigelow Review:
https://reviewboard.asterisk.org/r/2842 ........ Merged revisions
399083 from http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip/config_auth.c, /,
res/res_pjsip_outbound_authenticator_digest.c,
res/res_pjsip_authenticator_digest.c: Change how realms are
handled for outbound authentication. With this change, if no
realm is specified in an outbound auth section, then we will
simply match the realm that was present in the 401/407 challenge.
(closes issue ASTERISK-22471) Reported by George Joseph (closes
issue ASTERISK-22386) Reported by Rusty Newton Patches:
outbound_auth_realm_v4.patch uploaded by George Joseph (License
#6322) ........ Merged revisions 399059 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 14:43 +0000 [r399080-399081] David M. Lee <dlee@digium.com>
* /: Recorded merge of revisions 399035,399049 from
http://svn.asterisk.org/svn/asterisk/branches/12 These were lost
in r399071
* /: Put merge tracking for r399039 back.
2013-09-13 14:27 +0000 [r399071] Rusty Newton <rnewton@digium.com>
* /, res/res_pjsip_endpoint_identifier_ip.c: Broke the build!
Forgot para tags within my description.
https://bamboo.asterisk.org/bamboo/browse/AST-ATRUNKBUILD-304
........ Merged revisions 399064 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 14:22 +0000 [r399042-399051] David M. Lee <dlee@digium.com>
* res/res_pjsip_log_forwarder.c (added), res/res_pjsip_logger.c,
res/res_rtp_asterisk.c, /: res_pjsip: Forward PJSIP logging to
Asterisk logging This patch uses PJSIP's pj_log_set_log_func() to
forward PJSIP's log messages to Asterisk's logger. This is done
in a new module: res_pjsip_log_forwarder.so. This patch sets
defaultenabled on the existing res_pjsip_logger.so to no, since
logging every SIP packet seems a bit odd to do by default, and is
(hopefully) less necessary with regular PJSIP logging. It also
removes res_rtp_asterisk's disabling of PJSIP logging. (closes
issue ASTERISK-22360) Reported by: Joshua Colp Review:
https://reviewboard.asterisk.org/r/2830/ ........ Merged
revisions 399049 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_http_websocket.c: ARI: Fix WebSocket response when
subprotocol isn't specified When I moved the ARI WebSocket from
/ws to /ari/events, I added code to allow a WebSocket to connect
without specifying the subprotocol if there's only one
subprotocol handler registered for the WebSocket. Naively, I
coded it to always respond with the subprotocol in use.
Unfortunately, according to RFC 6455, if the server's response
includes a subprotocol header field that "indicates the use of a
subprotocol that was not present in the client's handshake [...],
the client MUST _Fail the WebSocket Connection_.", emphasis
theirs. This patch correctly omits the Sec-WebSocket-Protocol if
one is not specified by the client. (closes issue ASTERISK-22441)
Review: https://reviewboard.asterisk.org/r/2828/ ........ Merged
revisions 399039 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 14:17 +0000 [r399036] Kinsey Moore <kmoore@digium.com>
* /, apps/app_meetme.c: Fix several crashes in MeetMeAdmin This
change ensures that MeetMeAdmin commands requiring a user
actually get a user and fixes another issue where an extra
dereference could occur for a last-entered user being ejected if
a user identifier was also provided. (closes issue
ASTERISK-21907) Reported by: Alex Epshteyn Review:
https://reviewboard.asterisk.org/r/2844/ ........ Merged
revisions 399033 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 399034 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 399035 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-13 13:28 +0000 [r399032] Rusty Newton <rnewton@digium.com>
* /, res/res_pjsip_endpoint_identifier_ip.c: 'identify'
configObject doesn't have a synopsis Add a straightforward
synopsis and description to the identify config object in XML
documentation. (issue ASTERISK-22311) (closes issue
ASTERISK-22311) Reported By: Rusty Newton ........ Merged
revisions 399031 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-12 23:42 +0000 [r399020-399022] Richard Mudgett <rmudgett@digium.com>
* /, main/bridge.c: CLI bridge: Fix "bridge destroy <id>" and
"bridge kick <id> <chan>" tab completion. These two commands must
deal with the live bridges container for tab completion and not
the stasis cache. ........ Merged revisions 399021 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/bridge.c, /: astobj2: Register the bridges container for
debug inspection. ........ Merged revisions 399019 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-12 23:23 +0000 [r399018] Rusty Newton <rnewton@digium.com>
* /, res/res_pjsip_acl.c: Documentation fix and improvements to XML
configuration help res_pjsip_acl * One bug fix. Made the synopsis
for "type" to accurate. * changing the usage of "IP-domains" to
"IP addresses" * clarifying the usage for the options, by adding
a relevant description for each * modified other areas of the XML
help for clarity, such as the module description and a few
synopsis changes here and there. See the patch. (issue
ASTERISK-22458) (closes issue ASTERISK-22458) Reported By: Rusty
Newton Review: https://reviewboard.asterisk.org/r/2823/ ........
Merged revisions 399017 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-12 20:27 +0000 [r399006] Jonathan Rose <jrose@digium.com>
* channels/sip/include/sip.h, /, channels/chan_sip.c: chan_sip:
Revert r398835 due to failing tests involving originate (issue
ASTERISK-22424) Reported by: Jonathan Rose ........ Merged
revisions 398977 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398986 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398991 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-12 16:44 +0000 [r398939] Richard Mudgett <rmudgett@digium.com>
* main/core_unreal.c, /: core_local: Fix memory corruption race
condition. The masquerade super test is failing on v12 with high
fence violations and crashing. The fence violations are showing
that party id allocated memory strings are somehow getting
corrupted in the bridge_reconfigured_connected_line_update()
function. The invalid string values happen to be the freed memory
fill pattern. After much puzzling, I deduced that the
bridge_reconfigured_connected_line_update() is copying a string
out of the source channel's caller party id struct just as
another thread is updating it with a new value. The copying
thread is using the old string pointer being freed by the
updating thread. A search of the code found the
unreal_colp_redirect_indicate() routine updating the caller party
id's without holding the channel lock. A latent bug in v1.8 and
v11 hatched in v12 because of the bridging and connected line
changes. :) (issue ASTERISK-22221) Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/2839/ ........ Merged
revisions 398938 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-12 15:23 +0000 [r398928] David M. Lee <dlee@digium.com>
* res/res_pjsip.c, /: Fix symbol collision with pjsua. We shouldn't
be exporting any symbols that start with pjsip_. ........ Merged
revisions 398927 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-12 00:04 +0000 [r398883-398887] Rusty Newton <rnewton@digium.com>
* /, apps/app_queue.c: 'queue add member' help text correction You
are adding dial strings to the queue, not channels. An aribitrary
string could be used, but you are typically referencing a
channel. Correcting the command help text. (issue ASTERISK-22263)
(closes issue ASTERISK-22263) Reported By: Rusty Newton ........
Merged revisions 398884 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398885 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398886 from
http://svn.asterisk.org/svn/asterisk/branches/12
* configs/chan_dahdi.conf.sample, /: Documentation fix -
waitfordialtone is not boolean, it's time in milliseconds
Changing text in chan_dahdi.conf sample to be accurate. (issue
ASTERISK-22308) (closes issue ASTERISK-22308) Reported By:
Malcolm Davenport ........ Merged revisions 398880 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398881 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398882 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-11 20:03 +0000 [r398838] Jonathan Rose <jrose@digium.com>
* /, channels/chan_sip.c, channels/sip/include/sip.h: chan_sip:
Reject calls without prior SDP on 200 OK If we receive a 200 OK
without SDP, we will now check to see if the remote address has
been established for that channel's RTP session and if the to tag
for that channel has changed from the most recent to tag in a
response less than 200. If either a change has been made since
the last to-tag was received or the remote address is unset, then
we will drop the call. (closes issue ASTERISK-22424) Reported by:
Jonathan Rose Review:
https://reviewboard.asterisk.org/r/2827/diff/#index_header
........ Merged revisions 398835 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398836 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398837 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-11 18:03 +0000 [r398822] Russell Bryant <russell@russellbryant.com>
* configs/confbridge.conf.sample, /: Fix typo in
confbridge.conf.sample The denoise filter requires func_speex,
not codec_speex. Fix this in the description of the denoise=yes
option in confbridge.conf. ........ Merged revisions 398820 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398821 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-11 14:23 +0000 [r398808] Kevin Harwell <kharwell@digium.com>
* res/res_pjsip_caller_id.c, channels/chan_pjsip.c, /: pjsip:
reinvite for connected line updates occurs when it should not
Connected line updates are now only sent out if an actual update
needs to occur. This happens under the following conditions: 1.
The endpoint we are sending to is trusted. 2. Either a
P-Asserted-Identity or Remote Party-ID header needs to be
added/sent. 3. The connected id's number and name are valid. Also
added an SDP when an update is sent out. (closes issue AST-1212)
Reported by: John Bigelow Review:
https://reviewboard.asterisk.org/r/2831/ ........ Merged
revisions 398806 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-10 18:05 +0000 [r398760] Richard Mudgett <rmudgett@digium.com>
* main/event.c, res/res_musiconhold.c, main/indications.c,
main/asterisk.c, main/xmldoc.c, main/cli.c, /,
funcs/func_dialgroup.c, main/heap.c,
res/res_pjsip/pjsip_configuration.c: Fix incorrect usages of
ast_realloc(). There are several locations in the code base where
this is done: buf = ast_realloc(buf, new_size); This is going to
leak the original buf contents if the realloc fails. Review:
https://reviewboard.asterisk.org/r/2832/ ........ Merged
revisions 398757 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398758 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398759 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-10 17:50 +0000 [r398751-398755] David M. Lee <dlee@digium.com>
* utils/check_expr.c, /: Fixed utils directory breakage from
r398748, this time with extra hate. ........ Merged revisions
398752 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 398753 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398754 from
http://svn.asterisk.org/svn/asterisk/branches/12
* utils/check_expr.c, /, utils/ael_main.c, utils/conf2ael.c: Fixed
utils directory breakage from r398648 ........ Merged revisions
398748 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 398749 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398750 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-09 23:29 +0000 [r398732] Richard Mudgett <rmudgett@digium.com>
* main/astmm.c, /: MALLOC_DEBUG: Change fence magic number to be
completely different from the freed magic number. Race conditions
between freeing a nul terminated string and ast_strdup()'ing it
are more likely to be detected if the fence and freed magic
numbers are completely different. ........ Merged revisions
398703 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 398721 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398726 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-09 22:00 +0000 [r398695] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_endpoint_identifier_ip.c, /: Add extra debugging to
res_pjsip_endpoint_identifier_ip ........ Merged revisions 398694
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-09 20:13 +0000 [r398641-398652] David M. Lee <dlee@digium.com>
* /, main/utils.c, include/asterisk/lock.h, main/lock.c: Fix
DEBUG_THREADS when lock is acquired in __constructor__ This patch
fixes some long-standing bugs in debug threads that were
exacerbated with recent Optional API work in Asterisk 12. With
debug threads enabled, on some systems, there's a lock ordering
problem between our mutex and glibc's mutex protecting its module
list (Ubuntu Lucid, glibc 2.11.1 in this instance). In one
thread, the module list will be locked before acquiring our
mutex. In another thread, our mutex will be locked before locking
the module list (which happens in the depths of calling
backtrace()). This patch fixes this issue by moving backtrace()
calls outside of critical sections that have the mutex acquired.
The bigger change was to reentrancy tracking for
ast_cond_{timed,}wait, which wrongly assumed that waiting on the
mutex was equivalent to a single unlock (it actually suspends all
recursive locks on the mutex). (closes issue ASTERISK-22455)
Review: https://reviewboard.asterisk.org/r/2824/ ........ Merged
revisions 398648 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398649 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398651 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/ari/resource_channels.h, /, rest-api/api-docs/channels.json:
Multiple revisions 398638-398639 ........ r398638 | dlee |
2013-09-09 14:01:54 -0500 (Mon, 09 Sep 2013) | 1 line Added note
about expected behavior of originate ........ r398639 | dlee |
2013-09-09 14:02:27 -0500 (Mon, 09 Sep 2013) | 1 line Added note
about expected behavior of originate (the rest of the commit)
........ Merged revisions 398638-398639 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-08 23:30 +0000 [r398629] Matthew Jordan <mjordan@digium.com>
* tests/test_cdr.c, /: Update CDR Unit tests to reflect container
changes in r398579 When a channel joins a multi-party bridge, the
ordering of the CDRs that is created is determined by the
ordering of the channels who happen to be in that bridge. When
r398579 changed the number of buckets in the container to
something sensible, it changed the ordering that the CDRs was
created in, causing one of the multiparty tests to fail. This
fixes the test with the now expected ordering. ........ Merged
revisions 398628 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-07 01:03 +0000 [r398603-398620] Kinsey Moore <kmoore@digium.com>
* /, res/res_xmpp.c: Prevent XMPP timeout on blank responses
Sometimes the Google Voice servers have a bad habit of sending
out 1 byte replies to the xmpp resource. When a blank 1 byte
reply is received from the socket the buffer attempts to wait
(endlessly) for the rest of the reply from google which
effectively blocks the socket and google voice calls will no
longer come into the server. This patch allows the xmpp module to
correctly detect empty packets and send out ping replies to
google. It also sets a socket timeout on the default socket which
prevents the xmpp socket from closing and preventing future
google voice calls from coming into the server. Furthermore
instead of sending an empty reply back to google we send a proper
xmpp ping reply back. This also adds several more socket
messages. (closes issue ASTERISK-22347) Reported by: Andrew Nagy
Review: https://reviewboard.asterisk.org/r/2771 Patches:
xmpp_fix_1.diff uploaded by Andrew Nagy (License #6524) ........
Merged revisions 398618 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398619 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_xmpp.c, res/res_jabber.c: Multiple revisions
398558,398577 ........ r398558 | kmoore | 2013-09-06 14:28:16
-0500 (Fri, 06 Sep 2013) | 17 lines Fix Jabber/XMPP distributed
MWI The mailbox and context are swapped on the receiving end for
all users of Jabber and XMPP distributed MWI in Asterisk 1.8 and
all more recent versions. This swaps those values to be correct
when publishing to the internal event system from Jabber/XMPP
distributed MWI state. (closes issue ASTERISK-22435) Reported by:
abelbeck Tested by: Michael Keuter Patches:
asterisk-1.8-res_jabber-aji_handle_pubsub_event.patch uploaded by
abelbeck asterisk-11-res_xmpp-xmpp_pubsub_handle_event.patch
uploaded by abelbeck ........ Merged revisions 398523 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
r398577 | kmoore | 2013-09-06 16:00:56 -0500 (Fri, 06 Sep 2013) |
10 lines Commit the remainder of r398523 This is a missing part
of the commit in revision 398523 that corrects the name of a
variable. (issue ASTERISK-22435) ........ Merged revisions 398576
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 398558,398577 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398580 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-06 21:17 +0000 [r398557-398583] Richard Mudgett <rmudgett@digium.com>
* main/cdr.c, /: cdr: Change the number of container buckets to be
similar to the channels container. * Fix the temporary cdr
candidate containers to use a prime number of buckets. ........
Merged revisions 398579 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/core_local.c, /: core_local: Fix LocalOptimizationBegin AMI
event missing Source channel snapshot. * Fix the
LocalOptimizationBegin AMI event by eliminating an artificial
buffer size limitation that is too small anyway. ........ Merged
revisions 398572 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: cdr: Fix some ref leaks. * Added missing
unregister of the cdr container in cdr_engine_shutdown(). * Fixed
ref leak in off nominal path of cdr_object_alloc(). * Removed
some unnecessary NULL checks in cdr_object_dtor(). ........
Merged revisions 398562 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/astobj2.h, main/cel.c, main/features_config.c,
apps/app_agent_pool.c, main/cdr.c, main/udptl.c, /,
main/parking.c, main/stasis_config.c: astobj2: Add warn unused
attribute to some functions. * Fixed resulting warnings with
improper use of ao2_global_obj_replace(). * Made a couple uses of
ao2_global_obj_replace_unref(x, NULL) into the equivalent and
more appropriate ao2_global_obj_release() call. ........ Merged
revisions 398533 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-06 18:53 +0000 [r398512-398522] Kinsey Moore <kmoore@digium.com>
* main/http.c, /, res/stasis/app.c: Fix build warnings When
AST_DEVMODE is not defined, ast_asserts are not compiled into the
binary. In some cases, this means variables are not referenced or
are set but unused which causes warnings to show up. (closes
issue ASTERISK-22446) Reported by: Jason Parker (qwell) ........
Merged revisions 398521 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_h323.c: Fix chan_h323 compilation This fixes the
things in chan_h323 that were missed or ignored in the great
channel opaquification and gets chan_h323 back into a compiling
state. (closes issue ASTERISK-22365) Reported by: Dmitry Melekhov
Patches: chan_h323.patch uploaded by Dmitry Melekhov ........
Merged revisions 398510 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398511 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-05 21:48 +0000 [r398384-398499] Richard Mudgett <rmudgett@digium.com>
* /, main/astobj2.c: astobj2: Only define ao2_bt() once. * Make
ao2_bt() not use single char variable names. * Fix ao2_bt()
formatting. ........ Merged revisions 398498 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c, /: chan_iax2: Reduce indentation in
__attempt_transmit(). * Reduce indentation in
__attempt_transmit(). * Don't update the static last error time
variable every time in __schedule_action() and socket_read().
........ Merged revisions 398456 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398457 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398458 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c, /: chan_iax2: Fix stray reference to worker
thread idle_list. * Fix stray reference to idle_list in
cleanup_thread_list(). This may be the reason for the note in
iax2_process_thread() about threads not being removed from the
task lists. * Move cleanup_thread_list(&idle_list) to after the
other lists are cleaned up. ........ Merged revisions 398416 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398417 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398418 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/chan_iax2.c, /: chan_iax2: Fix bridgecallno deadlock
avoidance. * Fix bridgecallno deadlock avoidance. When doing
deadlock avoidance, you need to retest the status of values for
each loop to see if you still need the lock for bridgecallno. *
As a safety check, after acquiring the bridgecallno lock you
should check if iaxs[bridgecallno] is NULL just like the current
callno checks. * Move setting thread->iostate to IAX_IOSTATE_IDLE
to after processing any deferred frames to ensure that the
iostate is IDLE when it is placed back into the idle list.
defer_full_frame() tries to ensure iax2_process_thread() wakes up
to process the frame. ........ Merged revisions 398379 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398380 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398381 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-05 14:10 +0000 [r398369] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_outbound_registration.c: Clarify server_uri and
client_uri registration settings. Used some of Rusty's suggested
language plus also included more SIPesque descriptions of where
the URIs are actually used in an outgoing REGISTER. (closes issue
ASTERISK-22390) reported by Rusty Newton ........ Merged
revisions 398368 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-04 23:07 +0000 [r398304] Richard Mudgett <rmudgett@digium.com>
* channels/iax2/parser.c, /: chan_iax2: Add missing control frame
names to debug frame decode output. ........ Merged revisions
398301 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........ Merged revisions 398302 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398303 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-04 22:49 +0000 [r398300] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_outbound_authenticator_digest.c: Give more
detail regarding failures to create request with auth
credentials. (issue ASTERISK-22386) ........ Merged revisions
398299 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-04 21:37 +0000 [r398284-398287] Jonathan Rose <jrose@digium.com>
* /, tests/test_voicemail_api.c: unit tests: test_voicemail_api
leaks stringfields from snapshots (closes issue ASTERISK-22414)
Reported by: Corey Farrell Patches:
test_voicemail_api-leaks-11.patch uploaded by coreyfarrell
(license 5909) ........ Merged revisions 398285 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398286 from
http://svn.asterisk.org/svn/asterisk/branches/12
* apps/app_voicemail.c, /: app_voicemail: Fix leaking config
objects when msg_id doesn't match (issues ASTERISK-22414)
Reported by: Corey Farrell Patch:
test_voicemail_api-leaks-11.patch uploaded by coreyfarrell
(license 5909) ........ Merged revisions 398281 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398283 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-04 16:03 +0000 [r398238] Richard Mudgett <rmudgett@digium.com>
* channels/chan_misdn.c, /: chan_misdn: Fix misdn debug output
printed with arbitrary verbose levels. Fix the misdn debug output
to remote consoles. chan_misdn uses ast_console_puts() which
doesn't know about verbose levels. Better to use ast_verbose()
instead. Without this patch the misdn debug messages are appended
to the verbose level which ever was set by the message sent to
the console before, i.e. any undefined level. (closes issue
AST-1218) Reported by: Guenther Kelleter Patches: misdnlog.patch
(license #6372) patch uploaded by Guenther Kelleter ........
Merged revisions 398235 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398236 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398237 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-04 14:32 +0000 [r398227] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip_outbound_registration.c: Debug messages for
pjsip outbound registration Added debug messages indicating that
an outbound registration attempt was made and it was successful
in pjsip. (closes issue ASTERISK-22388) Reported by: Rusty Newton
........ Merged revisions 398226 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-03 20:28 +0000 [r398217] Alexandr Anikin <may@telecom-service.ru>
* /, addons/ooh323c/src/ooh245.c: Fix remote tcs sequence handling
on empty tcs received ........ Merged revisions 398214 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398215 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-03 18:09 +0000 [r398207] Kinsey Moore <kmoore@digium.com>
* res/res_pjsip_dtmf_info.c, /: Prevent a crash in
res_pjsip_dtmf_info.c This change makes sure that a content type
header exists before checking the contents of the header against
known SIP INFO DTMF content types. ........ Merged revisions
398206 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-03 17:19 +0000 [r398205] David M. Lee <dlee@digium.com>
* Makefile, /: Fixed 'make clean' for wiki docs ........ Merged
revisions 398198 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-09-03 14:29 +0000 [r398197] Walter Doekes <walter+asterisk@wjd.nu>
* /, cel/cel_custom.c: Be a little more verbose when loading
cel_custom.conf. Review: https://reviewboard.asterisk.org/r/2805/
........ Merged revisions 398167 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398168 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398196 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 20:58 +0000 [r398150] David M. Lee <dlee@digium.com>
* main/asterisk.c, include/asterisk/optional_api.h, /,
main/optional_api.c: Fix graceful shutdown crash. The cleanup
code for optional_api needs to happen after all of the optional
API users and providers have unused/unprovided. Unfortunately,
regsitering the atexit() handler at the beginning of main() isn't
soon enough, since module destructors run after that. ........
Merged revisions 398149 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 20:37 +0000 [r398148] Rusty Newton <rnewton@digium.com>
* /, configs/pjsip.conf.sample: New pjsip.conf.sample (issue
ASTERISK-22145) (closes issue ASTERISK-22145) Reported By: Matt
Jordan Review: https://reviewboard.asterisk.org/r/2811/ ........
Merged revisions 398147 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 19:55 +0000 [r398124-398140] Kevin Harwell <kharwell@digium.com>
* /, res/res_pjsip_outbound_registration.c,
include/asterisk/sorcery.h, res/res_pjsip.c,
res/res_pjsip/config_transport.c, main/sorcery.c: Add a
reloadable option for sorcery type objects Some configuration
objects currently won't place nice if reloaded. Specifically, in
this case the pjsip transport objects. Now when registering an
object in sorcery one may specify that the object is allowed to
be reloaded or not. If the object is set to not reload then upon
reloading of the configuration the objects of that type will not
be reloaded. The initially loaded objects of that type however
will remain. While the transport objects will not longer be
reloaded it is still possible for a user to configure an endpoint
to an invalid transport. A couple of log messages were added to
help diagnose this problem if it occurs. (closes issue
ASTERISK-22382) Reported by: Rusty Newton (closes issue
ASTERISK-22384) Reported by: Rusty Newton Review:
https://reviewboard.asterisk.org/r/2807/ ........ Merged
revisions 398139 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/config.c, res/res_security_log.c, /, channels/chan_sip.c,
main/translate.c, main/named_acl.c, main/indications.c: Fix
various memory leaks main/config.c - cleanup cache fie includes
res/res_security_log.c - unregister logger level
channesl/chan_sip.c - cleanup io context and notify_types
main/translator.c - cleanup at shutdown main/named_acl.c -
cleanup cli commands main/indications.c -
ast_get_indication_tone() unref default_tone_zone if used (closes
issues ASTERISK-22378) Reported by: Corey Farrell Patches:
config_shutdown.patch uploaded by coreyfarrell (license 5909)
res_security_log.patch uploaded by coreyfarrell (license 5909)
chan_sip-11.patch uploaded by coreyfarrell (license 5909)
indications_refleak.patch uploaded by coreyfarrell (license 5909)
named_acl-cli_unreg-trunk.patch uploaded by coreyfarrell (license
5909) translate_shutdown.patch uploaded by coreyfarrell (license
5909) ........ Merged revisions 398102 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398103 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398116 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 18:38 +0000 [r398101] Matthew Jordan <mjordan@digium.com>
* /, UPGRADE-12.txt (added), UPGRADE.txt: Update UPGRADE.txt file
for Asterisk 12 This simply pulls in the changes that were
breaking from the CHANGES file and updates a few other areas
accordingly. It also removes the 10 => 11 notes, which are
traditionally removed from each major version and stored in the
appropriate UPGRADE-X.txt file. ........ Merged revisions 398100
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 18:30 +0000 [r398064-398099] Jonathan Rose <jrose@digium.com>
* main/features_config.c, /, main/config_options.c:
features_config: Ignore parkinglots in features.conf instead of
failing to load Parkinglots are defined in res_features.conf now,
but this patch fixes features_config so that features don't fail
to load when parkinglots are present in features.conf Review:
https://reviewboard.asterisk.org/r/2801/ ........ Merged
revisions 398068 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/features_config.c, main/udptl.c, /: features_config: Don't
require features.conf to be present for Asterisk to load (closes
issue ASTERISK-22426) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2806/ ........ Merged
revisions 398020 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 17:59 +0000 [r398063] Kevin Harwell <kharwell@digium.com>
* main/manager.c, /, res/res_agi.c: Memory leak fix
ast_xmldoc_printable returns an allocated block that must be
freed by the caller. Fixed manager.c and res_agi.c to stop
leaking these results. (closes issue ASTERISK-22395) Reported by:
Corey Farrell Patches: manager-leaks-12.patch uploaded by
coreyfarrell (license 5909) res_agi-xmldoc-leaks.patch uploaded
by coreyfarrell (license 5909) ........ Merged revisions 398060
from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........
Merged revisions 398061 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398062 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 17:11 +0000 [r398024-398026] Richard Mudgett <rmudgett@digium.com>
* tests/test_substitution.c, /: test_substitution: Fix failing
test. Revert the -r392190 change. The original test was correct.
The CDR code was actually returning an unititialized buffer.
........ Merged revisions 398025 from
http://svn.asterisk.org/svn/asterisk/branches/12
* tests/test_substitution.c, /: test_substituition: Fix failed test
reporting to actually report failure. You cannot put the "Testing
<blah> pass/fail" on a single line before actually performing the
test. Now any additional failure information is logged before the
test pass/fail announcement. * Added an additional CDR(answer,u)
test. ........ Merged revisions 398018 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 398019 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398023 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 16:27 +0000 [r398003-398017] Kevin Harwell <kharwell@digium.com>
* /, apps/app_mixmonitor.c: Fix memory leaks (closes issue
ASTERISK-22368) Reported by: Corey Farrell Patches:
issueA22368_mixmonitor_free_filename.patch uploaded by wdoekes
(license 5674) ........ Merged revisions 398004 from
http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged
revisions 398011 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398016 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/asterisk.c, /: Check return value on fwrite ........ Merged
revisions 398000 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 398002 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 13:40 +0000 [r397987-397990] David M. Lee <dlee@digium.com>
* rest-api-templates/swagger_model.py, res/ari/ari_websockets.c,
channels/sip/include/sip.h, main/asterisk.c, res/res_ari.c,
tests/test_optional_api.c (added), /, channels/chan_sip.c,
include/asterisk/autoconfig.h.in, configure.ac,
rest-api-templates/res_ari_resource.c.mustache,
res/ari/internal.h, res/res_http_websocket.c, CHANGES,
include/asterisk/compiler.h, include/asterisk/ari.h,
main/loader.c, include/asterisk/optional_api.h,
build_tools/cflags.xml, configure, res/res_ari_events.c,
include/asterisk/http_websocket.h, main/optional_api.c (added):
optional_api: Fix linking problems between modules that export
global symbols With the new work in Asterisk 12, there are some
uses of the optional_api that are prone to failure. The details
are rather involved, and captured on [the wiki][1]. This patch
addresses the issue by removing almost all of the magic from the
optional API implementation. Instead of relying on weak symbol
resolution, a new optional_api.c module was added to Asterisk
core. For modules providing an optional API, the pointer to the
implementation function is registered with the core. For modules
that use an optional API, a pointer to a stub function, along
with a optional_ref function pointer are registered with the
core. The optional_ref function pointers is set to the
implementation function when it's provided, or the stub function
when it's now. Since the implementation no longer relies on
magic, it is now supported on all platforms. In the spirit of
choice, an OPTIONAL_API flag was added, so we can disable the
optional_api if needed (maybe it's buggy on some bizarre platform
I haven't tested on) The AST_OPTIONAL_API*() macros themselves
remained unchanged, so existing code could remain unchanged. But
to help with debugging the optional_api, the patch limits the
#include of optional API's to just the modules using the API.
This also reduces resource waste maintaining optional_ref
pointers that aren't used. Other changes made as a part of this
patch: * The stubs for http_websocket that wrap system calls set
errno to ENOSYS. * res_http_websocket now properly increments
module use count. * In loader.c, the while() wrappers around
dlclose() were removed. The while(!dlclose()) is actually an
anti-pattern, which can lead to infinite loops if the module
you're attempting to unload exports a symbol that was directly
linked to. * The special handling of nonoptreq on systems without
weak symbol support was removed, since we no longer rely on weak
symbols for optional_api. [1]:
https://wiki.asterisk.org/wiki/x/wACUAQ (closes issue
ASTERISK-22296) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2797/ ........ Merged
revisions 397989 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_stasis_playback.c, /,
include/asterisk/stasis_app_recording.h,
res/ari/resource_recordings.h, res/res_stasis_recording.c,
res/Makefile, res/ari/ari_model_validators.c,
rest-api/api-docs/recordings.json, res/stasis_recording (added),
res/ari/resource_recordings.c, res/ari/ari_model_validators.h,
res/res_ari_recordings.c: ARI: Implement /recordings/stored API's
his patch implements the ARI API's for stored recordings. While
the original task only specified deleting a recording, it was
simple enough to implement the GET for all recordings, and for an
individual recording. The recording playback operation was
modified to use the same code for accessing the recording as the
REST API, so that they will behave consistently. There were
several problems with the api-docs that were also fixed, bringing
the ARI spec in line with the implementation. There were some
'wishful thinking' fields on the stored recording model (duration
and timestamp) that were removed, because I ended up not
implementing a metadata file to go along with the recording to
store such information. The GET /recordings/live operation was
removed, since it's not really that useful to get a list of all
recordings that are currently going on in the system. (At least,
if we did that, we'd probably want to also list all of the
current playbacks. Which seems weird.) (closes issue
ASTERISK-21582) Review: https://reviewboard.asterisk.org/r/2693/
........ Merged revisions 397985 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /: Multiple revisions 397975-397976 ........ r397975 | rmudgett |
2013-08-29 20:00:00 -0500 (Thu, 29 Aug 2013) | 1 line pbx.c: Make
ast_str_substitute_variables_full() not mask variables. ........
r397976 | rmudgett | 2013-08-29 20:00:41 -0500 (Thu, 29 Aug 2013)
| 1 line Revert last commit. ........ Merged revisions
397975-397976 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 01:20 +0000 [r397978] Richard Mudgett <rmudgett@digium.com>
* main/pbx.c, /: pbx.c: Make pbx_substitute_variables_helper_full()
not mask variables. ........ Merged revisions 397977 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-30 00:11 +0000 [r397962-397969] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip_pidf.c, /: Sanitize XML output for PIDF bodies.
PJSIP's PIDF API does not replace angle brackets with their
appropriate counterparts for XML. So we have to do it ourself. In
this particular case, the problem had to do with attempting to
place an unsanitized SIP URI into an XML node. Now we don't get a
488 from recipients of our PIDF NOTIFYs. ........ Merged
revisions 397968 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_pidf.c, /: Fix method for creating activities
string in PIDF bodies. The previous method did not allocate
enough space to create the entire string, but adjusted the
string's slen value to be larger than the actual allocation. This
resulted in garbled text in NOTIFY requests from Asterisk. This
method allocates the proper amount of space first and then writes
the content into the buffer. ........ Merged revisions 397960
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 22:49 +0000 [r397959] Kevin Harwell <kharwell@digium.com>
* apps/app_dumpchan.c, main/logger.c, apps/app_verbose.c,
main/asterisk.c, channels/chan_misdn.c, /: Verbose logging
discrepancies Refactored cases where a combination of
ast_verbose/options_verbose were present. Also in general tried
to eliminate, in as many places as possible, where the
options_verbose global variable was being used. Refactored the
way local and remote consoles handle verbose message logging in
an attempt to solve the various discrepancies that sometimes
would show between the two. (closes issue AST-1193) Reported by:
Guenther Kelleter Review:
https://reviewboard.asterisk.org/r/2798/ ........ Merged
revisions 397948 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 397958 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 22:26 +0000 [r397956-397957] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_pubsub.c: Fix when the subscription_terminated
callback is called for subscription handlers. The previous
placement would result in the resubscribe() callback called
instead of the subscription_terminated() callback being called
when a subscription was ended via a SUBSCRIBE request. This would
result in confusing PJSIP and having it throw an assertion.
........ Merged revisions 397955 from
http://svn.asterisk.org/svn/asterisk/branches/12
* res/res_pjsip_session.c, /: Fix a race condition where a canceled
call was answered. RFC 5407 section 3.1.2 details a scenario
where a UAC sends a CANCEL at the same time that a UAS sends a
200 OK for the INVITE that the UAC is canceling. When this
occurs, it is the role of the UAC to immediately send a BYE to
terminate the call. This scenario was reproducible by have a
Digium phone with two lines place a call to a second phone that
forwarded the call to the second line on the original phone. The
Digium phone, upon realizing that it was connecting to itself,
would attempt to cancel the call. The timing of this happened to
trigger the aforementioned race condition about 80% of the time.
Asterisk was not doing its job of sending a BYE when receiving a
200 OK on a cancelled INVITE. The result was that the ast_channel
structure was destroyed but the underlying SIP session, as well
as the PJSIP inv_session and dialog, were still alive. Attempting
to perform an action such as a transfer, once in this state,
would result in Asterisk crashing. The circumstances are now
detected properly and the session is ended as recommended in RFC
5407. (closes issue AST-1209) reported by John Bigelow ........
Merged revisions 397945 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 21:37 +0000 [r397947] Kevin Harwell <kharwell@digium.com>
* main/file.c, main/app.c, main/config_options.c, main/cel.c,
main/asterisk.c, main/cdr.c, main/manager.c, /,
main/stasis_config.c: Memory leaks fix (closes ASTERISK-22376)
Reported by: John Hardin Patches: memleak.patch uploaded by
jhardin (license 6512) memleak2.patch uploaded by jhardin
(license 6512) ........ Merged revisions 397946 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 20:22 +0000 [r397939] Matthew Jordan <mjordan@digium.com>
* configs/safe_asterisk.conf.sample (removed), /, CHANGES,
contrib/scripts/safe_asterisk, Makefile: Revert r394939 due to
(numerous) objections The patch from ASTERISK-21965 was committed
perhaps a bit too hastily. Walter and Tzafrir have pointed out
numerous issues with the approach and have propsed an alternative
in r/2757. Since it's not a time critical issue and is not worth
holding up the release of 12 for it, I've gone ahead and reverted
r394939 from 12/trunk and re-opened ASTERISK-21965. ........
Merged revisions 397938 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 16:21 +0000 [r397932] David M. Lee <dlee@digium.com>
* rest-api-templates/make_ari_stubs.py, /,
rest-api-templates/api.wiki.mustache,
rest-api-templates/asterisk_processor.py: Account for {} in
Swagger notes ........ Merged revisions 397927 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 16:05 +0000 [r397925] Matthew Jordan <mjordan@digium.com>
* Makefile, /: Recursively search for '.c' files when making
documentation with 'make full' Without this, documentation
defined in sub-folders is ignored. Since having properly
generated documentation is especially important in Asterisk 12 -
not having it can cause a module to not load - 'make full' needs
to look in all .c files. ........ Merged revisions 397924 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 15:43 +0000 [r397923] Mark Michelson <mmichelson@digium.com>
* /, apps/app_queue.c, main/cel.c, main/stasis_bridges.c: Multiple
revisions 397921-397922 ........ r397921 | mmichelson |
2013-08-29 10:42:10 -0500 (Thu, 29 Aug 2013) | 6 lines Resolve
assumptions that bridge snapshots would be non-NULL for transfer
stasis events. Attempting to transfer an unbridged call would
result in crashes in either CEL code or in the conversion to AMI
messages. ........ r397922 | mmichelson | 2013-08-29 10:42:29
-0500 (Thu, 29 Aug 2013) | 3 lines Remove extra debug message.
........ Merged revisions 397921-397922 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-29 12:30 +0000 [r397912] Matthew Jordan <mjordan@digium.com>
* contrib/ast-db-manage/config,
contrib/ast-db-manage/config/script.py.mako,
contrib/ast-db-manage/voicemail.ini.sample,
contrib/ast-db-manage/voicemail/env.py,
contrib/ast-db-manage/voicemail,
contrib/ast-db-manage/voicemail/script.py.mako,
contrib/ast-db-manage/README.md,
contrib/ast-db-manage/config/versions,
contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py,
contrib/ast-db-manage (added),
contrib/ast-db-manage/voicemail/versions, /,
contrib/ast-db-manage/config.ini.sample,
contrib/ast-db-manage/config/env.py,
contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py:
Actually *add* the database schema management utilities In
r397874, the scripts were removed... but not replaced. Thanks to
Michael Young for noticing this! ........ Merged revisions 397911
from http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-28 23:15 +0000 [r397886-397903] Richard Mudgett <rmudgett@digium.com>
* main/cdr.c, /, funcs/func_cdr.c, main/stdtime/localtime.c: Fix
some uninitialized buffers for CDR handling valgrind found. *
Made ast_strftime_locale() ensure that the output buffer is
initialized. The std library strftime() returns 0 and does not
touch the buffer if it has an error. However, the function can
also return 0 without an error. (closes issue ASTERISK-22412)
Reported by: rmudgett ........ Merged revisions 397902 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: Fixed problems with ast_cdr_serialize_variables().
* Fixed return value of ast_cdr_serialize_variables() on error.
It needs to return 0 indicating no CDR variables found. * Made
ast_cdr_serialize_variables() check the return value of
cdr_object_format_property() and assert if nonzero. A member of
the cdr_readonly_vars[] was not handled. * Removed unused
elements from cdr_readonly_vars[]: total_duration, total_billsec,
first_start, and first_answer. ........ Merged revisions 397900
from http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: Made the on/off in CLI "cdr set debug [on|off]"
case insensitive. ........ Merged revisions 397898 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/cdr.c, /: Make CDR variable name chandling consistently case
insensitive. ........ Merged revisions 397896 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, main/cdr.c: Make CDR code deal with channel names case
insensitively. ........ Merged revisions 397894 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, funcs/func_cdr.c, main/cdr.c: Some CDR code optimization.
........ Merged revisions 397892 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, funcs/func_cdr.c: Whitespace and curly braces. ........ Merged
revisions 397885 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-28 21:09 +0000 [r397877] Mark Michelson <mmichelson@digium.com>
* /, res/res_pjsip_refer.c: Improve detection of answer on SIP
blind transfer. A problem encountered during testing was that
res_pjsip_refer would not ever send a NOTIFY with a 200 OK
sipfrag. This is because the framehook that was supposed to send
the NOTIFY would never be told that an answer had occurred. This
happened for two reasons: 1) The transferee channel on which the
framehook was on was already up. 2) Answers are rarely if ever
written to channels. Rather, the ast_answer() or ast_raw_answer()
function is used to answer channels. Thanks to a suggestion by
Matt Jordan, the best way to detect that the call had been
answered was to find out when the transferee channel joined a
bridge. With stasis this is an easy task. So now, in addition to
the framehook logic, there is a stasis subscription used to
determine when the transferee has entered a bridge. Once it has
entered, an appropriate NOTIFY is sent. ........ Merged revisions
397876 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-28 20:55 +0000 [r397872-397875] Matthew Jordan <mjordan@digium.com>
* contrib/realtime/mysql/queue_log.sql,
contrib/realtime/mysql/voicemail.sql,
contrib/realtime/mysql/sippeers.sql, /,
contrib/realtime/mysql/iaxfriends.sql,
contrib/realtime/mysql/meetme.sql,
contrib/realtime/mysql/voicemail_messages.sql,
contrib/realtime/postgresql/realtime.sql,
contrib/realtime/mysql/voicemail_data.sql, CHANGES,
contrib/realtime/mysql/musiconhold.sql: Add database schema
management using Alembic This patch replaces contrib/realtime/
with a new setup for managing the database schema required for
database integration with Asterisk. In addition to initializing a
database with the proper schema, alembic can do a database
migration to assist with upgrading Asterisk in the future.
Hopefully this helps make setting up and operating Asterisk with
a database easier. With this the schema only needs to be
maintained in one place instead of once per database. The schemas
I have added here have a bit of improvement over the examples
that were there before (some added consistency and added some
missing indexes). Managing the schema in one place here also
applies to all databases supported by SQLAlchemy. See
contrib/ast-db-manage/README.md for more details. Review:
https://reviewboard.asterisk.org/r/2731 patch by Russell Bryant
(license 6300) ........ Merged revisions 397874 from
http://svn.asterisk.org/svn/asterisk/branches/12
* CHANGES, /: Update CHANGES file for Asterisk 12 This updates the
Asterisk 12 CHANGES file with the things that were missed during
the development cycle. Review:
https://reviewboard.asterisk.org/r/2795/ ........ Merged
revisions 397870 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-28 16:13 +0000 [r397857-397860] Richard Mudgett <rmudgett@digium.com>
* /, main/pbx.c: pbx.c: Make ast_str_substitute_variables_full()
not mask variables. ........ Merged revisions 397859 from
http://svn.asterisk.org/svn/asterisk/branches/12
* main/chanvars.c: ast_free() is null tollerant.
* include/asterisk/threadstorage.h, /: Match use of ast_free() with
ast_calloc() and add some curly braces. ........ Merged revisions
397856 from http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-28 15:43 +0000 [r397855] Mark Michelson <mmichelson@digium.com>
* res/res_pjsip/pjsip_distributor.c, /: Fix dialog matching in the
SIP distributor. Dialog matching is performed in the distributor
for the sole purpose of retrieving an associated serializer so
the request may be serialized. This patch fixes two problems.
First, incoming CANCEL requests that had no to-tag (which really
should be *all* CANCEL requests) would not match with a dialog.
An earlier bug fix to deal with early CANCEL requests would
result in the CANCEL being replied to with a 481. The fix for
this is to find the matching INVITE transaction and get the
dialog from that transaction. Second, no SIP responses were
matching dialogs. This is because we were inverting the tags that
we were passing into PJSIP's dialog finding function. This logic
has been corrected by setting local and remote tag variables
based on whether the incoming message is a request or response.
........ Merged revisions 397854 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-27 19:19 +0000 [r397820] David M. Lee <dlee@digium.com>
* rest-api-templates/param_parsing.mustache, res/res_ari_bridges.c,
/, res/stasis/app.c, res/res_ari_events.c,
res/res_ari_asterisk.c,
rest-api-templates/res_ari_resource.c.mustache, res/stasis/app.h,
res/res_stasis.c, main/stasis_bridges.c: ARI: WebSocket event
cleanup Stasis events (which get distributed over the ARI
WebSocket) are created by subscribing to the channel_all_cached
and bridge_all_cached topics, filtering out events for
channels/bridges currently subscribed to. There are two issues
with that. First was a race condition, where messages in-flight
to the master subscribe-to-all-things topic would get sent out,
even though the events happened before the channel was put into
Stasis. Secondly, as the number of channels and bridges grow in
the system, the work spent filtering messages becomes excessive.
Since r395954, individual channels and bridges have caching
topics, and can be subscribed to individually. This patch takes
advantage, so that channels and bridges are subscribed to on
demand, instead of filtering the global topics. The one case
where filtering is still required is handling BridgeMerge
messages, which are published directly to the bridge_all topic.
Other than the change to how subscriptions work, this patch
mostly just moves code around. Most of the work generating JSON
objects from messages was moved to .to_json handlers on the
message types. The callback functions handling app subscriptions
were moved from res_stasis (b/c they were global to the model) to
stasis/app.c (b/c they are local to the app now). (closes issue
ASTERISK-21969) Reported by: Matt Jordan Review:
https://reviewboard.asterisk.org/r/2754/ ........ Merged
revisions 397816 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-27 18:52 +0000 [r397811] Richard Mudgett <rmudgett@digium.com>
* /, main/astmm.c: Made MALLOC_DEBUG less CPU intensive by default.
Storing a backtrace for each allocation in anticipation of a
memory management problem is very CPU intensive. * Added the CLI
"memory backtrace {on|off}" command to request that the backtrace
be gathered only on request. The backtrace is off by default.
(issue ASTERISK-22221) Reported by: Matt Jordan ........ Merged
revisions 397809 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-27 18:10 +0000 [r397753-397760] Matthew Jordan <mjordan@digium.com>
* /, channels/chan_sip.c: AST-2013-005: Fix crash caused by invalid
SDP If the SIP channel driver processes an invalid SDP that
defines media descriptions before connection information, it may
attempt to reference the socket address information even though
that information has not yet been set. This will cause a crash.
This patch adds checks when handling the various media
descriptions that ensures the media descriptions are handled only
if we have connection information suitable for that media. Thanks
to Walter Doekes, OSSO B.V., for reporting, testing, and
providing the solution to this problem. (closes issue
ASTERISK-22007) Reported by: wdoekes Tested by: wdoekes patches:
issueA22007_sdp_without_c_death.patch uploaded by wdoekes
(License 5674) ........ Merged revisions 397756 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 397757 from
http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged
revisions 397758 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 397759 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, channels/chan_sip.c: AST-2013-004: Fix crash when handling ACK
on dialog that has no channel A remote exploitable crash
vulnerability exists in the SIP channel driver if an ACK with SDP
is received after the channel has been terminated. The handling
code incorrectly assumed that the channel would always be
present. This patch adds a check such that the SDP will only be
parsed and applied if Asterisk has a channel present that is
associated with the dialog. Note that the patch being applied was
modified only slightly from the patch provided by Walter Doekes
of OSSO B.V. (closes issue ASTERISK-21064) Reported by: Colin
Cuthbertson Tested by: wdoekes, Colin Cutherbertson patches:
issueA21064_fix.patch uploaded by wdoekes (License 5674) ........
Merged revisions 397710 from
http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged
revisions 397711 from
http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged
revisions 397712 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 397713 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-27 16:51 +0000 [r397746] Richard Mudgett <rmudgett@digium.com>
* channels/chan_iax2.c, channels/sig_pri.c, channels/sig_ss7.c,
channels/chan_dahdi.c, channels/sig_analog.c, /,
channels/chan_sip.c, channels/chan_motif.c: Fix uninitialized
value in struct ast_control_pvt_cause_code usage. ........ Merged
revisions 397744 from
http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
revisions 397745 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-26 23:48 +0000 [r397691] Matthew Jordan <mjordan@digium.com>
* /, main/bridge_channel.c: Better handle clearing the OUTGOING
flag when a channel leaves a bridge When a channel with the
OUTGOING flag leaves a bridge, and it will survive being pulled
from the bridge (either because it will execute dialplan, go into
another bridge, or live in a friendly autoloop), we have to clear
the OUTGOING flag. This is the signal to the CDR engine that this
channel is no longer a second class citizen, i.e., it is not
"dialed". The soft hangup flags are only half the picture. If a
channel is being moved from one bridge to another, the soft
hangup flags aren't set; however, the state of the bridge_channel
will not be hung up. Since the channel does not have one of the
two hang up states, that implies that the channel is still
technically alive. This patch modifies the check so that it
checks both the soft hangup flags as well as the bridge_channel
state. If either suggests that the channel is going to persist,
we clear the OUTGOING flag. ........ Merged revisions 397690 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-26 21:32 +0000 [r397674] David M. Lee <dlee@digium.com>
* /, main/bucket.c: Fixed bucket.c for systems where tv_usec is not
an unsigned long. ........ Merged revisions 397673 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-26 16:25 +0000 [r397644-397651] Richard Mudgett <rmudgett@digium.com>
* /, include/asterisk/bridge_channel.h, main/bridge_channel.c:
bridging: Fix a livelock with local channel optimization. Use a
better means of waking up the bridge channel thread. ........
Merged revisions 397650 from
http://svn.asterisk.org/svn/asterisk/branches/12
* channels/Makefile, /: chan_dahdi: Add some missing build cleanup.
........ Merged revisions 397643 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-25 18:12 +0000 [r397622-397631] Matthew Jordan <mjordan@digium.com>
* tests/test_bucket.c, /: Fix bucket unit tests After the review
for buckets was completed (r2715), the handling of names in the
bucket core was deferred to the wizards. As such, the bucket unit
tests cannot expect that passing a URI with a scheme specified
but no actual resource name will automatically fail. The tests
have been updated to not make this check. ........ Merged
revisions 397630 from
http://svn.asterisk.org/svn/asterisk/branches/12
* include/asterisk/config_options.h, /, main/config_options.c,
tests/test_config.c: Fix the config_options_test The config
options test requires the entire configuration item to be
transparent from the documentation system. So we let it do that
too. As an aside, please do not use this power for evil.
Documentation is your friend, and you really should document your
configurations. Hiding your module's configuration information
from the system attempting to enforce some sanity in the universe
is something only a Bond villain would contemplate. ........
Merged revisions 397628 from
http://svn.asterisk.org/svn/asterisk/branches/12
* /, res/res_pjsip/pjsip_configuration.c: Add rtpengine
configuration parameter The rtpengine configuration parameter was
documented in the XML documentation, but it was not actually
registered with the sorcery object. This adds the parameter with
a default of "asterisk", such that res_rtp_asterisk is chosen as
the default RTP implementation. (closes issue ASTERISK-22380)
Reported by: Rusty Newton Tested by: Rusty Newton ........ Merged
revisions 397621 from
http://svn.asterisk.org/svn/asterisk/branches/12
2013-08-23 22:40 +0000 [r397615] Matthew Jordan <mjordan@digium.com>
* /: Set new merge properties on 12
2013-08-23 22:20 +0000 [r397613] Joshua Colp <jcolp@digium.com>
* main/bucket.c: Fix building of trunk. Note: This is why I commit
on the weekend.