Commit Graph

4069 Commits

Author SHA1 Message Date
Jenkins2
1dc1af4aa5 Merge "stasis_recording: Correct ast_asprintf error checking" 2017-06-01 11:06:16 -05:00
Jenkins2
48d047ad5a Merge "res_pjsip: New endpoint option "refer_blind_progress"" 2017-06-01 10:05:53 -05:00
Jenkins2
77f7c1b98f Merge "Sqlite3: make busy_timeout configurable." 2017-06-01 09:31:24 -05:00
Sean Bright
9dce4a947b stasis_recording: Correct ast_asprintf error checking
ASTERISK-27021 #close
Reported by: Tim Morgan

Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75
2017-05-30 16:09:50 -05:00
Jenkins2
56b6a71548 Merge "asterisk: Audit locking of channel when manipulating flags." 2017-05-26 09:25:51 -05:00
George Joseph
6bb3cedb1b Merge "res_agi: Prevent crash when SET VARIABLE called without arguments" 2017-05-26 07:12:16 -05:00
George Joseph
366b10a500 Merge "res_agi: Allow configuration of audio format of EAGI pipe" 2017-05-25 19:01:57 -05:00
Jenkins2
915acf1e5d Merge "res_agi: Fix malformed AGI usage response" 2017-05-25 15:23:18 -05:00
Martin Tomec
44c5a144ce Sqlite3: make busy_timeout configurable.
Enables runtime configuration of busy_timeout for sqlite databases.
Default timeout remains 1000ms.

ASTERISK-27014 #close

Change-Id: I8921a3aac3c335843be4cb17d2dd0a5c157a36da
2017-05-25 10:02:42 +02:00
Jenkins2
d6992daaef Merge "res_agi: Clarify 'RECORD FILE' documentation" 2017-05-24 18:09:33 -05:00
Jenkins2
cd0e6a2324 Merge "res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm" 2017-05-24 11:25:58 -05:00
Sean Bright
d847fe6585 res_agi: Allow configuration of audio format of EAGI pipe
This change allows the format of the EAGI audio pipe to be changed by
setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of
the loaded formats.

ASTERISK-26124 #close

Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd
2017-05-23 16:51:19 -04:00
Sean Bright
e2e6baa8d8 res_agi: Clarify 'RECORD FILE' documentation
Documented the 'beep' option in both the parameters list and the command
description.

ASTERISK-23839 #close

Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea
2017-05-23 13:35:26 -05:00
Sean Bright
3dcb3c88aa res_agi: Prevent crash when SET VARIABLE called without arguments
Explicitly check that the appropriate number of arguments were passed to
SET VARIABLE before attempting to reference them. Also initialize the
arguments array to zeroes before populating it.

ASTERISK-22432 #close

Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97
2017-05-23 13:08:44 -05:00
Sean Bright
e490aa3176 res_agi: Fix malformed AGI usage response
If the generated XML documentation for a command does not end with a \n,
the postamble of the usage message does not appear on its own line.

ASTERISK-25662 #close

Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020
2017-05-23 12:37:28 -05:00
Sean Bright
8ae0227cf3 res_format_attr_h26x: Trim blanks in fmtp attributes
Some devices separate format attributes with a semicolon followed by a
space, so trim blanks before trying to match them.

ASTERISK-27008 #close

Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc
2017-05-23 10:57:57 -05:00
Joshua Colp
dece2eb892 Merge "res_pjsip_session : fixed wrong From Header number On Re-invite" 2017-05-23 09:17:13 -05:00
Kevin Harwell
440ff38c08 res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm
When using rtcp mux if an rtcp payload came in it would still use the srtp
unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp
data was being passed to the rtp unprotect method this would result in an
error.

This patch ensures that the correct unprotect method is chosen by making
sure the passed in rtcp flag is appropriately set when rtcp mux is enabled
and an rtcp payload is received.

ASTERISK-26979 #close

Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241
2017-05-22 14:05:51 -05:00
Sean Bright
4141748e85 res_hep_rtcp: Add support level to module info
Change-Id: I5661478f9cf12d431f730e42be79323b62831e92
2017-05-18 16:36:21 -05:00
Joshua Colp
5a7af00e80 asterisk: Audit locking of channel when manipulating flags.
When manipulating flags on a channel the channel has to be
locked to guarantee that nothing else is also manipulating
the flags. This change introduces locking where necessary to
guarantee this. It also adds helper functions that manipulate
channel flags and lock to reduce repeated code.

ASTERISK-26789

Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10
2017-05-16 14:25:23 +00:00
Richard Mudgett
30fbed65f1 res_pjsip_session.c: Process initial INVITE sooner. (key exists)
Retransmissions of an initial INVITE could be queued in the serializer
before we have processed the first INVITE message.  If the first INVITE
message doesn't get completely processed before the retransmissions are
seen then we could try to setup the same call from the retransmissions.  A
symptom of this is seeing a (key exists) message associated with an
INVITE.  An earlier change attempted to address this kind of problem by
calculating a distributor serializer to use for unassociated messages.
Part of that change also made incoming calls keep using that distributor
serializer.  (ASTERISK-26088) However, some leftover code was still
deferring the INVITE processing to the session's serializer even though we
were already in that serializer.  This not only is unnecessary but would
cause the same call resetup problem.

* Removed the code to defer processing the initial INVITE to the session's
serializer because we are already running in that serializer.

ASTERISK-26998 #close

Change-Id: I1e822d82dcc650e508bc2d40d545d5de4f3421f6
2017-05-15 15:12:26 -05:00
Alexei Gradinari
808f299808 res_pjsip: New endpoint option "refer_blind_progress"
This option was added to turn off notifying the progress details
on Blind Transfer. If this option is not set then the chan_pjsip
will send NOTIFY "200 OK" immediately after "202 Accepted".

Some SIP phones like Mitel/Aastra or Snom keep the line busy until
receive "200 OK".

ASTERISK-26333 #close

Change-Id: Id606fbff2e02e967c02138457badc399144720f2
2017-05-11 10:50:35 -05:00
Joshua Colp
3c36c29c81 res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages.
This change adds the required logic to allow the SIP
Call-ID to be placed into the HEP RTCP traffic if the
chan_sip module is used. In cases where the option is
enabled but the channel is not either SIP or PJSIP then
the code will fallback to the channel name as done
previously.

Based on the change on Nir's branch at:
team/nirs/hep-chan-sip-support

ASTERISK-26427

Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d
2017-05-09 05:38:59 -05:00
Kevin Harwell
008e25def9 res_rtp_asterisk: Clearing the remote RTCP address causes RTCP failures
When a call gets put on hold RTP is temporarily stopped and Asterisk was
setting the remote RTCP address to NULL. Then when RTCP data was received
from the remote endpoint, Asterisk would be missing this information when
publishing the rtcp_message stasis event. Consequently, message subscribers
(in this case res_hep_rtcp) trying to parse the "from" field output the
following error:

"ast_sockaddr_split_hostport: Port missing in (null)"

This patch makes it so the remote RTCP address is no longer set to NULL when
stopping RTP. There was only one place that appeared to check if the remote
RTCP address was NULL as a way to tell if RTCP was running. This patch added
an additional check on the RTCP schedid for that case to make sure RTCP was
truly not running.

ASTERISK-26860 #close

Change-Id: I6be200fb20db647e48b5138ea4b81dfa7962974b
2017-05-03 12:29:22 -05:00
Jenkins2
dc948163ca Merge "res_pjsip_t38.c: Fix deadlock in T.38 framehook." 2017-05-02 09:22:24 -05:00
Joshua Colp
d1944c1892 Merge "res_sdp_translator_pjmedia.c: Add TODO notes." 2017-05-02 05:20:03 -05:00
Joshua Colp
1d6429b269 Merge "SDP: Make SDP translation to/from internal representation more const." 2017-05-02 05:19:59 -05:00
Jenkins2
b67423c8a3 Merge "res_pjsip_outbound_authenticator_digest: Add context to log messages" 2017-05-01 15:08:21 -05:00
Jenkins2
74134a03bc Merge "SDP: Misc cleanups (Mostly memory leaks)" 2017-05-01 14:19:34 -05:00
Jenkins2
94b97e0835 Merge "SDP API: Add SSRC-level attributes" 2017-05-01 14:16:55 -05:00
Richard Mudgett
52e4f02b1a res_pjsip_t38.c: Fix deadlock in T.38 framehook.
A deadlock can happen between a channel lock and a pjsip session media
container lock.  One thread is processing a reINVITE's SDP and walking
through the session's media container when it waits for the channel lock
to put the determined format capabilities onto the channel.  The other
thread is writing a frame to the channel and processing the T.38 frame
hook.  The T.38 frame hook then waits for the pjsip session's media
container lock.  The two threads are now deadlocked.

* Made the T.38 frame hook release the channel lock before searching the
session's media container.  This fix has been done to several other
frame hooks to fix deadlocks.

ASTERISK-26974 #close

Change-Id: Ie984a76ce00bef6ec9aa239010e51e8dd74c8186
2017-04-29 18:15:32 -05:00
George Joseph
8170793be6 res_pjsip_outbound_authenticator_digest: Add context to log messages
There was no context info in this module's log messages so it was
impossible to toubleshoot.

Added endpoint or host to all messages and added the realms in the
challenge for the "No auth credentials for any realm" message.

Change-Id: Ifeed2786f35fbea7d141237ae15625e472acff9b
2017-04-28 11:04:57 -05:00
Richard Mudgett
48566b8c66 res_sdp_translator_pjmedia.c: Add TODO notes.
Change-Id: If27ca61f79accc882c3376d2e876d2b44aa1347b
2017-04-27 19:08:05 -05:00
Richard Mudgett
ede90e4aa5 SDP: Make SDP translation to/from internal representation more const.
Change-Id: I473a174b869728604b37c60853896b0c458bc504
2017-04-27 19:08:05 -05:00
Richard Mudgett
176123e76c SDP: Misc cleanups (Mostly memory leaks)
Change-Id: I74431b385da333f2c5f5a6d7c55e70b69a4f05d2
2017-04-27 19:08:05 -05:00
Jenkins2
066659a383 Merge "res_pjsip_session: Add cleanup to ast_sip_session_terminate" 2017-04-27 17:14:48 -05:00
Jenkins2
175297fe34 Merge "res_pjsip/res_pjsip_callerid: NULL check on caller id name string" 2017-04-27 16:47:34 -05:00
Mark Michelson
d6535c0080 SDP API: Add SSRC-level attributes
RFC 5576 defines how SSRC-level attributes may be added to SDP media
descriptions. In general, this is useful for grouping related SSRCes,
indicating SSRC-level format attributes, and resolving collisions in RTP
SSRC values. These attributes are used widely by browsers during WebRTC
communications, including attributes defined by documents outside of RFC
5576.

This commit introduces the addition of SSRC-level attributes into SDPs
generated by Asterisk. Since Asterisk does not tend to use multiple
SSRCs on a media stream, the initial support is minimal. Asterisk
includes an SSRC-level CNAME attribute if configured to do so. This at
least gives browsers (and possibly others) the ability to resolve SSRC
collisions at offer-answer time.

In order to facilitate this, the RTP engine API has been enhanced to be
able to retrieve the SSRC and CNAME on a given RTP instance.

res_rtp_asterisk currently does not provide meaningful CNAME values in
its RTCP SDES items, and therefore it currently will always return an
empty string as the CNAME value. A task in the near future will result
in res_rtp_asterisk generating more meaningful CNAMEs.

Change-Id: I29e7f23e7db77524f82a3b6e8531b1195ff57789
2017-04-27 15:03:51 -05:00
George Joseph
d6b2a58736 res_pjsip_session: Add cleanup to ast_sip_session_terminate
If you use ast_request to create a PJSIP channel but then hang it
up without causing a transaction to be sent, the session will
never be destroyed.  This is due ot the fact that it's pjproject
that triggers the session cleanup when the transaction ends.
app_chanisavail was doing this to get more granular channel state
and it's also possible for this to happen via ARI.

* ast_sip_session_terminate was modified to explicitly call the
  cleanup tasks and unreference session if the invite state is NULL
  AND invite_tsx is NULL (meaning we never sent a transaction).

* chan_pjsip/hangup was modified to bump session before it calls
  ast_sip_session_terminate to insure that session stays valid
  while it does its own cleanup.

* Added test events to session_destructor for a future testsuite
  test.

ASTERISK-26908 #close
Reported-by: Richard Mudgett

Change-Id: I52daf6f757184e5544c261f64f6fe9602c4680a9
2017-04-27 10:43:32 -05:00
Jenkins2
54e27cad3c Merge "res_rtp_asterisk.c: Fix crash in RTCP DTLS operation." 2017-04-27 10:05:16 -05:00
Kevin Harwell
c6b757fa05 res_pjsip/res_pjsip_callerid: NULL check on caller id name string
It's possible for a name in a party id structure to be marked as valid, but the
name string itself be NULL (for instance this is possible to do by using the
dialplan CALLERID function). There were a couple of places where the name was
validated, but the string itself was not checked before passing it to functions
like 'strlen'. This of course caused a crashed.

This patch adds in a NULL check before attempting to pass it into a function
that is not NULL tolerant.

ASTERISK-25823 #close

Change-Id: Iaa6ffe9d92f598fe9e3c8ae373fadbe3dfbf1d4a
2017-04-26 15:32:11 -05:00
Jenkins2
e478d2eb94 Merge "res_pjsip_sdp_rtp: No rtpmap for static RTP payload IDs in SDP." 2017-04-26 10:44:00 -05:00
Yasin CANER
99dea9ba84 res_pjsip_session : fixed wrong From Header number On Re-invite
ASTERISK-26964 #close

Change-Id: I55a9caa7dc90e6c4c219cb09b5c2ec08af84a302
2017-04-26 17:29:52 +03:00
Jenkins2
5a987fc5e9 Merge "res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions." 2017-04-25 17:04:47 -05:00
George Joseph
a3a77890dc Merge "res_hep: Add additional config initialization and validation" 2017-04-25 16:39:04 -05:00
George Joseph
8df729517e Merge "res_pjsip_session.c: Restructure ast_sip_session_alloc()" 2017-04-25 15:37:15 -05:00
Sean Bright
0611f2ca17 res_hep: Add additional config initialization and validation
* Initialize hepv3_runtime_data.sockfd to -1 so that our ao2 destructor
  does not close fd 0

* Add logging output when the required option - capture_address - is not
  specified.

* Remove a no longer relevant #define and correct related documentation

* Pass appropriate flags to aco_option_register so that capture_address
  cannot be the empty string.

ASTERISK-26953 #close

Change-Id: Ief08441bc6596d6f1718fa810e54a5048124f076
2017-04-24 13:22:48 -05:00
George Joseph
cebfe85aff Merge "rtp_engine/res_rtp_asterisk: Fix RTP struct reentrancy crashes." 2017-04-21 15:46:21 -05:00
Richard Mudgett
f1d20c84a1 res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions.
If ICE is enabled and a STUN server does not respond then we will block
until we give up on the STUN response.  This will take nine seconds.  In
the mean time the peer that sent the INVITE will send retransmissions.

* Restructure res_pjsip_session.c:new_invite() to send a 100 Trying out
earlier to prevent these retransmissions.

ASTERISK-26890

Change-Id: Ie3fc611e53a0eff6586ad55e4aacad81cf6319a8
2017-04-21 14:17:55 -05:00
Richard Mudgett
835c209445 res_pjsip_session.c: Restructure ast_sip_session_alloc()
* Restructure ast_sip_session_alloc() to need less cleanup on off nominal
error paths.

* Made ast_sip_session_alloc() and ast_sip_session_create_outgoing() avoid
unnecessary ref manipulation to return a session.  This is faster than
calling a function.  That function may do logging of the ref changes with
REF_DEBUG enabled.

Change-Id: I2a0affc4be51013d3f0485782c96b8fee3ddb00a
2017-04-21 14:14:08 -05:00