Commit Graph

29332 Commits

Author SHA1 Message Date
Joshua Colp
2416cf62d5 Merge "res_pjsip_transport_websocket: Add support for IPv6." into 14 2017-03-14 20:06:48 -05:00
Richard Mudgett
eb50a37e8e pbx.c: Fix crash from malformed exten pattern.
Forgetting to indicate an exten is a pattern can cause a crash if the
"pattern" has a character set range.  e.g., "9999[3-5]" The crash is due
to a buffer overwrite because the '-' exten eye-candy wasn't removed as
expected and overran the allocated space.

The buffer overwrite is fixed two ways in this patch.

1) Fix ext_strncpy() to distinguish between pattern and non-pattern
extens.  Now '-' characters are removed when they are eye-candy and not
when they are part of a pattern character set.  Since the function is
private to pbx.c, the return value now returns the number of bytes written
to the destination buffer instead of the strlen() of the final buffer so
the callers that care don't need to add one.

2) Fix callers to ext_strncpy() to supply the correct available buffer
size of the destination buffer.

ASTERISK-26668

Change-Id: I555d97411140e47e0522684062d174fbe32aa84a
2017-03-14 17:09:41 -06:00
Joshua Colp
8b455af453 Merge "menuselect: Add a new 'options' support type" into 14 2017-03-14 17:36:13 -05:00
Richard Begg
cd57d5718c chan_iax2: Reload of iax peer results in loss of host address/port
When using a non-dynamic peer address, build_peer() invalidates the
peer address structure by setting the address family to unspecified.
However, if dnsmgr is enabled, the subsequent call to ast_dnsmgr_lookup()
will not amend the peer address if the cache is still valid, resulting
in peer connectivity failures.
To fix this, we call ast_dnsmgr_refresh() instead.

ASTERISK-26865

Change-Id: Id8a89a2f771ebbaf32255a35fe596a6dcb97a082
2017-03-14 16:00:47 -06:00
Matt Jordan
dfa689cf94 configure: Don't use the progress bar with curl when downloading to stdout
In some scenarios, such as when there may not be a terminal (such as
inside a Docker container), curl will apparently direct the progress bar
to stdout. This can cause extra data to be appended to a file curl'd
down to stdout, resulting in md5 verification failures.

This patch removes the progress bar, and tells curl to download the file
silently.

ASTERISK-26872 #close

Change-Id: Ie860b020f627d4372b3e7ce9453de5faafeebe6c
2017-03-14 15:12:28 -05:00
Joshua Colp
e87a763e55 Merge "chan_pjsip: Don't assume a session will have a channel." into 14 2017-03-14 13:35:27 -05:00
Matt Jordan
d31aa48d09 configs/samples/hep.conf.sample: Clarify how the HEP stack works
This patch updates the documenation in hep.conf.sample to better specify
how the various HEP modules interact.

ASTERISK-26717 #close

Change-Id: I337fb742a89e3ec5edc7fc7a7a0295218d841124
2017-03-14 09:52:49 -06:00
Joshua Colp
8af0a0f55d Merge "chan_sip: Call not cancelled after receiving a 422 response" into 14 2017-03-14 10:19:29 -05:00
Matt Jordan
456fbedf7f funcs/func_devstate: Remove new line in Device field of during module load
During module loading of func_devstate, Asterisk emits the current
device state of all Custom device states currently stored in the AstDB.
This was erroneously including a new line character ('\n') to the end of
the device state, causing two new lines to be emitted in
DeviceStateChange AMI events.

Note that this only happened for those device state changes that
occurred during startup. Regular device state changes for Custom device
states are handled elsewhere, and did not have the newline.

ASTERISK-26643 #close
Reported by: Roman Bedros
Tested by: Matt Jordan
patches:
  ami_devstate.diff uploaded by Roman Bedros (License 6842)

Change-Id: I1f4c02fc79c448d43bf725f5039c83d9611d7d93
2017-03-14 09:05:14 -06:00
Matt Jordan
e9c83766e9 main/stasis_cache: Demote the ERROR message when removing a nonexistent item
This patch demotes the ERROR message that is displayed when a
nonexistent item is removed from the Stasis cache. The genesis of this
demotion is due to chan_sip's realtime peers and their interaction with
Asterisk's core ast_endpoint code, but ostensibly it could happen from
other channel drivers as well.

Since Mark Michelson already did an excellent job of explaining on this
issue, it is quoted here for posterity:

"Internally, when a realtime peer is retrieved, Asterisk creates an
ast_endpoint structure. When that peer is destroyed, the ast_endpoint is
destroyed as well. Part of the destruction of the ast_endpoint involves
clearing the Stasis cache of all information about that endpoint. The
problem here is that the act of creating the ast_endpoint is not enough
to actually put any information in the Stasis cache. Instead, something
has to happen, such as a state change, in order for the Stasis cache to
have any information about that endpoint. When a device registers,
chan_sip creates an ast_endpoint structure, processes the REGISTER, and
then destroys the ast_endpoint. When the ast_endpoint is destroyed,
there is nothing to destroy in the Stasis cache, so an error message is
emitted. When you use rtcachefriends, ast_endpoint structures persist
for the lifetime of the module and so you do not see this error
message."

ASTERISK-25237 #close

Change-Id: I53cebc6b4a897a1ab9564182b75c177780feff70
2017-03-14 08:40:43 -06:00
Matt Jordan
30f52d79d7 res_pjsip_endpoint_identifier_ip: Add an option to match requests by header
This patch adds a new features to the endpoint identifier module,
'match_header'. When set, inbound requests are matched by a provided SIP
header: value pair. This option works in conjunction with the existing
'match' configuration option, such that if any 'match*' attribute
matches an inbound request, the request is associated with the specified
endpoint.

Since this module now identifies by more than just IP address,
appropriate renaming of the module and/or variables can be done in a
non-release branch.

ASTERISK-26863 #close

Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453
2017-03-14 08:16:44 -05:00
Matt Jordan
d5e42fefec res_pjsip_endpoint_identifier_ip: Clean up a spaces/tabs issue
Tabs > spaces. Always.

Change-Id: I899ff662361c7ab0327173bd7851a67b53dd65f1
2017-03-14 07:58:50 -05:00
Joshua Colp
e237bb90af chan_pjsip: Don't assume a session will have a channel.
When querying for PJSIP specific information using the dialplan
function CHANNEL() it is possible that the underlying session
will no longer have a channel associated with it. This is
most likely to occur when the RTCP HEP module attempts to get
the channel name. If this happens then a crash will occur.

This change just adds a check that the channel exists on the
session before querying it.

ASTERISK-26857

Change-Id: I113479cffff6ae64cf8ed089e9e1565223426f01
2017-03-13 12:37:47 -06:00
George Joseph
5ad96b7ce1 menuselect: Add a new 'options' support type
The Binaural Rendering patches in the master branch required
menuselect to be updated with a new support type called 'option'.
This allows binaural rendering to be turned on or off when
bridge_softmix is built.  This patch backports the 'option'
functionality to the 13 and 14 branches.

Here's what it looks like in menuselect:

  [*] bridge_simple
  [*] bridge_softmix
      --- Module Options ---
  [ ] binaural_rendering_in_bridge_softmix

To create an option for a module, you can create (or update) the
menuselect-tree xml snippet in the directory where the module
resides and add a member element with an 'option' support_level.

Example (abbreviated) from bridges/bridges.xml:

<member name="binaural_rendering_in_bridge_softmix"
	displayname="Enable binaural rendering in bridge_softmix"
	remove_on_change="bridges/bridge_softmix.o bridges/bridge_softmix.so">
	<support_level>option</support_level>
	<depend>bridge_softmix</depend>
	<depend>fftw3</depend>
	<defaultenabled>no</defaultenabled>
</member>

The 'name' will be added or removed from the MENUSELECT_<dir>
make variable following the standard module "missing means yes"
rules.

Example (abbreviated) from bridges/Makefile:

ifeq ($(findstring binaural_rendering,$(MENUSELECT_BRIDGES)),)
bridge_softmix.o: _ASTCFLAGS+=-DBINAURAL_RENDERING
bridge_softmix.so: LIBS+=$(FFTW3_LIB)
endif

Change-Id: I66d23755ed6e81f8d439cad410f2ffa7c30f25ad
2017-03-13 10:08:17 -06:00
George Joseph
9c3f0073cc pjproject_bundled: Reduce the need for rebuilds
Bundled pjproject should now only rebuild if one of the menuselect
"Compiler Flags" options changes.

Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43
2017-03-10 20:31:20 -06:00
Jean Aunis
f0e2a3df68 chan_sip: Call not cancelled after receiving a 422 response
When receiving a 422 response, the invitestate variable must be reset to
INV_CALLING.

ASTERISK-26841

Change-Id: Ia0502d6b02192664cefa4e75bafdd2645ce56099
2017-03-10 16:25:27 -06:00
Joshua Colp
37a7e75969 Merge "pjsip/cli_commands: pjsip show channelstats shows wrong codec" into 14 2017-03-10 16:09:53 -06:00
Joshua Colp
f36b9dc80e Merge "res_musiconhold: moh general section is a class and issues warning" into 14 2017-03-09 17:00:51 -06:00
zuul
0c65b9bfc9 Merge "media_cache: Prefer ast_file_is_readable() over access()" into 14 2017-03-09 16:09:09 -06:00
Daniel Journo
6b846514ba pjsip/cli_commands: pjsip show channelstats shows wrong codec
* cli_commands.c Fixed CLI output

ASTERISK-26822 #close

Change-Id: I3889ef6a8f6738fc312fab42db5efacd6e452b01
2017-03-09 15:45:32 -06:00
Daniel Journo
8f3a694595 res_musiconhold: moh general section is a class and issues warning
* res_musiconhold.c: Ensure the general section is not treated as
a moh class.

ASTERISK-26353 #close

Change-Id: Ia3dbd11ea2b43ab3e6c820a9827811dd24bea82d
2017-03-09 10:35:58 -06:00
Sean Bright
a91a1e15fe media_cache: Prefer ast_file_is_readable() over access()
Change-Id: Icc0dc6e61b2e68d5cdcb74b016b2726a388c7def
2017-03-08 18:08:52 -05:00
Joshua Colp
833aa5e7a4 res_pjsip_transport_websocket: Add support for IPv6.
This change adds a PJSIP patch (which has been contributed upstream)
to allow the registration of IPv6 transport types.

Using this the res_pjsip_transport_websocket module now registers
an IPv6 Websocket transport and uses it for the corresponding
traffic.

ASTERISK-26685

Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647
2017-03-08 15:09:52 -06:00
Daniel Journo
893628abdd app_voicemail: Cannot set fromstring on a per-mailbox basis
* apps/app_voicemail.c fromstring field added to mailbox which will
override the global fromstring if set.

ASTERISK-24562 #close

Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe
2017-03-08 13:25:37 -06:00
zuul
1e8754394b Merge "pbx_spool: Gracefully handle long lines in call files" into 14 2017-03-07 17:22:49 -06:00
Daniel Journo
8f9e533040 Saynumber is trying to get "and" from "digits/" subfolder
* say.c Changed 'digits/and' to 'vm-and' for en_GB

ASTERISK-26598 #close

Change-Id: If1b713e5daea6f952b339f139178d292a6c4fcfe
2017-03-06 15:59:31 -06:00
Sean Bright
a88aca410d pbx_spool: Gracefully handle long lines in call files
Per the linked issue, we aren't checking the buffer filled by fgets()
to determine if it contains a newline, so we will fail to correctly
parse the trailing portion of a long line.

This patch increases the buffer size from 256 to 1024, and skips any
line that exceeds that length, logging a warning in the process.

ASTERISK-17067 #close
Reported by: Dave Olszewski

Change-Id: I51bcf270c1b4347ba05b43f18dc2094c76f5d7b0
2017-03-06 15:29:47 -06:00
Richard Mudgett
99cd7b7844 core: Cleanup ast_get_hint() usage.
* manager.c:manager_state_cb() Fix potential use of uninitialized hint[]
if a hint does not exist for the requested extension.  Ran into this when
developing a testsuite test.  The AMI event ExtensionStatus came out with
the hint header value containing garbage.  The AMI event PresenceStatus
also had the same issue.

* manager.c:action_extensionstate() no need to completely initialize the
hint[].  Only initialize the first element.

* pbx.c:ast_add_hint() Remove unnecessary assignment.

* chan_sip.c: Eliminate an unneeded hint[] local variable.  We only care
about the return value of ast_get_hint() there.

Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b
2017-03-02 21:46:40 -06:00
zuul
a233e99a77 Merge "res_pjsip WebRTC/websockets: Fix usage of WS vs WSS." into 14 2017-03-01 18:20:23 -06:00
Jørgen H
c7f2e548d5 res_pjsip WebRTC/websockets: Fix usage of WS vs WSS.
According to the RFC[1] WSS should only be used in the Via header
for secure Websockets.

* Use WSS in Via for secure transport.

* Only register one transport with the WS name because it would be
ambiguous.  Outgoing requests may try to find the transport by name and
pjproject only finds the first one registered.  This may mess up unsecure
websockets but the impact should be minimal.  Firefox and Chrome do not
support anything other than secure websockets anymore.

* Added and updated some debug messages concerning websockets.

* security_events.c: Relax case restriction when determining security
transport type.

* The res_pjsip_nat module has been updated to not touch the transport
on Websocket originating messages.

[1] https://tools.ietf.org/html/rfc7118

ASTERISK-26796 #close

Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12
2017-03-01 09:53:09 -06:00
Sean Bright
fe40ccc821 res_config_pgsql: Make 'require' return consistent with other backends
res_config_pgsql should match the behavior of other realtime backend
drivers so that queue_log can disable adaptive logging.

ASTERISK-25628 #close
Reported by: Dmitry Wagin

Change-Id: Ic1fb1600c7ce10fdfb1bcdc43c5576b7e0014372
2017-03-01 07:27:43 -06:00
Joshua Colp
7d1df3056d Merge "media_cache: Mark cache entry stale if cache file is removed" into 14 2017-03-01 04:47:38 -06:00
Joshua Colp
31082cbe81 Merge "res_config_pgsql: Release table locks where appropriate" into 14 2017-03-01 04:47:24 -06:00
Joshua Colp
4349edabd1 Merge "res_pjsip_outbound_registration: Subscribe to network change events" into 14 2017-02-28 19:05:37 -06:00
Joshua Colp
a44b30fc86 Merge "build: Warn if asterisk is installed in both 32 and 64 bit sys dirs" into 14 2017-02-28 17:32:49 -06:00
zuul
6d88425701 Merge "res_pjsip_pubsub: Remove unneeded endpoint unref" into 14 2017-02-28 17:28:33 -06:00
Joshua Colp
628a572b15 Merge "bridge_native_rtp: Handle case where channel joins already suspended." into 14 2017-02-28 14:50:27 -06:00
Joshua Colp
af12598253 Merge "config: Improve documentation and behavior of outbound_proxy option." into 14 2017-02-28 14:17:57 -06:00
Sean Bright
d10b692139 media_cache: Mark cache entry stale if cache file is removed
In the event that a cache file is removed out from under us, we should
treat the cache entry as stale and force a refresh.

ASTERISK-26774 #close
Reported by: Igor Gamayunov

Change-Id: I3b1bd0c999d59d18664ef73a29823bc5b431dc52
2017-02-28 14:56:04 -05:00
Joshua Colp
a1c0c5e63a Merge "res_pjsip: Fix crash when contact has no status" into 14 2017-02-28 12:35:52 -06:00
Sean Bright
8c8bc89daa res_config_pgsql: Release table locks where appropriate
The find_table() functions NULL or a locked table pointer. We are
not consistently calling release_table() in failure paths.

Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544
2017-02-28 09:44:01 -06:00
Tzafrir Cohen
c9f9eece87 pjsip.conf.sample: user_agent: not a specific version
Use the description of useragent from sip.conf here.

ASTERISK-26825 #close

Change-Id: I5b33a4aaa0ae1d793289d05e3bc09521affbf755
2017-02-28 06:22:12 -06:00
George Joseph
056914a18f res_pjsip_pubsub: Remove unneeded endpoint unref
When a subscription was being recreated and the endpoint wasn't
found, we were trying to unref the endpoint.  This was causing
FRACKs.  Removed the unref.

ASTERISK-26823 #close

Change-Id: If86d2aecff8fe853c7f38a1bfde721fcef3cd164
2017-02-27 20:09:24 -06:00
Jørgen H
8175366215 res_pjsip: Fix crash when contact has no status
This change fixes an assumption in res_pjsip that a contact will
always have a status. There is a race condition where this is
not true and would crash. The status will now be unknown when
this situation occurs.

ASTERISK-26623 #close

Change-Id: Id52d3ca4d788562d236da49990a319118f8d22b5
2017-02-27 15:18:43 -06:00
George Joseph
f0a37dfc13 res_pjsip_outbound_registration: Subscribe to network change events
Outbound registration now subscribes to network change events
published by res_stun_monitor and refreshes all registrations
when an event happens.

The 'pjsip send (un)register' CLI commands were updated to accept
'*all' as an argument to operate on all registrations.

The 'PJSIP(Un)Register' AMI commands were also updated to
accept '*all'.

ASTERISK-26808 #close

Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25
2017-02-27 15:10:39 -06:00
George Joseph
dbc787b0d2 build: Warn if asterisk is installed in both 32 and 64 bit sys dirs
... and clean them both up on uninstall.

We've fixed the issue where 'make install' was installing to
/usr/lib on 64-bit systems that use /usr/lib64.  Now we need
to clean up the remnants in /usr/lib.

* 'make install' now prints a warning if DESTDIR/ASTLIBDIR
  contains 'lib64' and libasterisk* shared libraries or modules
  are also found in DESTDIR/ASTLIBDIR with 'lib64' transformed
  to 'lib'.

* 'make uninstall' ALWAYS cleans up both DESTDIR/ASTLIBDIR and
  DESTDIR/ASTLIBDIR with 'lib64' transformed to 'lib'.

ASTERISK-26705

Change-Id: I6edddeb3c07a51e7c7ba7cac3c05e4bf3ec3f01f
2017-02-27 12:57:08 -06:00
Joshua Colp
8476c27a77 bridge_native_rtp: Handle case where channel joins already suspended.
The bridge_native_rtp module did not properly handle the case where
a smart bridge operation occurs while a channel is suspended. In this
scenario the module would incorrectly set up local or remote RTP
bridging despite the media having to flow through Asterisk. The remote
endpoint would see two media streams and experience wonky audio.

The module has been changed so that it ensures both channels are
not suspended when performing the native RTP bridging and this
requirement has been documented in the bridge technology.

ASTERISK-26781

Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c
2017-02-27 12:12:14 -06:00
Joshua Colp
9c01a04261 config: Improve documentation and behavior of outbound_proxy option.
This change updates the documentation for the outbound_proxy option
to ensure it is consistently stated that a full SIP URI must be
provided for the option.

The res_pjsip_outbound_registration module has also been changed so
that the provided outbound_proxy value is checked to ensure it is a
URI and if not an error is output stating so.

ASTERISK-26782

Change-Id: I6c239a32274846fd44e65b44ad9bf6373479b593
2017-02-24 14:05:08 -06:00
zuul
9b59326d81 Merge "pjproject_bundled: Update for pjproject 2.6" into 14 2017-02-24 12:12:17 -06:00
zuul
7e7857fabe Merge "build: Execute ldconfig to build cache. (take two)" into 14 2017-02-24 12:10:36 -06:00