7 years agortp_engine: Add support for transporting signed linear at 12kHz, 24kHz, 32kHz, 44kHz...
Joshua Colp [Mon, 1 Dec 2014 18:51:52 +0000 (18:51 +0000)]
rtp_engine: Add support for transporting signed linear at 12kHz, 24kHz, 32kHz, 44kHz, 48kHz, 96kHz, and 192kHz over RTP.

This change adds mappings in the RTP engine layer for the remaining signed linear formats.

ASTERISK-24274 #close
Reported by: Frankie Chin


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

7 years agomain/stasis: Allow subscriptions to use a threadpool for message delivery
Matthew Jordan [Mon, 1 Dec 2014 17:59:21 +0000 (17:59 +0000)]
main/stasis: Allow subscriptions to use a threadpool for message delivery

Prior to this patch, all Stasis subscriptions would receive a dedicated
thread for servicing published messages. In contrast, prior to r400178
(see review, the subscriptions
shared a thread pool. It was discovered during some initial work on Stasis
that, for a low subscription count with high message throughput, the
threadpool was not as performant as simply having a dedicated thread per

For situations where a subscriber receives a substantial number of messages
and is always present, the model of having a dedicated thread per subscriber
makes sense. While we still have plenty of subscriptions that would follow
this model, e.g., AMI, CDRs, CEL, etc., there are plenty that also fall into
the following two categories:
* Large number of subscriptions, specifically those tied to endpoints/peers.
* Low number of messages. Some subscriptions exist specifically to coordinate
  a single message - the subscription is created, a message is published, the
  delivery is synchronized, and the subscription is destroyed.
In both of the latter two cases, creating a dedicated thread is wasteful (and
in the case of a large number of peers/endpoints, harmful). In those cases,
having shared delivery threads is far more performant.

This patch adds the ability of a subscriber to Stasis to choose whether or not
their messages are dispatched on a dedicated thread or on a threadpool. The
threadpool is configurable through stasis.conf.


ASTERISK-24533 #close
Reported by: xrobau
Tested by: xrobau

Merged revisions 428681 from

Merged revisions 428687 from

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

7 years agoapp_record: Fix bug where using the 'k' option and hanging up would trim 1/4 of a...
Joshua Colp [Mon, 1 Dec 2014 13:41:43 +0000 (13:41 +0000)]
app_record: Fix bug where using the 'k' option and hanging up would trim 1/4 of a second of the recording.

The Record dialplan function trims 1/4 of a second from the end of recordings in case
they are terminated because of DTMF. When hanging up, however, you don't want this to happen.
This change makes it so on hangup this does not occur.

ASTERISK-24530 #close
Reported by: Ben Smithurst
 app_record_v2.diff submitted by Ben Smithurst (license 6529)


Merged revisions 428653 from

Merged revisions 428654 from

Merged revisions 428655 from

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

7 years agochannel: Extend size of buffer for codecs in "core show channeltype" CLI command.
Joshua Colp [Mon, 1 Dec 2014 13:08:23 +0000 (13:08 +0000)]
channel: Extend size of buffer for codecs in "core show channeltype" CLI command.

The static buffer for codecs when invoking the "core show channeltype" CLI command
did not have enough room for all codecs. This has been extended so it does.

ASTERISK-24542 #close
Reported by: snuffy
 channeltype-tech.diff submitted by snuffy (license 5024)


Merged revisions 428632 from

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

7 years agotest_channel_feature_hooks.c: Fix unit test for DTMF hooks.
Richard Mudgett [Mon, 24 Nov 2014 20:39:01 +0000 (20:39 +0000)]
test_channel_feature_hooks.c: Fix unit test for DTMF hooks.

Fix the failing /channels/features/test_features_channel_dtmf unit test.

DTMF emulation does not work without a stream of packets to prod the
emulation code.


Merged revisions 428604 from

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

7 years agoDTMF hooks: Leaving channels need to push any collected digits into the bridge.
Richard Mudgett [Mon, 24 Nov 2014 20:32:29 +0000 (20:32 +0000)]
DTMF hooks: Leaving channels need to push any collected digits into the bridge.

Any partially collected DTMF digits for a DTMF hook need to be pushed into
the bridge when a channel leaves the bridging system as if there were a


Merged revisions 428601 from

Merged revisions 428602 from

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

7 years agomanager: Fix could not extend string messages.
Richard Mudgett [Fri, 21 Nov 2014 19:16:55 +0000 (19:16 +0000)]
manager: Fix could not extend string messages.

When shutting down Asterisk that has an active AMI connection, you get
several "failed to extend from %d to %d" messages because use of the
EVENT_FLAG_SHUTDOWN attempts to add all AMI permission strings to the

* Created MAX_AUTH_PERM_STRING to use when creating stack based struct
ast_str variables used with the authority_to_str() and
user_authority_to_str() functions instead of a variety of magic numbers
that could be too small.

* Added a special check for EVENT_FLAG_SHUTDOWN to authority_to_str() so
it will not attempt to add all permission level strings.


Merged revisions 428570 from

Merged revisions 428571 from

Merged revisions 428572 from

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

7 years agosorcery: Make is_object_field_registered handle field names that are regexes.
George Joseph [Fri, 21 Nov 2014 17:49:39 +0000 (17:49 +0000)]
sorcery: Make is_object_field_registered handle field names that are regexes.

As a result of, res_sorcery_realtime
was tossing database fields that didn't have an exact match to a sorcery
registered field.  This broke the ability to use regexes as field names which
manifested itself as a failure of res_pjsip_phoneprov_provider which uses
this capability.  It also broke handling of fields that start with '@' in
realtime but I don't think anyone noticed.

This patch does the following...
* Modifies ast_sorcery_fields_register to pre-compile the name regex.
* Modifies ast_sorcery_is_object_field_registered to test the regex if it
  exists instead of doing an exact strcmp.
* Modifies res_pjsip_phoneprov_provider with a few tweaks to get it to work
  with realtime.

Tested-by: George Joseph


Merged revisions 428543 from

Merged revisions 428544 from

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

7 years agosip.conf.sample - note that media_address does not change listen address, just the SDP
Olle Johansson [Fri, 21 Nov 2014 13:59:45 +0000 (13:59 +0000)]
sip.conf.sample - note that media_address does not change listen address, just the SDP

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

7 years agomain/bridge_basic: Fix features regressions introduced by r428165
Matthew Jordan [Fri, 21 Nov 2014 02:17:15 +0000 (02:17 +0000)]
main/bridge_basic: Fix features regressions introduced by r428165

In r428165, two bugs were introduced:

* Prior to entering the features retry loop, the buffer that holds the
  collected digits is wiped. However, this inadvertently wipes out the
  first collected digit on the first pass through, which is obtained
  in ast_stream_and_wait. This caused all of the features tests to fail.
* If ast_app_dtget returns a hangup (-1), the loop would retry incorrectly.
  If we detect a hangup, we have to stop trying the feature.

This patch fixes both issues.


Merged revisions 428505 from

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

7 years agoFix error with mixed address family ACLs.
Mark Michelson [Thu, 20 Nov 2014 16:37:58 +0000 (16:37 +0000)]
Fix error with mixed address family ACLs.

Prior to this commit, the address family of the first item in an ACL
was used to compare all incoming traffic. This could lead to traffic
of other IP address families bypassing ACLs.

ASTERISK-24469 #close

Reported by Matt Jordan
ASTERISK-24469-11.diff uploaded by Matt Jordan (License #6283)


Merged revisions 428402 from

Merged revisions 428417 from

Merged revisions 428422 from

Merged revisions 428425 from

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

7 years agoAST-2014-018 - func_db: DB Dialplan function permission escalation via AMI.
Kevin Harwell [Thu, 20 Nov 2014 16:35:21 +0000 (16:35 +0000)]
AST-2014-018 - func_db: DB Dialplan function permission escalation via AMI.

The DB dialplan function when executed from an external protocol (for instance
AMI), could result in a privilege escalation.

Asterisk now inhibits the DB function from being executed from an external
interface if the live_dangerously option is set to no.

Reported by: Gareth Palmer
patches: submitted by Gareth Palmer (license 5169)

Merged revisions 428331 from

Merged revisions 428363 from

Merged revisions 428409 from

Merged revisions 428413 from

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

7 years agoPJSIP ACLs: Fix ACLs not loading on startup and apply/acl issues on contact
Jonathan Rose [Thu, 20 Nov 2014 16:25:19 +0000 (16:25 +0000)]
PJSIP ACLs: Fix ACLs not loading on startup and apply/acl issues on contact

The biggest problem this patch fixes is that ACLs weren't previously being
loaded when the res_pjsip_acl module was loaded. Yikes. In addition, the
ACL options contact_permit and contact_acl were effectively interpreted as
contact_deny and this patch fixes that as well.

AST-1418 #close
Reported by: Thomas Thompson

ASTERISK-24531 #close
Reported by: Matt Jordan

Merged revisions 428333 from

Merged revisions 428343 from

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

7 years agoAST-2014-017 - app_confbridge: permission escalation/ class authorization.
Kevin Harwell [Thu, 20 Nov 2014 15:57:23 +0000 (15:57 +0000)]
AST-2014-017 - app_confbridge: permission escalation/ class authorization.

Confbridge dialplan function permission escalation via AMI and inappropriate
class authorization on the ConfbridgeStartRecord action. The CONFBRIDGE dialplan
function when executed from an external protocol (for instance AMI), could
result in a privilege escalation. Also, the AMI action “ConfbridgeStartRecord”
could also be used to execute arbitrary system commands without first checking
for system access. The AMI “ConfbridgeStopRecord” has also been updated to
only run under a system authorization.

Asterisk now inhibits the CONFBRIDGE function from being executed from an
external interface if the live_dangerously option is set to no.  Also, the
“ConfbridgeStartRecord” AMI action is now only allowed to execute under a
user with system level access.

Reported by: Gareth Palmer

Merged revisions 428332 from

Merged revisions 428334 from

Merged revisions 428339 from

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

7 years agoAST-2014-016: Fix crash when receiving an in-dialog INVITE with Replaces in res_pjsip...
Joshua Colp [Thu, 20 Nov 2014 14:56:24 +0000 (14:56 +0000)]
AST-2014-016: Fix crash when receiving an in-dialog INVITE with Replaces in res_pjsip_refer.

The implementation of INVITE with Replaces in res_pjsip_refer did not expect them to
occur in-dialog. As a result it would incorrectly attempt to hang up a channel it
thought was under its control. In reality the channel would be under the control of
another thread. When the other thread accessed the channel it would be accessing freed
memory and could crash.

This change makes res_pjsip_refer not act on an in-dialog INVITE with Replaces.

ASTERISK-24528 #close
Reported by: Joshua Colp

Merged revisions 428304 from

Merged revisions 428305 from

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

7 years agoAST-2014-015: Fix race condition in chan_pjsip when sending responses after a CANCEL...
Joshua Colp [Thu, 20 Nov 2014 14:49:48 +0000 (14:49 +0000)]
AST-2014-015: Fix race condition in chan_pjsip when sending responses after a CANCEL has been received.

Due to the serialized architecture of chan_pjsip there exists a race condition where a CANCEL may
be received and processed before responses (such as 180 Ringing, 183 Session Progress, and 200 OK)
are sent. Since the session is in an unexpected state PJSIP will assert when this is attempted.

This change makes it so that these responses are not sent on disconnected sessions.

ASTERISK-24471 #close
Reported by: yaron nahum

Merged revisions 428301 from

Merged revisions 428302 from

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

7 years agostringfields: Fix bug in ast_string_fields_copy.
Corey Farrell [Wed, 19 Nov 2014 19:32:23 +0000 (19:32 +0000)]
stringfields: Fix bug in ast_string_fields_copy.

ast_string_fields_copy relies on the fact that
__ast_string_field_release_active never previously
zeroed pool->used, so keeping the existing pointer
was "ok".  Now that existing pools can be reset to
'empty', it is important to set each field to
__ast_string_field_empty after releasing the memory.

ASTERISK-24535 #close
Reported by: Corey Farrell

Merged revisions 428272 from

Merged revisions 428273 from

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

7 years agoast_str: Fix improper member access to struct ast_str members.
Richard Mudgett [Wed, 19 Nov 2014 17:22:29 +0000 (17:22 +0000)]
ast_str: Fix improper member access to struct ast_str members.

Accessing members of struct ast_str outside of the string manipulation API
routines is invalid since struct ast_str is supposed to be treated as


Merged revisions 428244 from

Merged revisions 428245 from

Merged revisions 428246 from

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

7 years agores_pjsip_sdp_rtp: Add support for optimistic SRTP.
Joshua Colp [Wed, 19 Nov 2014 12:50:47 +0000 (12:50 +0000)]
res_pjsip_sdp_rtp: Add support for optimistic SRTP.

Optimistic SRTP is the ability to enable SRTP but not have it be
a fatal requirement. If SRTP can be used it will be, if not it won't be.
This gives you a better chance of using it without having your sessions
fail when it can't be.

Encrypt all the things!


Merged revisions 428222 from

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

7 years agoalembic: Fix alembic migration for 'moh_passthrough' option in res_pjsip.
Joshua Colp [Wed, 19 Nov 2014 12:45:47 +0000 (12:45 +0000)]
alembic: Fix alembic migration for 'moh_passthrough' option in res_pjsip.

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

7 years agores_pjsip_refer: Ensure Refer-To is NULL terminated and parse it as a URI.
Joshua Colp [Wed, 19 Nov 2014 11:51:23 +0000 (11:51 +0000)]
res_pjsip_refer: Ensure Refer-To is NULL terminated and parse it as a URI.

There is no guarantee that when we get a Refer-To that it will be NULL terminated.
As the URI parsing function requires it to be we now NULL terminate it.

Additionally parsing the Refer-To as a 'To' header is needless and it can
simply be done as a URI. This also fixes a problem where certain Refer-To headers
would not be parsed as a 'To' header causing the REFER to fail.

ASTERISK-24508 #close
Reported by: Beppo Mazzucato


Merged revisions 428195 from

Merged revisions 428196 from

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

7 years agoparking_tests.c: Add missing newline on a unit test message.
Richard Mudgett [Tue, 18 Nov 2014 19:12:02 +0000 (19:12 +0000)]
parking_tests.c: Add missing newline on a unit test message.

Merged revisions 428168 from

Merged revisions 428169 from

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

7 years agoAllow for transferer to retry when dialing an invalid extension.
Mark Michelson [Mon, 17 Nov 2014 16:58:52 +0000 (16:58 +0000)]
Allow for transferer to retry when dialing an invalid extension.

This allows for a configurable number of attempts for a transferer
to dial an extension to transfer the call to. For Asterisk 13, the
default values are such that upgrading between versions will not
cause a behaivour change. For trunk, though, the defaults will be
changed to be more user-friendly.


Merged revisions 428145 from

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

7 years agochan_sip: Fix theoretical leak of p->refer.
Corey Farrell [Mon, 17 Nov 2014 16:02:06 +0000 (16:02 +0000)]
chan_sip: Fix theoretical leak of p->refer.

If transmit_refer is called when p->refer is already allocated,
it leaks the previous allocation.  Updated code to always free
previous allocation during a new allocation.  Also instead of
checking if we have a previous allocation, always create a
clean record.

ASTERISK-15242 #close
Reported by: David Woolley

Merged revisions 428117 from

Merged revisions 428118 from

Merged revisions 428119 from

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

7 years agoapps/app_confbridge: Ensure 'normal' users hear message when last marked leaves
Matthew Jordan [Mon, 17 Nov 2014 15:27:33 +0000 (15:27 +0000)]
apps/app_confbridge: Ensure 'normal' users hear message when last marked leaves

When r428077 was made for ASTERISK-24522, it failed to take into account users
who are neither wait_marked nor end_marked. These users are *also* supposed to
hear the 'leader has left the conference' message. Granted, this behaviour is
a bit odd; however, that is how it used to work... and behaviour changes are
not good.

This patch ensures that if there are any 'normal' users present when the last
marked user leaves the conference, the message will still be played to them.

Note that this regression was caught by the Asterisk Test Suite's
confbridge_nominal test, which has a quirky combination of users.

Merged revisions 428113 from

Merged revisions 428114 from

Merged revisions 428115 from

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

7 years agoapp_confbridge: Don't play leader leaving prompt if no one will hear it
Matthew Jordan [Mon, 17 Nov 2014 03:08:11 +0000 (03:08 +0000)]
app_confbridge: Don't play leader leaving prompt if no one will hear it

Consider the following:
- A marked user in a conference
- One or more end_marked only users in the conference

When the marked users leaves, we will be in the conf_state_multi_marked state.
This currently will traverse the users, kicking out any who have the end_marked
flags. When they are kicked, a full ast_bridge_remove is immediately called on
the channels. At this time, we also unilaterally set the need_prompt flag.

When the need_prompt flag is set, we then playback a sound to the bridge
informing everyone that the leader has left; however, no one is left in the
bridge. This causes some odd behaviour for the end_marked users - they are
stuck waiting for the bridge to be unlocked. This results in them waiting for
5 or 6 seconds of dead air before hearing that they've been kicked.

Unfortunately, we do have to keep the bridge locked while we're playing back
the 'leader-has-left' prompt. If there are any wait_marked users in the
conference, this behaviour can't be easily changed - but we do make the case
of the end_marked users better with this patch.


ASTERISK-24522 #close
Reported by: Matt Jordan

Merged revisions 428077 from

Merged revisions 428078 from

Merged revisions 428079 from

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

7 years agochan_pjsip: Remove AOR check when dialing and one is specified.
Joshua Colp [Sun, 16 Nov 2014 21:13:17 +0000 (21:13 +0000)]
chan_pjsip: Remove AOR check when dialing and one is specified.

The AOR value may contain the name of an AOR or a full SIP URI.
Checking if the AOR exists can't be done as a result of this.

Merged revisions 428051 from

Merged revisions 428052 from

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

7 years agochan_sip: Fix bug where DTLS configuration from general would copy dtlsenable.
Joshua Colp [Sun, 16 Nov 2014 12:12:33 +0000 (12:12 +0000)]
chan_sip: Fix bug where DTLS configuration from general would copy dtlsenable.

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

7 years agocel/cel_odbc: Provide microsecond precision in 'eventtime' column when possible
Matthew Jordan [Sat, 15 Nov 2014 21:52:30 +0000 (21:52 +0000)]
cel/cel_odbc: Provide microsecond precision in 'eventtime' column when possible

This patch adds microsecond precision when inserting a CEL record into a table
with an "eventtime" column of type timestamp, instead of second precision. The
documentation (configs/cel_odbc.conf.sample) was already saying that the
eventtime column included microseconds precision, but that was not the case.

Also, without this patch, if you had a table with an "eventtime" column of
type varchar, you had millisecond precision. With this patch, you also get
microsecond precision in this case.


ASTERISK-24283 #close
Reported by: Etienne Lessard
  cel_odbc_time_precision.patch uploaded by Etienne Lessard (License 6394)

Merged revisions 427952 from

Merged revisions 427953 from

Merged revisions 427954 from

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

7 years agochan_pjsip: Add additional log message when an AOR is specified when dialing and...
Joshua Colp [Sat, 15 Nov 2014 21:36:44 +0000 (21:36 +0000)]
chan_pjsip: Add additional log message when an AOR is specified when dialing and it does not exist.

ASTERISK-24499 #close
Reported by: Rusty Newton

Merged revisions 428007 from

Merged revisions 428008 from

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

7 years agochan_motif / chan_pjsip: Fix incorrect "No such module" messages when reloading.
Joshua Colp [Sat, 15 Nov 2014 19:01:21 +0000 (19:01 +0000)]
chan_motif / chan_pjsip: Fix incorrect "No such module" messages when reloading.

For chan_motif the direct return value of the underlying config options framework
was passed back. This can relay various states which the module loader would not
interpet as success. It has been changed so only on errors will it report back
an error.

For chan_pjsip the code implemented a dummy reload function which always
returned an error. This has been removed as all configuration is held within
res_pjsip instead.

ASTERISK-23651 #close
Reported by: Rusty Newton

Merged revisions 427981 from

Merged revisions 427982 from

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

7 years agores_pjsip: Enforce requirements for session timer minimum expiration period and norma...
Joshua Colp [Sat, 15 Nov 2014 18:29:12 +0000 (18:29 +0000)]
res_pjsip: Enforce requirements for session timer minimum expiration period and normal expiration period.

This change enforces the requirements in PJSIP for session timer configuration. The minimum
expiration period must be 90 seconds or higher and the normal expiration period can not
be lower than the minimum expiration period. If either of these were done the code would
assert at session setup time.

ASTERISK-24336 #close
Reported by: Leon Rowland

Merged revisions 427978 from

Merged revisions 427979 from

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

7 years agochan_sip: Add support for setting DTLS configuration in the general section.
Joshua Colp [Sat, 15 Nov 2014 16:31:24 +0000 (16:31 +0000)]
chan_sip: Add support for setting DTLS configuration in the general section.

Configuration of DTLS in the general section will be applied to any users
or peers. If configuration exists at their level it overrides the general
section values.

ASTERISK-24128 #close
Reported by: Michael K.
  dtls_default_settings.patch submitted by Michael K. (license 6621)


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

7 years agotests/test_cel: Unlock bridge on off nominal paths
Matthew Jordan [Fri, 14 Nov 2014 21:51:22 +0000 (21:51 +0000)]
tests/test_cel: Unlock bridge on off nominal paths

If the test fails due to memory allocation errors, we may as well attempt to
unlock the bridge on the way out.

Merged revisions 427927 from

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

7 years agoDocumentation: Revise explanation of cdr.conf option 'Unanswered'
Jonathan Rose [Fri, 14 Nov 2014 18:12:05 +0000 (18:12 +0000)]
Documentation: Revise explanation of cdr.conf option 'Unanswered'

ASTERISK-24279 #close
Reported by: Matt Jordan

Merged revisions 427901 from

Merged revisions 427902 from

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

7 years agostun: correct attribute string padding to match rfc
Scott Griepentrog [Fri, 14 Nov 2014 15:52:21 +0000 (15:52 +0000)]
stun: correct attribute string padding to match rfc

When sending the USERNAME attribute in an RTP STUN
response, the implementation in append_attr_string
passed the actual length, instead of padding it up
to a multiple of four bytes as required by the RFC
3489.  This change adds separate variables for the
string and padded attributed lengths, and performs
padding correctly.

Reported by: Thomas Arimont

Merged revisions 427874 from

Merged revisions 427875 from

Merged revisions 427876 from

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

7 years agoFix race condition that could result in ARI transfer messages not being sent.
Mark Michelson [Fri, 14 Nov 2014 15:28:42 +0000 (15:28 +0000)]
Fix race condition that could result in ARI transfer messages not being sent.

From reviewboard:

"During blind transfer testing, it was noticed that tests were failing
occasionally because the ARI blind transfer event was not being sent.
After investigating, I detected a race condition in the blind transfer
code. When blind transferring a single channel, the actual transfer
operation (i.e. removing the transferee from the bridge and directing
them to the proper dialplan location) is queued onto the transferee
bridge channel. After queuing the transfer operation, the blind transfer
Stasis message is published. At the time of publication, snapshots of
the channels and bridge involved are created. The ARI subscriber to the
blind transfer Stasis message then attempts to determine if the bridge
or any of the involved channels are subscribed to by ARI applications.
If so, then the blind transfer message is sent to the applications. The
way that the ARI blind transfer message handler works is to first see
if the transferer channel is subscribed to. If not, then iterate over
all the channel IDs in the bridge snapshot and determine if any of
those are subscribed to. In the test we were running, the lone
transferee channel was subscribed to, so an ARI event should have been
sent to our application. Occasionally, though, the bridge snapshot did
not have any channels IDs on it at all. Why?

The problem is that since the blind transfer operation is handled by a
separate thread, it is possible that the transfer will have completed and
the channels removed from the bridge before we publish the blind transfer
Stasis message. Since the blind transfer has completed, the bridge on
which the transfer occurred no longer has any channels on it, so the
resulting bridge snapshot has no channels on it. Through investigation of
the code, I found that attended transfers can have this issue too for the
case where a transferee is transferred to an application."

The fix employed here is to decouple the creation of snapshots for the transfer
messages from the publication of the transfer messages. This way, snapshots
can be created to reflect what they are at the time of the transfer operation.


Merged revisions 427848 from

Merged revisions 427870 from

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

7 years agoapp_confbridge: Play "leader has left" sound even when musiconhold is enabled.
Joshua Colp [Fri, 14 Nov 2014 14:56:53 +0000 (14:56 +0000)]
app_confbridge: Play "leader has left" sound even when musiconhold is enabled.

Currently if the leader of a conference bridge leaves any participant
that has musiconhold enabled will not hear the "leader has left" sound.
This is because musiconhold is started and THEN the sound is played.

This change makes it so that the sound is played and THEN musiconhold
is started. This provides a better experience for users as they may not
have known previously why they went back to musiconhold.


Merged revisions 427844 from

Merged revisions 427845 from

Merged revisions 427846 from

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

7 years agoFix race condition where duplicated requests may be handled by multiple threads.
Mark Michelson [Fri, 14 Nov 2014 14:40:17 +0000 (14:40 +0000)]
Fix race condition where duplicated requests may be handled by multiple threads.

This is the Asterisk 13 version of the patch. The main difference is in the pubsub
code since it was completely refactored between Asterisk 12 and 13.


Merged revisions 427841 from

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

7 years agores_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash
Kevin Harwell [Thu, 13 Nov 2014 22:26:56 +0000 (22:26 +0000)]
res_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash

When using a non-default sorcery wizard (in this instance realtime) for
outbound registrations and after adding in an appropriate call to
ast_sorcery_apply_config() (since it is missing) Asterisk will crash after
a stack overflow occurs due to the code infinitely recursing.  The fix entails
removing the outbound registration state dependency from the outbound
registration sorcery object and instead keeping an in memory container that
can be used to lookup the state when needed.

Reported by: Mark Michelson

Merged revisions 427814 from

Merged revisions 427815 from

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

7 years agoStasis: Fix StasisEnd message ordering
Kinsey Moore [Thu, 13 Nov 2014 15:46:48 +0000 (15:46 +0000)]
Stasis: Fix StasisEnd message ordering

This change corrects message ordering in cases where a channel-related
message can be received after a Stasis/ARI application has received the
StasisEnd message. The StasisEnd message was being passed to
applications directly without waiting for the channel topic to empty.

As a result of this fix, other bugs were also identified and fixed:
* StasisStart messages were also being sent directly to apps and are
  now routed through the stasis message bus properly
* Masquerade monitor datastores were being removed at the incorrect
  time in some cases and were causing StasisEnd messages to not be sent
* General refactoring where necessary for the above
* Unsubscription on StasisEnd timing changes to prevent additional
  messages from following the StasisEnd when they shouldn't

A channel sanitization function pointer was added to reduce processing
and AO2 lookups.

ASTERISK-24501 #close
Reported by: Matt Jordan

Merged revisions 427788 from

Merged revisions 427789 from

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

7 years agomain/rtp_engine: Fix crash when processing more than one RTCP report info block
Matthew Jordan [Thu, 13 Nov 2014 00:23:20 +0000 (00:23 +0000)]
main/rtp_engine: Fix crash when processing more than one RTCP report info block

Asterisk - in res_rtp_asterisk - only understands a single RTCP report info
block. When the RTCP information was refactored in the RTP Engine to be pushed
over the Stasis message bus, I put in the hooks into the engine to handle
multiple RTCP report info blocks, in the hope that a future RTP implementation
would be able to provide that data. Unfortunately, res_rtp_asterisk has a
tendency to "lie":
(1) It will send RTCP reports with a reception_report_count greater than 1
    (which is pulled directly from the RTCP packet itself, so that part is
(2) It will only provide a single report block

When the rtp_engine goes to convert this to a JSON blob, hilarity ensues as it
looks for a report block that doesn't exist.

This patch updates the rtp_engine to be a bit more skeptical about what it is
presented with. While this could also be fixed in res_rtp_asterisk, this patch
prefers to fix it in the engine for two reasons:
(1) The engine is designed to work with multiple RTP implementation, and hence
    having it be more robust is a good thing (tm)
(2) res_rtp_asterisk's handling of RTCP information is "fun". It should report
    the correct reception_report_count; ideally it should also be giving us all
    of the blocks - but it is *definitely* not designed to do that. Going down
    that road is a non-trivial effort.


ASTERISK-24489 #close
Reported by: Gregory Malsack
Tested by: Gregory Malsack

ASTERISK-24498 #close
Reported by: Beppo Mazzucato
Tested by: Beppo Maazucato

Merged revisions 427762 from

Merged revisions 427763 from

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

7 years agoFix leak in AMI Action Bridge
Corey Farrell [Wed, 12 Nov 2014 20:40:59 +0000 (20:40 +0000)]
Fix leak in AMI Action Bridge

Add missing reference cleanup for newly created bridge.

Reported by: Stefan Engström

Merged revisions 427736 from

Merged revisions 427737 from

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

7 years agopbx: Fix off-nominal case where a freed extension may still be used.
Joshua Colp [Wed, 12 Nov 2014 16:13:15 +0000 (16:13 +0000)]
pbx: Fix off-nominal case where a freed extension may still be used.

If during the operation of adding an extension a priority is added but
fails it is possible for the extension to be freed but still exist in
the PBX core. If this occurs subsequent lookups may try to access the
extension and end up in freed memory.

This change removes the extension from the PBX core when the priority
addition fails and then frees the extension.

ASTERISK-24444 #close
Reported by: Leandro Dardini


Merged revisions 427709 from

Merged revisions 427710 from

Merged revisions 427711 from

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

7 years agoFix compiler error when using ./configure --enable-dev-mode --enable-coverage
Corey Farrell [Wed, 12 Nov 2014 13:47:30 +0000 (13:47 +0000)]
Fix compiler error when using ./configure --enable-dev-mode --enable-coverage

When DONT_OPTIMIZE is enabled with dev-mode, it causes a shadow compilation
to be done with output to /dev/null.  This can cause errors with coverage
when GCC attempts to write to /dev/null.gcno.  This change disables
coverage for the shadow compilation.

ASTERISK-24502 #close
Reported by: Corey Farrell

Merged revisions 427682 from

Merged revisions 427683 from

Merged revisions 427684 from

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

7 years agomanager: Fix HTTP connection reference leaks.
Corey Farrell [Sun, 9 Nov 2014 08:01:18 +0000 (08:01 +0000)]
manager: Fix HTTP connection reference leaks.

Fix reference leak that happens if (session && !blastaway).

ASTERISK-24505 #close
Reported by: Corey Farrell

Merged revisions 427641 from

Merged revisions 427642 from

Merged revisions 427643 from

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

7 years agochannels/chan_mgcp: Fix regression which causes gateways to be skipped
Matthew Jordan [Sun, 9 Nov 2014 00:38:41 +0000 (00:38 +0000)]
channels/chan_mgcp: Fix regression which causes gateways to be skipped

In r227276, a while loop was turned into a for loop. Unfortunately, a portion
of the while loop was left in the code such that, when a static gateway is
encountered in the list of MGCP gateways, the next gateway would be skipped.
At best, we would simply flip past a gateway; at worst, this could lead to a

ASTERISK-24500 #close
Reported by: Xavier Hienne
  chan_mgcp.patch uploaded by Xavier Hienne (License 6657)

Merged revisions 427613 from

Merged revisions 427614 from

Merged revisions 427615 from

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

7 years agoaddons/chan_mobile: Increase buffer size of UCS2 encoded SMS messages
Matthew Jordan [Sun, 9 Nov 2014 00:26:57 +0000 (00:26 +0000)]
addons/chan_mobile: Increase buffer size of UCS2 encoded SMS messages

When UCS2 character encoding is used, one symbol in national language can be
expanded to 4 bytes. The current buffer used for receiving message in
do_monitor_phone is 256 bytes, which is not large enough for incoming messages.

For example:
* AT+CMGR phone response prefix
  '+CMGR: "REC UNREAD","+7**********",,"14/10/29,13:31:39+12"\r\n' - 60 bytes
* SMS body with UCS2 encoding (max) - 280 bytes
* AT+CMGR phone response suffix '\r\n\r\nOK\r\n' - 8 bytes
* Terminating null character - 1 byte

This results in a needed buffer size of 349 bytes. Hence, this patch opts for a
350 byte buffer.

ASTERISK-24468 #close
Reported by: Dmitriy Bubnov
  chan_mobile-1_8.diff uploaded by Dmitriy Bubnov (License 6651)
  chan_mobile-trunk.diff uploaded by Dmitry Bubnov (License 6651)

Merged revisions 427607 from

Merged revisions 427610 from

Merged revisions 427611 from

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

7 years agoapp_voicemail: Fix enhancement that allowed multiple recipients in To: header
Matthew Jordan [Sun, 9 Nov 2014 00:14:56 +0000 (00:14 +0000)]
app_voicemail: Fix enhancement that allowed multiple recipients in To: header

An issue existed in r420577, which added multiple recipients to voicemail
emails. The patch, when looking at the intended recipients, looked ahead for
the '|' character inside a while loop which already had pulled out the
appropriate field parsing on the '|' character. This would cause it to skip
the recipients.

This patch fixes it such that it relies completely on the while loop to parse
through the e-mail fields.

Note that the original author of the patch looked at this fix and approved it.

ASTERISK-24250 #close
Reported by: abelbeck
  voicemail-420577-to-comma-fix.diff uploaded by abelbeck (License 5903)

Merged revisions 427585 from

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

7 years agobridge_native_rtp: Fix T.38 issues with remote bridges
Matthew Jordan [Sun, 9 Nov 2014 00:04:30 +0000 (00:04 +0000)]
bridge_native_rtp: Fix T.38 issues with remote bridges

After r425242 the fax/sip/directmedia_reinvite_t38 test started failing due to
the surviving channel not being re-INVITEd back from T.38 to audio. This patch
fixes that bug - a deeper explanation of what happened follows.

When two RTP channels are in a native bridge, the bridging layer will
investigate each via the get_rtp_info glue callback. This callback returns the
native bridge preference of the channel *at that moment in time* (that part is
key). At different points during the bridging, the native bridging layer will
inform the RTP capable channels of the status of the bridge via the update_peer
glue callback.

In a T.38 scenario with audio direct media, the sequence of events will often
look like the following:
 * SIP/A and SIP/B both have audio and enter a native bridge.
 * Asterisk re-INVITEs audio between SIP/A and SIP/B directly (via an
   update_peer callback).
 * SIP/A sends a re-INVITE to T.38, which causes Asterisk to send a re-INVITE
   to T.38 to SIP/B. Assuming everyone 200 OKs the process, the UDPTL stack
   receives UDPTL packets in Asterisk from both endpoints. From the perspective
   of the channels, we are now in a local bridge for T.38, even though we are
   technically still in a remote bridge in bridge_native_rtp. (YAY!)
 * When one side hangs up, bridge_native_rtp is told to stop bridging. It then
   re-evaluates the channels and asks them how they are bridged - and since
   T.38 is enabled, they reply with a Local bridge (which is correct), but is
   wrong because the audio portion is still technically in a remote bridge.
 * Asterisk releases the surviving channel, whose audio is *not* re-INVITED
   back to Asterisk as bridge_native_rtp incorrectly assumes that it was in a
   local bridge.

Ironically, prior to r425242, this used to work mostly due to a fluke in the
bridging layer.

The purpose of the get_rtp_info callback shouldn't be modified: it should tell
the bridging layer what kind of bridge the channel prefers at that moment in
time. If you have T.38 enabled, that *must* be a local bridge, as the UDPTPL
stack must be in the media path. As such, this patch does not modify that
part of the code.

However, we have to tell the channels to re-evaluate themselves when they come
out of a native bridge, since we can no longer trust the get_rtp_info callbacks
when the native bridge is being stopped. Something else may have changed in the
channels, and they may now be lying to us. As such, this patch makes it so that
we unilaterally tell the channels that they are no longer bridged via the
update_peer callback. This is actually what the channels expect anyway: code in
both chan_sip and chan_pjsip's callbacks look at the T.38 state and - if they
were in T.38 - send a re-INVITE to get the audio back to Asterisk.


Merged revisions 427582 from

Merged revisions 427583 from

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

7 years agochan_console: Fix reference leaks to pvt.
Corey Farrell [Sat, 8 Nov 2014 18:20:43 +0000 (18:20 +0000)]
chan_console: Fix reference leaks to pvt.

Fix a bunch of calls to get_active_pvt
where the reference is never released.

ASTERISK-24504 #close
Reported by: Corey Farrell

Merged revisions 427554 from

Merged revisions 427555 from

Merged revisions 427557 from

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

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