Commit Graph

29259 Commits

Author SHA1 Message Date
Joshua Colp
48be02c5d8 res_pjsip_session: Allow BYE to be sent on disconnected session.
It is perfectly acceptable for a BYE to be sent on a disconnected
session. This occurs when we respond to a challenge to the BYE
for authentication credentials.

ASTERISK-26363

Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045
2017-04-01 06:02:04 -05:00
Richard Mudgett
e8b1bb3041 chan_vpb.cc: Fix compiler error.
Added missing channel technology read/write stream callback
initialization.

Change-Id: I829043a327d987e0d964485dd3d27964bebbd623
2017-03-31 13:14:05 -05:00
zuul
19e2a2802f Merge "cdr_pgsql: Fix buffer overflow calling libpq" 2017-03-31 09:01:23 -05:00
George Joseph
6a43a76ddc Merge "build: Fix deb build issues with fakeroot" 2017-03-31 08:20:30 -05:00
zuul
0a06d39716 Merge "CEL: Remove header declarations of non-existant functions." 2017-03-30 18:29:09 -05:00
Sean Bright
c537f99488 cdr_pgsql: Fix buffer overflow calling libpq
Implement the same buffer size checking done in cel_pgsql.

ASTERISK-26896 #close
Reported by: twisted

Change-Id: Iaacfa1f1de7cb1e9414d121850d2d8c2888f3f48
2017-03-30 17:48:42 -05:00
Walter Doekes
a7d94f504f build: Fix deb build issues with fakeroot
If DESTDIR is set, don't call ldconfig. Assume that DESTDIR is used to
create a binary archive. The ldconfig call should be delegated to the
archive postinst script. This fixes the case where fakeroot wraps 'make
install' causing $EUID to be 0 even though it doesn't have permission to
call ldconfig.

The previous logic in configure.ac to detect and correct libdir
has been removed as it was not completely accurate.  CentOS 64-bit
users should again specifiy --libdir=/usr/lib64 when configuring
to prevent install to /usr/lib.

Updated Makefile:check-old-libdir to check for orphans in
lib64 when installing to lib as well as orphans in lib when installing
to lib64.

Updated Makefile and main/Makefile uninstall targets to remove the
orphans using the new logic.

ASTERISK-26705

Change-Id: I51739d4a03e60bff38be719b8d2ead0007afdd51
2017-03-30 17:10:32 -05:00
zuul
7898aad02d Merge "res_pjsip_config_wizard: Add 2 new parameters to help with proxy config" 2017-03-30 17:02:38 -05:00
Sean Bright
5c1ea3ebbd astobj2: Prevent potential deadlocks with ao2_global_obj_release
The ao2_global_obj_release() function holds an exclusive lock on the
global object while it is being dereferenced. Any destructors that
run during this time that call ao2_global_obj_ref() will deadlock
because a read lock is required.

Instead, we make the global object inaccessible inside of the write
lock and only dereference it once we have released the lock. This
allows the affected destructors to fail gracefully.

While this doesn't completely solve the referenced issue (the error
message about not being able to create an IQ continues to be shown)
it does solve the backtrace spew that accompanied it.

ASTERISK-21009 #close
Reported by: Marcello Ceschia

Change-Id: Idf40ae136b5070dba22cb576ea8414fbc9939385
2017-03-30 13:59:11 -04:00
Corey Farrell
4e5cc70fb4 CEL: Remove header declarations of non-existant functions.
ast_cel_alloc and ast_cel_destroy do not exist in code, remove them from
the headers.

Change-Id: I99ce848e2e109e7d61771559f559b9e57973e45c
2017-03-30 10:21:04 -05:00
Joshua Colp
7ac5a33920 Merge "cel_pgsql.c: Fix buffer overflow calling libpq" 2017-03-30 05:12:11 -05:00
Joshua Colp
7581bb4f5f Merge "srtp: Allow zero as tag value for a sRTP Crypto Suite." 2017-03-29 17:49:55 -05:00
zuul
410a5ac0fa Merge "Add DTLS sanity check." 2017-03-29 16:11:12 -05:00
George Joseph
88a4c93e4c Merge "core: Remove embedded module support" 2017-03-29 14:40:36 -05:00
zuul
7c2f4601f2 Merge "channel: Remove old epoll support and fixed max number of file descriptors." 2017-03-29 12:45:47 -05:00
George Joseph
08210e851c Merge "alembic: Turn off execute bit on non-executable python scripts" 2017-03-29 11:32:38 -05:00
zuul
5a530171ca Merge "res_musiconhold: Don't chdir() when scanning MoH files" 2017-03-29 10:11:01 -05:00
Josh Roberson
f66edcb8b0 cel_pgsql.c: Fix buffer overflow calling libpq
PQEscapeStringConn() expects the buffer passed in to be an
adequitely sized buffer to write out the escaped SQL value string
into.  It is possible, for large values (such as large values to
Dial with a lot of devices) to have more than our 512+1 byte
allocation and thus cause libpq to create a buffer overrun.

glibc will nicely ABRT asterisk for you, citing a stack smash.

Let's only allocate it to be as large as needed:
If we have a value, then (strlen(value) * 2) + 1 (as recommended
by libpq), and if we have none, just one byte to hold our null
will do.

ASTERISK-26896 #close

Change-Id: If611c734292618ed68dde17816d09dd16667dea2
2017-03-29 07:54:14 -06:00
Alexander Traud
e76cc51d5e srtp: Allow zero as tag value for a sRTP Crypto Suite.
ASTERISK-25490 #close

Change-Id: I1c5fc0942c33c96d62b24203aad0f1e1a1a0131f
2017-03-29 15:04:05 +02:00
Joshua Colp
f43cfb81d9 Merge "res_xmpp: Fix ref counting issue" 2017-03-29 06:57:49 -05:00
George Joseph
2fe52174de res_pjsip_config_wizard: Add 2 new parameters to help with proxy config
Two new parameters have been added to the pjsip config wizard.

 * Setting 'sends_line_with_registrations' to true will cause the wizard
   to skip the creation of an identify object to match incoming request
   to the endpoint and instead add the line and endpoint parameters to
   the outbound registration object.

 * Setting 'outbound_proxy' is a shortcut for adding individual
   endpoint/outbound_proxy, aor/outbound_proxy and
   registration/outbound_proxy parameters.

Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0
(cherry picked from commit a827892ff7)
(cherry picked from commit 27344675be)
2017-03-28 15:51:21 -06:00
Joshua Colp
d0ada2246e Merge "res_xmpp: Use incremental backoff when a read error occurs" 2017-03-28 16:46:52 -05:00
Sean Bright
7c0b12dc41 alembic: Turn off execute bit on non-executable python scripts
Change-Id: I744c986da4a38aeff8c00837eb89de7841fbc86c
2017-03-28 08:31:35 -06:00
Richard Mudgett
3d8899bacf Add DTLS sanity check.
Change-Id: Ib32612cf6c7ce9213a11b9cba82f630f8cd3564b
2017-03-27 15:43:03 -06:00
Joshua Colp
5d938045d4 channel: Remove old epoll support and fixed max number of file descriptors.
This change removes the old epoll support which has not been used or
maintained in quite some time.

The fixed number of file descriptors on a channel has also been removed.
File descriptors are now contained in a growable vector. This can be
used like before by specifying a specific position to store a file
descriptor at or using a new API call, ast_channel_fd_add, which adds
a file descriptor to the channel and returns its position.

Tests have been added which cover the growing behavior of the vector
and the new API call.

ASTERISK-26885

Change-Id: I1a754b506c009b83dfdeeb08c2d2815db30ef928
2017-03-27 19:54:44 +00:00
Sean Bright
fd204d5c65 res_musiconhold: Document the 'format' option
ASTERISK-26086 #close
Reported by: Jens Bürger

Change-Id: I6aab666c0bf01fd0c64d7a5bcb22fa7f5d41335e
2017-03-27 08:36:32 -06:00
Sean Bright
cf6a6226ab core: Remove embedded module support
This has not worked for some time and is no longer actively maintained.

Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99
2017-03-27 10:36:08 -04:00
Sean Bright
d22c678999 res_musiconhold: Don't chdir() when scanning MoH files
There doesn't appear to be any reason that we are chdir'ing in
moh_scan_files, and in the event of an Asterisk crash, the core files
may not get written because we have changed into a read-only directory.

ASTERISK-23996 #close
Reported by: Walter Doekes

Change-Id: Iac806dce01b3335963fbd62d4b4da9a65c614354
2017-03-27 08:00:57 -06:00
Joshua Colp
3bdf876b04 Merge "res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts" 2017-03-25 05:20:03 -05:00
Joshua Colp
772afa59dc Merge "cdr: Allow setting of user field from 'h' extension" 2017-03-24 18:02:12 -05:00
zuul
90634cc184 Merge "rtp_engine: allocate RTP dynamic payloads per session" 2017-03-24 16:22:55 -05:00
Sean Bright
d5a8799c4b res_xmpp: Use incremental backoff when a read error occurs
If a read error occurs, we immediately attempt a reconnect without any
delay. Instead, let's sleep and backoff up to 60 seconds before we try
again.

ASTERISK-24712 #close
Reported by: Matthias Urlichs

Change-Id: I6fe10ef4734837727437beab715e336777f13f48
2017-03-24 15:11:39 -06:00
zuul
cd9ca7cf87 Merge "pjproject_bundled: raise timeout value used when downloading" 2017-03-24 15:42:48 -05:00
zuul
f27c1c7dc2 Merge "res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus" 2017-03-24 12:25:07 -05:00
zuul
8982d0e007 Merge "res_xmpp: Include client name in connection related error messages" 2017-03-24 11:55:38 -05:00
Sean Bright
d08c69a9e2 res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts
chan_sip sets the hangup cause code to AST_CAUSE_REQUESTED_CHAN_UNAVAIL
(44) when a channel is hung up due to an RTP timeout. So do the same
when it happens with PJSIP for parity.

Change-Id: I3546ebbde6460c22a27c9da1bf321711b5961ab8
2017-03-24 10:31:39 -06:00
Joshua Colp
6666deb907 Merge "res_xmpp: Don't crash when trying to send a message without a connection" 2017-03-24 10:46:34 -05:00
zuul
1a626ffb89 Merge "res_xmpp: Correctly check return value of SSL_connect" 2017-03-24 09:13:06 -05:00
zuul
d3ca0e0bc4 Merge "res_xmpp: Try to provide useful errors messages from OpenSSL" 2017-03-24 09:12:57 -05:00
Joshua Colp
59df60efb9 Merge "audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor." 2017-03-24 07:25:07 -05:00
Kevin Harwell
d2f2cdf476 AMI: Updated version
Updated the AMI version for the following reason (see CHANGES for more details):

The 'PJSIPShowEndpoint' command's response event of 'IdentifyDetail' now
contains a new optional parameter, 'MatchHeader'.

Change-Id: Ie206913ef1dcfa6a2ebe3282da2387e52d6f05b9
2017-03-23 13:25:23 -06:00
Kevin Harwell
12dde3b568 pjproject_bundled: raise timeout value used when downloading
After configuring Asterisk with '--with-pjproject-bundled' the configure/build
process attempts to download pjproject from its download site. Currently, a
timeout of 10 seconds is used that will stop the download process if pjproject
has not been fully downloaded in that time. For some systems this was not enough
time and the process was timing out too early.

This patch raises the download timeout value to '60'. Also, this patch fixes
another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported
due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to
DOWNLOAD_TIMEOUT.

ASTERISK-26814 #close

Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842
2017-03-23 12:16:57 -06:00
Sean Bright
98a88e9ffa res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus
The documentation for JABBER_STATUS (and the deprecated JabberStatus
app) indicate that a return value of 7 indicates that the specified
buddy was not in the roster. It also indicates that you can specify a
"bare" JID (one without a resource). Unfortunately the actual behavior
does not match the documented behavior.

Assuming that our roster includes the buddy online and available
"valid@example.org/Valid" and does *not* include the buddy
"invalid@example.org", the JABBER_STATUS() function returns the
following before this patch:

+------------------------------+------------+--------------------------+
| Buddy                        | Status     | Result                   |
+------------------------------+------------+--------------------------+
| valid@example.org            |  Online    |  7 (Not in roster)       |
| valid@example.org/Valid      |  Online    |  1 (Online)              |
| valid@example.org/Invalid    |  N/A       |  7 (Not in roster)       |
| invalid@example.org          |  N/A       |  Error logged, no return |
| invalid@example.org/Valid    |  N/A       |  Error logged, no return |
+------------------------------+------------+--------------------------+

And after this patch:

+------------------------------+------------+--------------------------+
| Buddy                        | Status     | Result                   |
+------------------------------+------------+--------------------------+
| valid@example.org            |  Online    |  1 (Online)              |
| valid@example.org/Valid      |  Online    |  1 (Online)              |
| valid@example.org/Invalid    |  N/A       |  6 (Offline)             |
| invalid@example.org          |  N/A       |  7 (Not in roster)       |
| invalid@example.org/Valid    |  N/A       |  7 (Not in roster)       |
+------------------------------+------------+--------------------------+

This brings the behavior in line with the documentation.

ASTERISK-23510 #close
Reported by: Anthony Critelli

Change-Id: I9c3241035363ef4a6bdc21fabfd8ffcd9ec657bf
2017-03-23 09:45:49 -06:00
Sean Bright
be94105d6d res_xmpp: Try to provide useful errors messages from OpenSSL
If any errors occur during the TLS connection setup, we currently dump a
fairly generic error message. So instead we try to pull in something
useful from OpenSSL to report instead.

ASTERISK-24712
Reported by: Matthias Urlichs

Change-Id: I288500991a9681f447d92913b11fedaf426087f4
2017-03-23 08:58:53 -06:00
Sean Bright
ee81ee1f14 res_xmpp: Fix ref counting issue
The only remaining reference to the endpoint is in the endpoints
container, and because it is unlinked in ast_endpoint_shutdown, we don't
have to explicitly cleanup the endpoint ourselves.

Change-Id: I912a2692e52d3e2ed445b32d8ae3f9004bc2f2e8
2017-03-23 08:58:29 -06:00
Sean Bright
9493981419 res_xmpp: Correctly check return value of SSL_connect
SSL_connect returns non-zero for both success and some error conditions
so simply negating is inadequate.

Change-Id: Ifbf882896e598703b6c615407fa456d3199f95b1
2017-03-23 08:58:05 -06:00
Sean Bright
7657c279b5 res_xmpp: Don't crash when trying to send a message without a connection
If we never establish a connection to our Jabber server, iksemel never sets up
its internal transport pointer, so attempting to send a message dereferences a
NULL pointer and causes a crash.

ASTERISK-21855 #close
Reported by: Jeremy Kister

Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c
2017-03-23 08:57:11 -06:00
Sean Bright
0136ec12a3 res_xmpp: Include client name in connection related error messages
ASTERISK-25622 #close
Reported by: Sean Darcy

Change-Id: I8472cb7bfb58d411a3cfbd482da98cae2d94d1e9
2017-03-23 08:56:47 -06:00
Joshua Colp
c1ab8ca74c Merge "res_pjsip_session: Enable RFC3578 overlap dialing support." 2017-03-22 17:08:08 -05:00
Joshua Colp
3a50311c17 Merge "CHANNEL(callid): Give dialplan access to the callid." 2017-03-22 15:49:42 -05:00