8 years agoast-db-manage/cdr/ Don't fail if a config file can't be loaded
Matthew Jordan [Wed, 28 May 2014 17:44:49 +0000 (17:44 +0000)]
ast-db-manage/cdr/ Don't fail if a config file can't be loaded

When generating SQL files via the repotools script, a
configuration object is used programatically with SQLAlechemy, as opposed to
a configuration file. This patch ignores failures to interpret a config file,
as ... there isn't one in this case.

Merged revisions 414763 from

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

8 years agores_pjsip_session: Fix leaked video RTP ports.
Richard Mudgett [Wed, 28 May 2014 16:56:07 +0000 (16:56 +0000)]
res_pjsip_session: Fix leaked video RTP ports.

Simply enabling PJSIP to negotiage a video codec (e.g., h264) would leak
video RTP ports if the codec were not negotiated by an incoming call.

* Made add_sdp_streams() associate the handler with the media stream if
the handler handled the media stream.  Otherwise, when the
ast_sip_session_media object was destroyed it didn't know how to clean up
the RTP resources.

* Fixed sdp_requires_deferral() associating the handler with the media
stream when deciding if the SDP processing needs to be deferred for T.38.
Like the leaked video RTP ports, the T.38 handler needs to clean up
allocated resources from deciding if SDP processing needs to be deffered.

* Cleaned up some dead code in handle_incoming_sdp() and

ASTERISK-23721 #close
Reported by: cervajs


Merged revisions 414749 from

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

8 years agoapp_agent_pool: Return to dialplan if the agent fails to ack the call.
Richard Mudgett [Wed, 28 May 2014 16:34:47 +0000 (16:34 +0000)]
app_agent_pool: Return to dialplan if the agent fails to ack the call.

Improvements to the agent pool functionality.

* AgentRequest no longer hangs up the caller if the agent fails to connect
with the caller.  It now continues in the dialplan.

* AgentRequest returns AGENT_STATUS set to NOT_CONNECTED if the agent
failed to connect with the call.  Most likely because the agent did not
acknowledge the call in time or got disconnected.

* The agent alerting play file configured by the agent.conf custom_beep
option can now be disabled by setting the option to an empty string.  The
agent is effectively alerted to a call presence when MOH stops.

* Fixed bridge reference leak when the agent connects with a caller.

ASTERISK-23499 #close
Reported by: Matt Jordan


Merged revisions 414747 from

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

8 years agores_config_odbc: Use dynamically sized buffers to store row data so values do not...
Joshua Colp [Wed, 28 May 2014 11:37:50 +0000 (11:37 +0000)]
res_config_odbc: Use dynamically sized buffers to store row data so values do not get truncated.

ASTERISK-23582 #close
ASTERISk-23582 #comment Reported by: Walter Doekes


Merged revisions 414693 from

Merged revisions 414694 from

Merged revisions 414695 from

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

8 years agochan_unistim: Unlock mutex in rare OOM condition.
Walter Doekes [Wed, 28 May 2014 09:43:53 +0000 (09:43 +0000)]
chan_unistim: Unlock mutex in rare OOM condition.

#ASTERISK-23792 #close
Reported by: Peter Whisker


Merged revisions 414677 from

Merged revisions 414678 from

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

8 years agochan_sip: Start session timer at 200, not at INVITE.
Walter Doekes [Tue, 27 May 2014 21:23:16 +0000 (21:23 +0000)]
chan_sip: Start session timer at 200, not at INVITE.

Asterisk started counting the session timer at INVITE while the other
end correctly started at 200. This meant that for short session-expiries
(90 seconds) combined with long ringing times (e.g. 30 seconds), asterisk
would wrongly assume that the timer was hit before the other end thought
it was time to send a session refresh. This resulted in prematurely
ended calls.

This changes the session timer to start counting first at 200 like RFC
says it should.

(Also removed a few excess NULL checks that would never hit, because if
they did, asterisk would have crashed already.)

ASTERISK-22551 #close
Reported by: i2045


Merged revisions 414620 from

Merged revisions 414628 from

Merged revisions 414636 from

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

8 years agores_config_odbc: Fix old and new ast_string_field memory leaks.
Walter Doekes [Tue, 27 May 2014 20:03:00 +0000 (20:03 +0000)]
res_config_odbc: Fix old and new ast_string_field memory leaks.

The ODBC realtime driver uses ^NN parameter encoding to cope with the
special meaning of the semi-colon. A semi-colon in a field is
interpreted as if the key was supplied twice, something which isn't
otherwise possible with fixed database columns. E.g. allow=alaw;ulaw
is parsed as allow=alaw and allow=ulaw. A literal semi-colon is
rewritten to ^3B when stored in the database.

The module uses a stringfield to efficiently store the encoded
parameters. However, this stringfield wasn't always freed in some
off-nominal cases.

Commit r413241 fixed initialization so the encoding for INSERT and
DELETE queries wouldn't crash. (Only SELECTs and UPDATEs worked
apparently.) But that commit forgot the frees. This change cleans
that up.


Merged revisions 414564 from

Merged revisions 414565 from

Merged revisions 414566 from

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

8 years agocore_unreal: Prevent double free of core_unreal pvt
Matthew Jordan [Sun, 25 May 2014 02:37:03 +0000 (02:37 +0000)]
core_unreal: Prevent double free of core_unreal pvt

When a channel is destroyed (such as via ast_channel_release in off nominal
paths in core_unreal), it will attempt to free (via ast_free) the channel tech
pvt. This is problematic for a few reasons:
1. The channel tech pvt is an ao2 object in core_unreal. Free'ing the pvt
   directly is no good.
2. The channel tech pvt's reference count is dropped just prior to calling
   ast_channel_release, resulting in the pvt's destruction. Hence, the
   channel destructor is free'ing an invalid pointer.

This patch keeps the dropping of the reference count, but sets the pvt to
NULL on the channel prior to releasing it. This models what would occur if the
channel was hung up directly.

Merged revisions 414542 from

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

8 years agotest_cel: Fix unit tests broken due to event def changes from res_corosync
Matthew Jordan [Fri, 23 May 2014 17:36:35 +0000 (17:36 +0000)]
test_cel: Fix unit tests broken due to event def changes from res_corosync

This patch instructs test_cel to skip any IE types it doesn't care about. The
addition of the raw and bitfield types caused the tests to fail.

Merged revisions 414528 from

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

8 years agoFix signed/unsigned build warnings
Kinsey Moore [Fri, 23 May 2014 14:36:40 +0000 (14:36 +0000)]
Fix signed/unsigned build warnings

Merged revisions 414474 from

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

8 years agoapp_meetme: Don't interrupt MOH for waitmarked users.
Richard Mudgett [Thu, 22 May 2014 16:19:13 +0000 (16:19 +0000)]
app_meetme: Don't interrupt MOH for waitmarked users.

Occasionally, when the last marked user leaves the conference, waitmarked
users don't get MOH if MOH is supposed to be played while a waitmarked
user is waiting for another marked user.

* Made not interrupt MOH when the user is a waitmarked user.  The
waitmarked user doesn't need to hear any leave announcements from the
conference as the user would have already heard different leave
announcements if they were enabled.  Apparently DAHDI occasionally sends
unending non-silent streams to these users or a normal user still in the
conference has continuous high background noise.  These non-silent streams
cause MOH to be suspended while the never ending "announcement" is played.

Issue caused by ASTERISK-13680.

AST-1349 #close
Reported by: Tyler Stewart


Merged revisions 414401 from

Merged revisions 414402 from

Merged revisions 414404 from

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

8 years agoARI: Add ability to raise arbitrary User Events
Scott Griepentrog [Thu, 22 May 2014 16:09:51 +0000 (16:09 +0000)]
ARI: Add ability to raise arbitrary User Events

User events can now be generated from ARI.  Events can be signalled with
arbitrary json variables, and include one or more of channel, bridge, or
endpoint snapshots.  An application must be specified which will receive
the event message (other applications can subscribe to it).  The message
will also be delivered via AMI provided a channel is attached.  Dialplan
generated user event messages are still transmitted via the channel, and
will only be received by a stasis application they are attached to or if
the channel is subscribed to.

This change also introduces the multi object blob mechanism used to send
multiple snapshot types in a single message.  The dialplan app UserEvent
was also changed to use multi object blob, and a new stasis message type
created to handle them.

ASTERISK-22697 #close

Merged revisions 414405 from

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

8 years agores_pjsip_refer: Fix bugs involving Parking/PJSIP/transfers
Jonathan Rose [Thu, 22 May 2014 15:52:30 +0000 (15:52 +0000)]
res_pjsip_refer: Fix bugs involving Parking/PJSIP/transfers

PJSIP would never send the final 200 Notify for a blind transfer
when transferring to parking. This patch fixes that. In addition,
it fixes a reference leak when performing blind transfers to
non-bridging extensions.


Merged revisions 414400 from

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

8 years agoUPGRADE: Add note for REF_DEBUG flag
Matthew Jordan [Thu, 22 May 2014 14:02:19 +0000 (14:02 +0000)]
UPGRADE: Add note for REF_DEBUG flag

Merged revisions 414345 from

Merged revisions 414346 from

Merged revisions 414347 from

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

8 years agores_corosync: Update module to work with Stasis (and compile)
Matthew Jordan [Thu, 22 May 2014 12:01:37 +0000 (12:01 +0000)]
res_corosync: Update module to work with Stasis (and compile)

This patch fixes res_corosync such that it works with Asterisk 12. This
restores the functionality that was present in previous versions of
Asterisk, and ensures compatibility with those versions by restoring the
binary message format needed to pass information from/to them.

The following changes were made in the core to support this:
 * The event system has been partially restored. All event definition and
   event types in this patch were pulled from Asterisk 11. Previously, we had
   hoped that this information would live in res_corosync; however, the
   approach in this patch seems to be better for a few reasons:
   (1) Theoretically, ast_events can be used by any module as a binary
       representation of a Stasis message. Given the structure of an ast_event
       object, that information has to live in the core to be used universally.
       For example, defining the payload of a device state ast_event in
       res_corosync could result in an incompatible device state representation
       in another module.
   (2) Much of this representation already lived in the core, and was not
       easily extensible.
   (3) The code already existed. :-)
 * Stasis message types now have a message formatter that converts their
   payload to an ast_event object.
 * Stasis message forwarders now handle forwarding to themselves. Previously
   this would result in an infinite recursive call. Now, this simply creates a
   new forwarding object with no forwards set up (as it is the thing it is
   forwarding to). This is advantageous for res_corosync, as returning NULL
   would also imply an unrecoverable error. Returning a subscription in this
   case allows for easier handling of message types that are published directly
   to an aggregate topic that has forwarders.


ASTERISK-22912 #close
ASTERISK-22372 #close

Merged revisions 414330 from

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

8 years agocore_unreal: Only block media frames when a generator is on both ends of an unreal...
Richard Mudgett [Wed, 21 May 2014 22:24:40 +0000 (22:24 +0000)]
core_unreal: Only block media frames when a generator is on both ends of an unreal channel.

The fix for ASTERISK-12292 was a bit too aggressive.  You could have
generators pointed at each other on local channels but need to get other
kinds of frames such as DTMF or CONNECTED_LINE frames accross.

Merged revisions 414269 from

Merged revisions 414270 from

Merged revisions 414272 from

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

8 years agopbx.c: prevent potential crash from recursive replace()
Scott Griepentrog [Wed, 21 May 2014 19:08:39 +0000 (19:08 +0000)]
pbx.c: prevent potential crash from recursive replace()

Recurisve usage of replace() resulted in corruption of the
temporary string storage and potential crash.  By changing
the string to be allocated separtely per instance, this is

ASTERISK-23650 #comment Reported by: Roel van Meer
ASTERISK-23650 #close


Merged revisions 414214 from

Merged revisions 414215 from

Merged revisions 414216 from

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

8 years agoReplace __ast_answer with ast_raw_answer in app_control_answer
Paul Belanger [Mon, 19 May 2014 19:52:34 +0000 (19:52 +0000)]
Replace __ast_answer with ast_raw_answer in app_control_answer

While load testing an ARI application, I noticed asterisk was returning HTTP 500
internal server errors on channels/:id/answer.  After talking to #asterisk-dev,
the issue appeared to be a lack of media flowing after __ast_answer() was
called.  So now, we call ast_raw_answer instead and no longer wait for media.

ASTERISK-23758 #close

Merged revisions 414195 from

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

8 years agoUndo r414123
Matthew Jordan [Mon, 19 May 2014 01:10:23 +0000 (01:10 +0000)]
Undo r414123

The Test Suite caught a few problems, undoing until those are resolved

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

8 years agobridge_native_rtp/bridge_channel: Fix direct media issues due to frame hook
Matthew Jordan [Sun, 18 May 2014 20:38:02 +0000 (20:38 +0000)]
bridge_native_rtp/bridge_channel: Fix direct media issues due to frame hook

This patch fixes issues with direct media bridges that occur after a blind
transfer. These issues were caught by the (currently failing)
pjsip/transfers/blind_transfer/caller_direct_media test.

The test currently fails primarily for two reasons:
(1) When Bob and Charlie (the transfer target and the transfer destination)
    enter a bridge together, the framehook remains on the transfer target
    channel until both channels are in the bridge. As it consumes voice frames,
    the initial bridge type is a simple bridge. The framehook is removed when
    both channels are in the bridge; however, this does not currently cause the
    bridging framework to re-evaluate the bridge. This patch adds a
    AST_SOFTHANGUP_UNBRIDGE poke to the transfer target channel when a
    framehook is removed so the bridge can re-evaluate itself.

(2) When a channel leaves a native RTP bridge, it may be leaving due to being
    hung up. Sending a re-INVITE to a channel that is about to be hung up is
    not nice - in fact, there's a good chance we'll send the BYE request before
    the channel has had a chance to send back a 200 OK. To be somewhat nicer,
    this patch adds a function to channel.h that allows the bridging framework
    to query for exactly why a channel is leaving a bridge via the channel's
    soft hangup flags. This allows it to only send the re-INVITE if there's a
    chance the channel will survive the native bridging experience.


Merged revisions 414122 from

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

8 years agochan_dahdi: Fix analog dialtone detection.
Richard Mudgett [Fri, 16 May 2014 20:06:59 +0000 (20:06 +0000)]
chan_dahdi: Fix analog dialtone detection.

* Check if waitingfordt (waitfordialtone) is enabled in dahdi_read() to
allow the DSP to operate early enough to detect dialtone.

* Made use the correct variable in my_check_waitingfordt().

ASTERISK-23709 #close
Reported by: Steve Davies
      dialtone_detect_fix (license #5012) patch uploaded by Steve Davies


Merged revisions 414067 from

Merged revisions 414068 from

Merged revisions 414069 from

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

8 years agosig_pri.c: Pull the pri_dchannel() PRI_EVENT_RING case into its own function.
Richard Mudgett [Fri, 16 May 2014 17:32:44 +0000 (17:32 +0000)]
sig_pri.c: Pull the pri_dchannel() PRI_EVENT_RING case into its own function.

* Populate the CALLERID(ani2) value (and the special CALLINGANI2 channel
variable) with the ANI2 value in addition to the PRI specific ANI2 channel

* Made complete snapshot staging with the channel lock held.  All channel
snapshots need to be done while the channel lock is held.

Merged revisions 414050 from

Merged revisions 414051 from

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

8 years agoapp_meetme: Fix overwrite of DAHDI conference data structure.
Richard Mudgett [Thu, 15 May 2014 22:02:32 +0000 (22:02 +0000)]
app_meetme: Fix overwrite of DAHDI conference data structure.

Starting a conference recording using the admin menu overwrites the DAHDI
conference data structure used to modify the admin user's conference mute

* Made no longer pass the user's DAHDI conference data structure into the
menu functions.  The menu now uses its own DAHDI conference data
structure to start the recording channel.

* Moved the unlock conf->playlock to before playing the conf-full message.
No sense keeping the lock while that prompt is playing.  The user is never
going to get into the conference at that point.

Merged revisions 413991 from

Merged revisions 413992 from

Merged revisions 413993 from

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

8 years agores_musiconhold: Minor cleanup.
Walter Doekes [Wed, 14 May 2014 15:41:42 +0000 (15:41 +0000)]
res_musiconhold: Minor cleanup.

Fix a few free()'s that should be ast_free()'s. Reverted an old
workaround that isn't necessary. Reorder a tiny bit of code.
Remove a bit of commented-out code.


Merged revisions 413894 from

Merged revisions 413895 from

Merged revisions 413896 from

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

8 years agochan_sip: Add TLS and SRTP status to CLI command 'sip show channel'
Jonathan Rose [Tue, 13 May 2014 18:09:13 +0000 (18:09 +0000)]
chan_sip: Add TLS and SRTP status to CLI command 'sip show channel'

ASTERISK-23564 #close
Reported by: Patrick Laimbock

Merged revisions 413876 from

Merged revisions 413877 from

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

8 years agoh264: Fix H264 SDP payload format.
Walter Doekes [Tue, 13 May 2014 13:53:28 +0000 (13:53 +0000)]
h264: Fix H264 SDP payload format. says profile-level-id
takes 3 bytes in base16 (6 hex digits).

This fixes video setup in certain cases.

ASTERISK-23664 #close
ASTERISK-23664 #comment Patch r3530.patch uploaded by Guillaume Maudoux.

Merged revisions 413791 from

Merged revisions 413792 from

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

8 years agortp: Fix case typo in H263+ mime.
Walter Doekes [Tue, 13 May 2014 13:39:21 +0000 (13:39 +0000)]
rtp: Fix case typo in H263+ mime. says the canonical
mime subtype is "H263-1998", not "h263-1998". Original code was added
in r183101 on 2009-03-19 02:26:50 +0100.

This fixes issues with Polycom phones.

ASTERISK-23665 #close
ASTERISK-23665 #comment Patch r3529.patch uploaded by Guillaume Maudoux, backported by me.

Merged revisions 413787 from

Merged revisions 413788 from

Merged revisions 413789 from

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

8 years agochan_dahdi/sig_pri: Prevent unnecessary PROGRESS events when overlap dialing is enabled.
Richard Mudgett [Tue, 13 May 2014 00:35:31 +0000 (00:35 +0000)]
chan_dahdi/sig_pri: Prevent unnecessary PROGRESS events when overlap dialing is enabled.

When overlap dialing is enabled, the lack of inband audio available
information in the SETUP_ACKNOWLEDGE events causes an interoperability
problem with SIP.  sig_pri doesn't know if there is dialtone present when
a SETUP_ACKNOWLEDGE is received so it assumes it is there and posts an
AST_CONTROL_PROGRESS frame.  The SIP channel driver then sends out a 183
Session Progress and blocks the desired 180 Ringing message when the
ALERTING message comes in.

* Made the configure script detect if the installed version of libpri
supports the SETUP_ACKNOWLEDGE enhancements.

* Using the new API, made generate an AST_CONTROL_PROGRESS frame on an
incoming SETUP_ACKNOWLEDGE message when the message indicates inband audio
is present instead of assuming that dialtone is present.

* Using the new API, made SETUP_ACKNOWLEDGE send out an inband audio
available indication only if dialtone is expected.  The change also makes
the fallback behaviour of sending the PROGRESS message better by sending
it only if dialtone is expected.

* Changed receiving a PROCEEDING message to not generate an
AST_CONTROL_PROGRESS frame if the progress indication ie indicates
non-end-to-end-ISDN.  This helps interoperability with SIP.

* Changed sending a PROCEEDING message in response to an
AST_CONTROL_PROCEEDING frame to not indicate inband audio available.  It
was silly to do so anyway because the channel driver doesn't know if
inband audio is even available.  This helps interoperability with SIP.

This patch and a corresponding change in libpri work together to allow
Asterisk to control the inband audio available progress indication ie on
the SETUP_ACKNOWLEDGE message when dialtone is present.

AST-1338 #close
Reported by: Tyler Stewart


Merged revisions 413714 from

Merged revisions 413765 from

Merged revisions 413771 from

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

8 years agoFix compiler warning from GCC 4.10 fixup.
Richard Mudgett [Tue, 13 May 2014 00:23:45 +0000 (00:23 +0000)]
Fix compiler warning from GCC 4.10 fixup.

Merged revisions 413766 from

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

8 years agoapp_chanspy: Fix a test that was failing on account of r413551
Jonathan Rose [Mon, 12 May 2014 22:33:28 +0000 (22:33 +0000)]
app_chanspy: Fix a test that was failing on account of r413551

ASTERISK-23381 #close
ASTERISK-23381 #comment Reported by: Robert Moss

Merged revisions 413710 from

Merged revisions 413712 from

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

8 years agoframehooks: Add callback for determining if a hook is consuming frames of a specific...
Joshua Colp [Sun, 11 May 2014 02:09:10 +0000 (02:09 +0000)]
framehooks: Add callback for determining if a hook is consuming frames of a specific type.

In the past framehooks have had no capability to determine what frame types a hook
is actually interested in consuming. This has meant that code has had to assume they
want all frames, thus preventing native bridging.

This change adds a callback which allows a framehook to be queried for whether it
is consuming a frame of a specific type. The native RTP bridging module has also
been updated to take advantange of this, allowing native bridging to occur when
previously it would not.

ASTERISK-23497 #comment Reported by: Etienne Lessard
ASTERISK-23497 #close


Merged revisions 413681 from

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

8 years agoUndoing framehook support. Issues were uncovered by Bamboo.
Joshua Colp [Sun, 11 May 2014 01:09:06 +0000 (01:09 +0000)]
Undoing framehook support. Issues were uncovered by Bamboo.

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

8 years agoframehooks: Add callback for determining if a hook is consuming frames of a specific...
Joshua Colp [Sat, 10 May 2014 18:50:17 +0000 (18:50 +0000)]
framehooks: Add callback for determining if a hook is consuming frames of a specific type.

In the past framehooks have had no capability to determine what frame types a hook
is actually interested in consuming. This has meant that code has had to assume they
want all frames, thus preventing native bridging.

This change adds a callback which allows a framehook to be queried for whether it
is consuming a frame of a specific type. The native RTP bridging module has also
been updated to take advantange of this, allowing native bridging to occur when
previously it would not.

ASTERISK-23497 #comment Reported by: Etienne Lessard
ASTERISK-23497 #close


Merged revisions 413650 from

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

8 years agoFix 32bit build for func_env
Kinsey Moore [Fri, 9 May 2014 23:18:21 +0000 (23:18 +0000)]
Fix 32bit build for func_env

Merged revisions 413592 from

Merged revisions 413595 from

Merged revisions 413597 from

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

8 years agoAllow Asterisk to compile under GCC 4.10
Kinsey Moore [Fri, 9 May 2014 22:49:26 +0000 (22:49 +0000)]
Allow Asterisk to compile under GCC 4.10

This resolves a large number of compiler warnings from GCC 4.10 which
cause the build to fail under dev mode. The vast majority are
signed/unsigned mismatches in printf-style format strings.

Merged revisions 413586 from

Merged revisions 413587 from

Merged revisions 413588 from

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

8 years agohttp.c: Remove dead code.
Richard Mudgett [Fri, 9 May 2014 18:15:34 +0000 (18:15 +0000)]
http.c: Remove dead code.

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

8 years agoapp_chanspy: Fix a bug where Barge mode could fail
Jonathan Rose [Fri, 9 May 2014 17:03:41 +0000 (17:03 +0000)]
app_chanspy: Fix a bug where Barge mode could fail

If the barge audiohook was attached prior to the spyee and its peer
actually being bridged, the audiohook would not be applied and the
connected peer would not be able to hear audio from the spy when the
spy is in barge mode.

(closes issue ASTERISK-23381)
Reported by: Robert Moss

Merged revisions 413551 from

Merged revisions 413556 from

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

8 years agoapp_queue: Extend documentation for various Manager actions and events.
Joshua Colp [Thu, 8 May 2014 00:36:38 +0000 (00:36 +0000)]
app_queue: Extend documentation for various Manager actions and events.

Merged revisions 413485 from

Merged revisions 413486 from

Merged revisions 413487 from

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

8 years agoEnsure that presence state is decoded properly on Asterisk startup.
Mark Michelson [Wed, 7 May 2014 21:58:37 +0000 (21:58 +0000)]
Ensure that presence state is decoded properly on Asterisk startup.

The CustomPresence provider callback will automatically base64 decode
stored data if the 'e' option was present when the state was set. However,
since the provider callback was bypassed on Asterisk startup, encoded
presence subtypes and messages were being sent instead. This fix makes
it so the provider callback is always used when providing presence
state updates.

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

8 years agoapp_confbridge: Fixed "CBAnn" channels not going away.
Richard Mudgett [Wed, 7 May 2014 20:59:13 +0000 (20:59 +0000)]
app_confbridge: Fixed "CBAnn" channels not going away.

Fixed a ref leak in conf_handle_talker_cb() everytime the conference
bridge was found to report a channel's talker status change.  The
resulting leak caused the "CBAnn" channels and the conference bridge to
never be destroyed.

Thanks to Richard Kenner on the asterisk-user's list for locating the

Reported by: Richard Kenner

Merged revisions 413454 from

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

8 years agoapp_confbridge: Fix ref leak in CLI "confbridge kick" command.
Richard Mudgett [Wed, 7 May 2014 20:39:29 +0000 (20:39 +0000)]
app_confbridge: Fix ref leak in CLI "confbridge kick" command.

Fixed ref leak in the CLI "confbridge kick" command when the channel to be
kicked was not in the conference.

Merged revisions 413451 from

Merged revisions 413452 from

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

8 years agoFix encoding of custom prepare extra data.
Mark Michelson [Wed, 7 May 2014 17:56:04 +0000 (17:56 +0000)]
Fix encoding of custom prepare extra data.

res_config_odbc-take2.patch by John Hardin (License #6512)

Merged revisions 413396 from

Merged revisions 413397 from

Merged revisions 413398 from

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

8 years agoImprove XML sanitization in NOTIFYs, especially for presence subtypes and messages.
Mark Michelson [Wed, 7 May 2014 15:29:18 +0000 (15:29 +0000)]
Improve XML sanitization in NOTIFYs, especially for presence subtypes and messages.

Embedded carriage return line feed combinations may appear in presence subtypes
and messages since they may be derived from user input in an instant messenger
client. As such, they need to be properly escaped so that XML parsers do not
vomit when the messages are received.

Merged revisions 413372 from

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

8 years agoCheck for an act on failures to update contacts during registration.
Mark Michelson [Tue, 6 May 2014 17:47:20 +0000 (17:47 +0000)]
Check for an act on failures to update contacts during registration.

There was an underlying issue in a realtime backend where database updates
would fail. Since we were not checking for failure, we would end up in a
strange state where the old database entry was still present but Asterisk
thought that it had been updated. Now when an entry fails to update, we
print a warning and delete the old contact from sorcery so there is no
mismatch between foreground and backend state.

res_pjsip_registrar.patch by John Hardin (License #6512)

Merged revisions 413358 from

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

8 years agoEnsure that all parts of SQL UPDATEs and DELETEs are encoded.
Mark Michelson [Tue, 6 May 2014 17:12:19 +0000 (17:12 +0000)]
Ensure that all parts of SQL UPDATEs and DELETEs are encoded.

res_config_odbc.patch by John Hardin (License #6512)

Merged revisions 413304 from

Merged revisions 413305 from

Merged revisions 413306 from

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

8 years agoBlocked revisions 413282
Mark Michelson [Fri, 2 May 2014 20:37:00 +0000 (20:37 +0000)]
Blocked revisions 413282

Correct variable traversal logic in res_config_odbc's update_odbc function.

Closes issue ASTERISK-23675
Reported by Leando Dardini
asterisk-23675-odbc-linkedlist-traversal_12.diff uploaded by Michael L. Young (license #5026)

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

8 years agoPrevent crashes in res_config_odbc due to uninitialized string fields.
Mark Michelson [Fri, 2 May 2014 20:28:23 +0000 (20:28 +0000)]
Prevent crashes in res_config_odbc due to uninitialized string fields.

    odbc-crash.patch by John Hardin (License #6512)

Merged revisions 413241 from

Merged revisions 413251 from

Merged revisions 413258 from

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

8 years agoReturn the number of rows affected by a SQL insert, rather than an object ID.
Mark Michelson [Fri, 2 May 2014 20:07:08 +0000 (20:07 +0000)]
Return the number of rows affected by a SQL insert, rather than an object ID.

The realtime API specifies that the store callback is supposed to return the number
of rows affected. res_config_pgsql was instead returning an Oid cast as an int, which
during any nominal execution would be cast to 0. Returning 0 when more than 0 rows were
inserted causes problems to the function's callers.

To give an idea of how strange code can be, this is the necessary code change to fix
a device state issue reported against chan_pjsip in Asterisk 12+. The issue was that
the registrar would attempt to insert contacts into the database. Because of the 0
return from res_config_pgsql, the registrar would think that the contact was not successfully
inserted, even though it actually was. As such, even though the contact was query-able
and it was possible to call the endpoint, Asterisk would "think" the endpoint was unregistered,
meaning it would report the device state as UNAVAILABLE instead of NOT_INUSE.

The necessary fix applies to all versions of Asterisk, so even though the bug reported
only applies to Asterisk 12+, the code correction is being inserted into 1.8+.

Closes issue ASTERISK-23707
Reported by Mark Michelson

Merged revisions 413224 from

Merged revisions 413225 from

Merged revisions 413226 from

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

8 years agores_pjsip_refer: Add Referred-By header on INVITE for blind transfers.
Richard Mudgett [Fri, 2 May 2014 16:39:58 +0000 (16:39 +0000)]
res_pjsip_refer: Add Referred-By header on INVITE for blind transfers.

Per rfc3892, the Referred-By header in a REFER must be copied into the
referenced request (IE.  The outgoing INVITE to the transfer target).

* Automatically put the Referred-By header in the outgoing INVITE message
if the SIPREFERREDBYHDR channel variable is defined with a value.

* Made chan_sip.c:get_refer_info() set SIPREFERREDBYHDR for inheritance so
chan_pjsip has a better chance to interoperate.

* Fixed refer_blind_callback() and refer_incoming_refer_request() to not
modify the data in the pointer returned by pjsip_msg_find_hdr_by_name().
It seems wrong to modify that data since the calling routine doesn't own
the buffer.

ASTERISK-23501 #close
Reported by: John Bigelow


Merged revisions 413210 from

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

8 years agoParking: Add 'AnnounceChannel' argument to manager action 'Park'
Jonathan Rose [Fri, 2 May 2014 16:06:40 +0000 (16:06 +0000)]
Parking: Add 'AnnounceChannel' argument to manager action 'Park'

(closes ASTERISK-23397)
Reported by: Denis

Merged revisions 413196 from

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

8 years agoMake behavior of the PRESENCE_STATE 'e' option more consistent.
Mark Michelson [Thu, 1 May 2014 16:21:09 +0000 (16:21 +0000)]
Make behavior of the PRESENCE_STATE 'e' option more consistent.

When writing presence state, if 'e' is specified, then the presence state will
be stored in the astdb encoded. However, consumers of presence state events or those
that query for the presence state will be given decoded information. If base64 encoding
is desired for consumers, then the information can be base64-encoded manually and the
'e' option can be omitted.

closes issue ASTERISK-23671
Reported by Mark Michelson


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

8 years agoRemove unnecessary repetition checks from res_pjsip_exten_state
Mark Michelson [Thu, 1 May 2014 15:47:49 +0000 (15:47 +0000)]
Remove unnecessary repetition checks from res_pjsip_exten_state

The PBX core already takes care of ensuring that repeated state changes
are not communicated to exten state consumers. Because the check in res_pjsip_exten_state
was incomplete, it was causing valid presence state changes not to be sent out. For instance,
if the presence state did not change but the message or subtype did, then no presence-related
NOTIFY request would be sent out.

closes issue ASTERISK-23672
Reported by Mark Michelson

Merged revisions 413173 from

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

8 years agores_pjsip: Add the ability to configure ciphers based on name.
Joshua Colp [Thu, 1 May 2014 12:31:20 +0000 (12:31 +0000)]
res_pjsip: Add the ability to configure ciphers based on name.

Previously this code would only accept the OpenSSL identifier instead
of the documented name.

ASTERISK-23498 #close
ASTERISK-23498 #comment Reported by: Anthony Messina


Merged revisions 413159 from

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

8 years agochan_sip.c: Fixed off-nominal message iterator ref count and alloc fail issues.
Richard Mudgett [Wed, 30 Apr 2014 21:03:29 +0000 (21:03 +0000)]
chan_sip.c: Fixed off-nominal message iterator ref count and alloc fail issues.

* Fixed early exit in sip_msg_send() not destroying the message iterator.

* Made ast_msg_var_iterator_next() and ast_msg_var_iterator_destroy()
tolerant of a NULL iter parameter in case ast_msg_var_iterator_init()

* Made ast_msg_var_iterator_destroy() clean up any current message data

* Made struct ast_msg_var_iterator, ast_msg_var_iterator_init(),
ast_msg_var_iterator_next(), ast_msg_var_unref_current(), and
ast_msg_var_iterator_destroy() use iter instead of i.

* Eliminated RAII_VAR usage in res_pjsip_messaging.c:vars_to_headers().

Merged revisions 413139 from

Merged revisions 413142 from

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

8 years agochan_pjsip: Fix deadlock when retrieving call-id of channel.
Joshua Colp [Wed, 30 Apr 2014 20:39:17 +0000 (20:39 +0000)]
chan_pjsip: Fix deadlock when retrieving call-id of channel.

If a task was in-flight which required the channel or bridge lock
it was possible for the synchronous task retrieving the call-id
to deadlock as it holds those locks.

After discussing with Mark Michelson the synchronous task was
removed and the call-id accessed directly. This should be safe as
each object involved is guaranteed to exist and the call-id will
never change.

Merged revisions 413140 from

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

8 years agoWebsocket: Add session locking and delay close
Kinsey Moore [Wed, 30 Apr 2014 13:08:07 +0000 (13:08 +0000)]
Websocket: Add session locking and delay close

This resolves a race condition where data could be written to a NULL
FILE pointer causing a crash as a websocket connection was in the
process of shutting down by adding locking to websocket session writes
and by deferring session teardown until session destruction.

(closes issue ASTERISK-23605)
Reported by: Matt Jordan

Merged revisions 413123 from

Merged revisions 413124 from

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

8 years agores_stasis: Add progress indications to operations which perform media.
Joshua Colp [Wed, 30 Apr 2014 12:42:42 +0000 (12:42 +0000)]
res_stasis: Add progress indications to operations which perform media.

This change fixes operations which did not account for the fact that they may
be executed on channels which have not been answered. These operations will
now indicate progress when invoked.

ASTERISK-23560 #close
ASTERISk-23560 #comment Reported by: Jan Svoboda


Merged revisions 413121 from

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

8 years agores_pjsip_sdp_rtp: Fix issue where sending a hold SDP twice could cause an unhold.
Joshua Colp [Wed, 30 Apr 2014 12:39:11 +0000 (12:39 +0000)]
res_pjsip_sdp_rtp: Fix issue where sending a hold SDP twice could cause an unhold.

This change fixes a bug where if an SDP with media address and sendonly was
received twice the underlying call would go off hold, instead of remaining on hold.
This occured because the code did not properly take into account that the SDP
may contain both a valid media address and the sendonly attribute.

The code now examines the sendonly attribute and media address first, so if the
SDP is received again no change will occur.

ASTERISK-23558 #comment Reported by: John Bigelow


Merged revisions 413119 from

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

8 years agochan_pjsip: Add support for picking up calls in the configured pickup group.
Joshua Colp [Wed, 30 Apr 2014 12:32:12 +0000 (12:32 +0000)]
chan_pjsip: Add support for picking up calls in the configured pickup group.



Merged revisions 413117 from

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

8 years agoAdd "destroy" implementation for spinlock.
George Joseph [Tue, 29 Apr 2014 15:10:24 +0000 (15:10 +0000)]
Add "destroy" implementation for spinlock.

The original commit for spinlock was missing "destroy" implementations.
Most of them are no-ops but phtread_spin and pthread_mutex do need their
locks destroyed.

Merged revisions 413102 from

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

8 years agochan_pjsip: Implement core ability to get Call-ID of a channel.
Joshua Colp [Tue, 29 Apr 2014 11:27:14 +0000 (11:27 +0000)]
chan_pjsip: Implement core ability to get Call-ID of a channel.

This changes implement the "get_pvt_uniqueid" which is used to return the
technology specific unique identifier. In the case of SIP this is the Call-ID
of the dialog.


Merged revisions 413088 from

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

8 years agoBridging: Don't lock NULL bridges
Kinsey Moore [Mon, 28 Apr 2014 20:07:37 +0000 (20:07 +0000)]
Bridging: Don't lock NULL bridges

When bridge locking was added for bridge snapshot creation, some
locations where bridge locking was added were not guaranteed to
actually have a bridge and locking NULL AO2 objects tends to cause
segfaults. This ensures that NULL bridges aren't locked.

Merged revisions 413073 from

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

8 years agoAdd DeviceStateChanged and PresenceStateChanged AMI events.
Mark Michelson [Mon, 28 Apr 2014 14:40:21 +0000 (14:40 +0000)]
Add DeviceStateChanged and PresenceStateChanged AMI events.

These events are controlled by two new modules, res_manager_devicestate
and res_manager_presencestate.


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

8 years agoIntroducing changes proposed to chan_unistim driver:
Igor Goncharovskiy [Mon, 28 Apr 2014 07:43:33 +0000 (07:43 +0000)]
Introducing changes proposed to chan_unistim driver:
1) Added the unistim.conf variable dtmf_duration which can select the DTMF playback duration from 0ms to 150ms (0 is off and is the new default)
2) Enabled the transmission of month names, which are sent with the date and changed the dateformat variable to accept the values 0-3 as per the UNISTIM standard (2 & 3 match the previous 1 & 2 formats).
3) Enabled the "Mute" packet so muting microphone works as expected and microphone muted for all calls while LED light on
4) Changed Duree to Timer on i2004 display

(closes issue ASTERISK-23592)

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

8 years agotcptls.c : Log errors as ERROR, not warning or something else.
Olle Johansson [Sun, 27 Apr 2014 19:29:27 +0000 (19:29 +0000)]
tcptls.c : Log errors as ERROR, not warning or something else.

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

8 years agores_rtp_asterisk: Add support for DTLS handshake retransmissions
Matthew Jordan [Fri, 25 Apr 2014 19:26:14 +0000 (19:26 +0000)]
res_rtp_asterisk: Add support for DTLS handshake retransmissions

On congested networks, it is possible for the DTLS handshake messages to get
lost. This patch adds a timer to res_rtp_asterisk that will periodically
check to see if the handshake has succeeded. If not, it will retransmit the
DTLS handshake.


ASTERISK-23649 #close
Reported by: Nitesh Bansal
  dtls_retransmission.patch uploaded by Nitesh Bansal (License 6418)

Merged revisions 413008 from

Merged revisions 413009 from

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

8 years agopjsip realtime: increase the size of some columns
Kevin Harwell [Thu, 24 Apr 2014 14:37:54 +0000 (14:37 +0000)]
pjsip realtime: increase the size of some columns

The string lengths on certain columns created through alembic for PJSIP were
too short. For instance, columns containing URIs are currently set to 40
characters, but this can be too small and result in truncated values.  Added
an alembic migration script that increases the size of these columns and a
few others to 255.

ASTERISK-23639 #close
Reported by: Mark Michelson

Merged revisions 412992 from

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

8 years agoThis patch adds support for spinlocks in Asterisk.
George Joseph [Wed, 23 Apr 2014 20:13:30 +0000 (20:13 +0000)]
This patch adds support for spinlocks in Asterisk.

There are cases in Asterisk where it might be desirable to lock
a short critical code section but not incur the context switch
and yield penalty of a mutex or rwlock.  The primary spinlock
implementations execute exclusively in userspace and therefore
don't incur those penalties.  Spinlocks are NOT meant to be a
general replacement for mutexes.  They should be used only for
protecting short blocks of critical code such as simple compares
and assignments.  Operations that may block, hold a lock, or
cause the thread to give up it's timeslice should NEVER be
attempted in a spinlock.

The first use case for spinlocks is in astobj2 - internal_ao2_ref.
Currently the manipulation of the reference counter is done with
an ast_atomic_fetchadd_int which works fine.  When weak reference
containers are introduced however, there's an additional comparison
and assignment that'll need to be done while the lock is held.
A mutex would be way too expensive here, hence the spinlock.
Given that lock contention in this situation would be infrequent,
the overhead of the spinlock is only a few more machine instructions
than the current ast_atomic_fetchadd_int call.

ASTERISK-23553 #close

Merged revisions 412976 from

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

8 years agohttp: Fix spurious ERROR message in responses with no content.
Richard Mudgett [Wed, 23 Apr 2014 18:03:41 +0000 (18:03 +0000)]
http: Fix spurious ERROR message in responses with no content.

Backport -r411687 and fix the fix because content_length is the length of
out plus the length of the file controlled by fd.

When a response has an out content length of 0, fwrite would be called to
write a buffer with no data in it.  This resulted in the following classic
error message:

  [Apr  3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success

This patch makes it so that we only attempt to write the content of out if
the out string is non-zero.

Merged revisions 412922 from

Merged revisions 412923 from

Merged revisions 412924 from

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

8 years agoFix error loading res_monitor.
Russell Bryant [Wed, 23 Apr 2014 15:02:39 +0000 (15:02 +0000)]
Fix error loading res_monitor.

For some odd reason, loading app_mixmonitor was fine, but res_monitor was not.
This patch fixes a set of issues related to func_periodic_hook exporting the
beep functions that gets res_monitor working again.

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

8 years agores_stasis: Fix crash when handling a failed blind transfer message.
Joshua Colp [Tue, 22 Apr 2014 10:09:36 +0000 (10:09 +0000)]
res_stasis: Fix crash when handling a failed blind transfer message.

This changes fixes a crash that occurs when stasis determines if it
should send a message out to an application or not. The code
incorrectly assumed that a bridge snapshot would always be present
when in reality for failure cases it may not be.

ASTERISK-23573 #close

Merged revisions 412882 from

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

8 years agochan_sip: trust_id_outbound CHANGES message improvement
Jonathan Rose [Mon, 21 Apr 2014 17:56:26 +0000 (17:56 +0000)]
chan_sip: trust_id_outbound CHANGES message improvement

(closes issue AST-1301)

(closes issue ASTERISK-19465)
Reported by: Krzysztof Chmielewski

Merged revisions 412821 from

Merged revisions 412822 from

Merged revisions 412823 from

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

8 years agochan_sip: Add sendrpid trust options
Jonathan Rose [Mon, 21 Apr 2014 16:20:32 +0000 (16:20 +0000)]
chan_sip: Add sendrpid trust options

In r411189, some behavior was changed which made sendrpid behavior
act in a more trusting manner by sending full user data for peers
set with private caller presence in P-Asserted-Identity headers.
Since this changed long time expected behaviors, we decided to pull
that patch when that was pointed out by the community. Instead, this
patch provides a trust_id_outbound setting which will expose the data
per RFC-3325 if set to 'yes' and simply not send the PAI/RPID headers
at all if set to 'no'. By default trust_id_outbound will be set to
'legacy' which will preserve the behavior prior to these patches.
Extra special thanks to Walter Doekes for providing advice and

(closes issue AST-1301)

(closes issue ASTERISK-19465)
Reported by: Krzysztof Chmielewski


Merged revisions 412744 from

Merged revisions 412746 from

Merged revisions 412747 from

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

8 years agoHTTP: Add TCP_NODELAY to accepted connections
Kinsey Moore [Mon, 21 Apr 2014 16:16:37 +0000 (16:16 +0000)]
HTTP: Add TCP_NODELAY to accepted connections

This adds the TCP_NODELAY option to accepted connections on the HTTP
server built into Asterisk. This option disables the Nagle algorithm
which controls queueing of outbound data and in some cases can cause
delays on receipt of response by the client due to how the Nagle
algorithm interacts with TCP delayed ACK. This option is already set on
all non-HTTP AMI connections and this change would cover standard HTTP
requests, manager HTTP connections, and ARI HTTP requests and
websockets in Asterisk 12+ along with any future use of the HTTP


Merged revisions 412745 from

Merged revisions 412748 from

Merged revisions 412749 from

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

8 years agoConfbridge: Fix ConfbridgeKick AMI documentation
Kinsey Moore [Mon, 21 Apr 2014 14:58:12 +0000 (14:58 +0000)]
Confbridge: Fix ConfbridgeKick AMI documentation

This adds documentation for the "all" channel option for the
ConfbridgeKick AMI action and adjusts AMI responses accordingly.

(issue ASTERISK-23282)
Reported by: Dorian Logan

Merged revisions 412730 from

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

8 years agoConfbridge: Add references for kick all option
Kinsey Moore [Mon, 21 Apr 2014 14:47:37 +0000 (14:47 +0000)]
Confbridge: Add references for kick all option

After the ability to kick all attendees from a conference was added, a
rework removed the comment about that feature from the CLI
documentation. This adds that documentation and adds "all" to the
participant tab completion list for the confbridge kick command.

(closes issue ASTERISK-23282)
Reported by: Dorian Logan

Merged revisions 412728 from

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

8 years agoFix wrong dialtone. The "modulation" should not be referenced for tone+tone as it...
Igor Goncharovskiy [Mon, 21 Apr 2014 08:36:18 +0000 (08:36 +0000)]
Fix wrong dialtone. The "modulation" should not be referenced for tone+tone as it refers to the on-off characteristic - this often resulted in a single tone rather than the multitone as in the UK.

Merged revisions 412712 from

Merged revisions 412713 from

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

8 years agomain/asterisk: Fix startup sequence for realtime features
Matthew Jordan [Sat, 19 Apr 2014 02:14:12 +0000 (02:14 +0000)]
main/asterisk: Fix startup sequence for realtime features

When ASTERISK-23265/ASTERISK-23320 was fixed, it inadvertently led to realtime
features breaking. This was due to features loading prior to realtime. This
patch fixes this by loading features after loading dynamic modules.

ASTERISK-23487 #close
Reported by: Denis
Tested by: Denis

Merged revisions 412698 from

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

8 years agoapp_sms: Fix uninitialized values; hangup channel when REL is sent successfully
Matthew Jordan [Sat, 19 Apr 2014 01:31:27 +0000 (01:31 +0000)]
app_sms: Fix uninitialized values; hangup channel when REL is sent successfully

This patch fixes two issues in app_sms:
(1) Firstly, the 'flags' field on the stack in sms_exec() is uninitialised,
    causing it to use the wrong protocol in some cases. This patch correctly
    initializes the flags fields.

(2) Secondly, when disconnect supervision is not working or
    inbanddisconnect=yes is set in chan_dahdi.conf, app_sms was failing to
    terminate the call after it sent the REL(ease) message and the peer stopped
    talking to it. This patch fixes the code to handle the 'bad stop bit'
    message more gracefully in that case, and hang up the call.


ASTERISK-18331 #close
Reported by: David Woodhouse
  asterisk-fix-sms.patch uploaded by David Woodhouse (License 5754)

Merged revisions 412655 from

Merged revisions 412656 from

Merged revisions 412657 from

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

8 years agoARI: Make bridges/{bridgeID}/play queue sound files
Jonathan Rose [Fri, 18 Apr 2014 20:09:24 +0000 (20:09 +0000)]
ARI: Make bridges/{bridgeID}/play queue sound files

Previously multiple play actions against a bridge at one time would cause
the sounds to play simultaneously on the bridge. Now if a sound is already
playing, the play action will queue playback to occur after the completion
of other sounds currently on the queue.

(closes issue ASTERISK-22677)
Reported by: John Bigelow

Merged revisions 412639 from

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

8 years agosounds: Fix Sounds Makefile and XML that didn't support new sound prompt sets
Rusty Newton [Fri, 18 Apr 2014 17:17:25 +0000 (17:17 +0000)]
sounds: Fix Sounds Makefile and XML that didn't support new sound prompt sets

In sounds/Makefile

 1 Adds and moves some lines necessary for the en_GB core set. I'm just following how the other sets are defined here.
 2 removes the ES extra sounds related lines as we don't have ES extra sound sets.

In sounds/sounds.xml

 3 Adds member definitons for EN_AU, EN_GB, IT for core sound sets, and EN_GB in extra sound sets

ASTERISK-23550 #close

Merged revisions 412586 from

Merged revisions 412587 from

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

8 years agoAllow for multiple contacts to be configured in a single contact= line.
Mark Michelson [Fri, 18 Apr 2014 17:02:24 +0000 (17:02 +0000)]
Allow for multiple contacts to be configured in a single contact= line.

This is useful for configuring multiple permanent contacts for an AOR when using
realtime AORs.


Merged revisions 412582 from

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

8 years agoOriginated calls: Fix several originate call problems.
Richard Mudgett [Fri, 18 Apr 2014 16:44:48 +0000 (16:44 +0000)]
Originated calls: Fix several originate call problems.

* Restore the reason value set by pbx_outgoing_attempt() to use
AST_CONTROL_xxx values as all the consumers were expecting rather than
cause codes.

* Fixed the dial routines to set cause codes for more than just
ast_request() so pbx_outgoing_attempt() reason codes will function.

* Fix inconsistent locked_channel return status in pbx_outgoing_attempt().
The chanel may not have been locked or the channel may have been a stale

* Fixed the OutgoingSpoolFailed channel to run dialplan whenever the
dialing fails for an originate exten and 1 < synchronous.

* Fix incorrect ast_cond_wait() usage in pbx_outgoing_attempt().
Indroduced by issue ASTERISK-22212 patch.

* Made struct pbx_outgoing use the ao2 lock instead of its own lock for
the cond wait mutex.  No sense in having two locks associated with the
same struct when only one is needed.


Merged revisions 412581 from

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

8 years agoapp_dial and app_queue: Make lock the forwarding channel while taking the channel...
Richard Mudgett [Fri, 18 Apr 2014 16:27:31 +0000 (16:27 +0000)]
app_dial and app_queue: Make lock the forwarding channel while taking the channel snapshot.

* Fixed ast_channel_publish_dial_forward() not locking the forwarded
channel when taking the channel snapshot.

* Fixed app_dial.c:do_forward() using the wrong channel to get the
original call forwarding string.

* Removed unnecessary locking when calling ast_channel_publish_dial() and
ast_channel_publish_dial_forward() in app_dial and app_queue.  Holding
channel locks when calling ast_channel_publish_dial_forward() with a
forwarded channel could result in pausing the system while the stasis bus
completes processsing a forwarded channel subscription.


Merged revisions 412579 from

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

8 years agoARI: Add debug logging for events and responses
Kinsey Moore [Fri, 18 Apr 2014 14:25:47 +0000 (14:25 +0000)]
ARI: Add debug logging for events and responses

This adds DEBUG level logging for ARI websocket events and HTTP
responses similar to what is available for AMI. Logging for ARI HTTP
requests is already adequate for debugging purposes.

Merged revisions 412565 from

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

8 years agores_pjsip: Handle reloading when permanent contacts exist and qualify is configured.
Joshua Colp [Thu, 17 Apr 2014 22:50:23 +0000 (22:50 +0000)]
res_pjsip: Handle reloading when permanent contacts exist and qualify is configured.

This change fixes a problem where permanent contacts being qualified were not
being updated. This was caused by the permanent contacts getting a uuid and not a
known identifier, causing an inability to look them up when updating in the
qualify code. A bug also existed where the new configuration may not be available
immediately when updating qualifies.

(closes issue ASTERISK-23514)
Reported by: Richard Mudgett


Merged revisions 412551 from

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

8 years agoFix a silly shadowed variable mistake that was missed from play tones patch
Jonathan Rose [Thu, 17 Apr 2014 22:42:57 +0000 (22:42 +0000)]
Fix a silly shadowed variable mistake that was missed from play tones patch

Merged revisions 412549 from

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

8 years agoARI: Add tones playback resource
Jonathan Rose [Thu, 17 Apr 2014 21:57:36 +0000 (21:57 +0000)]
ARI: Add tones playback resource

Adds a tones URI type to the playback resource. The tone can be specified by
name (from indications.conf) or by a tone pattern. In addition, tonezone can
be specified in the URI (by appending ;tonezone=<zone>). Tones must be
stopped manually in order for a stasis control to move on from playback of
the tone. Tones may be paused, resumed, restarted, and stopped. They may
not be rewound or fast forwarded (tones can't be controlled in a way that
lets you skip around from note to note and pausing and resuming will also
restart the tone from the beginning). Tests are currently in development
for this feature (

(closes issue ASTERISK-23433)
Reported by: Matt Jordan

Merged revisions 412535 from

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

8 years agomain/Makefile: Fix build failure on SmartOS/Illumos/SunOS
Matthew Jordan [Thu, 17 Apr 2014 20:25:16 +0000 (20:25 +0000)]
main/Makefile: Fix build failure on SmartOS/Illumos/SunOS

This patch fixes two issues when building on SmartOS:

- channels/chan_oss.c: it makes sure soundcard.h is found
- main/Makefile: only use "-Wl,--version-script" when GNU LD is used as the Sun
  Linker doesn't support that. Similar checks are already used elswhere in the


ASTERISK-23576 #close
Reported by: Sebastian Wiedenroth
  fix-sunos.diff uploaded by Sebastian Wiedenroth (License 6597)

Merged revisions 412468 from

Merged revisions 412483 from

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

8 years agochan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL URIs
Matthew Jordan [Thu, 17 Apr 2014 19:50:05 +0000 (19:50 +0000)]
chan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL URIs

This patch is a continuation of,
committed in r412303.

It resolves a finding oej had that the phone-context be available in a
channel variable separate from SIPDOMAIN. This patch adds that variable as
SIPURIPHONECONTEXT. It also allows a local number (or global number specified
in the TEL URI) to be used to look up as a peer.

(issue ASTERISK-17179)


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

8 years agores_pjsip_refer: Channel variable SIPREFERTOHDR not being set during blind transfer
Kevin Harwell [Thu, 17 Apr 2014 15:17:39 +0000 (15:17 +0000)]
res_pjsip_refer: Channel variable SIPREFERTOHDR not being set during blind transfer

The SIPREFERTOHDR channel variable is not being set on any channel when
performing a blind transfer using PJSIP. The 'refer->refer_to' was not
being set during a blind transfer.  Updated so the 'refer_to' is set to
the target uri on a blind transfer.

(closes issue ASTERISK-23502)
Reported by: John Bigelow

Merged revisions 412453 from

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

8 years agoStasis: Add a usage note on stasis_app_get_bridge
Kinsey Moore [Wed, 16 Apr 2014 19:14:37 +0000 (19:14 +0000)]
Stasis: Add a usage note on stasis_app_get_bridge

This function returns an ast_bridge without a refcount bump and the
caller must increment the count if it intends to hold the pointer.

(closes issue ASTERISK-23588)
Reported by: Matt Jordan

Merged revisions 412439 from

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

8 years ago(mix)monitor: Add options to enable a periodic beep
Russell Bryant [Tue, 15 Apr 2014 23:21:19 +0000 (23:21 +0000)]
(mix)monitor: Add options to enable a periodic beep

Add an option to enable a periodic beep to be played into a call if it
is being recorded.  If enabled, it uses the PERIODIC_HOOK() function
internally to play the 'beep' prompt into the call at a specified
interval.  This option is provided for both Monitor() and


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

8 years agoEliminate some more unnecessary RAII_VAR() uses.
Richard Mudgett [Tue, 15 Apr 2014 18:30:24 +0000 (18:30 +0000)]
Eliminate some more unnecessary RAII_VAR() uses.

RAII_VAR() is not a hammer appropriate to pound all nails.

Merged revisions 412413 from

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

8 years agoRemove unused RAII_VAR() declarations.
Richard Mudgett [Tue, 15 Apr 2014 18:01:47 +0000 (18:01 +0000)]
Remove unused RAII_VAR() declarations.

* Remove unused RAII_VAR() declarations.  The compiler cannot catch these
because the cleanup function "references" the unused variable.  Some
actually allocated and released resources that were never used.

* Fixed some whitespace issues in stasis_bridges.c.

Merged revisions 412399 from

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

8 years agochan_sip.c: Fix channel staging assertion failure.
Richard Mudgett [Tue, 15 Apr 2014 17:07:20 +0000 (17:07 +0000)]
chan_sip.c: Fix channel staging assertion failure.

The failing assertion ensures that the final snapshot gets generated so
CDR records can get finalized.  The only place where a channel staging
snapshot flag could be left set is in chan_sip.c:handle_request_bye().
The function could return before clearing the flag because the channel
could dissappear while the function had to have the channel unlocked.

* Fixed handle_request_bye() channel snapshot staging coverage area to not
have a return in the middle of it and be unable to clear the staging flag.

* Pushed the channel snapshot staging coverage area into
ast_rtp_instance_set_stats_vars() to ensure that the staging is not

* Made callers of ast_rtp_instance_set_stats_vars() not call it with any
channels or channel driver private locks held to eliminate the deadlock
potential.  The callers must hold references to the passed in channel and
rtp objects.

* Eliminated sip_hangup() trying to get the bridge peer.  It is futile at
this point because the channel could never be in a bridge.


Merged revisions 412385 from

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

8 years agochan_sip.c: Moved some sip_pvt unrefs after their last use.
Richard Mudgett [Tue, 15 Apr 2014 16:38:35 +0000 (16:38 +0000)]
chan_sip.c: Moved some sip_pvt unrefs after their last use.

* Moved sip_pvt unref in ast_hangup() and handle_request_do() to the end
of the function.  The unref needs to happen after the last use of the

Merged revisions 412348 from

Merged revisions 412383 from

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

8 years agoReverting r411189 so that it can be put up for public review
Jonathan Rose [Tue, 15 Apr 2014 16:13:35 +0000 (16:13 +0000)]
Reverting r411189 so that it can be put up for public review

  r411189 | jrose | 2014-03-26 10:50:48 -0500 (Wed, 26 Mar 2014) | 12 lines

  chan_sip: Send real CallerID information with P-Assserted-Identity (RFC-3325)

  Prior to this patch, the P-Asserted-Identity header would include anonymous
  caller id information which seems to go against the point of the
  P-Asserted-Identity header. Now the real caller ID information will be
  included in this header. Also, no privacy header would be included.
  This patch adds 'Privacy: id' to outgoing SIP messages that include the
  P-Asserted-Identity header.

  (closes issue AST-1301)

Merged revisions 412328 from

Merged revisions 412329 from

Merged revisions 412330 from

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

8 years agoautoservice: fix reference leak of logger callid.
Corey Farrell [Mon, 14 Apr 2014 15:54:50 +0000 (15:54 +0000)]
autoservice: fix reference leak of logger callid.

autoservice acquires a local reference to the logger callid of each channel
in a loop.  This local reference was not released, causing the callid of
every channel in autoservice to leak.  This change moves the callid unref
inside the loop.

ASTERISK-23616 #close
Reported by: ibercom

Merged revisions 412305 from

Merged revisions 412306 from

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

8 years agochan_sip: Support RFC-3966 TEL URIs in inbound INVITE requests
Matthew Jordan [Sat, 12 Apr 2014 02:27:43 +0000 (02:27 +0000)]
chan_sip: Support RFC-3966 TEL URIs in inbound INVITE requests

This patch adds support for handling TEL URIs in inbound INVITE requests.
This includes the Request URI and the From URI. The number specified in
the Request URI will be the destination of the inbound channel in the dialplan.
The phone-context specified in the Request URI will be stored in the
TELPHONECONTEXT channel variable.


ASTERISK-17179 #close
Reported by: Geert Van Pamel
Tested by: Geert Van Pamel
  asterisk-12.0.0-chan_sip-RFC3966_patch.txt uploaded by Geert Van Pamel (License 6140)
  asterisk-12.0.0-reqresp_parser-RFC3966_patch.txt uploaded by Geert Van Pamel (License 6140)

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