Commit Graph

30147 Commits

Author SHA1 Message Date
Joshua Colp
5b0a58bc3e Merge "install_prereq: Add DragonFly BSD." into 13 2018-04-25 13:55:19 -05:00
Joshua Colp
8c5f4dade3 Merge "format_pcm: Correct behavior of fseek and ftell for G.722" into 13 2018-04-25 13:30:42 -05:00
Joshua Colp
dec91abcae Merge "menuselect: Add DragonFly BSD." into 13 2018-04-25 13:21:45 -05:00
Jenkins2
ba06e54925 Merge "chan_ooh323: fix ooManualProgress/ooManualRingback on ooh323 debuggin on" into 13 2018-04-25 10:20:42 -05:00
Joshua Colp
cb4e991181 Merge "res_pjsip: Fix initialization of extended stringfields." into 13 2018-04-24 18:59:01 -05:00
Joshua Colp
4f07ed445f Merge "chan_ooh323: Fix cppcheck warnings" into 13 2018-04-24 18:39:17 -05:00
Alexander Anikin
1593ff91fe chan_ooh323: fix ooManualProgress/ooManualRingback on ooh323 debuggin on
Call ooManualProgress/Ringback outside of ast_debug function
when ooh323 debugging is on

ASTERISK-27812 #close
ASTERISK-26893 #close
Reported by: Dimos, Marco Giordani

Change-Id: I5873762e4f05824e7b6e94a19dd4eb56adbbbb79
2018-04-20 13:20:40 -06:00
Alexander Traud
00711bce99 menuselect: Add DragonFly BSD.
In DragonFly BSD, added libraries from ports are placed into /usr/local.
Therefore, this directory must be added for the preprocessor, compiler, and
linker.

Beside that, the script ./configure was updated:
* OSARCH list was outdated and not used, removed.
* AC_CANONICAL_BUILD was not used.
* _REENTRANT, this feature test macro is obsolete.

ASTERISK-27820

Change-Id: I186d88d99cfa4de6569888e12ac97bd2f441c422
2018-04-20 04:45:38 -06:00
Alexander Traud
866b884eab install_prereq: Add DragonFly BSD.
ASTERISK-27820

Change-Id: I718ddb000fe5184b1bdc7759da67a370a7520144
2018-04-20 12:23:26 +02:00
Jenkins2
caedeef695 Merge "chan_vpb: Avoid GNU old-style field designator extension." into 13 2018-04-19 14:36:34 -05:00
Jenkins2
b3cec9d445 Merge "res_pjsip: Fix deadlock on reliable transport shutdown." into 13 2018-04-18 17:20:19 -05:00
Jenkins2
ada0676e1d Merge "Build System: Enable python3 compatibility." into 13 2018-04-18 17:06:26 -05:00
Corey Farrell
ea14243971 res_pjsip: Fix initialization of extended stringfields.
It is possible for initialization of extended stringfields to fail.  Add
checks for this failure.

Change-Id: I062e09852db3d37ceefaf6c2048958fa0118304f
2018-04-18 15:25:35 -06:00
Jenkins2
d474763a2c Merge "utils/pval: Add -lBlocksRuntime for compiler clang conditionally." into 13 2018-04-18 15:18:32 -05:00
Jenkins2
57aca68bbf Merge "utils: Add ast_assert_return" into 13 2018-04-18 14:35:55 -05:00
Sean Bright
7b05184bca format_pcm: Correct behavior of fseek and ftell for G.722
There are twice as many samples in the same number of bytes, so redefine
some of the G.722 format functions in terms of their PCM counterparts.

Change-Id: I6a8c7352624b930a5f2d9e4857f75283fa5dd9f9
2018-04-18 14:40:52 -04:00
Alexander Anikin
8611135e96 chan_ooh323: Fix cppcheck warnings
Fix cppcheck warnings about redundant conditions and possible
null pointer usage

ASTERISK-27793 #close
Reported by: Ilya Shipitsin
Tested by: Ilya Shipitsin

Change-Id: I0b31933b062a23331dbac9a82b8bcfe345f406f6
2018-04-18 04:39:31 -06:00
Jenkins2
e516c34c02 Merge "res_musiconhold: Don't restart MOH from beginning after announcement." into 13 2018-04-17 12:11:48 -05:00
Alexander Traud
92f88f164a utils/pval: Add -lBlocksRuntime for compiler clang conditionally.
ASTERISK-27809

Change-Id: I930b364a33d54cc08dedfcd5bb45f7e83242f134
2018-04-17 14:09:46 +02:00
Alexander Traud
fb9634bcb3 chan_vpb: Avoid GNU old-style field designator extension.
clang 6.0 warned about this. Beside that, this change removes the used variable
'desc'.

ASTERISK-27808

Change-Id: Ia26bdcc0a562c058151814511cfcf70ecafa595b
2018-04-17 12:31:52 +02:00
George Joseph
39c51394c8 utils: Add ast_assert_return
Similar to pjproject's PJ_ASSERT_RETURN macro, this one will do the
following...

If the assert passes... NoOp

If the assert fails and AST_DEVMODE is defined, execute ast_assert()
then, if DO_CRASH isn't set, return from the calling function with
the supplied value.

If the assert fails and AST_DEVMODE is not defined, return from the
calling function with the supplied value.

The macro will execute a return without a value if one isn't suppled.

Change-Id: I0003844affeab550d5ff5bca7aa7cf8a559b873e
2018-04-16 06:31:45 -06:00
Jenkins2
ad0ba520b5 Merge "pjsip_scheduler.c: Add ability to trace scheduled tasks." into 13 2018-04-16 07:00:21 -05:00
Jenkins2
fb9cbd524b Merge "res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations." into 13 2018-04-16 06:46:30 -05:00
Jenkins2
f83f5c48b2 Merge "pjsip_scheduler.c: Fix some corner cases." into 13 2018-04-16 06:39:36 -05:00
Ben Ford
f2e140e8a7 res_musiconhold: Don't restart MOH from beginning after announcement.
This reverts a problem introduced by the fix for ASTERISK_24329.
Now, when an announcement is played while waiting in a queue, music on
hold will not restart from the beginning of the sound file and will
instead pick up where it left off. However, the incorrect behavior in
ASTERISK_24329 is now present again; if an announcement X seconds
long is played when music on hold starts, music on hold will start X
seconds into the file.

ASTERISK-27774 #close
Reported by: lvl

Change-Id: I86b2885ee7063268f9b9747eddb788336ade989b
2018-04-13 16:25:44 -05:00
Richard Mudgett
b92ebdba5f pjsip_scheduler.c: Add ability to trace scheduled tasks.
When a scheduled task is created you can pass in the
AST_SIP_SCHED_TASK_TRACK flag.  This new flag causes scheduling events to
be logged.

Change-Id: I91967eb3d5a220915ce86881a28af772f9a7f56b
2018-04-12 17:16:44 -05:00
Richard Mudgett
12aa25b2e1 res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations.
ast_sip_push_task_synchronous() did not necessarily execute the passed in
task under the specified serializer.  If the current thread is any
registered pjsip thread then it would execute the task immediately instead
of under the specified serializer.  Reentrancy issues could result if the
task does not execute with the right serializer.

The original reason ast_sip_push_task_synchronous() checked to see if the
current thread was a registered pjsip thread was because of a deadlock
with masquerades and the channel technology's fixup callback
(ASTERISK_22936).  A subsequent masquerade deadlock fix (ASTERISK_24356)
involving call pickups avoided the original deadlock situation entirely.
The PJSIP channel technology's fixup callback no longer needed to call
ast_sip_push_task_synchronous().

However, there are a few places where this unexpected behavior is still
required to avoid deadlocks.  The pjsip monitor thread executes callbacks
that do calls to ast_sip_push_task_synchronous() that would deadlock if
the task were actually pushed to the specified serializer.  I ran into one
dealing with the pubsub subscriptions where an ao2 destructor called
ast_sip_push_task_synchronous().

* Split ast_sip_push_task_synchronous() into
ast_sip_push_task_wait_servant() and ast_sip_push_task_wait_serializer().
ast_sip_push_task_wait_servant() has the old behavior of
ast_sip_push_task_synchronous().  ast_sip_push_task_wait_serializer() has
the new behavior where the task is always executed by the specified
serializer or a picked serializer if one is not passed in.  Both functions
behave the same if the current thread is not a SIP servant.

* Redirected ast_sip_push_task_synchronous() to
ast_sip_push_task_wait_servant() to preserve API for released branches.

ASTERISK_26806

Change-Id: Id040fa42c0e5972f4c8deef380921461d213b9f3
2018-04-12 17:15:10 -05:00
Richard Mudgett
dfdc9a2575 pjsip_scheduler.c: Fix some corner cases.
* Fix the periodic interval wander because it may take significant time
between the sched thread queueing the task in the serializer and the
serializer actually executing the task.  The time it takes to actually
execute the task was already taken into account.

* Pass a schtd ref to the serializer when we queue a scheduled task on
the serializer.  We don't want it going away on us while it is in the
serializer queue.

* Skip the scheduled task if the task was canceled between queueing the
task to the serializer and the serializer actually executing the task.

* Reorder struct ast_sip_sched_task to avoid unnecessary padding.  Removed
task_id and added next_periodic.

* Hold a ref to the passed in serializer so the serializer cannot go away
on the scheduled task.

ASTERISK_26806

Change-Id: I6c8046b75f6953792c8c30e55b836a4291143f24
2018-04-12 17:15:10 -05:00
Richard Mudgett
af36823907 pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output.
* A side benefit is that the scheduled tasks are not completely blocked
while the CLI command executes.

* Adjusted the "Task Name" column width to have more room for longer
names.

Change-Id: Iec64aa463ee8b10eef90120e00c38b1fb444087e
2018-04-12 16:45:12 -05:00
Jenkins2
264af6bec0 Merge "res_pjsip_notify.c: enable in-dialog NOTIFY" into 13 2018-04-12 14:57:33 -05:00
Jenkins2
dfd0529abc Merge "pjsip_scheduler.c: Fix ao2 usage errors." into 13 2018-04-12 10:10:28 -05:00
Jenkins2
6aee468ba1 Merge "Build System: Strip '-std=c99' from CFLAGS provided by libraries." into 13 2018-04-12 09:43:14 -05:00
Evandro Cesar Arruda
7886354343 cdr_mysql: Compile error because MYSQL_PORT definition is missing
If it is not defined, it will add MYSQL_PORT definition. After some
research on MySQL/MariaDB development tree, I couldn't find any reference
to MYSQL_PORT definition in include files.

ASTERISK-27782 #close

Change-Id: Ieee56c836fc2e8bd021c456145bba04c6068bb77
2018-04-11 14:26:28 -06:00
Chris-Savinovich
724d926d46 res_pjsip_session: Rewrite o= with external_media_address.
It now appends the external IP address on the
o= line of the SDP packet.  The decision was made to write
the numeric IP address as opposed to the RFC that states
the FQDN should be used if and when available.  We believe
the usage of literal IP address will help avoid
potential problems.

ASTERISK-27614 #close

Change-Id: I84f3360f3606b8c4e8d161edb228799ec0b8a302
2018-04-11 11:21:33 -06:00
Nathan Bruning
6a4afe09ce res_pjsip_notify.c: enable in-dialog NOTIFY
This patch adds support to send in-dialog SIP NOTIFY commands on
chan_pjsip channels, similar to the functionality recently added
for chan_sip (ASTERISK_27461).

This extends res_pjsip_notify to allow for in-dialog messages.

ASTERISK-27697

Change-Id: If7f3151a6d633e414d5dc319d5efc1443c43dd29
2018-04-11 10:36:52 -06:00
Jenkins2
0edc4ade93 Merge "res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge" into 13 2018-04-11 07:03:19 -05:00
Jenkins2
483d874836 Merge "chan_sip.c: Fix INVITE with replaces channel ref leak." into 13 2018-04-10 09:58:22 -05:00
Richard Mudgett
c4f02c975b pjsip_scheduler.c: Fix ao2 usage errors.
* Removed several invalid uses of OBJ_NOLOCK.  These uses resulted in the
'tasks' container being accessed without a lock in a multi-threaded
environment.  A recipe for crashes.

* Removed needlessly obtaining schtd object references.  If the caller
providing you a pointer to an object doesn't have a valid reference then
you cannot safely get one from it.

* Getting a ref to 'tasks' when you aren't copying the pointer into
another location is useless.  The 'tasks' container pointer is global.

* Removed many unnecessary uses of RAII_VAR.

* Make ast_sip_schedule_task() name parameter const.

ASTERISK_26806

Change-Id: I5c62488e651314e2a1dbc01f5b078a15512d73db
2018-04-09 13:44:46 -05:00
Jenkins2
36f94cbcde Merge "Build System: Fixes for configure script." into 13 2018-04-09 10:15:23 -05:00
Corey Farrell
7593359787 Build System: Enable python3 compatibility.
* Consistently use spaces in rest-api-templates/asterisk_processor.py.
* Exclude third-party from docs/full-en_US.xml.
* Add docs/full-en_US.xml to .gitignore.
* Use list() to convert python3 view.
* Use python3 print function.
* Replace cmp() with equivalent equation.
* Replace reference to out of scope subtype variable with name
  parameter.
* Use unescaping triple bracket notation in mustache templates where
  needed.  This causes behavior of Python2 to be maintained when using
  Python3.
* Fix references to has_websocket / is_websocket in
  res_ari_resource.c.mustache.
* Update calculation of has_websocket to use any().
* Use unicode mode for writing output file in transform.py.
* Replace 'from swagger_model import *' with explicit import of required
  symbols.
* Add missing 'import os'
* Fix invalid reference to swagger_version from exception handler.

I have not tested voicemailpwcheck.py, only the print syntax has
been fixed.

Change-Id: If5c5b556a2800d41a3e2cfef080ac2e151178c33
2018-04-09 10:08:15 -04:00
Richard Mudgett
72b16ee400 res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge
There is a problem when an INVITE-with-Replaces transfer targets a channel
in a ConfBridge.  The transfer will unconditionally swap out the
ConfBridge channel.  Unfortunately, the ConfBridge state will not be aware
of this change.  Unexpected behavior will happen as a result since
ConfBridge channels currently can only be replaced by a masquerade and not
normal bridge channel moves.

* We just need to pretend that the channel isn't in a bridge (like other
transfer methods already do) so the transfer channel will masquerade into
the ConfBridge channel.

Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82
2018-04-06 17:12:30 -05:00
Jenkins2
dcac292ae3 Merge "BuildSystem: Add support for building RADIUS with radcli." into 13 2018-04-06 08:46:11 -05:00
Jenkins2
9117bbb45d Merge "res_pjsip: Update authenticate_qualify documentation." into 13 2018-04-06 06:37:40 -05:00
Richard Mudgett
ea055386e0 chan_sip.c: Fix INVITE with replaces channel ref leak.
Given the below call scenario:
A -> Ast1 -> B
C <- Ast2 <- B

1) A calls B through Ast1
2) B calls C through Ast2
3) B transfers A to C

When party B transfers A to C, B sends a REFER to Ast1 causing Ast1 to
send an INVITE with replaces to Ast2.  Ast2 then leaks a channel ref of
the channel between Ast1 and Ast2.

Channel ref leaks are easily seen in the CLI "core show channels" output.
The leaked channels appear in the output but you can do nothing with them
and they never go away unless you restart Asterisk.

* Properly account for the channel refs when imparting a channel into a
bridge when handling an INVITE with replaces in handle_invite_replaces().
The ast_bridge_impart() function steals a channel ref but the code didn't
account for how many refs were held by the code at the time and which ref
was stolen.

* Eliminated RAII_VAR in handle_invite_replaces().

ASTERISK-27740

Change-Id: I7edbed774314b55acf0067b2762bfe984ecaa9a4
2018-04-05 18:34:29 -05:00
Richard Mudgett
e94f8e4a24 res_pjsip: Update authenticate_qualify documentation.
Change-Id: I3811de0014b1ffe96d4a3b49cddd5d4ca02ee5d4
2018-04-04 18:05:30 -05:00
Richard Mudgett
906db6a3ff app_agent_pool.c: Fix off nominal ref leak.
Change-Id: Ib427ffc2c802620eaafb08b1c2a17dddd8fb8eb6
2018-04-04 18:02:12 -05:00
Corey Farrell
07e408e588 Build System: Strip '-std=c99' from CFLAGS provided by libraries.
Asterisk requires GNU C extensions.  On some systems certain libraries
may incorrectly push -std=c99 into CFLAGS, thus breaking the build.
This change causes that flag to be stripped so the Asterisk build is not
broken by those libraries.  This change is made for both pkgconfig and
tool based libraries.

ASTERISK-27629 #close

Change-Id: I13389613b194abbac77becf90cd950dc168704db
2018-04-04 09:41:56 -06:00
Corey Farrell
01b3c435d8 Build System: Fixes for configure script.
* Replace all 'else if' statements with 'elif'.
* Use loop to detect versioned lua headers and libraries.

The loop for detecting lua fixes a bug where LUA_INCLUDE would be
appended with the directory of every lua version after the first one is
found.

Change-Id: I3276f9aee955014108345be6092f51c932b43a0f
2018-04-03 14:41:40 -06:00
Jenkins2
7888b6115a Merge "install_prereq: Add Slackware (somehow)." into 13 2018-04-03 06:14:25 -05:00
George Joseph
cea1a22ef3 res_pjsip: Correct usages of pjproject's timer heap
Fix some timer heap initializations and cancels to try and prevent
crashes and timer heap issues.

Change-Id: I64885d190fa22097d1b55987091375541e57a7ee
2018-04-02 10:17:02 -05:00