5 years agovoicemail: Move app_voicemail / res_mwi_external conflict to runtime
George Joseph [Wed, 30 Dec 2015 16:49:03 +0000 (09:49 -0700)]
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

5 years agoMerge "main/cdr: Allow setting properties on a finalized CDR if it is the last one"
Matt Jordan [Mon, 4 Jan 2016 15:02:53 +0000 (09:02 -0600)]
Merge "main/cdr: Allow setting properties on a finalized CDR if it is the last one"

5 years agoMerge "main/cdr: Set the end time on a CDR if endbeforehexten is Yes"
Matt Jordan [Mon, 4 Jan 2016 15:02:47 +0000 (09:02 -0600)]
Merge "main/cdr: Set the end time on a CDR if endbeforehexten is Yes"

5 years agomain/cdr: Allow setting properties on a finalized CDR if it is the last one
Matt Jordan [Sat, 2 Jan 2016 16:26:04 +0000 (10:26 -0600)]
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

ASTERISK-25458 #close

Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9

5 years agomain/cdr: Set the end time on a CDR if endbeforehexten is Yes
Matt Jordan [Sat, 2 Jan 2016 16:23:39 +0000 (10:23 -0600)]
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.


Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3

5 years agomain/pbx: Move custom function routines to pbx_functions.c.
Corey Farrell [Thu, 31 Dec 2015 02:51:47 +0000 (21:51 -0500)]
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

5 years agoMerge "main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c"
Matt Jordan [Fri, 1 Jan 2016 15:25:41 +0000 (09:25 -0600)]
Merge "main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c"

5 years agoMerge "res_pjsip_history: Add a module that provides PJSIP history for debugging"
Matt Jordan [Fri, 1 Jan 2016 04:42:26 +0000 (22:42 -0600)]
Merge "res_pjsip_history: Add a module that provides PJSIP history for debugging"

5 years agores_pjsip_history: Add a module that provides PJSIP history for debugging
Matt Jordan [Sun, 13 Dec 2015 19:09:42 +0000 (13:09 -0600)]
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
 - The Call-ID header

Note - this is a resurrection of the module initially proposed on Review Board

Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36

5 years agomain/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c
George Joseph [Tue, 29 Dec 2015 01:18:01 +0000 (18:18 -0700)]
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

5 years agoMerge "res_http_websocket.c: prevent avoidable disconnections caused by write errors"
Joshua Colp [Thu, 31 Dec 2015 00:43:34 +0000 (18:43 -0600)]
Merge "res_http_websocket.c: prevent avoidable disconnections caused by write errors"

5 years agoMerge "test_time: Provide a timeout when waiting."
Joshua Colp [Mon, 28 Dec 2015 22:34:32 +0000 (16:34 -0600)]
Merge "test_time: Provide a timeout when waiting."

5 years agoMerge "endpoint/stasis: Eliminate duplicate events on endpoint status change"
Matt Jordan [Mon, 28 Dec 2015 21:11:06 +0000 (15:11 -0600)]
Merge "endpoint/stasis: Eliminate duplicate events on endpoint status change"

5 years agotest_time: Provide a timeout when waiting.
Joshua Colp [Mon, 28 Dec 2015 20:02:19 +0000 (16:02 -0400)]
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

5 years agotests/test_stasis_endpoints: Remove expected duplicate events
Matt Jordan [Fri, 25 Dec 2015 02:26:46 +0000 (20:26 -0600)]
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.


Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981

5 years agores_http_websocket.c: prevent avoidable disconnections caused by write errors
Dade Brandon [Fri, 25 Dec 2015 04:19:59 +0000 (20:19 -0800)]
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

5 years agoendpoint/stasis: Eliminate duplicate events on endpoint status change
George Joseph [Wed, 27 May 2015 18:22:39 +0000 (12:22 -0600)]
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

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 <>
Tested-by: George Joseph <>

Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b

5 years agoMerge "bridge_basic.c: Fix GOTO_ON_BLINDXFR"
Matt Jordan [Mon, 28 Dec 2015 15:44:27 +0000 (09:44 -0600)]
Merge "bridge_basic.c: Fix GOTO_ON_BLINDXFR"

5 years agoMerge "chan_sip.c: fix websocket_write_timeout default value"
Matt Jordan [Mon, 28 Dec 2015 15:44:13 +0000 (09:44 -0600)]
Merge "chan_sip.c: fix websocket_write_timeout default value"

5 years agoMerge "res/res_pjsip_location: Delete contact_status object when contact is deleted"
Joshua Colp [Mon, 28 Dec 2015 15:02:24 +0000 (09:02 -0600)]
Merge "res/res_pjsip_location: Delete contact_status object when contact is deleted"

5 years agoRemove res_jabber file that was left behind.
Corey Farrell [Mon, 28 Dec 2015 04:38:37 +0000 (23:38 -0500)]
Remove res_jabber file that was left behind.

Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b

5 years agochan_sip.c: fix websocket_write_timeout default value
Dade Brandon [Fri, 25 Dec 2015 15:56:44 +0000 (07:56 -0800)]
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

5 years agobridge_basic.c: Fix GOTO_ON_BLINDXFR
Richard Mudgett [Wed, 23 Dec 2015 23:40:39 +0000 (17:40 -0600)]
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

* Renamed some feature_blind_transfer() local variables for clarity.

ASTERISK-25641 #close
Reported by Dmitry Melekhov

Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac

5 years agores/res_pjsip_location: Delete contact_status object when contact is deleted
Matt Jordan [Thu, 24 Dec 2015 18:19:51 +0000 (12:19 -0600)]
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

5 years agores_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef
Kevin Harwell [Thu, 24 Dec 2015 16:18:22 +0000 (10:18 -0600)]
res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef

Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151

5 years agoMerge "app_amd: Correct maximum_number_of_words functionality & documentation"
Matt Jordan [Wed, 23 Dec 2015 02:22:26 +0000 (20:22 -0600)]
Merge "app_amd: Correct maximum_number_of_words functionality & documentation"

5 years agoapp_amd: Correct maximum_number_of_words functionality & documentation
Dade Brandon [Mon, 21 Dec 2015 03:33:02 +0000 (19:33 -0800)]
app_amd: Correct maximum_number_of_words functionality & documentation

- The maximum_number_of_words was previously documented as being
the number of words that when exceeded, would result in the AMD
application returning that the audio represents a machine.

This was inconsistent with its actual functionality - it was
a number of words that when REACHED, would result in determination
as a machine.

This update corrects the functionality to match the previously
documented functionality.  This is a backwards incompatible change
in configuration file, and has been added to UPGRADE.txt as a result.

The sample configuration file and application defaults have been updated
so that the default value is now 2, which reflects the same default
functionality as previous versions.

- 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

5 years agores_rtp_asterisk: Resolve further timing issues with DTLS negotiation
Dade Brandon [Fri, 18 Dec 2015 01:05:00 +0000 (17:05 -0800)]
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

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

5 years agoMerge "app_queue: update RT members when the 1st call joins a queue with no agents"
Matt Jordan [Sat, 19 Dec 2015 16:47:57 +0000 (10:47 -0600)]
Merge "app_queue: update RT members when the 1st call joins a queue with no agents"

5 years agoMerge "json: Audit ast_json_* usage for thread safety."
Joshua Colp [Fri, 18 Dec 2015 17:57:17 +0000 (11:57 -0600)]
Merge "json: Audit ast_json_* usage for thread safety."

5 years agores_sorcery_memory_cache: Add support for a full backend cache.
Joshua Colp [Sat, 5 Dec 2015 16:01:55 +0000 (12:01 -0400)]
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

5 years agoMerge "rtp_engine: Ignore empty filenames in DTLS configuration."
Joshua Colp [Thu, 17 Dec 2015 18:50:06 +0000 (12:50 -0600)]
Merge "rtp_engine: Ignore empty filenames in DTLS configuration."

5 years agortp_engine: Ignore empty filenames in DTLS configuration.
Joshua Colp [Thu, 17 Dec 2015 16:25:47 +0000 (12:25 -0400)]
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

5 years agochan_sip: Enable WebSocket support by default.
Joshua Colp [Thu, 17 Dec 2015 14:10:43 +0000 (10:10 -0400)]
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

5 years agojson: Audit ast_json_* usage for thread safety.
Joshua Colp [Mon, 14 Dec 2015 18:04:15 +0000 (14:04 -0400)]
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

5 years agoMerge "AMI: Fixed OriginateResponse message"
Matt Jordan [Wed, 16 Dec 2015 03:22:28 +0000 (21:22 -0600)]
Merge "AMI: Fixed OriginateResponse message"

5 years agores_rtp_asterisk.c: Fix DTLS negotiation delays.
server-pandora [Mon, 14 Dec 2015 19:53:20 +0000 (11:53 -0800)]
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

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

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

5 years agoAMI: Fixed OriginateResponse message
pchero [Tue, 8 Dec 2015 19:04:12 +0000 (20:04 +0100)]
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

5 years agoFix sscanf() format string type mismatch.
Richard Mudgett [Mon, 14 Dec 2015 21:25:02 +0000 (15:25 -0600)]
Fix sscanf() format string type mismatch.

Reported by: George Joseph

Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b

5 years agoapp_queue: update RT members when the 1st call joins a queue with no agents
Carlos Oliva [Mon, 14 Dec 2015 12:26:35 +0000 (13:26 +0100)]
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

5 years agoMerge "main/utils: Don't emit an ERROR message if the read end of a pipe closes"
Matt Jordan [Mon, 14 Dec 2015 12:45:07 +0000 (06:45 -0600)]
Merge "main/utils: Don't emit an ERROR message if the read end of a pipe closes"

5 years agomain/utils: Don't emit an ERROR message if the read end of a pipe closes
Matt Jordan [Sun, 13 Dec 2015 19:13:55 +0000 (13:13 -0600)]
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

5 years agopjsip/config_transport: Check pjproject version at runtime for async ops
George Joseph [Sat, 12 Dec 2015 17:08:50 +0000 (10:08 -0700)]
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

5 years agochan_sip: Add TCP/TLS keepalive to TCP/TLS server
Jonathan Rose [Thu, 10 Dec 2015 17:44:03 +0000 (11:44 -0600)]
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.
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

5 years agoMerge "res_pjsip: Add existence and readablity checks for tls related files"
Joshua Colp [Thu, 10 Dec 2015 13:13:40 +0000 (07:13 -0600)]
Merge "res_pjsip:  Add existence and readablity checks for tls related files"

5 years agoMerge "app_meetme: Set default value for audio_buffers."
Joshua Colp [Thu, 10 Dec 2015 12:03:25 +0000 (06:03 -0600)]
Merge "app_meetme: Set default value for audio_buffers."

5 years agoMerge "res_chan_stats: Fix bug to send correct statistics to StatsD"
Joshua Colp [Thu, 10 Dec 2015 12:02:55 +0000 (06:02 -0600)]
Merge "res_chan_stats: Fix bug to send correct statistics to StatsD"

5 years agoapp_meetme: Set default value for audio_buffers.
Corey Farrell [Mon, 7 Dec 2015 19:07:32 +0000 (14:07 -0500)]
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

5 years agores_chan_stats: Fix bug to send correct statistics to StatsD
tcambron [Wed, 9 Dec 2015 15:48:29 +0000 (09:48 -0600)]
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

5 years agoMerge "chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)"
Matt Jordan [Wed, 9 Dec 2015 18:40:58 +0000 (12:40 -0600)]
Merge "chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)"

5 years agores_pjsip: Add existence and readablity checks for tls related files
George Joseph [Tue, 8 Dec 2015 23:49:20 +0000 (16:49 -0700)]
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

5 years agochan_sip.c: Start ICE negotiation when response is sent or received.
Eugene Voityuk [Wed, 2 Dec 2015 18:42:15 +0000 (20:42 +0200)]
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.


Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca

5 years agoMerge "res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls"
Joshua Colp [Tue, 8 Dec 2015 19:18:08 +0000 (13:18 -0600)]
Merge "res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls"

5 years agoMerge "translate: Avoid a warning message when doing FEC within Opus Codec."
Joshua Colp [Tue, 8 Dec 2015 19:14:21 +0000 (13:14 -0600)]
Merge "translate: Avoid a warning message when doing FEC within Opus Codec."

5 years agochan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)
Filip Jenicek [Tue, 8 Dec 2015 07:57:22 +0000 (08:57 +0100)]
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

5 years agores_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls
George Joseph [Tue, 8 Dec 2015 17:03:53 +0000 (10:03 -0700)]
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.


Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6
Reported-by: George Joseph
Tested-by: George Joseph

5 years agocodec_resample: Increase buffer for Opus Codec with FEC.
Alexander Traud [Tue, 8 Dec 2015 14:39:03 +0000 (15:39 +0100)]
codec_resample: Increase buffer for Opus Codec with FEC.

ASTERISK-25599 #close

Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e

5 years agotranslate: Avoid a warning message when doing FEC within Opus Codec.
Alexander Traud [Tue, 8 Dec 2015 09:46:21 +0000 (10:46 +0100)]
translate: Avoid a warning message when doing FEC within Opus Codec.

ASTERISK-25616 #close

Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319

5 years agochan_sip: Fix crash involving the bogus peer during sip reload.
Richard Mudgett [Fri, 4 Dec 2015 21:36:45 +0000 (15:36 -0600)]
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

* Protected the global bogus peer object with an ao2 global object

ASTERISK-25610 #close

Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed

5 years agochan_sip: Support parsing of Q.850 reason header in SIP BYE and CANCEL requests.
Christof Lauber [Fri, 13 Nov 2015 13:58:15 +0000 (14:58 +0100)]
chan_sip: Support parsing of Q.850 reason header in SIP BYE and CANCEL requests.

Current support for reason header did work only in SIP responses.
According to RFC3336 the reason header might appear in any SIP request.
But it seems to make most sence in BYE and CANCEL so parasing is done
there too (if use_q850_reason=yes).

Change-Id: Ib6be7b34c23a76d0e98dfd0816c89931000ac790

5 years agoMerge "res_pjsip/contacts/statsd: Make contact lifecycle events more consistent"
Joshua Colp [Mon, 7 Dec 2015 13:51:20 +0000 (07:51 -0600)]
Merge "res_pjsip/contacts/statsd:  Make contact lifecycle events more consistent"

5 years agoRevert "bridges/bridge_t38: Add a bridging module for managing T.38 state"
Matt Jordan [Sun, 6 Dec 2015 22:35:24 +0000 (16:35 -0600)]
Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state"

This reverts commit f42d22d3a1ca5c8ea73df99a50c6a28caa8f8749.

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: I932107387c13aad2c75a7a4c1e94197a9d6d8a51

5 years agores_pjsip/contacts/statsd: Make contact lifecycle events more consistent
George Joseph [Fri, 4 Dec 2015 22:23:21 +0000 (15:23 -0700)]
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.


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.


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

ASTERISK-25608 #close

Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d
Reported-by: George Joseph
Tested-by: George Joseph

5 years agoMerge "res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8."
Matt Jordan [Fri, 4 Dec 2015 17:34:15 +0000 (11:34 -0600)]
Merge "res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8."

5 years agoMerge "res_format_attr_opus: Update to latest RFC 7587."
Matt Jordan [Fri, 4 Dec 2015 17:34:04 +0000 (11:34 -0600)]
Merge "res_format_attr_opus: Update to latest RFC 7587."

5 years agores_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8.
Alexander Traud [Sat, 21 Nov 2015 12:08:49 +0000 (13:08 +0100)]
res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8.

ASTERISK-25584 #close

Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91

5 years agoMerge "bridges/bridge_t38: Add a bridging module for managing T.38 state"
Matt Jordan [Fri, 4 Dec 2015 14:58:05 +0000 (08:58 -0600)]
Merge "bridges/bridge_t38: Add a bridging module for managing T.38 state"

5 years agobridges/bridge_t38: Add a bridging module for managing T.38 state
Matt Jordan [Sat, 28 Nov 2015 14:46:02 +0000 (08:46 -0600)]
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.


Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0

5 years agoMerge "Fix crash in audiohook translate to slin"
Matt Jordan [Fri, 4 Dec 2015 13:31:10 +0000 (07:31 -0600)]
Merge "Fix crash in audiohook translate to slin"

5 years agores_format_attr_opus: Update to latest RFC 7587.
Alexander Traud [Sat, 21 Nov 2015 11:35:33 +0000 (12:35 +0100)]
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

5 years agoMerge "res_pjsip: Use a MD5 hash for static Contact IDs"
Joshua Colp [Thu, 3 Dec 2015 21:51:56 +0000 (15:51 -0600)]
Merge "res_pjsip: Use a MD5 hash for static Contact IDs"

5 years agoFix crash in audiohook translate to slin
Jonathan Rose [Wed, 2 Dec 2015 20:11:08 +0000 (14:11 -0600)]
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

5 years agoMerge "res_pjsip: Update logging to show contact->uri in messages"
Joshua Colp [Thu, 3 Dec 2015 18:39:00 +0000 (12:39 -0600)]
Merge "res_pjsip:  Update logging to show contact->uri in messages"

5 years agoMerge "app_queue: Show reason of pause on CLI"
Joshua Colp [Thu, 3 Dec 2015 18:38:28 +0000 (12:38 -0600)]
Merge "app_queue: Show reason of pause on CLI"

5 years agoMerge "codec_resample: Increase buffer for Opus Codec."
Joshua Colp [Thu, 3 Dec 2015 18:38:01 +0000 (12:38 -0600)]
Merge "codec_resample: Increase buffer for Opus Codec."

5 years agores_pjsip: Use a MD5 hash for static Contact IDs
George Joseph [Thu, 3 Dec 2015 18:07:49 +0000 (11:07 -0700)]
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

ASTERISK-25595 #close

Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2
Reported-by: Matt Jordan
Tested-by: George Joseph

5 years agoMerge "Build System: Support include-what-you-use."
Joshua Colp [Thu, 3 Dec 2015 11:52:18 +0000 (05:52 -0600)]
Merge "Build System: Support include-what-you-use."

5 years agoMerge "res_sorcery_memory_cache.c: Fix off nominal ref leak."
Joshua Colp [Thu, 3 Dec 2015 11:51:23 +0000 (05:51 -0600)]
Merge "res_sorcery_memory_cache.c: Fix off nominal ref leak."

5 years agoMerge "sched.c: Make not return a sched id of 0."
Joshua Colp [Thu, 3 Dec 2015 11:50:50 +0000 (05:50 -0600)]
Merge "sched.c: Make not return a sched id of 0."

5 years agoMerge "Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)"
Joshua Colp [Thu, 3 Dec 2015 11:49:38 +0000 (05:49 -0600)]
Merge "Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)"

5 years agoMerge "Audit improper usage of scheduler exposed by 5c713fdf18f."
Joshua Colp [Thu, 3 Dec 2015 11:49:27 +0000 (05:49 -0600)]
Merge "Audit improper usage of scheduler exposed by 5c713fdf18f."

5 years agores_pjsip: Update logging to show contact->uri in messages
George Joseph [Tue, 1 Dec 2015 04:19:18 +0000 (21:19 -0700)]
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

5 years agoUnset BRIDGEPEER when leaving a bridge
Jonathan Rose [Tue, 1 Dec 2015 22:11:07 +0000 (16:11 -0600)]
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

5 years agores_sorcery_memory_cache.c: Fix off nominal ref leak.
Richard Mudgett [Mon, 30 Nov 2015 20:22:55 +0000 (14:22 -0600)]
res_sorcery_memory_cache.c: Fix off nominal ref leak.

Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49

5 years agosched.c: Make not return a sched id of 0.
Richard Mudgett [Mon, 30 Nov 2015 22:42:47 +0000 (16:42 -0600)]
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.


Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20

5 years agoAudit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)
Richard Mudgett [Wed, 25 Nov 2015 18:23:47 +0000 (12:23 -0600)]
Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)

* Initialize mwi subscription scheduler ids earlier because of ASTOBJ to
ao2 conversion.

* Initialize register scheduler ids earlier because of ASTOBJ to ao2

* Fix more scheduler usage for the valid 0 id value.


Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95

5 years agoAudit improper usage of scheduler exposed by 5c713fdf18f.
Richard Mudgett [Tue, 24 Nov 2015 18:44:53 +0000 (12:44 -0600)]
Audit improper usage of scheduler exposed by 5c713fdf18f.

* Initialize struct chan_iax2_pvt scheduler ids earlier because of

* 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.

* Fix some scheduler id comparisons that excluded the valid 0 id.

* Fix channel initialization of the video stream scheduler id.

* Fix channel initialization of the packet retransmission scheduler id.


Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8

5 years agocodec_resample: Increase buffer for Opus Codec.
Alexander Traud [Tue, 1 Dec 2015 13:55:13 +0000 (14:55 +0100)]
codec_resample: Increase buffer for Opus Codec.

ASTERISK-25599 #close

Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10

5 years agodns: Change lookup failures from LOG_ERROR to debug 1.
George Joseph [Mon, 30 Nov 2015 17:13:35 +0000 (10:13 -0700)]
dns: Change lookup failures from LOG_ERROR to debug 1.

dns.c and dns_system_resolver.c were spitting out errors for lookup
failures for things like not finding a SRV record even though
there was an A record.  Those have been changed to debug messages.
Logging not finding ANY record is left to the higher level caller.

Also, dns_system_resolver was using Windows line endings so I
converted them to Unix style.  The actual log changes are on lines
156 and 159.

Change-Id: I65be16ea15304b96f9dcb4d289dbd3e2286fc094

5 years agoBuild System: Support include-what-you-use.
Alexander Traud [Wed, 25 Nov 2015 16:42:31 +0000 (17:42 +0100)]
Build System: Support include-what-you-use.

ASTERISK-25591 #close

Change-Id: I8d3efa0826142ece9cbed2fd0d46f3b607fee6ae

5 years agoapp_queue: Show reason of pause on CLI
Rodrigo Ramírez Norambuena [Mon, 9 Nov 2015 05:49:08 +0000 (02:49 -0300)]
app_queue: Show reason of pause on CLI

Add value of pause reason when is paused on CLI command "queue show"

ASTERISK-25581 #close

Report by: Rodrigo Ramírez Norambuena

Change-Id: I887028a40cd97b350da9a3bb2719616b7fec9864

5 years agoCHANGES: Fix a typo
Niklas Larsson [Fri, 27 Nov 2015 13:39:22 +0000 (14:39 +0100)]
CHANGES: Fix a typo

Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7

5 years agoMerge "fastagi: record file closed after sending result"
Matt Jordan [Thu, 26 Nov 2015 04:19:18 +0000 (22:19 -0600)]
Merge "fastagi: record file closed after sending result"

5 years agoMerge "main: Slight refactor of main. Improve color situation."
Matt Jordan [Thu, 26 Nov 2015 04:17:47 +0000 (22:17 -0600)]
Merge "main: Slight refactor of main. Improve color situation."

5 years agofastagi: record file closed after sending result
Kevin Harwell [Wed, 25 Nov 2015 21:26:35 +0000 (15:26 -0600)]
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

This patch makes it so the record file stream is closed prior to sending the
agi result notification.

ASTERISK-25593 #close

Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde

5 years agomain: Slight refactor of main. Improve color situation.
Walter Doekes [Wed, 25 Nov 2015 19:29:55 +0000 (20:29 +0100)]
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.
- Remove unused term_prep() and term_prompt() functions.

ASTERISK-25585 #close

Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f

5 years agoMerge "Fixed some typos"
Matt Jordan [Wed, 25 Nov 2015 02:23:10 +0000 (20:23 -0600)]
Merge "Fixed some typos"

5 years agoFixed some typos
David M. Lee [Tue, 24 Nov 2015 19:54:54 +0000 (13:54 -0600)]
Fixed some typos

Fixes some minor typos in the CHANGES file, plus an embarrasing typo in
the StatsD API.

Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7

5 years agores_pjsip_notify: Fix CLI usage info
Corey Farrell [Tue, 24 Nov 2015 19:07:12 +0000 (14:07 -0500)]
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

5 years agoMerge "translate: Provide translation modules the result of SDP negotiation."
Joshua Colp [Tue, 24 Nov 2015 14:20:46 +0000 (08:20 -0600)]
Merge "translate: Provide translation modules the result of SDP negotiation."