Commit Graph

3862 Commits

Author SHA1 Message Date
Joshua Colp dcea8f13ce res_pjsip: Handle invocation of callback on outgoing request when error occurs.
There are some error cases in PJSIP when sending a request that will
result in the callback for the request being invoked.  The code did not
handle this case and assumed on every error case that the callback was not
invoked.

The code has been changed to check whether the callback has been invoked
and if so to absorb the error and treat it as a success.

ASTERISK-26679
ASTERISK-26699

Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91
2017-02-01 13:15:18 -06:00
George Joseph 140e453afc debug_utilities: Add ast_logescalator
The escalator works by creating a set of startup commands in cli.conf
that set up logger channels and issue the debug commands for the
subsystems specified.  If asterisk is running when it is executed,
the same commands will be issued to the running instance.  The original
cli.conf is saved before any changes are made and can be restored by
executing '$prog --reset'.

The log output will be stored in...
$astlogdir/message.$uniqueid
$astlogdir/debug.$uniqueid
$astlogdir/dtmf.$uniqueid
$astlogdir/fax.$uniqueid
$astlogdir/security.$uniqueid
$astlogdir/pjsip_history.$uniqueid
$astlogdir/sip_history.$uniqueid

Some minor tweaks were made to chan_sip, and res_pjsip_history
so their history output could be send to a log channel as packets
are captured.

A minor tweak was also made to manager so events are output to verbose
when "manager set debug on" is issued.

Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543
2017-01-27 15:09:54 -06:00
George Joseph 4178f5aee6 Merge "res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving." into 14 2017-01-27 07:02:14 -06:00
zuul 75ef430f2f Merge "PJPROJECT logging: Fix detection of max supported log level." into 14 2017-01-26 18:49:44 -06:00
zuul cac5ee2517 Merge "ari: Implement 'debug all' and request/response logging" into 14 2017-01-26 18:46:19 -06:00
George Joseph 3985126a53 Merge "T.140: Fix format ref and memory leaks." into 14 2017-01-26 16:07:02 -06:00
George Joseph 420b10b00e Merge "res_musiconhold.c: Fix format ref leak when parsing MOH config class." into 14 2017-01-26 16:05:31 -06:00
Joshua Colp 66bed4cc84 res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving.
This change adds a missing unreference of the hostname when resolving and
also cleans up the iterator.

ASTERISK-26735

Change-Id: Ic012ebaf3d89e714eec340b7b0c5e63c66af857a
2017-01-26 10:59:06 -06:00
Joshua Colp b331cb84d5 Merge "res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0." into 14 2017-01-26 07:48:25 -06:00
Richard Mudgett 89221a6628 T.140: Fix format ref and memory leaks.
* channel.c:ast_sendtext(): Fix T.140 SendText memory leak.

* format_compatibility.c: T.140 RED and T.140 were swapped.

* res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak.

* res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic
scheduled red_write().

* res_rtp_asterisk.c: Some other minor misc tweaks.

Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb
2017-01-25 13:46:34 -06:00
zuul 3837e994d9 Merge "stasis_bridge.c: Fix off-nominal stasis control ref leak." into 14 2017-01-25 13:39:21 -06:00
George Joseph e6957f561c Merge "res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands." into 14 2017-01-24 15:47:25 -06:00
Joshua Colp 60e54d69b9 res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0.
When configuring a match using a netmask the error variable was
not defaulting to 0. For some people this would cause the code
to think an error occurred when adding the match when in reality
it added perfectly fine.

ASTERISK-26693

Change-Id: I850c250813742bddde65c84e739093c9e01dfe56
2017-01-24 15:41:27 -06:00
Richard Mudgett 7206f5acd8 stasis_bridge.c: Fix off-nominal stasis control ref leak.
Change-Id: Ib17218343a6596832060180e19386da9df150ac8
2017-01-24 13:59:20 -06:00
Richard Mudgett c5713081f4 res_musiconhold.c: Fix format ref leak when parsing MOH config class.
Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5
2017-01-24 13:55:12 -06:00
Joshua Colp 3ddf7da3a7 Merge "Free endpoint ACLs when destroying PJSIP endpoints." into 14 2017-01-24 12:45:11 -06:00
Richard Mudgett b43cb30d7b PJPROJECT logging: Fix detection of max supported log level.
The mechanism used for detecting the maximum log level compiled into the
linked pjproject did not work.  The API call simply stores the requested
level into an integer and does no range checking.  Asterisk was assuming
that there was range checking and limited the new value to the allowable
range.  To get the actual maximum log level compiled into the linked
pjproject we need to get and save off the initial set log level from
pjproject.  This is the maximum log level supported.

* Get and save off the initial log level setting before altering it to the
desired level on startup.  This has to be done by a macro rather than
calling a core function to avoid incorrectly linking pjproject.

* Split the initial log level warning messages to warn if the linked
pjproject cannot support the requested startup level and if it is too low
to get the pjproject buildopts for "pjproject show buildopts".

* Adjust the CLI "pjproject set log level" to check the saved max log
level and to generate normal output messages instead of a warning message.

ASTERISK-26743 #close

Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
2017-01-24 11:25:11 -06:00
George Joseph 6f688fd0e9 Merge "res_pjsip_endpoint_identifier_ip: Read settings before resolving." into 14 2017-01-24 07:06:34 -06:00
Richard Mudgett 5d6469b209 res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands.
ASTERISK-23828 #close

Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567
2017-01-23 18:06:55 -06:00
Mark Michelson 27c7d6d644 Free endpoint ACLs when destroying PJSIP endpoints.
If endpoint ACLs were specified, they were not being freed
when endpoints were destroyed. On systems with realtime endpoints, this
could add up quickly since each DB lookup would allocate the ACL without
freeing it.

ASTERISK-26731 #close
Reported by Ustinov Artem

Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad
2017-01-23 16:22:45 -06:00
George Joseph 0a60bd8dd9 Merge "res_pjsip_pubsub.c: Fix incorrect message string wrapping." into 14 2017-01-23 15:00:50 -06:00
George Joseph 1d890874f3 ari: Implement 'debug all' and request/response logging
The 'ari set debug' command has been enhanced to accept 'all' as an
application name.  This allows dumping of all apps even if an app
hasn't registered yet.  To accomplish this, a new global_debug global
variable was added to res/stasis/app.c and new APIs were added to
set and query the value.

'ari set debug' now displays requests and responses as well as events.
This required refactoring the existing debug code.

* The implementation for 'ari set debug' was moved from stasis/cli.{c,h}
  to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted.
* In order to print the body of incoming requests even if a request
  failed, the consumption of the body was moved from the ari stubs
  to ast_ari_callback in res_ari.c and the moustache templates were
  then regenerated.  The body is now passed to ast_ari_invoke and then
  on to the handlers.  This results in code savings since that template
  was inserted multiple times into all the stubs.

An additional change was made to the ao2_str_container implementation
to add partial key searching and a sort function.  The existing cli
code assumed it was already there when it wasn't so the tab completion
was never working.

Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf
2017-01-23 10:23:23 -07:00
Joshua Colp 2974c83bcc Merge "res_pjsip_pubsub.c: Fix AMI event list counts." into 14 2017-01-23 11:09:37 -06:00
Joshua Colp 74577cf32d res_pjsip_endpoint_identifier_ip: Read settings before resolving.
An option has been added, srv_lookups, which controls whether
SRV lookups are performed on the provided match hosts or not.
It was possible for this option to be applied after resolution
had already happened.

This change makes it so hosts are stored away, settings are read
and applied, and then resolution is done. This ensures that no
matter the ordering the srv_lookups option is in effect.

ASTERISK-26735

Change-Id: I750378cb277be0140f8c5539450270afbfc43388
2017-01-23 10:10:18 -06:00
zuul dd92feb7fd Merge "res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage." into 14 2017-01-23 10:04:49 -06:00
Richard Mudgett 93fcb615ba res_pjsip_pubsub.c: Fix AMI event list counts.
Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound,
and PJSIPShowResourceLists actions event counts.  The reported counts may
not necessarily be accurate depending on what happens.

The subscriptions count would be wrong if Asterisk ever has outbound
subscriptions.

The resource list count could be wrong if a list were added or removed
during the AMI action being processed.

Change-Id: I4344301827523fa174960a42c413fd19abe4aed5
2017-01-20 12:39:29 -06:00
Richard Mudgett 33c3d3c9dd res_pjsip_pubsub.c: Fix incorrect message string wrapping.
Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120
2017-01-20 12:37:07 -06:00
Richard Mudgett dc42c1ffff res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage.
Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be
2017-01-20 12:33:41 -06:00
Richard Mudgett f9be81fc32 res_pjsip: alloca can never fail.
Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1
2017-01-20 12:30:54 -06:00
Richard Mudgett 4f655a7d59 res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages.
Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49
2017-01-20 07:21:58 -06:00
zuul b08037cd8f Merge "res_pjsip_endpoint_identifier_ip: Add support for SRV lookups." into 14 2017-01-09 12:45:01 -06:00
Joshua Colp 3e8d9a5b06 Merge "res_pjsip: Fix known compact header issues" into 14 2017-01-09 07:23:24 -06:00
zuul c9825b26a9 Merge "res_rtp_asterisk.c: Fix uninitialized memory crash." into 14 2017-01-06 14:04:34 -06:00
zuul 4bf7044332 Merge "res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip()." into 14 2017-01-06 13:51:01 -06:00
Joshua Colp a52598093d res_pjsip_endpoint_identifier_ip: Add support for SRV lookups.
This change implements SRV support for the IP based endpoint
identifier module. All possible addresses through SRV are looked
up and added as matches. If no SRV records are available a
fallback to normal host resolution is done. If an IP address
is provided then no SRV lookup occurs.

This is configured using the "srv_lookups" option on the
identify section and defaults to "yes".

ASTERISK-26693

Change-Id: I6b641e275bf96629320efa8b479737062aed82ac
2017-01-06 09:00:16 -06:00
zuul e37db9feb6 Merge "res_pjsip_session: Access SIPDOMAIN via Dialplan." into 14 2017-01-05 10:01:06 -06:00
Alexander Traud f0eb3214e6 res_pjsip_session: Access SIPDOMAIN via Dialplan.
This feature was available in the SIP channel driver chan_sip. For example,
Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
and dial remote SIP-URIs. This change here sets the SIP destination domain of
an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.

ASTERISK-26670 #close

Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243
2017-01-04 07:13:12 -06:00
Joshua Elson 97f8703d85 res_pjsip: Fix known compact header issues
ASTERISK-26684 #close

Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a
2016-12-31 20:00:37 -06:00
George Joseph d534dc9df7 res_pjsip_refer: Handle compact Refer-To header.
refer_incoming_refer_request needed to look for the "r" header as well
as the "Refer-To" header.

ASTERISK-26655 #close
patches:
	refer_compact_fix.diff	submitted by JoshE (license 6075)

Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f
2016-12-30 09:17:33 -06:00
Richard Mudgett 64edb4e05c res_rtp_asterisk.c: Fix uninitialized memory crash.
ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to
ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
parameter may not get initialized.  Thus when the code tries to save the
'us' parameter to the local address we could try to copy a ridiculous
sized memory buffer and segfault.

* Made pass an initialized 'us' parameter to ast_ouraddrfor().

* Optimized out the 'us' struct variable.

ASTERISK-26672 #close

Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
2016-12-22 12:24:03 -06:00
Richard Mudgett aa5be9842e res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip().
We access uninitialized memory when the 'ourip' parameter does not
have an initial guess to our IP address.

ASTERISK-26672

Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
2016-12-22 12:24:03 -06:00
Richard Mudgett 4ecc3de00e res_rtp_asterisk.c: Fix off nominal memory leak.
Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75
2016-12-21 11:15:09 -06:00
Joshua Colp da8ad88393 Merge "res_pjsip: Add/update ERROR msg if invalid URI." into 14 2016-12-20 05:30:22 -06:00
Richard Mudgett b82ebf13af res_pjsip: Add/update ERROR msg if invalid URI.
ASTERISK-24499

Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c
2016-12-14 11:37:17 -06:00
George Joseph 510acb2eff res_sorcery_memory_cache: Change an error to a debug message
When a sorcery user calls ast_sorcery_delete on an object that
may have already expired from the cache, res_sorcery_memory_cache
spits out an ERROR.  Since this can happen frequently and validly when
an inbound registration expires after the cache entry expired, the
errors are unnecessary and misleading.  Changed to a debug/1.

Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7
2016-12-14 08:27:08 -06:00
Joshua Colp 163dba946a Merge "res_pjsip: Fix 'A = B != C' kind." into 14 2016-12-09 05:33:41 -06:00
Joshua Colp a2cc7bbdf4 Merge "res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command" into 14 2016-12-08 18:31:21 -06:00
Badalyan Vyacheslav c52f3d1162 res_pjsip: Fix 'A = B != C' kind.
Consider reviewing the expression of the 'A = B != C' kind.
The expression is calculated as following: 'A = (B != C)'

Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d
2016-12-08 16:53:02 -06:00
Joshua Colp 98b94af8c3 res_format_attr_opus: Fix crash when fmtp contains spaces.
When an opus offer or answer was received that contained an
fmtp line with spaces between the attributes the module would
fail to properly parse it and crash due to recursion.

This change makes the module handle the space properly and
also removes the recursion requirement.

ASTERISK-26579

Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3
2016-12-08 11:47:04 +00:00
George Joseph 501ba69ac0 res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command
The PJSIPShowRegistrationsInbound AMI command was just dumping out
all AORs which was pretty useless and resource heavy since it had
to get all endpoints, then all aors for each endpoint, then all
contacts for each aor.

PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail
events which meets the intended purpose of the other command and has
significantly less overhead.  Also, some additional fields that were
added to Contact since the original creation of the ContactStatusDetail
event have been added to the end of the event.

For compatibility purposes, PJSIPShowRegistrationsInbound is left
intact.

ASTERISK-26644 #close

Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a
2016-12-07 18:11:22 -06:00