]> git.ipfire.org Git - thirdparty/asterisk.git/log
thirdparty/asterisk.git
3 years agoAST-2022-005: pjproject - undefined behavior after freeing a dialog set certified/16.3
Kevin Harwell [Thu, 3 Mar 2022 22:42:55 +0000 (16:42 -0600)] 
AST-2022-005: pjproject - undefined behavior after freeing a dialog set

ASTERISK-29945 #close

Change-Id: Ia8ce6d82b115c82c1138747c72a0adcaa42b718c

5 years agomain/backtrace: binutils-2.34 fix.
Jaco Kroon [Wed, 1 Apr 2020 09:00:14 +0000 (11:00 +0200)] 
main/backtrace: binutils-2.34 fix.

My tester missed this one previously, have confirmed a positive build
this time round.

Change-Id: Id06853375954a200f03f9a1b9c97fe0b10d31fbf

5 years agoUpdate main/backtrace.c to deal with changes in binutils 2.34.
Jaco Kroon [Mon, 16 Mar 2020 10:11:11 +0000 (12:11 +0200)] 
Update main/backtrace.c to deal with changes in binutils 2.34.

binutils 2.34 merged this commit:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;\
h=fd3619828e94a24a92cddec42cbc0ab33352eeb4

Which effectively does things like:

-#define bfd_section_size(bfd, ptr) ((ptr)->size)
-#define bfd_get_section_size(ptr) ((ptr)->size)

+#define bfd_section_size(sec) ((sec)->size)

So in order to remain backwards compatible we need to detect this API
change, and adjust accordingly.  The simplest is to notice that the
bfd_get_section_size and bfd_get_section_vma MACROs are no longer
defined, and define then onto the new API.  The alternative is to litter
the code with a number of #ifdef #else #endif splatters right through
the code.

Change-Id: I3efe0f8e8f3e338d16fcbc2b26a505367b6e172f
(cherry picked from commit 33b2c7f79b33693be502e4707c936f8dba392b5f)

5 years agochannel: write to a stream on multi-frame writes
Kevin Harwell [Tue, 31 Mar 2020 17:52:44 +0000 (12:52 -0500)] 
channel: write to a stream on multi-frame writes

If a frame handling routine returns a list of frames (vs. a single frame)
those frames are never passed to a tech's write_stream handler even if one is
available. For instance, if a codec translation occurred and that codec
returned multiple frames then those particular frames were always only sent
to the tech's "write" handler. If that tech (pjsip for example) was stream
capable then those frames were essentially ignored. Thus resulting in bad
audio.

This patch makes it so the "write_stream" handler is appropriately called
for all cases, and for all frames if available.

ASTERISK-28795 #close

Change-Id: I868faea0b73a07ed5a32c2b05bb9cf4b586f739d

5 years agores_rtp_asterisk: bad audio (static) due to incomplete dtls/srtp setup
Kevin Harwell [Thu, 13 Feb 2020 21:08:10 +0000 (15:08 -0600)] 
res_rtp_asterisk: bad audio (static) due to incomplete dtls/srtp setup

There was a race condition between client initiated DTLS setup, and handling
of server side ice completion that caused the underlying SSL object to get
cleared during DTLS initialization. If this happened Asterisk would be left
in a partial DTLS setup state. RTP packets were sent and received, but were
not being encrypted and decrypted. This resulted in no audio, or static.

Specifically, this occurred when '__rtp_recvfrom' was processing the handshake
sequence from the client to the server, and then 'ast_rtp_on_ice_complete'
gets called from another thread and clears the SSL object when calling the
'dtls_perform_setup' function. The timing had to be just right in the sense
that from the external SSL library perspective SSL initialization completed
(rtp recv), Asterisk clears/resets the SSL object (ice done), and then checks
to see if SSL is intialized (rtp recv). Since it was cleared, Asterisk thinks
it is not finished, thus not completing 'dtls_srtp_setup'.

This patch removes calls to 'dtls_perform_setup', which clears the SSL object,
in 'ast_rtp_on_ice_complete'. When ice completes, there is no reason to clear
the underlying SSL object. If an ice candidate changes a full protocol level
renegotiation occurs. Also, in the case of bundled ICE candidates are reused
when a stream is added. So no real reason to have to clear, and reset in this
instance.

Also, this patch adds a bit of extra logging to aid in diagnosis of any future
problems.

ASTERISK-28742 #close

Change-Id: I34c9e6bad5a39b087164646e2836e3e48fe6892f

5 years agoUpdate for certified/16.3-cert1 certified/16.3-cert1
Asterisk Development Team [Mon, 23 Dec 2019 20:18:07 +0000 (15:18 -0500)] 
Update for certified/16.3-cert1

5 years agoMerge "confbridge: Add support for specifying maximum sample rate." into certified...
Joshua C. Colp [Fri, 20 Dec 2019 00:38:37 +0000 (18:38 -0600)] 
Merge "confbridge: Add support for specifying maximum sample rate." into certified/16.3

5 years agores_rtp_asterisk: Add frame list cleanups to ast_rtp_read
George Joseph [Wed, 4 Dec 2019 21:01:22 +0000 (14:01 -0700)] 
res_rtp_asterisk:  Add frame list cleanups to ast_rtp_read

In Asterisk 16+, there are a few places in ast_rtp_read where we've
allocated a frame list but return a null frame instead of the list.
In these cases, any frames left in the list won't be freed.  In the
vast majority of the cases, the list is empty when we return so
there's nothing to free but there have been leaks reported in the
wild that can be traced back to frames left in the list before
returning.

The escape paths now all have logic to free frames left in the
list.

ASTERISK-28609
Reported by: Ted G

Change-Id: Ia1d7075857ebd26b47183c44b1aebb0d8f985f7a

5 years agoconfbridge: Add support for specifying maximum sample rate.
Joshua C. Colp [Thu, 12 Dec 2019 00:03:46 +0000 (00:03 +0000)] 
confbridge: Add support for specifying maximum sample rate.

ConfBridge has the ability to move between different sample
rates for mixing the conference bridge. Up until now there has
only been the ability to set the conference bridge to mix at
a specific sample rate, or to let it move between sample rates
as necessary. This change adds the ability to configure a
conference bridge with a maximum sample rate so it can move
between sample rates but only up to the configured maximum.

ASTERISK-28658

Change-Id: Idff80896ccfb8a58a816e4ce9ac4ebde785963ee

5 years agoMerge "res_pjsip_outbound_registration: add support for SRV failover" into certified...
George Joseph [Fri, 6 Dec 2019 18:41:53 +0000 (12:41 -0600)] 
Merge "res_pjsip_outbound_registration: add support for SRV failover" into certified/16.3

5 years agochannel.c: Resolve issue with receiving SIP INFO packets for DTMF
George Joseph [Fri, 22 Nov 2019 16:39:36 +0000 (09:39 -0700)] 
channel.c: Resolve issue with receiving SIP INFO packets for DTMF

The problem is essentially the same as in ASTERISK~28245. Besides
the direct media scenario we have an additional scenario where a
special client is involved. This device mutes audio by default in
transmit direction (no rtp frames) and activates audio only by a
foot switch. In this situation dtmf input (pin for conferences,
transfer features codes , etc) using SIP INFO mode is not
understood properly especially when SIP INFO messages are sent
quickly.

This patch ensures that SIP INFO frames are properly queued and
processed in the above scenario. The patch also corrects situations
where successive dtmf events are received quicker than the
signalled event duration (plus minimum gap/pause) allows, i.e. DTMF
events have to be buffered in the ast channel read queue and
emulation has to be processed asynchronously at slower speed.

Reported by: Thomas Arimont
patches:
  trigger_dtmf_emulation.patch submitted by Thomas Arimont (license 5525)

Change-Id: I309bf61dd065c9978c8e48f5b9a936ab47de64c2

5 years agoMerge "parking: Fall back to parker channel name even if it matches parkee." into...
Kevin Harwell [Wed, 4 Dec 2019 23:35:15 +0000 (17:35 -0600)] 
Merge "parking: Fall back to parker channel name even if it matches parkee." into certified/16.3

5 years agoparking: Fall back to parker channel name even if it matches parkee.
Joshua Colp [Mon, 25 Nov 2019 12:55:27 +0000 (12:55 +0000)] 
parking: Fall back to parker channel name even if it matches parkee.

ASTERISK-28631

Change-Id: Ia74d084799fbb9bee3403e30d2391aacd46243cc

5 years agogitreview: Point to correct branch.
Ben Ford [Fri, 22 Nov 2019 15:40:53 +0000 (09:40 -0600)] 
gitreview: Point to correct branch.

Change-Id: I6f709a45a0d4ebadf8d51f64bd3509b1382d0496

5 years agoMerge "manager.c: Prevent the Originate action from running the Originate app" into...
Benjamin Keith Ford [Thu, 21 Nov 2019 19:32:42 +0000 (13:32 -0600)] 
Merge "manager.c:  Prevent the Originate action from running the Originate app" into certified/16.3

5 years agochan_sip.c: Prevent address change on unauthenticated SIP request.
Ben Ford [Mon, 21 Oct 2019 19:55:06 +0000 (14:55 -0500)] 
chan_sip.c: Prevent address change on unauthenticated SIP request.

If the name of a peer is known and a SIP request is sent using that
peer's name, the address of the peer will change even if the request
fails the authentication challenge. This means that an endpoint can
be altered and even rendered unusuable, even if it was in a working
state previously. This can only occur when the nat option is set to the
default, or auto_force_rport.

This change checks the result of authentication first to ensure it is
successful before setting the address and the nat option.

ASTERISK-28589 #close

Change-Id: I581c5ed1da60ca89f590bd70872de2b660de02df

5 years agomanager.c: Prevent the Originate action from running the Originate app
George Joseph [Thu, 24 Oct 2019 17:41:23 +0000 (11:41 -0600)] 
manager.c:  Prevent the Originate action from running the Originate app

If an AMI user without the "system" authorization calls the
Originate AMI command with the Originate application,
the second Originate could run the "System" command.

Action: Originate
Channel: Local/1111
Application: Originate
Data: Local/2222,app,System,touch /tmp/owned

If the "system" authorization isn't set, we now block the
Originate app as well as the System, Exec, etc. apps.

ASTERISK-28580
Reported by: Eliel Sardañons

Change-Id: Ic4c9dedc34c426f03c8c14fce334a71386d8a5fa

5 years agores_pjsip_outbound_registration: add support for SRV failover
Kevin Harwell [Wed, 20 Nov 2019 18:56:08 +0000 (12:56 -0600)] 
res_pjsip_outbound_registration: add support for SRV failover

ASTERISK-28624

Change-Id: I8da7c300dd985ab7b10dbd5194aff2f737808561

5 years agoparking: Fix case where we can't get the parker.
Joshua Colp [Fri, 15 Nov 2019 10:46:37 +0000 (06:46 -0400)] 
parking: Fix case where we can't get the parker.

ASTERISK-28616

Change-Id: Iabe31ae38d01604284fcc5c2438d44e29a32ea4d

5 years agoparking: Use channel snapshot instead of channel.
Joshua Colp [Tue, 12 Nov 2019 11:00:44 +0000 (07:00 -0400)] 
parking: Use channel snapshot instead of channel.

There exists a scenario where a thread can hold a lock on the
channels container while trying to lock a bridge. At the same
time another thread can hold the lock for said bridge while
attempting to retrieve a channel. This causes a deadlock.

This change fixes this scenario by retrieving a channel snapshot
instead of a channel, as information present in the snapshot
is all that is needed.

ASTERISK-28616

Change-Id: I68ceb1d62c7378addcd286e21be08a660a7cecf2

5 years agores_pjsip_pubsub: change warning to debug
Kevin Harwell [Tue, 24 Sep 2019 16:21:12 +0000 (11:21 -0500)] 
res_pjsip_pubsub: change warning to debug

The following message:

"Subscription request from endpoint <blah> rejected. Expiration of 0 is invalid"

Would sometimes spam the log with warnings if Asterisk restarted and a bunch
of clients sent unsubscribes. This patch changes it from a warning to a debug
message.

Change-Id: I841ec42f65559f3135e037df0e55f89b6447a467

5 years agores_sorcery_memory_cache: stale item update leak
Kevin Harwell [Mon, 23 Sep 2019 16:01:36 +0000 (11:01 -0500)] 
res_sorcery_memory_cache: stale item update leak

When a stale item was being updated the object was being retrieved, but its
reference was not being decremented after the update. This patch makes it so
the object is now appropriately de-referenced.

ASTERISK-28523

Change-Id: I9d8173d3a0416a242f4eba92fa0853279c500ec7

5 years agochan_pjsip: Relock correct channel during "fax" redirect.
Joshua Colp [Sun, 15 Sep 2019 19:35:45 +0000 (19:35 +0000)] 
chan_pjsip: Relock correct channel during "fax" redirect.

When fax detection occurs on an outbound PJSIP channel the
redirect operation will result in a masquerade occurring and
the underlying channel on the session changing. The code
incorrectly relocked the new channel instead of the old
channel when returning. This resulted in the new channel
being locked indefinitely. The code now always acts on the
expected channel.

ASTERISK-28538

Change-Id: I2b2e60d07e74383ae7e90d752c036c4b02d6b3a3

5 years agoMerge "test_utils.c: Skip test adsi_loaded_test if module not loaded." into certified...
George Joseph [Tue, 10 Sep 2019 13:51:23 +0000 (08:51 -0500)] 
Merge "test_utils.c: Skip test adsi_loaded_test if module not loaded." into certified/16.3

5 years agoAST-2019-004 - res_pjsip_t38.c: Add NULL checks before using session media
Kevin Harwell [Tue, 20 Aug 2019 20:05:45 +0000 (15:05 -0500)] 
AST-2019-004 - res_pjsip_t38.c: Add NULL checks before using session media

After receiving a 200 OK with a declined stream in response to a T.38
initiated re-invite Asterisk would crash when attempting to dereference
a NULL session media object.

This patch checks to make sure the session media object is not NULL before
attempting to use it.

ASTERISK-28495
patches:
  ast-2019-004.patch submitted by Alexei Gradinari (license 5691)

Change-Id: I168f45f4da29cfe739acf87e597baa2aae7aa572
(cherry picked from commit 965df3c228d49bcde3503e0482f3c831dcbf6c77)

5 years agotest_utils.c: Skip test adsi_loaded_test if module not loaded.
Chris-Savinovich [Wed, 4 Sep 2019 21:19:55 +0000 (16:19 -0500)] 
test_utils.c: Skip test adsi_loaded_test if module not loaded.

Module res_adsi.so is deprecated, therefore it does not load by default.
Module not loaded causes it to yield a FAIL when tested by tests/test_utils.c.
This fix checks if the corresponding module is loaded at the start of the test,
and if not, it passes the test and exits with a message.

This fix is applied to all versions where the module is marked deprecated.

Change-Id: I52be64c8f6af222e15148a856d1f10cb113e1e94

6 years agoCI: Escape backslashes in printenv/sort/tr
George Joseph [Thu, 8 Aug 2019 17:10:11 +0000 (11:10 -0600)] 
CI: Escape backslashes in printenv/sort/tr

Change-Id: I52be64c8f6af2bbe15148a856d1f10cb113e1e94

6 years agoCI: Add "throttle" label and "skip_gate" capability
George Joseph [Thu, 8 Aug 2019 12:12:18 +0000 (06:12 -0600)] 
CI:  Add "throttle" label and "skip_gate" capability

To make throttling by label fully active, the "throttle" option
has to be specified with a specific label.

You can now specify "skip_gate" in the Gerrit comments when you
do a +2 code review to tell Jenkins not to actually run the
gate.  You'd do this if you plan to manually merge the change.

Also updated the "printenv" debug output to better sort multi-line
comments.

Change-Id: I4c0b1085acec4805f2ca207eebac50aad81f27e2

6 years agoCI: Make node labels job-specific
George Joseph [Tue, 6 Aug 2019 15:40:54 +0000 (09:40 -0600)] 
CI:  Make node labels job-specific

Originally, the eligible nodes for a job were labelled only by
"swdev-docker".  So basically any node could run any job.  We had
found that allowing a node to run more than 1 gate at a time was
problematic so we limited the nodes to processing 1 job at a time.
With the creation of the Asterisk 17 branches however, we now have
so many active branches that getting checks and gates through in
a timely manner is problematic when a node can run only 1 job
at a time.

Now the nodes are also labelled by the job type they can run.
For instance: "asterisk-check", "asterisk-gate", etc.  With the
"Throttle Concurrent Builds" plugin, we can now allow a node to
run more than 1 job BUT throttle by job type.  For instance:
  Allow 2 jobs but only 1 asterisk-gate at a time.
Now a node can run 2 checks or 1 check and 1 gate or 1 gate but
not 2 gates at a time.

Change-Id: I2032bf6afbcec5c341d9b852214c0c812d3d6db5

6 years agoMerge ".gitreview: Update defaultbranch for certified" into certified/16.3
Joshua Colp [Mon, 29 Jul 2019 09:57:02 +0000 (04:57 -0500)] 
Merge ".gitreview:  Update defaultbranch for certified" into certified/16.3

6 years ago.gitreview: Update defaultbranch for certified
George Joseph [Fri, 26 Jul 2019 13:40:18 +0000 (07:40 -0600)] 
.gitreview:  Update defaultbranch for certified

Change-Id: I3dc35bdd6df92595f6941e92257986943fb50c2e

6 years agoCI: Don't enable non-core modules in Certified branches
George Joseph [Wed, 24 Jul 2019 20:15:27 +0000 (14:15 -0600)] 
CI:  Don't enable non-core modules in Certified branches

We don't support non-core modules for Certified releases but we
were enabling them for CI builds which was causing lots of test
failures.  Now we don't.

Change-Id: I0b3254c08a2479f3d39151690350cce5ce5ad766

6 years agoMerge "res_pjsip_messaging: Check for body in in-dialog message" into certified...
Kevin Harwell [Fri, 12 Jul 2019 14:23:34 +0000 (09:23 -0500)] 
Merge "res_pjsip_messaging:  Check for body in in-dialog message" into certified/16.3

6 years agores_pjsip_messaging: Check for body in in-dialog message
George Joseph [Wed, 12 Jun 2019 18:03:04 +0000 (12:03 -0600)] 
res_pjsip_messaging:  Check for body in in-dialog message

We now check that a body exists and it has a length > 0 before
attempting to process it.

ASTERISK-28447
Reported-by: Gil Richard
Change-Id: Ic469544b22ab848734636588d4c93426cc6f4b1f

6 years agochan_sip: Handle invalid SDP answer to T.38 re-invite
Francesco Castellano [Fri, 28 Jun 2019 16:15:31 +0000 (18:15 +0200)] 
chan_sip: Handle invalid SDP answer to T.38 re-invite

The chan_sip module performs a T.38 re-invite using a single media
stream of udptl, and expects the SDP answer to be the same.

If an SDP answer is received instead that contains an additional
media stream with no joint codec a crash will occur as the code
assumes that at least one joint codec will exist in this
scenario.

This change removes this assumption.

ASTERISK-28465

Change-Id: I8b02845b53344c6babe867a3f0a5231045c7ac87

6 years agoMerge "res_rtp_asterisk: Add ability to propose local address in ICE" into certified...
Friendly Automation [Wed, 22 May 2019 14:31:22 +0000 (09:31 -0500)] 
Merge "res_rtp_asterisk:  Add ability to propose local address in ICE" into certified/16.3

6 years agores_rtp_asterisk: Add ability to propose local address in ICE
George Joseph [Fri, 17 May 2019 23:44:37 +0000 (17:44 -0600)] 
res_rtp_asterisk:  Add ability to propose local address in ICE

You can now add the "include_local_address" flag to an entry in
rtp.conf "[ice_host_candidates]" to include both the advertized
address and the local address in ICE negotiation:

[ice_host_candidates]
192.168.1.1 = 1.2.3.4,include_local_address

This causes both 192.168.1.1 and 1.2.3.4 to be advertized.

Change-Id: Ide492cd45ce84546175ca7d557de80d9770513db

6 years agopjproject-bundled: Add upstream timer fixes
Joshua Colp [Mon, 20 May 2019 17:45:57 +0000 (14:45 -0300)] 
pjproject-bundled:  Add upstream timer fixes

Fixed #2191:
  - Stricter double timer entry scheduling prevention.
  - Integrate group lock in SIP transport, e.g: for add/dec ref,
    for timer scheduling.

ASTERISK-28161
Reported-by: Ross Beer
Change-Id: I2e09aa66de0dda9414d8a8259a649c4d2d96a9f5

6 years agoPrepare certified/16.3
George Joseph [Tue, 21 May 2019 17:26:41 +0000 (11:26 -0600)] 
Prepare certified/16.3

 * Update all extended and deprecated modules to set
   defaultenabled = no

 * Change .version to certified/16.3

Change-Id: Idc92d5c797678fba755536fe4a27297d959f67e9

6 years agoUpdate for 16.3.0 16.3 16.3.0
Asterisk Development Team [Thu, 4 Apr 2019 14:49:57 +0000 (09:49 -0500)] 
Update for 16.3.0

6 years agobuild: Fix compiler warnings/errors.
Ben Ford [Wed, 3 Apr 2019 15:24:06 +0000 (10:24 -0500)] 
build: Fix compiler warnings/errors.

The compiler complained about a couple of variables that weren't
initialized but were being used. Initializing them to NULL resolves the
warnings/errors.

ASTERISK-28362 #close

Change-Id: I6243afc5459b416edff6bbf571b0489f6b852e4b

6 years agoUpdate for 16.3.0-rc1 16.3.0-rc1
Asterisk Development Team [Mon, 1 Apr 2019 14:55:42 +0000 (09:55 -0500)] 
Update for 16.3.0-rc1

6 years agoapp_queue: Fix a few member pause bugs
Sean Bright [Fri, 29 Mar 2019 13:07:29 +0000 (09:07 -0400)] 
app_queue: Fix a few member pause bugs

* Always set member->lastpause when setting member->paused

* Fixed typo (using member->lastcall instead of member->lastpause) in
  'queue show' output.

* Use a constant 'now' in 'queue show' output for a better point-in-time
  view of time based stats.

ASTERISK-27541 #close
Reported by: César Benjamín García Martínez

Change-Id: Ib41ced90cfdb66f9bb1e7b263d0f6fc1ac6e18fa

6 years agoalembic: Fix errors during upgrade head.
Ben Ford [Tue, 26 Mar 2019 19:56:37 +0000 (14:56 -0500)] 
alembic: Fix errors during upgrade head.

When trying to upgrade using alembic, a couple different errors kept
popping up that prevented the upgrade. An additional parameter was
needed when changing the schema for mwi_subscribe_replaces_unsolicited
from an integer to an enum. When changing from a string to an enum, the
type needed to be cast for postgresql. The other issue was a parameter
being used during column creation that did not exist.

After fixing the upgrade process, it revealed errors with the downgrade
process. One was a variable not being defined in the downgrade function,
and the other was tables not existing when using MySQL. This was due to
a context check that should have encompassed MySQL, but in the end was
not doing so.

Change-Id: Ib4d70cf3ce5080023a50be496272a777b55d6c8e

6 years agoMerge "pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs" into 16
George Joseph [Thu, 28 Mar 2019 13:04:31 +0000 (08:04 -0500)] 
Merge "pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs" into 16

6 years agoMerge "manager: Use separate lock for session event notification." into 16
Friendly Automation [Wed, 27 Mar 2019 22:42:56 +0000 (17:42 -0500)] 
Merge "manager: Use separate lock for session event notification." into 16

6 years agoMerge "build: Add staging directories for future changes." into 16
George Joseph [Wed, 27 Mar 2019 19:25:21 +0000 (14:25 -0500)] 
Merge "build: Add staging directories for future changes." into 16

6 years agoMerge "app_queue: Fix documentation for QUEUE_MEMBER function." into 16
Friendly Automation [Wed, 27 Mar 2019 18:32:59 +0000 (13:32 -0500)] 
Merge "app_queue: Fix documentation for QUEUE_MEMBER function." into 16

6 years agobuild: Add staging directories for future changes.
Ben Ford [Wed, 27 Mar 2019 16:03:40 +0000 (11:03 -0500)] 
build: Add staging directories for future changes.

This is the first step in changing the release process so that changes
made to the CHANGES and UPGRADE.txt files do not result in merge
conflicts every time multiple people modify these files. The changes
made will go in these new directories: doc/CHANGES-staging and
doc/UPGRADE-staging. The README.md files explain how things will work,
but here's a little overview. When you make a change that would go in
either CHANGES or UPGRADE.txt, this should instead be documented in a
new file in the doc/CHANGES-staging or doc/UPGRADE-staging directory,
respectively. The format will look like this:

   Subject: res_pjsip

   A description that explains the changes made and why. The release
   script will handle the bulleting and section separators! The
   'Subject:' header is case-sensitive.

   You can still separate with new lines within your description.

   Subject: res_ari
   Master-Only: true

   You can have more than one subject, and they don't have to be the
   same! Also, the 'Master-Only' header should always be true and is
   also case-sensitive (but the value is not - you can have 'true' or
   'True'). This header will only ever be present in the master branch.

For more information, check out the wiki page:
https://wiki.asterisk.org/wiki/display/AST/CHANGES+and+UPGRADE.txt

This is an initial change for ASTERISK_28111. Functionally, this will
make no difference, but it will prep the directories for when the
changes from CHANGES and UPGRADE.txt are extracted.

Change-Id: I8d852f284f66ac456b26dcb899ee46babf7d15b6

6 years agoMerge "chan_sip: Ensure 'qualifygap' isn't negative" into 16
Friendly Automation [Wed, 27 Mar 2019 11:02:12 +0000 (06:02 -0500)] 
Merge "chan_sip: Ensure 'qualifygap' isn't negative" into 16

6 years agoapp_queue: Fix documentation for QUEUE_MEMBER function.
Sean Bright [Tue, 26 Mar 2019 21:55:55 +0000 (17:55 -0400)] 
app_queue: Fix documentation for QUEUE_MEMBER function.

It was a copy/paste of the QUEUE_MEMBER_COUNT function's synopsis.

ASTERISK-20986 #close
Reported by: Olivier Krief

Change-Id: If51ec481feb35824a4e78ab5600b197b819b10be

6 years agoMerge "res/res_ari: Added timestamp as a requirement for all ARI events" into 16
Friendly Automation [Tue, 26 Mar 2019 13:52:45 +0000 (08:52 -0500)] 
Merge "res/res_ari: Added timestamp as a requirement for all ARI events" into 16

6 years agoMerge "res_config_odbc: set empty extended field as a single whitespace" into 16
George Joseph [Tue, 26 Mar 2019 13:48:12 +0000 (08:48 -0500)] 
Merge "res_config_odbc: set empty extended field as a single whitespace" into 16

6 years agomanager: Use separate lock for session event notification.
Joshua Colp [Mon, 25 Mar 2019 11:34:09 +0000 (08:34 -0300)] 
manager: Use separate lock for session event notification.

When notifying a manager session that new events were available
the same lock was used that was also held when doing things within
the session (such as sending events out). If the manager session
blocked for a period of time this would cause a back up of messages
in Stasis and would also block any other sessions from receiving
events.

This change adds a separate lock to the manager session which is
strictly used for notifying it that new events are available.

ASTERISK-28350

Change-Id: Ifbcac007faca9ad0231640f5e82a6ca9228f261b

6 years agopjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs
Alexei Gradinari [Mon, 25 Mar 2019 23:05:28 +0000 (19:05 -0400)] 
pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs

The next usage of PJSIP_PARSE_URI will crash asterisk
${PJSIP_PARSE_URI(tel:+1234567890,host)}
or
${PJSIP_PARSE_URI(192.168.1.1:5060,host)}

The function pjsip_parse_uri successfully parses then, but returns
struct pjsip_other_uri *.

This patch restricts parsing only SIP/SIPS URIs.

Change-Id: I16f255c2b86a80a67e9f9604b94b129a381dd25e

6 years agores/res_ari: Added timestamp as a requirement for all ARI events
sungtae kim [Wed, 6 Mar 2019 22:21:42 +0000 (23:21 +0100)] 
res/res_ari: Added timestamp as a requirement for all ARI events

Changed to requirement to having timestamp for all of ARI events.
The below ARI events were changed to having timestamp.
PlaybackStarted, PlaybackContinuing, PlaybackFinished,
RecordingStarted, RecordingFinished, RecordingFailed,
ApplicationReplaced, ApplicationMoveFailed

ASTERISK-28326

Change-Id: I382c2fef58f5fe107e1074869a6d05310accb41f

6 years agochan_sip: Ensure 'qualifygap' isn't negative
Sean Bright [Mon, 25 Mar 2019 19:31:23 +0000 (15:31 -0400)] 
chan_sip: Ensure 'qualifygap' isn't negative

Passing negative intervals to the scheduler rips a hole in the
space-time continuum.

ASTERISK-25792 #close
Reported by: Paul Sandys

Change-Id: Ie706f21cee05f76ffb6f7d89e9c867930ee7bcd7

6 years agores_config_odbc: set empty extended field as a single whitespace
Alexei Gradinari [Mon, 25 Mar 2019 16:42:27 +0000 (12:42 -0400)] 
res_config_odbc: set empty extended field as a single whitespace

If Realtime @ variable value is NULL or empty or contains only whitespaces
then when we try to retrieve it using PJSIP_ENDPOINT we get WARNING
pjsip_endpoint_function_read: Unknown property @my_var for PJSIP endpoint.
And the variable is missing in the result of CLI pjsip show endpoint.

This patch keeps empty sorcery extended field.

ASTERISK-28341 #close

Change-Id: I221fccc04cbfa2be17ce971f64ae0e74e465eea0

6 years agomain/taskprocessor: Increase max name length of taskprocessors
Matthew Fredrickson [Fri, 22 Mar 2019 19:46:34 +0000 (19:46 +0000)] 
main/taskprocessor: Increase max name length of taskprocessors

Since the new names went in, the maximum taskprocessor name is too
short.  This patch increases the name field to a length to better
handle the new names.

Change-Id: I32f32d6926f25c8ef5a91303fd2988d2c2858877

6 years agoMerge "sorcery.c: Sorcery enhancements for wizard management" into 16
Friendly Automation [Tue, 19 Mar 2019 14:51:29 +0000 (09:51 -0500)] 
Merge "sorcery.c: Sorcery enhancements for wizard management" into 16

6 years agoMerge "res/res_stasis: Fixed wrong StasisEnd timestamp" into 16
George Joseph [Tue, 19 Mar 2019 14:27:05 +0000 (09:27 -0500)] 
Merge "res/res_stasis: Fixed wrong StasisEnd timestamp" into 16

6 years agosorcery.c: Sorcery enhancements for wizard management
George Joseph [Thu, 14 Mar 2019 16:46:53 +0000 (10:46 -0600)] 
sorcery.c: Sorcery enhancements for wizard management

Added ability to specifiy a wizard is read-only when applying
it to a specific object type.  This allows you to specify
create, update and delete callbacks for the wizard but limit
which object types can use them.

Added the ability to allow an object type to have multiple
wizards of the same type.  This is indicated when a wizard
is added to a specific object type.

Added 3 new sorcery wizard functions:

* ast_sorcery_object_type_insert_wizard which does the same thing
  as the existing ast_sorcery_insert_wizard_mapping function but
  accepts the new read-only and allot-duplicates flags and also
  returns the ast_sorcery_wizard structure used and it's internal
  data structure. This allows immediate use of the wizard's
  callbacks without having to register a "wizard mapped" observer.

* ast_sorcery_object_type_apply_wizard which does the same
  thing as the existing ast_sorcery_apply_wizard_mapping function
  but has the added capabilities of
  ast_sorcery_object_type_insert_wizard.

* ast_sorcery_object_type_remove_wizard which removes a wizard
  matching both its name and its original argument string.

* The original logic in __ast_sorcery_insert_wizard_mapping was moved
  to __ast_sorcery_object_type_insert_wizard and enhanced for the
  new capabilities, then __ast_sorcery_insert_wizard_mapping was
  refactored to just call __ast_sorcery_insert_wizard_mapping.

* Added a unit test to test_sorcery.c to test the read-only
  capability.

Change-Id: I40f35840252e4313d99e11dbd80e270a3aa10605

6 years agoMerge "vector: Add AST_VECTOR_COMPACT() to reclaim wasted space" into 16
Friendly Automation [Mon, 18 Mar 2019 11:29:10 +0000 (06:29 -0500)] 
Merge "vector: Add AST_VECTOR_COMPACT() to reclaim wasted space" into 16

6 years agoMerge "Variable ALTCONF ignored when service is used in Debian" into 16
Joshua Colp [Mon, 18 Mar 2019 10:33:17 +0000 (05:33 -0500)] 
Merge "Variable ALTCONF ignored when service is used in Debian" into 16

6 years agoMerge "app.c: Remove deletion of pool topic on mwi state delete" into 16
George Joseph [Fri, 15 Mar 2019 23:30:20 +0000 (18:30 -0500)] 
Merge "app.c:  Remove deletion of pool topic on mwi state delete" into 16

6 years agores/res_stasis: Fixed wrong StasisEnd timestamp
sungtae kim [Sun, 10 Mar 2019 22:53:36 +0000 (23:53 +0100)] 
res/res_stasis: Fixed wrong StasisEnd timestamp

Because StasisEnd's timestamp created it's own timestamp, it makes
wrong timestamp, compare to other channel event(ChannelDestroyed).
Fixed to getting a timestamp from the Channel's timestamp.

ASTERISK-28333

Change-Id: I5eb8380fc472f1100535a6bc4983c64767026116

6 years agovector: Add AST_VECTOR_COMPACT() to reclaim wasted space
Sean Bright [Thu, 14 Mar 2019 14:55:30 +0000 (10:55 -0400)] 
vector: Add AST_VECTOR_COMPACT() to reclaim wasted space

This might be useful in situations where you are loading an undetermined number
of items into a vector and don't want to keep (potentially) 2x the necessary
memory around indefinitely.

Change-Id: I9711daa0fe01783fc6f04c5710eba84f2676d7b9

6 years agotaskprocessor.c: Fix printf type mismatch
Richard Mudgett [Thu, 14 Mar 2019 16:53:13 +0000 (11:53 -0500)] 
taskprocessor.c: Fix printf type mismatch

A size_t is not always an unsigned long.

* Use the %zu format specifier in the ast_cli() printf format string since
AST_VECTOR_SIZE() returns a size_t value.

Change-Id: Ib102dd36bbe6c2a7a4ce6870ae9110d978dd7e98

6 years agoMerge "AMI/ARI: Bump non-breaking version numbers" into 16
Joshua C. Colp [Thu, 14 Mar 2019 14:48:38 +0000 (09:48 -0500)] 
Merge "AMI/ARI: Bump non-breaking version numbers" into 16

6 years agoapp.c: Remove deletion of pool topic on mwi state delete
George Joseph [Fri, 8 Mar 2019 15:40:38 +0000 (08:40 -0700)] 
app.c:  Remove deletion of pool topic on mwi state delete

As part of an earlier voicemail refactor, ast_delete_mwi_state_full
was modified to remove the pool topic for a mailbox when the state
was deleted.  This was an attempt to prevent stale topics from
accumulating when app_voicemail was reloaded and a mailbox went
away.  Unfortunately because of the fact that when app_voicemail
reloads, ALL mailboxes are deleted then only current ones recreated,
topics were being removed from the pool that still had subscribers
on them, then recreated as new topics of the same name.  So now
modules like res_pjsip_mwi are listening on a topic that will
never receive any messages because app_voicemail is publishing on
a different topic that happens to have the same name.  The solutiuon
to this is not easy and given that accumulating topics for
deleted mailboxes is less evil that not sending NOTIFYs...

* Removed the call to stasis_topic_pool_delete_topic in
  ast_delete_mwi_state_full.

Also:

* Fixed a topic reference leak in res_pjsip_mwi
  mwi_stasis_subscription_alloc.

* Added some debugging to mwi_stasis_subscription_alloc,
  stasis_topic_create, and topic_dtor.

* Fixed a topic reference leak in an error path in
  internal_stasis_subscribe.

ASTERISK-28306
Reported-by: Jared Hull
Change-Id: Id7da0990b3ac4be4b58491536b35f41291247b27

6 years agoMerge "res_musiconhold: Remove redundant option parsing" into 16
Joshua C. Colp [Thu, 14 Mar 2019 14:20:19 +0000 (09:20 -0500)] 
Merge "res_musiconhold: Remove redundant option parsing" into 16

6 years agoMerge "stasis: Improve topic/subscription names and statistics." into 16
Joshua C. Colp [Thu, 14 Mar 2019 14:19:37 +0000 (09:19 -0500)] 
Merge "stasis: Improve topic/subscription names and statistics." into 16

6 years agoVariable ALTCONF ignored when service is used in Debian
cirillor [Sat, 9 Mar 2019 14:39:26 +0000 (11:39 -0300)] 
Variable ALTCONF ignored when service is used in Debian

When variable ALTCONF is defined, the command start prints the message
"Unable to open specified master config file '"/etc/asterisk/asteris..."
and use default configurations.

ASTERISK-28332

Change-Id: I7595e582a0ee2c1051ea35435e247e27906957ef

6 years agoMerge "stasis: Allow empty application arguments to move." into 16
Joshua C. Colp [Wed, 13 Mar 2019 16:32:09 +0000 (11:32 -0500)] 
Merge "stasis: Allow empty application arguments to move." into 16

6 years agoMerge "app_queue: fix ring_entry to access nativeformats with a channel lock" into 16
Kevin Harwell [Wed, 13 Mar 2019 16:17:40 +0000 (11:17 -0500)] 
Merge "app_queue: fix ring_entry to access nativeformats with a channel lock" into 16

6 years agoMerge "chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function"...
Kevin Harwell [Wed, 13 Mar 2019 15:55:11 +0000 (10:55 -0500)] 
Merge "chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function" into 16

6 years agostasis: Allow empty application arguments to move.
Joshua Colp [Wed, 13 Mar 2019 11:05:57 +0000 (08:05 -0300)] 
stasis: Allow empty application arguments to move.

Change-Id: I1e4d37415f3034abe36496dc30209c2303e6af5c

6 years agoMerge "partial-inlining: disable partial-inlining if gcc>=8.2.1" into 16
Joshua C. Colp [Wed, 13 Mar 2019 11:29:48 +0000 (06:29 -0500)] 
Merge "partial-inlining: disable partial-inlining if gcc>=8.2.1" into 16

6 years agoAMI/ARI: Bump non-breaking version numbers
Kevin Harwell [Tue, 12 Mar 2019 20:54:23 +0000 (15:54 -0500)] 
AMI/ARI: Bump non-breaking version numbers

Increasing the non-breaking AMI and ARI version numbers due to changes and
additions in those API's. Note, some changes may be forthcoming (will be added
between now and the next release of Asterisk), thus not listed here. As well
a few changes listed below may have been released in a previous release of
Asterisk, but the API version numbers were not increased at that time, so
including here.

AMI:

 * app_queue: set the wrapuptime from AddQueueMember application - e806990
 * res_pjsip: option for ContactStatus event updates - 7f22c9f

ARI:

 * bridging: Add creation timestamps - 0d70120
 * res_stasis: Add ability to switch applications - 50a4b61
 * ARI event type filtering - 1c5def4
 * Added ARI resource /ari/asterisk/ping - 19fc99a

ASTERISK-28314

Change-Id: Iebc813840f8230afa6b20579772e15549064b787

6 years agoMakefile.moddir_rules: Pass PJPROJECT_BUNDLED to download_externals
George Joseph [Tue, 12 Mar 2019 18:25:33 +0000 (12:25 -0600)] 
Makefile.moddir_rules: Pass PJPROJECT_BUNDLED to download_externals

The download_externals script wasn't getting the PJPROJECT_BUNDLED
environment variable passed down to it so it wasn't downloading
the appropriate variant of res_digium_phone.  This could cause
crashes in the DPMA.

Change-Id: I5daa9369c7af1fd556d892e89a85f279a2533425

6 years agopartial-inlining: disable partial-inlining if gcc>=8.2.1
Chris-Savinovich [Thu, 7 Mar 2019 19:48:04 +0000 (13:48 -0600)] 
partial-inlining: disable partial-inlining if gcc>=8.2.1

Apply flag -fno-partial-inlining on default optimization if and only if
gcc version >= 8.2.1 (this is the current ver on Fedora and Ubuntu).
This is done to avoid a bug that causes arithmetic calculations to fail
if the following conditions are met:
1. TEST_FRAMEWORK on
2. DONT_OPTIMIZE off
3. Fedora and Ubuntu
4. GCC 8.2.1
5. There must exist a certain combination of multithreading.
6. Optimization level -O2 and -O3
7. Flag -fpartial-inline activated (default when optimization level>=2)
The following link points to a similar gcc bug reported in 2015. This leads me
to believe the bug has regressed. Note I am not able to replicate this bug
in an environment other than Asterisk + Test Framework + Test_cel because the
multithreading combination that causes it seems to be unique. Therefore I
am temporarily abandoning any thoughts of reporting the new occurrence of this
bug to gcc.gnu.org.  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65307

Change-Id: Ibd1afe60e0a38b88e85fdcd9b051004601c2f102

6 years agoMerge "res/res_rtp_asterisk.c: Fixing possible divide by zero" into 16
Friendly Automation [Mon, 11 Mar 2019 15:06:56 +0000 (10:06 -0500)] 
Merge "res/res_rtp_asterisk.c: Fixing possible divide by zero" into 16

6 years agoMerge "jansson: json_pack with new format to verify required runtime version." into 16
George Joseph [Mon, 11 Mar 2019 14:49:30 +0000 (09:49 -0500)] 
Merge "jansson: json_pack with new format to verify required runtime version." into 16

6 years agostasis: Improve topic/subscription names and statistics.
Joshua Colp [Thu, 7 Mar 2019 12:28:31 +0000 (08:28 -0400)] 
stasis: Improve topic/subscription names and statistics.

Topic names now follow: <subsystem>:<functionality>[/<object>]

This ensures that they are all unique, and also provides better
insight in to what each topic is for.

Subscriber ids now also use the main topic name they are
subscribed to and an incrementing integer as their identifier to
make it easier to understand what the subscription is primarily
responsible for.

Both the CLI commands for listing topic and subscription statistics
now sort to make it a bit easier to see what is going on.

Subscriptions will now show all topics that they are receiving messages
from, not just the main topic they were subscribed to.

ASTERISK-28335

Change-Id: I484e971a38c3640f2bd156282e532eed84bf220d

6 years agoMerge "app_meetme: Don't mute joining admins if conference is muted" into 16
Friendly Automation [Mon, 11 Mar 2019 14:14:48 +0000 (09:14 -0500)] 
Merge "app_meetme: Don't mute joining admins if conference is muted" into 16

6 years agores/res_rtp_asterisk.c: Fixing possible divide by zero
sungtae kim [Sun, 3 Mar 2019 15:20:24 +0000 (16:20 +0100)] 
res/res_rtp_asterisk.c: Fixing possible divide by zero

Currently, when the Asterisk calculates rtp statistics, it uses
sample_count as a unsigned integer parameter. This would be fine
for most of cases, but in case of large enough number of sample_count,
this might be causing the divide by zero error.

ASTERISK-28321

Change-Id: If7e0629abaceddd2166eb012456c53033ea26249

6 years agochan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function
cirillor [Tue, 5 Mar 2019 14:15:00 +0000 (11:15 -0300)] 
chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function

Add logical group at DAHDIChannel event
and create "dahdi_group" at CHANNEL function.

ASTERISK-28317

Change-Id: Ic1f834cd53982a9707a9748395ee746d6575086a

6 years agores_musiconhold: Remove redundant option parsing
Sean Bright [Fri, 8 Mar 2019 20:12:24 +0000 (15:12 -0500)] 
res_musiconhold: Remove redundant option parsing

Change-Id: I481fabd8eaf2e4e7ffb5c8285b294742826e7d12

6 years agochan_pjsip: add a flag to ignore 183 responses if no SDP present
Torrey Searle [Mon, 4 Mar 2019 07:50:18 +0000 (08:50 +0100)] 
chan_pjsip: add a flag to ignore 183 responses if no SDP present

chan_sip will always ignore 183 responses that do not contain SDP
however, chan_pjsip will currently always translate it into a
183 with SDP.  This new flag allows chan_pjsip to have the same
behavior as chan_sip.

ASTERISK-28322 #close

Change-Id: If81cfaa17c11b6ac703e3d71696f259d86c6be4a

6 years agojansson: json_pack with new format to verify required runtime version.
Corey Farrell [Thu, 7 Mar 2019 23:17:49 +0000 (18:17 -0500)] 
jansson: json_pack with new format to verify required runtime version.

Add a json_pack at startup that will fail if runtime links against a
library older than jansson-2.11.

Change-Id: I101aebafe0f9407650206f7c552dad3d69377b5a

6 years agoMerge "samples: Fix comment typo in pjsip.conf.sample" into 16
George Joseph [Fri, 8 Mar 2019 18:44:37 +0000 (12:44 -0600)] 
Merge "samples: Fix comment typo in pjsip.conf.sample" into 16

6 years agoMerge "Replace calls to strtok() with strtok_r()" into 16
Friendly Automation [Fri, 8 Mar 2019 18:33:23 +0000 (12:33 -0600)] 
Merge "Replace calls to strtok() with strtok_r()" into 16

6 years agoMerge "res_stasis: Add ability to switch applications." into 16
Friendly Automation [Fri, 8 Mar 2019 17:40:49 +0000 (11:40 -0600)] 
Merge "res_stasis: Add ability to switch applications." into 16

6 years agoMerge "bridging: Add creation timestamps" into 16
Friendly Automation [Fri, 8 Mar 2019 17:08:09 +0000 (11:08 -0600)] 
Merge "bridging: Add creation timestamps" into 16

6 years agoapp_meetme: Don't mute joining admins if conference is muted
Sean Bright [Thu, 7 Mar 2019 23:15:05 +0000 (18:15 -0500)] 
app_meetme: Don't mute joining admins if conference is muted

ASTERISK-28328 #close

Change-Id: I4f6069fb34923b7521520c2a205a1e56227e592b

6 years agoReplace calls to strtok() with strtok_r()
Sean Bright [Wed, 6 Mar 2019 21:04:57 +0000 (16:04 -0500)] 
Replace calls to strtok() with strtok_r()

strtok() uses a static buffer, making it not thread safe.

Change-Id: Icce265153e1e65adafa8849334438ab6d190e541

6 years agosamples: Fix comment typo in pjsip.conf.sample
Sean Bright [Thu, 7 Mar 2019 22:05:42 +0000 (17:05 -0500)] 
samples: Fix comment typo in pjsip.conf.sample

Change-Id: I84a45c3d9fd26ca61aca99927eec83b57f1de857

6 years agores_stasis: Add ability to switch applications.
Ben Ford [Thu, 7 Mar 2019 13:41:14 +0000 (07:41 -0600)] 
res_stasis: Add ability to switch applications.

Added the ability to move between Stasis applications within Stasis.
This can be done by calling 'move' in an application, providing (at
minimum) the channel's id and the application to switch to. If the
application is not registered or active, nothing will happen and the
channel will remain in the current application, and an event will be
triggered to let the application know that the move failed. The event
name is "ApplicationMoveFailed", and provides the "destination" that the
channel was attempting to move to, as well as the usual channel
information. Optionally, a list of arguments can be passed to the
function call for the receiving application. A full example of a 'move'
call would look like this:

client.channels.move(channelId, app, appArgs)

The control object used to control the channel in Stasis can now switch
which application it belongs to, rather than belonging to one Stasis
application for its lifetime. This allows us to use the same control
object instead of having to tear down the current one and create
another.

ASTERISK-28267 #close

Change-Id: I43d12b10045a98a8d42541889b85695be26f288a

6 years agoapp_queue: fix ring_entry to access nativeformats with a channel lock
Dömsödi Gergely [Wed, 6 Mar 2019 13:20:09 +0000 (14:20 +0100)] 
app_queue: fix ring_entry to access nativeformats with a channel lock

Fixes an intermittent segmentation fault which occured when accessing
nativeformats of a channel which entered into a queue.

ASTERISK-27964
Reported by: Francisco Seratti

Change-Id: Ic87fa7a363f3b487c24ce07032f4b2201c22db9e

6 years agoMerge "sip_to_pjsip: Make multiline comment parsing consistent with Asterisk" into 16
Joshua Colp [Tue, 5 Mar 2019 15:20:17 +0000 (09:20 -0600)] 
Merge "sip_to_pjsip: Make multiline comment parsing consistent with Asterisk" into 16