The default behavior is to always break from proceeding to nested conditions even if a condition matches, besides when `break="never"`.
Common sense says when a condition matches and `break` is set to `on-true` to proceed to nested conditions, and `break` should only apply to the subsequent conditions.
This commit introduces a new extension attribute, `break-from-nested` that can be set to `false` to not break from nested conditions if the condition matches; besides, if `break="on-false"`
The default behavior will be `break-from-nested=true`, so it won't break any existing systems.
Example:
```xml
<extension name="break-from-nested-test" continue="true" break-from-nested="false">
<condition>
<action application="set" data="var1=true" inline="true"/>
</condition>
<condition field="${var1}" expression="^true$" break="on-true">
<action application="log" data="err external condition" inline="true"/>
<condition>
<action application="log" data="err I will only log if break-from-nested is set to false" inline="true"/>
</condition>
</condition>
<condition>
<action application="log" data="err I will only log if previous conditions did not break" inline="true"/>
</condition>
</extension>
```
The conference output loop accesses the member's read_impl while
resampling. The output loop also spawns off the input loop thread, which
is where the member->read_impl is actually initialised. This results in
an uncommon race where the output loop sometimes gets an uninitialised
member->read_impl and bails with logs something like this:
2023-10-12 18:19:01.436844 [DEBUG] conference_loop.c:1340 Setup timer soft success interval: 20 samples: 960 from codec L16
2023-10-12 18:19:01.436844 [DEBUG] conference_loop.c:1497 Outbound conference channel answered, setting CFLAG_ANSWERED
2023-10-12 18:19:01.436844 [NOTICE] switch_core_media.c:15852 Activating write resampler
2023-10-12 18:19:01.436844 [DEBUG] switch_core_media.c:16097 Engaging Write Buffer at 1920 bytes to accommodate 0->1920
2023-10-12 18:19:01.436844 [ERR] switch_core_media.c:16112 Write Buffer 0 bytes Failed!
As a solution, we initialise the member->read_impl even before we start
up the input loop, so that this race can never happen.
* [Core] Coverity: 1500270 Use of 32-bit time_t
* [Core] Coverity: 1500229 Use of 32-bit time_t
* [Core] Coverity: 1500235 Use of 32-bit time_t
* [Core] Coverity: 1500244 Use of 32-bit time_t
* [Core] Coverity: 1500250 Use of 32-bit time_t
* [Core] Coverity: 1500245 Use of 32-bit time_t
* [Core] Coverity: 1500255 Use of 32-bit time_t
* [Core] Coverity: 1500370 Use of 32-bit time_t
* Cleanup
* default to Debian bookworm
* use DEBIAN_VERSION instead of lsb_release; gosu is in Debian since buster
* update comments for FS_META_PACKAGE and exposed ports
* fix SHELL invocation so 'RUN' works as expected in downstream builds
See: https://docs.docker.com/engine/reference/builder/#shell
* [contrib/timezone-gen] Move timezone-gen.pl to own folder
* [contrib/timezone-gen] Add fixTzstr
* [contrib/timezone-gen] Add tests and zone data getter
- tests.pl can be used to verify that the generated timezone conf
will produce the correct datetimes by testing them against
what the system's `date` says
- build-zonedata.pl will download the latest tzdb data and build
the posix timezone data files. It only builds what is needed
rather than adding extraneous "right/" and "posix/" timezones.
FreeSWITCH doesn't seem to be able to use the "right/"
timezone files.
- data/ is where the various files needed to generate the
timezones gets stored
[Core, mod_cidlookup, mod_curl, mod_httapi, mod_http_cache, mod_kazoo, mod_shout] Add new switch_curl_mime APIs replacing switch_curl_process_form_post_params() and make code be compatible with libcurl>=7.87.0