Commit Graph

29172 Commits

Author SHA1 Message Date
David J. Pryke
94f616e5e2 chan_sip: Expose read-only access to the full SIP INVITE Request-URI
Provide a way to get the contents of the the Request URI from the initial SIP
INVITE in dial plan function call. (In this case "${CHANNEL(ruri)}")

ASTERISK-27278
Reported by: David J. Pryke
Tested by: David J. Pryke

Change-Id: I1dd4d6988eed1b6c98a9701e0e833a15ef0dac3e
2017-09-19 10:34:01 -04:00
Jenkins2
1a35e2b8c1 Merge "cdr_mysql.c: Apply cdrzone to start and answer" into 13 2017-09-19 06:25:59 -05:00
Alexander Traud
cfc0ca1fb5 tcptls: Fixed a white space error.
ASTERISK-26606

Change-Id: I81a7268ef7ba012d4d80d44c70b6276d48e397fa
2017-09-18 17:27:24 +02:00
alex
f1eb36ea51 cdr_mysql.c: Apply cdrzone to start and answer
Change-Id: I7de0a5adc89824a5f2b696fc22c80fc22dff36b0
2017-09-18 07:03:00 -05:00
Jenkins2
b6e1b13de4 Merge "res_pjsip: Filter out non SIP(S) requests" into 13 2017-09-15 15:24:50 -05:00
Jenkins2
14109355f3 Merge "res_calendar: Various fixes" into 13 2017-09-15 08:10:22 -05:00
George Joseph
63900374fa res_pjsip: Filter out non SIP(S) requests
Incoming requests with non sip(s) URIs in the Request, To, From
or Contact URIs are now rejected with
PJSIP_SC_UNSUPPORTED_URI_SCHEME (416).  This is performed in
pjsip_message_filter (formerly pjsip_message_ip_updater) and is
done at pjproject's "TRANSPORT" layer before a request can even
reach the distributor.

URIs read by res_pjsip_outbound_publish from pjsip.conf are now
also checked for both length and sip(s) scheme.  Those URIs read
by outbound registration and aor were already being checked for
scheme but their error messages needed to be updated to include
scheme failure as well as length failure.

Change-Id: Ibb2f9f1d2dc7549da562af4cbd9156c44ffdd460
2017-09-14 13:08:38 -06:00
Jenkins2
77c6bab990 Merge "chan_rtp: Use μ-law by default instead of signed linear" into 13 2017-09-14 12:53:10 -05:00
Jenkins2
df7211421e Merge "res_pjsip: Add handling for incoming unsolicited MWI NOTIFY" into 13 2017-09-14 11:53:47 -05:00
Sean Bright
db785ddb92 res_calendar: Various fixes
* The way that we were looking at XML elements for CalDAV was extremely
  fragile, so use SAX2 for increased robustness.

* Don't complain about a 'channel' not be specified if autoreminder is
  not set. Assume that if 'channel' is not set, we don't want to be
  notified.

* Fix some truncated CLI output in 'calendar show calendar' and make the
  'Autoreminder' description a bit more clear

ASTERISK-24588 #close
Reported by: Stefan Gofferje

ASTERISK-25523 #close
Reported by: Jesper

Change-Id: I200d11afca6a47e7d97888f286977e2e69874b2c
2017-09-13 15:46:43 -04:00
Sean Bright
0688f61a01 chan_rtp: Use μ-law by default instead of signed linear
Multicast/Unicast RTP do not use SDP so we need to use a format that
cleanly maps to one of the static RTP payload types. Without this
change, an Originate to a Multicast or Unicast channel without a format
specified would produce no audio on the receiving device.

ASTERISK-21399 #close
Reported by: Tzafrir Cohen

Change-Id: I97e332b566e85da04b0004b9b0daae746cfca0e3
2017-09-13 10:38:11 -04:00
George Joseph
ed2a4ee81e res_pjsip: Add handling for incoming unsolicited MWI NOTIFY
A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to
receive unsolicited MWI NOTIFY requests and make them available to
other modules via the stasis message bus.

res_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request"
that parses a simple-message-summary body and, if
endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state
with the voice-message counts from the message.

Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c
2017-09-13 08:21:36 -06:00
Jenkins2
1aef4fe9df Merge "alembic: Fix typo in add_auto_info_to_endpoint_dtmf_mode" into 13 2017-09-12 14:13:17 -05:00
Richard Mudgett
044674c0cd res_rtp_asterisk.c: Add doxygen to RTCP payload types.
Change-Id: I3f20ce428777cc4ce9c13b2f808d29ff8c873998
2017-09-11 12:34:46 -05:00
Jenkins2
55af8326b5 Merge "alembic: Add support for MS-SQL" into 13 2017-09-11 06:39:28 -05:00
George Joseph
5ff2d06aa6 alembic: Fix typo in add_auto_info_to_endpoint_dtmf_mode
The downgrade function was missing "_v2" at the end of the
alter column type.

Change-Id: Iaa9bcef48d6f3590ce07a61342d8e66f00263d8e
2017-09-11 04:52:51 -06:00
Walter Doekes
babb617f20 res/res_pjsip: Fix localnet checks in pjsip, part 2.
In 45744fc53, I mistakenly broke SDP media address rewriting by
misinterpreting which address was checked in the localnet comparison.

Instead of checking the remote peer address to decide whether we need
media address rewriting, we check our local media address: if it's
local, then we rewrite. This feels awkward, but works and even made
directmedia work properly if you set local_net. (For the record: for
local peers, the SDP media rewrite code is not called, so the
comparison does no harm there.)

ASTERISK-27248 #close

Change-Id: I566be1c33f4d0a689567d451ed46bab9c3861d4f
2017-09-10 13:17:27 +02:00
Florian Floimair
ad606844be alembic: Add support for MS-SQL
MS-SQL has no native Enum-type support and therefore
needs to work with constraints.
Since these constraints need unique names the suggested approach
referenced in the following alembic documentation has been applied:
http://bit.ly/2x9r8pb

ASTERISK-27255 #close

Change-Id: I4a399ba3eed41a33ce8cb294968ad340221580ee
2017-09-08 11:48:00 -05:00
Jenkins2
63211cc0ff Merge "app_waitforsilence: Cleanup & don't treat missing frames as 'noise'" into 13 2017-09-08 10:42:37 -05:00
Joshua Colp
2971c2f333 Merge "chan_sip: when getting sip pvt return failure if not found" into 13 2017-09-08 09:37:51 -05:00
Jenkins2
584f6abc4e Merge "res_srtp: Add support for libsrtp2.1." into 13 2017-09-07 13:26:39 -05:00
Jenkins2
bab59a8190 Merge "chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE" into 13 2017-09-07 13:05:42 -05:00
Jenkins2
1161fce1a1 Merge "func_cdr: honour 'u' flag on dummy channel" into 13 2017-09-07 10:40:40 -05:00
Jacek Konieczny
2aefc6e5fe func_cdr: honour 'u' flag on dummy channel
Fixes ${CDR(...,u)} when used in cdr_custom.conf

ASTERISK-27165 #close

Change-Id: Ia4e0b6ba93e03d27886354c279737790e2cd6a83
2017-09-07 04:36:59 -05:00
Scott Griepentrog
c0d4f1880e chan_sip: when getting sip pvt return failure if not found
In handle_request_invite, when processing a pickup, a call
is made to get_sip_pvt_from_replaces to locate the pvt for
the subscription. The pvt is assumed to be valid when zero
is returned indicating no error, and is dereferenced which
can cause a crash if it was not found.

This change checks the not found case and returns -1 which
allows the calling code to fail appropriately.

ASTERISK-27217 #close
Reported-by: Bryan Walters

Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612
2017-09-06 16:14:26 -05:00
Sean Bright
e4797b2cbd app_waitforsilence: Cleanup & don't treat missing frames as 'noise'
* WaitForSilence completes successfully if it receives no media in the
  specified timeout, but when acting as WaitForNoise that logic needs
  to be reversed.

* Use standard argument parsing macros and add some error checking for
  invalid values.

* The documentation indicated that the first argument to both
  WaitForSilence and WaitForNoise was required when it was not. Update
  the documentation to reflect that.

* Wrap up some behavior in structs to avoid boolean checks all over the
  place.

ASTERISK-24066 #close
Reported by: M vd S

Change-Id: I01d40adc5b63342bb5018a1bea2081a0aa191ef9
2017-09-06 17:11:41 -04:00
George Joseph
186ef1a657 stasis/control: Fix possible deadlock with swap channel
If an error occurs during a bridge impart it's possible that
the "bridge_after" callback might try to run before
control_swap_channel_in_bridge has been signalled to continue.
Since control_swap_channel_in_bridge is holding the control lock
and the callback needs it, a deadlock will occur.

* control_swap_channel_in_bridge now only holds the control
  lock while it's actually modifying the control structure and
  releases it while the bridge impart is running.
* bridge_after_cb is now tolerant of impart failures.

Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3
2017-09-06 12:41:25 -05:00
Joshua Colp
9a366d2424 Merge "alembic: Fix enum creation for dtls_fingerprint" into 13 2017-09-06 11:23:19 -05:00
Jenkins2
f6d63a2539 Merge "alembic: fix erroneous commit for add_prune_on_boot" into 13 2017-09-06 10:19:28 -05:00
Jenkins2
47e8ffe40a Merge "res/res_pjsip: Standardize/fix localnet checks across pjsip." into 13 2017-09-06 09:43:32 -05:00
Jenkins2
ae5471e313 Merge "res_rtp_asterisk.c: Check RTP packet version earlier." into 13 2017-09-06 09:34:55 -05:00
Vitezslav Novy
597d1f8951 chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE
If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE
to both parties to set up media path directly between the endpoints.
In this reINVITE msg SDP origin line (o=) contains IP address of endpoint
instead of IP of asterisk. This behavior violates RFC3264, sec 8:
"When issuing an offer that modifies the session,
the "o=" line of the new SDP MUST be identical to that in the
previous SDP, except that the version in the origin field MUST
increment by one from the previous SDP."
This patch assures IP address of Asterisk is always sent in
SDP origin line.

ASTERISK-17540
Reported by:  saghul

Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e
2017-09-06 16:22:53 +02:00
Jenkins2
b55bab3237 Merge "formats: Restore previous fread() behavior" into 13 2017-09-06 09:03:04 -05:00
George Joseph
15ddc9acb3 alembic: Fix enum creation for dtls_fingerprint
Change-Id: Ic061c5066a146616a68376881c7e4cf6d6e7e7db
2017-09-06 06:56:13 -06:00
Jenkins2
f9b28dd990 Merge "res_pjsip_t38: Make t38_reinvite_response_cb tolerant of NULL channel" into 13 2017-09-06 06:52:55 -05:00
Florian Floimair
2370469645 alembic: fix erroneous commit for add_prune_on_boot
Added include for postgresql ENUM type and
redefined values in the same way as in the
other migration scripts.

ASTERISK-27254 #close

Change-Id: Id667304cdf3891b1c2f7d35fab3e2a84026159fa
2017-09-06 05:59:44 -05:00
Alexander Traud
13aa1241c3 res_srtp: Add support for libsrtp2.1.
Asterisk is able to use libSRTP 2.0.x. However since libSRTP 2.1.x, the macro
SRTP_AES_ICM got renamed to SRTP_AES_ICM_128. Beside to still compile with
previous versions of libSRTP, this change allows libSRTP 2.1.x as well.

ASTERISK-27253 #close

Change-Id: I2e6eb3c3bc844fee8a624060a2eb6f182dc70315
2017-09-06 10:15:26 +02:00
Ben Ford
598a18ffee chan_pjsip: Suppress frame warnings.
When rtp_keepalive is on for a PJSIP endpoint dialing to another
Asterisk instance also using PJSIP, Asterisk will continue to print
warning messages about not being able to send frames of a certain
type. This suppresses that warning message.

Change-Id: I0332a05519d7bda9cacfa26d433909ff1909be67
2017-09-05 17:15:23 -05:00
Richard Mudgett
6c922b3157 res_rtp_asterisk.c: Check RTP packet version earlier.
Change-Id: Ic6493a7d79683f3e5845dff1cee49445fd5a0adf
2017-09-05 12:12:05 -05:00
Sean Bright
3f7d0b63fc formats: Restore previous fread() behavior
Some formats are able to handle short reads while others are not, so
restore the previous behavior for the format modules so that we don't
have spurious errors when playing back files.

ASTERISK-27232 #close
Reported by: Jens T.

Change-Id: Iab7f52b25a394f277566c8a2a4b15a692280a300
2017-09-05 11:05:48 -04:00
Walter Doekes
45744fc53d res/res_pjsip: Standardize/fix localnet checks across pjsip.
In 2dee95cc (ASTERISK-27024) and 776ffd77 (ASTERISK-26879) there was
confusion about whether the transport_state->localnet ACL has ALLOW or
DENY semantics.

For the record: the localnet has DENY semantics, meaning that "not in
the list" means ALLOW, and the local nets are in the list.

Therefore, checks like this look wrong, but are right:

    /* See if where we are sending this request is local or not, and if
       not that we can get a Contact URI to modify */
    if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) {
        ast_debug(5, "Request is being sent to local address, "
                     "skipping NAT manipulation\n");

(In the list == localnet == DENY == skip NAT manipulation.)

And conversely, other checks that looked right, were wrong.

This change adds two macro's to reduce the confusion and uses those
instead:

    ast_sip_transport_is_nonlocal(transport_state, addr)
    ast_sip_transport_is_local(transport_state, addr)

ASTERISK-27248 #close

Change-Id: Ie7767519eb5a822c4848e531a53c0fd054fae934
2017-09-05 16:16:01 +02:00
Joshua Colp
7b240d1734 Merge "app_directory: Handle a NULL mailbox without crashing" into 13 2017-09-05 08:20:26 -05:00
Jenkins2
6b9d18be7a Merge "chan_ooh323: Fix confusing indentation warning" into 13 2017-09-05 06:39:56 -05:00
George Joseph
786c4791f9 res_pjsip_t38: Make t38_reinvite_response_cb tolerant of NULL channel
t38_reinvite_response_cb can get called by res_pjsip_session's
session_inv_on_tsx_state_changed in situations where session->channel
is NULL.  If it is, the ast_log warning segfaults because it tries
to get the channel name from a NULL channel.

* Check session->channel and print "unknown channel" when it's NULL.

ASTERISK-27236
Reported by: Ross Beer

Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7
2017-09-05 04:54:51 -06:00
Sean Bright
55f30c29fd rtp_engine: Prevent possible double free with DTLS config
ASTERISK-27225 #close
Reported by: Richard Kenner

Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89
2017-09-01 18:59:35 -04:00
Sean Bright
f36db2dbdc chan_ooh323: Fix confusing indentation warning
ASTERISK-27177 #close
Reported by: Tzafrir Cohen

Change-Id: I40311c404edb2302a7543ad5ca7a06b2a38f2d97
2017-09-01 14:15:40 -04:00
Sean Bright
5f4863d4f9 app_directory: Handle a NULL mailbox without crashing
ASTERISK-27241 #close
Reported by: David Moore

Change-Id: Ibbbca85517b04c315406ebfe3b6f7e0763daedc6
2017-09-01 11:16:09 -04:00
Jenkins2
07577fc997 Merge "chan_pjsip: Add tag info in CHANNEL function" into 13 2017-08-31 17:15:52 -05:00
Jenkins2
b0064245b3 Merge "pjsip_message_ip_updater: Fix issue handling "tel" URIs" into 13 2017-08-31 06:36:46 -05:00
Jenkins2
c4254e237c Merge "AST-2017-006: Fix app_minivm application MinivmNotify command injection" into 13 2017-08-31 06:35:14 -05:00