7 years agoapp_agent_pool: Made agent alert interruptable by DTMF.
Richard Mudgett [Thu, 6 Nov 2014 19:26:08 +0000 (19:26 +0000)]
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


Merged revisions 427508 from

Merged revisions 427512 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoBridge DTMF hooks: Made audio pass from the bridge while waiting for more matching...
Richard Mudgett [Thu, 6 Nov 2014 19:12:18 +0000 (19:12 +0000)]
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

ASTERISK-24447 #close
Reported by: Richard Mudgett


Merged revisions 427493 from

Merged revisions 427494 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip: Ensure in-dialog responses have an endpoint associated.
Joshua Colp [Thu, 6 Nov 2014 18:21:12 +0000 (18:21 +0000)]
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


Merged revisions 427490 from

Merged revisions 427491 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agomain/file.c: fix possible extra ast_module_unref to format modules.
Corey Farrell [Thu, 6 Nov 2014 12:15:54 +0000 (12:15 +0000)]
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

ASTERISK-24492 #close
Reported by: Corey Farrell

Merged revisions 427464 from

Merged revisions 427465 from

Merged revisions 427466 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_hep: fix major leak that occurs when config is missing or enabled=no.
Corey Farrell [Thu, 6 Nov 2014 09:24:26 +0000 (09:24 +0000)]
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

Merged revisions 427400 from

Merged revisions 427405 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoFix unintential memory retention in stringfields.
Corey Farrell [Thu, 6 Nov 2014 09:18:48 +0000 (09:18 +0000)]
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

Merged revisions 427380 from

Merged revisions 427381 from

Merged revisions 427382 from

Merged revisions 427384 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agotest_strings: Remove string tests that exercise asserts.
George Joseph [Thu, 6 Nov 2014 02:41:17 +0000 (02:41 +0000)]
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

Merged revisions 427355 from

Merged revisions 427356 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoMake the disable_tcp_switch PJSIP system object enabled by default.
Mark Michelson [Wed, 5 Nov 2014 19:53:29 +0000 (19:53 +0000)]
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.

Merged revisions 427334 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_multihomed: Add logging during startup to aid debugging if local DNS is...
Joshua Colp [Wed, 5 Nov 2014 12:19:09 +0000 (12:19 +0000)]
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


Merged revisions 427300 from

Merged revisions 427303 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoconfig: Make text_file_save and 'dialplan save' escape semicolons in values.
George Joseph [Wed, 5 Nov 2014 00:17:10 +0000 (00:17 +0000)]
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


Merged revisions 427275 from

Merged revisions 427276 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip: Apply the 'user_eq_phone' setting to the To header as well.
Joshua Colp [Tue, 4 Nov 2014 22:51:32 +0000 (22:51 +0000)]
res_pjsip: Apply the 'user_eq_phone' setting to the To header as well.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled.
Joshua Colp [Tue, 4 Nov 2014 22:31:16 +0000 (22:31 +0000)]
res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoconfig: BUG: Restore ability for non-templ to be used as base objs in config.
George Joseph [Tue, 4 Nov 2014 20:49:14 +0000 (20:49 +0000)]
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


Merged revisions 427227 from

Merged revisions 427228 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agofunc_talkdetect: Fix stasis message leak in audiohook callback.
Corey Farrell [Tue, 4 Nov 2014 19:46:33 +0000 (19:46 +0000)]
func_talkdetect: Fix stasis message leak in audiohook callback.

ASTERISK-24482 #close
Reported by: Corey Farrell

Merged revisions 427203 from

Merged revisions 427204 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_http_websockets: Fix extra unref of module
Corey Farrell [Tue, 4 Nov 2014 19:33:21 +0000 (19:33 +0000)]
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

Merged revisions 427200 from

Merged revisions 427201 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoFix crash caused by merge error on review 4138
Corey Farrell [Tue, 4 Nov 2014 14:11:54 +0000 (14:11 +0000)]
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]).

Merged revisions 427181 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_outbound_registration: Add virtual line support.
Joshua Colp [Tue, 4 Nov 2014 12:03:35 +0000 (12:03 +0000)]
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.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip: Add disable_tcp_switch option.
Richard Mudgett [Mon, 3 Nov 2014 18:22:59 +0000 (18:22 +0000)]
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


Merged revisions 427129 from

Merged revisions 427130 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochan_pjsip: Update CHANGES file to include 'moh_passthrough' setting
Joshua Colp [Mon, 3 Nov 2014 15:03:38 +0000 (15:03 +0000)]
chan_pjsip: Update CHANGES file to include 'moh_passthrough' setting

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochan_pjsip: Add support for passing hold and unhold requests through.
Joshua Colp [Mon, 3 Nov 2014 14:45:01 +0000 (14:45 +0000)]
chan_pjsip: Add support for passing hold and unhold requests through.

This change adds an option, moh_passthrough, that when enabled will pass
hold and unhold requests through using a SIP re-invite. When placing on
hold a re-invite with sendonly will be sent and when taking off hold a
re-invite with sendrecv will be sent. This allows remote servers to handle
the musiconhold instead of the local Asterisk instance being responsible.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoFix compile error caused by review 4138
Corey Farrell [Mon, 3 Nov 2014 02:36:46 +0000 (02:36 +0000)]
Fix compile error caused by review 4138

There is no procedure called ast_closeframe, fix code to use

Reported By: Matt Jordan

Merged revisions 427087 from

Merged revisions 427088 from

Merged revisions 427089 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoFix ast_writestream leaks
Corey Farrell [Sun, 2 Nov 2014 08:13:52 +0000 (08:13 +0000)]
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

ASTERISK-24476 #close
Reported by: Corey Farrell

Merged revisions 427023 from

Merged revisions 427024 from

Merged revisions 427025 from

Merged revisions 427026 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agofunc_jitterbuffer: fix frame leaks.
Corey Farrell [Sun, 2 Nov 2014 07:40:57 +0000 (07:40 +0000)]
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

Merged revisions 427019 from

Merged revisions 427020 from

Merged revisions 427021 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_stasis: Fix crash on module unload while performing operation
Matthew Jordan [Sun, 2 Nov 2014 01:01:52 +0000 (01:01 +0000)]
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

Merged revisions 426996 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoinstall init.d files on GNU/kFreeBSD
Tzafrir Cohen [Fri, 31 Oct 2014 16:52:42 +0000 (16:52 +0000)]
install init.d files on GNU/kFreeBSD


Merged revisions 426926 from

Merged revisions 426927 from

Merged revisions 426933 from

Merged revisions 426934 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agopjsip: clarify tls cert and key file usage
Scott Griepentrog [Fri, 31 Oct 2014 16:41:06 +0000 (16:41 +0000)]
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
Reported by: John Bigelow

Merged revisions 426928 from

Merged revisions 426930 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agopjsip: Handle outbound unregister correctly
Scott Griepentrog [Fri, 31 Oct 2014 16:24:00 +0000 (16:24 +0000)]
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
Reported by: John Bigelow
  unregister-patch1.txt uploaded by John Bigelow (License 5091)

Merged revisions 426923 from

Merged revisions 426924 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochannels/sip/reqresp_parser: Fix unit tests for r426594
Matthew Jordan [Fri, 31 Oct 2014 03:26:28 +0000 (03:26 +0000)]
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

Merged revisions 426860 from

Merged revisions 426863 from

Merged revisions 426865 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoREF_DEBUG: Install to $(ASTDATADIR)/scripts
Corey Farrell [Fri, 31 Oct 2014 03:09:48 +0000 (03:09 +0000)]
REF_DEBUG: Install to $(ASTDATADIR)/scripts

This change ensures 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

Merged revisions 426830 from

Merged revisions 426831 from

Merged revisions 426832 from

Merged revisions 426833 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoapp_queue: fix a couple leaks to struct call_queue in set_member_value
Corey Farrell [Thu, 30 Oct 2014 23:56:39 +0000 (23:56 +0000)]
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

Merged revisions 426805 from

Merged revisions 426806 from

Merged revisions 426807 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoaudiohooks: Clean references to formats
Corey Farrell [Thu, 30 Oct 2014 23:45:25 +0000 (23:45 +0000)]
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

Merged revisions 426803 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash
Kevin Harwell [Thu, 30 Oct 2014 21:14:01 +0000 (21:14 +0000)]
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

Merged revisions 426780 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip: incorrect qualify statistics after disabling for contact
Kevin Harwell [Thu, 30 Oct 2014 17:18:47 +0000 (17:18 +0000)]
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

Merged revisions 426755 from

Merged revisions 426757 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoapp_voicemail: Fix unchecked bounds of myArray in IMAP_STORAGE.
Walter Doekes [Thu, 30 Oct 2014 09:21:42 +0000 (09:21 +0000)]
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


Merged revisions 426691 from

Merged revisions 426692 from

Merged revisions 426696 from

Merged revisions 426702 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoAdd additional checks for NULL pointers to fix several crashes reported.
Igor Goncharovskiy [Thu, 30 Oct 2014 06:15:14 +0000 (06:15 +0000)]
Add additional checks for NULL pointers to fix several crashes reported.

ASTERISK-24304 #close
Reported by: dhanapathy sathya

Merged revisions 426666 from

Merged revisions 426667 from

Merged revisions 426668 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochannels/chan_sip: Add improved support for 4xx error codes
Matthew Jordan [Thu, 30 Oct 2014 01:59:39 +0000 (01:59 +0000)]
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.


  rb3437.patch uploaded by oej (License 5267)

Merged revisions 426599 from

Merged revisions 426600 from

Merged revisions 426601 from

Merged revisions 426602 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochannels/chan_sip: Support mutltiple Supported and Required headers
Matthew Jordan [Thu, 30 Oct 2014 01:48:00 +0000 (01:48 +0000)]
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.


ASTERISK-21721 #close
Reported by: Olle Johansson
  rb2478.patch uploaded by oej (License 5267)

Merged revisions 426594 from

Merged revisions 426595 from

Merged revisions 426596 from

Merged revisions 426597 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoFix building chan_phone on big endian systems
Tzafrir Cohen [Wed, 29 Oct 2014 13:02:27 +0000 (13:02 +0000)]
Fix building chan_phone on big endian systems

A left over from the formats conversion (Corey Farrell).

ASTERISK-24458 #close


Merged revisions 426570 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agobridge_builtin_features: Add missing channel locks around ast_get_chan_features_gener...
Richard Mudgett [Tue, 28 Oct 2014 21:35:41 +0000 (21:35 +0000)]
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

Merged revisions 426552 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_fax: Resolve T38 gateway frame leak.
Corey Farrell [Tue, 28 Oct 2014 21:10:42 +0000 (21:10 +0000)]
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

Merged revisions 426527 from

Merged revisions 426528 from

Merged revisions 426529 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agomanager: Unsubscribe from acl_change_sub at shutdown.
Corey Farrell [Tue, 28 Oct 2014 20:44:22 +0000 (20:44 +0000)]
manager: Unsubscribe from acl_change_sub at shutdown.

ASTERISK-24453 #close
Reported by: Corey Farrell

Merged revisions 426524 from

Merged revisions 426525 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoASTERISK-23512, correct inaccurate comment in manager.conf.sample
Malcolm Davenport [Tue, 28 Oct 2014 18:09:32 +0000 (18:09 +0000)]
ASTERISK-23512, correct inaccurate comment in manager.conf.sample

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agomain/bridge: Destroy features struct on off nominal path during bridge impart
Matthew Jordan [Tue, 28 Oct 2014 16:41:17 +0000 (16:41 +0000)]
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

Merged revisions 426432 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agomain/manager: Fix typo in AMI event documentation of "OriginateResponse"
Matthew Jordan [Tue, 28 Oct 2014 14:59:47 +0000 (14:59 +0000)]
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

Merged revisions 426367 from

Merged revisions 426368 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoASTERISK-24323, fix bug in documentation of AGI STREAM FILE CONTROL
Malcolm Davenport [Tue, 28 Oct 2014 14:57:01 +0000 (14:57 +0000)]
ASTERISK-24323, fix bug in documentation of AGI STREAM FILE CONTROL

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoASTERISK-24419, fix incorrect syntax for setting language in extensions.conf.sample
Malcolm Davenport [Tue, 28 Oct 2014 13:13:16 +0000 (13:13 +0000)]
ASTERISK-24419, fix incorrect syntax for setting language in extensions.conf.sample

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoapp_queue: Cleanup ao2_iterator
Corey Farrell [Tue, 28 Oct 2014 11:22:55 +0000 (11:22 +0000)]
app_queue: Cleanup ao2_iterator

Clean ao2_iterator, resolving reference leak to queue members.

ASTERISK-24454 #close
Reported by: Corey Farrell

Merged revisions 426255 from

Merged revisions 426260 from

Merged revisions 426266 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agofunc_cdr: Fix CDR_PROP payload leak
Corey Farrell [Tue, 28 Oct 2014 11:12:03 +0000 (11:12 +0000)]
func_cdr: Fix CDR_PROP payload leak

Remove duplicate allocation of payload, preventing leak.

ASTERISK-24455 #close
Reported by: Corey Farrell

Merged revisions 426252 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoconfigure: Add autoconf check for libopus.
Sean Bright [Mon, 27 Oct 2014 17:55:43 +0000 (17:55 +0000)]
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.


Merged revisions 426234 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_http_websocket: Fix minor nits found by wdoekes on r409681
Matthew Jordan [Mon, 27 Oct 2014 02:47:03 +0000 (02:47 +0000)]
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.


Merged revisions 426209 from

Merged revisions 426210 from

Merged revisions 426211 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_phoneprov: Fix crash on shutdown caused by container cleanup
Matthew Jordan [Mon, 27 Oct 2014 02:27:56 +0000 (02:27 +0000)]
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

Merged revisions 426176 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_srtp: Fix include issue for libsrtp 1.5.0
Matthew Jordan [Mon, 27 Oct 2014 01:47:56 +0000 (01:47 +0000)]
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

Merged revisions 426141 from

Merged revisions 426142 from

Merged revisions 426143 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoDocumentation: Improve documentation for ExtensionStatus AMI events
Jonathan Rose [Fri, 24 Oct 2014 15:32:35 +0000 (15:32 +0000)]
Documentation: Improve documentation for ExtensionStatus AMI events


Merged revisions 426120 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agocodec_dahdi: Cannot use struct ast_translator.core_{src,src}_codec.
Shaun Ruffell [Wed, 22 Oct 2014 21:41:31 +0000 (21:41 +0000)]
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

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


Merged revisions 426097 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agotranslage.c: Fix regression when generating translation path strings.
Richard Mudgett [Tue, 21 Oct 2014 18:04:43 +0000 (18:04 +0000)]
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.

Merged revisions 426079 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoAST-2014-011: Fix POODLE security issues
Matthew Jordan [Mon, 20 Oct 2014 14:20:15 +0000 (14:20 +0000)]
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
    ecnryption 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

Much thanks to abelbeck for reporting the vulnerability and providing a patch
for the res_jabber/res_xmpp modules.


ASTERISK-24425 #close
Reported by: abelbeck
Tested by: abelbeck, opsmonitor, gtjoseph
  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

Merged revisions 425991 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agobuild: Force -fsigned-char on platforms where the default for char is unsigned
George Joseph [Sun, 19 Oct 2014 17:09:38 +0000 (17:09 +0000)]
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 ./
and ./configure to regenerate the build files.  You shouldn't have to do this
for Intel or SPARC.

Tested-by: George Joseph


Merged revisions 425964 from

Merged revisions 425965 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_pjsip_sdp_rtp: Revert 425924
Matthew Jordan [Sun, 19 Oct 2014 04:03:35 +0000 (04:03 +0000)]
res/res_pjsip_sdp_rtp: Revert 425924

This patch for r425924 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.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_pjsip_sdp_rtp: Remove left over reference to override_prefs
Matthew Jordan [Sun, 19 Oct 2014 00:56:43 +0000 (00:56 +0000)]
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.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoSample Configurations: make 'pjsip reload' reload all reloadable pjsip modules
Jonathan Rose [Fri, 17 Oct 2014 22:45:27 +0000 (22:45 +0000)]
Sample Configurations: make 'pjsip reload' reload all reloadable pjsip modules

AST-1432 #close
Reported by: John Bigelow

Merged revisions 425905 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_session/res_pjsip_sdp_rtp: Be more tolerant of offers
Matthew Jordan [Fri, 17 Oct 2014 13:35:44 +0000 (13:35 +0000)]
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
* Asterisk will ignore declined media streams properly.



ASTERISK-24122 #close
Reported by: James Van Vleet

ASTERISK-24381 #close
Reported by: Matt Jordan

Merged revisions 425868 from

Merged revisions 425879 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriente...
Joshua Colp [Fri, 17 Oct 2014 13:17:58 +0000 (13:17 +0000)]
res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriented transports.

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.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochannels/chan_sip: Respect outboundproxy setting when sending qualify requests
Matthew Jordan [Fri, 17 Oct 2014 13:11:07 +0000 (13:11 +0000)]
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.


ASTERISK-24063 #close
Reported by: Damian Ivereigh
  outboundproxy-dai.patch uploaded by Damian Ivereigh (License 6632)

Merged revisions 425818 from

Merged revisions 425819 from

Merged revisions 425820 from

Merged revisions 425821 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable.
Joshua Colp [Fri, 17 Oct 2014 11:30:23 +0000 (11:30 +0000)]
res_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable.

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.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoAMI: Add missing VarSet events when a channel inherits variables.
Richard Mudgett [Fri, 17 Oct 2014 02:49:57 +0000 (02:49 +0000)]
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
      jira_asterisk_24415_v12.patch (license #5621) patch uploaded by Richard Mudgett


Merged revisions 425782 from

Merged revisions 425783 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agobridge_native_rtp: Fix audio issues when moving from remote bridge to softmix
Matthew Jordan [Fri, 17 Oct 2014 02:01:40 +0000 (02:01 +0000)]
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


ASTERISK-24327 #close

Merged revisions 425760 from

Merged revisions 425761 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agotest_cel: Update pickup test to expect CANCEL instead of ANSWSER
Matthew Jordan [Fri, 17 Oct 2014 01:46:07 +0000 (01:46 +0000)]
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

Merged revisions 425757 from

Merged revisions 425758 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agomain/cdr: Use 'time' when rescheduling batched CDRs as opposed to 'size'
Matthew Jordan [Thu, 16 Oct 2014 21:21:44 +0000 (21:21 +0000)]
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

Merged revisions 425736 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoconfig: Fix inf loop using ast_category_browse and ast_variable_retrieve
George Joseph [Thu, 16 Oct 2014 17:32:16 +0000 (17:32 +0000)]
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


Merged revisions 425713 from

Merged revisions 425714 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoPJSIP: Enforce module load dependencies
Kinsey Moore [Thu, 16 Oct 2014 16:32:25 +0000 (16:32 +0000)]
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

Merged revisions 425690 from

Merged revisions 425691 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoFix loss of voice after second call drops (on a second line) in case using multiple...
Igor Goncharovskiy [Thu, 16 Oct 2014 06:22:07 +0000 (06:22 +0000)]
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

Merged revisions 425668 from

Merged revisions 425669 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_rtp_asterisk: Fix a bug where ICE state would get reset when it shouldn't.
Joshua Colp [Thu, 16 Oct 2014 01:26:18 +0000 (01:26 +0000)]
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

Merged revisions 425645 from

Merged revisions 425646 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochan_motif: Cleanup jingle_tech.capabilities only once.
Richard Mudgett [Wed, 15 Oct 2014 19:39:15 +0000 (19:39 +0000)]
chan_motif: Cleanup jingle_tech.capabilities only once.

Merged revisions 425627 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoparking_tests: Fix assertions and possibly crashes in res_parking unit tests
Jonathan Rose [Wed, 15 Oct 2014 19:17:29 +0000 (19:17 +0000)]
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

Merged revisions 425611 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochan_ooh323: fix rtptimeout general value checking
Alexandr Anikin [Wed, 15 Oct 2014 10:03:05 +0000 (10:03 +0000)]
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

Merged revisions 425547 from

Merged revisions 425548 from

Merged revisions 425589 from

Merged revisions 425590 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoconfig: Fix SEGV in unit test with MALLOC_DEBUG
George Joseph [Tue, 14 Oct 2014 20:48:06 +0000 (20:48 +0000)]
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


Merged revisions 425525 from

Merged revisions 425526 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoScheduler: Fix a nasty scheduler caching bug which makes new tasks not execute
Jonathan Rose [Tue, 14 Oct 2014 19:12:58 +0000 (19:12 +0000)]
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

ASTERISK-24321 #close
Reported by: Steve Pitts

Merged revisions 425503 from

Merged revisions 425504 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_phoneprov: Create accessor for ast_phoneprov_std_variable_lookup
George Joseph [Tue, 14 Oct 2014 18:13:33 +0000 (18:13 +0000)]
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


Merged revisions 425480 from

Merged revisions 425481 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_fax: Fix reference leak caused by gateway sessions
Corey Farrell [Tue, 14 Oct 2014 16:47:02 +0000 (16:47 +0000)]
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

Merged revisions 425457 from

Merged revisions 425458 from

Merged revisions 425459 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agostasis_channels.c: Resolve unfinished Dials when doing masquerades (Part 2)
Richard Mudgett [Tue, 14 Oct 2014 16:43:33 +0000 (16:43 +0000)]
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.

Reported by: Richard Mudgett

ASTERISK-24394 #close
Reported by: Richard Mudgett


Merged revisions 425430 from

Merged revisions 425455 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_fax: Resolve module reference leak caused by reserved sessions
Corey Farrell [Tue, 14 Oct 2014 16:20:59 +0000 (16:20 +0000)]
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

Merged revisions 425405 from

Merged revisions 425407 from

Merged revisions 425411 from

Merged revisions 425415 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agomanager/config: Support templates and non-unique category names via AMI
George Joseph [Mon, 13 Oct 2014 16:12:17 +0000 (16:12 +0000)]
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


Merged revisions 425383 from

Merged revisions 425384 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_rtp_asterisk: Make the ICE transport check case insensitive as some implementatio...
Joshua Colp [Sun, 12 Oct 2014 21:09:49 +0000 (21:09 +0000)]
res_rtp_asterisk: Make the ICE transport check case insensitive as some implementations use 'udp'.

Merged revisions 425360 from

Merged revisions 425361 from

Merged revisions 425362 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochan_sip: Fix so asterisk won't send reINVITE after a BYE.
Walter Doekes [Sun, 12 Oct 2014 08:17:08 +0000 (08:17 +0000)]
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

(testcase is in review r4055)

Merged revisions 425296 from

Merged revisions 425297 from

Merged revisions 425298 from

Merged revisions 425299 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agobuild: Relax badshell tilde test to allow for ~ in middle of DESTDIR.
Walter Doekes [Sun, 12 Oct 2014 07:57:06 +0000 (07:57 +0000)]
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


Merged revisions 425291 from

Merged revisions 425292 from

Merged revisions 425293 from

Merged revisions 425294 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_calendar_ews: Relax neon version check to work with 0.30 too.
Walter Doekes [Sun, 12 Oct 2014 07:47:52 +0000 (07:47 +0000)]
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


Merged revisions 425286 from

Merged revisions 425287 from

Merged revisions 425288 from

Merged revisions 425289 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_phoneprov: Cleanup module load error handling
George Joseph [Sat, 11 Oct 2014 21:09:53 +0000 (21:09 +0000)]
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


Merged revisions 425264 from

Merged revisions 425265 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agobridge: During a smart bridge operation provide a more complete bridge to the old...
Joshua Colp [Fri, 10 Oct 2014 20:48:46 +0000 (20:48 +0000)]
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

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.


Merged revisions 425242 from

Merged revisions 425243 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_phoneprov: Bail on registration if res_phoneprov didn't load
Matthew Jordan [Fri, 10 Oct 2014 14:31:42 +0000 (14:31 +0000)]
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

Merged revisions 425221 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_phoneprov_provider: Add missing dependency on pjproject.
Joshua Colp [Fri, 10 Oct 2014 14:24:57 +0000 (14:24 +0000)]
res_pjsip_phoneprov_provider: Add missing dependency on pjproject.

Merged revisions 425216 from

Merged revisions 425217 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agoCallerID: Fix parsing regression
Kinsey Moore [Fri, 10 Oct 2014 13:03:18 +0000 (13:03 +0000)]
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
    callerid_fix.diff uploaded by Kinsey Moore

Merged revisions 425152 from

Merged revisions 425153 from

Merged revisions 425154 from

Merged revisions 425155 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_nat: Place source port into rport of responses if 'force_rport' is on.
Joshua Colp [Fri, 10 Oct 2014 12:10:53 +0000 (12:10 +0000)]
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.


ASTERISK-24387 #close
Reported by: Matt Jordan

Merged revisions 425131 from

Merged revisions 425132 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agochan_sip: Fix dialog leak resulting from missing ACK to re-INVITE.
Walter Doekes [Fri, 10 Oct 2014 07:34:50 +0000 (07:34 +0000)]
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
  reinvite_ack_timeout.patch uploaded by Torrey Searle (License #5334)
  patch_asterisk_20784.txt uploaded by Nitesh Bansal (License #6418)

(testcase can be found at r4051)

Merged revisions 425068 from

Merged revisions 425069 from

Merged revisions 425070 from

Merged revisions 425071 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_phoneprov_provider: fix compile breakage on AST_VECTOR
George Joseph [Thu, 9 Oct 2014 23:37:49 +0000 (23:37 +0000)]
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

Merged revisions 425052 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_rtp_asterisk: Crash if no candidates received for component
Kevin Harwell [Thu, 9 Oct 2014 21:39:12 +0000 (21:39 +0000)]
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

Merged revisions 425031 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_pjsip_phoneprov_provider: Provides pjsip integration with res_phoneprov
George Joseph [Thu, 9 Oct 2014 20:55:50 +0000 (20:55 +0000)]
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

Merged revisions 425007 from

Merged revisions 425008 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores/res_phoneprov: Don't cancel Asterisk load on module load failure
Matthew Jordan [Thu, 9 Oct 2014 18:44:00 +0000 (18:44 +0000)]
res/res_phoneprov: Don't cancel Asterisk load on module load failure

Merged revisions 424985 from

Merged revisions 424986 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agores_phoneprov: Refactor phoneprov to allow pluggable config providers
George Joseph [Thu, 9 Oct 2014 17:46:23 +0000 (17:46 +0000)]
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

Merged revisions 424963 from

Merged revisions 424964 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agocdr.c: Make turning on CDR debug a one step process instead of two.
Richard Mudgett [Thu, 9 Oct 2014 16:38:40 +0000 (16:38 +0000)]
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

Merged revisions 424942 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

7 years agosafe_asterisk: Don't automatically exceed MAXFILES value of 2^20.
Walter Doekes [Thu, 9 Oct 2014 08:10:35 +0000 (08:10 +0000)]
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
  safe_asterisk-ulimit.diff uploaded by Michael Myles (License #6626)

Merged revisions 424875 from

Merged revisions 424878 from

Merged revisions 424879 from

Merged revisions 424880 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3