Skip to content

Commit f24064f

Browse files
committed
Merge branch 'master' into v1.10
2 parents 4cb05e7 + 6ae8ce6 commit f24064f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+5459
-7960
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ This is the place to get answers faster and chat with other users in real time.
6767
Slack Community:
6868
* https://signalwire.community/
6969

70-
Mailing list:
70+
Mailing list (ARCHIVED):
7171

72-
* http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
72+
* http://lists.freeswitch.org/pipermail/freeswitch-users/
7373

7474
**Thank you for using FreeSWITCH!**

build/next-release.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.10.10-release
1+
1.10.11-release

conf/curl/autoload_configs/timezones.conf.xml

+657-547
Large diffs are not rendered by default.

conf/insideout/autoload_configs/timezones.conf.xml

+657-547
Large diffs are not rendered by default.

conf/minimal/autoload_configs/timezones.conf.xml

+652-1,841
Large diffs are not rendered by default.

conf/rayo/autoload_configs/timezones.conf.xml

+657-547
Large diffs are not rendered by default.

conf/sbc/autoload_configs/timezones.conf.xml

+657-547
Large diffs are not rendered by default.

conf/testing/autoload_configs/timezones.conf.xml

+652-1,841
Large diffs are not rendered by default.

conf/vanilla/autoload_configs/timezones.conf.xml

+652-1,807
Large diffs are not rendered by default.

configure.ac

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
# Must change all of the below together
55
# For a release, set revision for that tagged release as well and uncomment
6-
AC_INIT([freeswitch], [1.10.10-release], [email protected])
6+
AC_INIT([freeswitch], [1.10.11-release], [email protected])
77
AC_SUBST(SWITCH_VERSION_MAJOR, [1])
88
AC_SUBST(SWITCH_VERSION_MINOR, [10])
9-
AC_SUBST(SWITCH_VERSION_MICRO, [10-release])
9+
AC_SUBST(SWITCH_VERSION_MICRO, [11-release])
1010
AC_SUBST(SWITCH_VERSION_REVISION, [])
1111
AC_SUBST(SWITCH_VERSION_REVISION_HUMAN, [])
1212

@@ -716,7 +716,7 @@ PKG_CHECK_MODULES([SPANDSP], [spandsp >= 3.0],[
716716
AC_MSG_ERROR([no usable spandsp; please install spandsp3 devel package or equivalent])
717717
])
718718

719-
PKG_CHECK_MODULES([SOFIA_SIP], [sofia-sip-ua >= 1.13.15],[
719+
PKG_CHECK_MODULES([SOFIA_SIP], [sofia-sip-ua >= 1.13.17],[
720720
AM_CONDITIONAL([HAVE_SOFIA_SIP],[true])],[
721721
AC_MSG_ERROR([no usable sofia-sip; please install sofia-sip-ua devel package or equivalent])
722722
])

debian/bootstrap.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ Build-Depends:
335335
uuid-dev, libexpat1-dev, libgdbm-dev, libdb-dev,
336336
# used by many modules
337337
libcurl4-openssl-dev | libcurl4-gnutls-dev | libcurl-dev,
338-
bison, zlib1g-dev, libsofia-sip-ua-dev (>= 1.13.15),
338+
bison, zlib1g-dev, libsofia-sip-ua-dev (>= 1.13.17),
339339
libspandsp3-dev,
340340
# used to format the private freeswitch apt-repo key properly
341341
gnupg,
@@ -374,7 +374,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
374374
375375
Package: libfreeswitch1
376376
Architecture: amd64 armhf
377-
Depends: \${shlibs:Depends}, \${misc:Depends}, libsofia-sip-ua0 (>= 1.13.15)
377+
Depends: \${shlibs:Depends}, \${misc:Depends}, libsofia-sip-ua0 (>= 1.13.17)
378378
Recommends:
379379
Suggests: libfreeswitch1-dbg
380380
Conflicts: freeswitch-all (<= 1.6.7)

docker/README.md

+10-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
These are the official Docker files for master branch and the current release packages.
33

44
## Volumes
5-
These containers are setup so that you can mount your freeswitch configuration form a host or data volume container.
5+
These containers are set up so that you can mount your freeswitch configuration from a host or data volume container.
66

77
To mount freeswitch Configuration
88
```
@@ -16,17 +16,19 @@ To mount tmp directory for storing recordings, etc
1616

1717
The container also has a healthcheck where it does a fs_cli status check to make sure the freeswitch service is still running.
1818

19-
# Ports
19+
## Ports
2020

21-
The container exposes the following ports:
21+
The container should be run with host networking using `docker run --network host ...`.
2222

23-
- 5060/tcp 5060/udp 5080/tcp 5080/udp as SIP Signaling ports.
24-
- 5066/tcp 7443/tcp as WebSocket Signaling ports.
25-
- 8021/tcp as Event Socket port.
26-
- 64535-65535/udp as media ports.
27-
- 16384-32768/udp
23+
If you prefer to (or for some reason must) publish individual ports via `--publish/-p`, refer to this [issue](https://github.com/moby/moby/issues/11185) and this [potential workaround](https://hub.docker.com/r/bettervoice/freeswitch-container/) regarding using docker with large port ranges.
2824

25+
The following ports will be used, depending upon your specific configuration:
2926

27+
- 5060/tcp, 5060/udp, 5080/tcp, 5080/udp - SIP signaling
28+
- 5061/tcp, 5081/tcp - SIPS signaling
29+
- 5066/tcp, 7443/tcp - WebSocket signaling
30+
- 8021/tcp - the Event Socket
31+
- 16384-32768/udp, 64535-65535/udp - media
3032

3133

3234
If you wish to help improve these please submit a pull request at:

docker/master/Dockerfile

+29-26
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,61 @@
11
# vim:set ft=dockerfile:
2-
ARG DEBIAN_VERSION=buster
2+
ARG DEBIAN_VERSION=bookworm
33
FROM debian:${DEBIAN_VERSION}
4+
5+
# ARGs are cleared after every FROM
6+
# see: https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
7+
ARG DEBIAN_VERSION
48
ARG TOKEN
59

10+
# By default, install the full set of FreeSWITCH packages. Specify an alternative with:
11+
# --build-arg="FS_META_PACKAGE=freeswitch-meta-vanilla"
12+
# alternatives include:
13+
# freeswitch-meta-bare
14+
# freeswitch-meta-vanilla
15+
# freeswitch-meta-sorbet
16+
# freeswitch-meta-all-dbg
17+
ARG FS_META_PACKAGE=freeswitch-meta-all
18+
619
# Source Dockerfile:
720
# https://github.com/docker-library/postgres/blob/master/9.4/Dockerfile
821

922
# explicitly set user/group IDs
1023
RUN groupadd -r freeswitch --gid=999 && useradd -r -g freeswitch --uid=999 freeswitch
1124

12-
# grab gosu for easy step-down from root
13-
RUN apt-get update && apt-get install -y --no-install-recommends dirmngr gnupg2 ca-certificates wget \
14-
&& gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
15-
&& gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys 655DA1341B5207915210AFE936B4249FA7B0FB03 \
16-
&& gpg2 --output /usr/share/keyrings/signalwire-freeswitch-repo.gpg --export 655DA1341B5207915210AFE936B4249FA7B0FB03 \
17-
&& rm -rf /var/lib/apt/lists/* \
18-
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture)" \
19-
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture).asc" \
20-
&& gpg --verify /usr/local/bin/gosu.asc \
21-
&& rm /usr/local/bin/gosu.asc \
22-
&& chmod +x /usr/local/bin/gosu \
23-
&& apt-get purge -y --auto-remove ca-certificates wget dirmngr gnupg2
24-
2525
# make the "en_US.UTF-8" locale so freeswitch will be utf-8 enabled by default
26-
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
26+
RUN apt-get update -qq \
27+
&& apt-get install -y --no-install-recommends ca-certificates gnupg2 gosu locales wget \
2728
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
2829
ENV LANG en_US.utf8
2930

3031
# https://freeswitch.org/confluence/display/FREESWITCH/Debian
32+
# https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Installation/Linux/Debian_67240088/
3133

32-
RUN apt-get update && apt-get install ca-certificates lsb-release -y --no-install-recommends \
34+
RUN wget --no-verbose --http-user=signalwire --http-password=${TOKEN} \
35+
-O /usr/share/keyrings/signalwire-freeswitch-repo.gpg \
36+
https://freeswitch.signalwire.com/repo/deb/debian-release/signalwire-freeswitch-repo.gpg \
3337
&& echo "machine freeswitch.signalwire.com login signalwire password ${TOKEN}" > /etc/apt/auth.conf \
34-
&& echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list \
35-
&& apt-get update && apt-get install -y freeswitch-all \
36-
&& apt-get purge -y --auto-remove ca-certificates lsb-release \
38+
&& echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ ${DEBIAN_VERSION} main" > /etc/apt/sources.list.d/freeswitch.list \
39+
&& apt-get -qq update \
40+
&& apt-get install -y ${FS_META_PACKAGE} \
41+
&& apt-get purge -y --auto-remove \
3742
&& apt-get clean && rm -rf /var/lib/apt/lists/*
3843

3944
COPY docker-entrypoint.sh /
4045
# Add anything else here
4146

4247
## Ports
43-
# Open the container up to the world.
44-
### 8021 fs_cli, 5060 5061 5080 5081 sip and sips, 64535-65535 rtp
48+
# Document ports used by this container
49+
### 8021 fs_cli, 5060 5061 5080 5081 sip and sips, 5066 ws, 7443 wss, 8081 8082 verto, 16384-32768, 64535-65535 rtp
4550
EXPOSE 8021/tcp
4651
EXPOSE 5060/tcp 5060/udp 5080/tcp 5080/udp
4752
EXPOSE 5061/tcp 5061/udp 5081/tcp 5081/udp
53+
EXPOSE 5066/tcp
4854
EXPOSE 7443/tcp
49-
EXPOSE 5070/udp 5070/tcp
55+
EXPOSE 8081/tcp 8082/tcp
5056
EXPOSE 64535-65535/udp
5157
EXPOSE 16384-32768/udp
5258

53-
5459
# Volumes
5560
## Freeswitch Configuration
5661
VOLUME ["/etc/freeswitch"]
@@ -61,11 +66,9 @@ VOLUME ["/tmp"]
6166
COPY build/freeswitch.limits.conf /etc/security/limits.d/
6267

6368
# Healthcheck to make sure the service is running
64-
SHELL ["/bin/bash"]
69+
SHELL ["/bin/bash", "-c"]
6570
HEALTHCHECK --interval=15s --timeout=5s \
6671
CMD fs_cli -x status | grep -q ^UP || exit 1
6772

6873
ENTRYPOINT ["/docker-entrypoint.sh"]
69-
70-
7174
CMD ["freeswitch"]

freeswitch.spec

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ BuildRequires: curl-devel >= 7.19
140140
BuildRequires: gcc-c++
141141
BuildRequires: libtool >= 1.5.17
142142
BuildRequires: openssl-devel >= 1.0.1e
143-
BuildRequires: sofia-sip-devel >= 1.13.15
143+
BuildRequires: sofia-sip-devel >= 1.13.17
144144
BuildRequires: spandsp3-devel >= 3.0
145145
BuildRequires: pcre-devel
146146
BuildRequires: speex-devel

libs/libvpx/vp8/encoder/onyx_if.c

+5
Original file line numberDiff line numberDiff line change
@@ -1447,6 +1447,11 @@ void vp8_change_config(VP8_COMP *cpi, VP8_CONFIG *oxcf) {
14471447
last_h = cpi->oxcf.Height;
14481448
prev_number_of_layers = cpi->oxcf.number_of_layers;
14491449

1450+
if (cpi->initial_width) {
1451+
// TODO(https://crbug.com/1486441): Allow changing thread counts; the
1452+
// allocation is done once in vp8_create_compressor().
1453+
oxcf->multi_threaded = cpi->oxcf.multi_threaded;
1454+
}
14501455
cpi->oxcf = *oxcf;
14511456

14521457
switch (cpi->oxcf.Mode) {

libs/libvpx/vp9/common/vp9_alloccommon.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,6 @@ int vp9_alloc_context_buffers(VP9_COMMON *cm, int width, int height) {
123123
if (cm->alloc_mi(cm, new_mi_size)) goto fail;
124124
}
125125

126-
if (cm->seg_map_alloc_size < cm->mi_rows * cm->mi_cols) {
127-
// Create the segmentation map structure and set to 0.
128-
free_seg_map(cm);
129-
if (alloc_seg_map(cm, cm->mi_rows * cm->mi_cols)) goto fail;
130-
}
131-
132126
if (cm->above_context_alloc_cols < cm->mi_cols) {
133127
vpx_free(cm->above_context);
134128
cm->above_context = (ENTROPY_CONTEXT *)vpx_calloc(
@@ -143,6 +137,12 @@ int vp9_alloc_context_buffers(VP9_COMMON *cm, int width, int height) {
143137
cm->above_context_alloc_cols = cm->mi_cols;
144138
}
145139

140+
if (cm->seg_map_alloc_size < cm->mi_rows * cm->mi_cols) {
141+
// Create the segmentation map structure and set to 0.
142+
free_seg_map(cm);
143+
if (alloc_seg_map(cm, cm->mi_rows * cm->mi_cols)) goto fail;
144+
}
145+
146146
if (vp9_alloc_loop_filter(cm)) goto fail;
147147

148148
return 0;

libs/libvpx/vp9/encoder/vp9_encoder.c

+25-2
Original file line numberDiff line numberDiff line change
@@ -1915,6 +1915,17 @@ static void alloc_copy_partition_data(VP9_COMP *cpi) {
19151915
}
19161916
}
19171917

1918+
static void free_copy_partition_data(VP9_COMP *cpi) {
1919+
vpx_free(cpi->prev_partition);
1920+
cpi->prev_partition = NULL;
1921+
vpx_free(cpi->prev_segment_id);
1922+
cpi->prev_segment_id = NULL;
1923+
vpx_free(cpi->prev_variance_low);
1924+
cpi->prev_variance_low = NULL;
1925+
vpx_free(cpi->copied_frame_cnt);
1926+
cpi->copied_frame_cnt = NULL;
1927+
}
1928+
19181929
void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
19191930
VP9_COMMON *const cm = &cpi->common;
19201931
RATE_CONTROL *const rc = &cpi->rc;
@@ -1999,6 +2010,8 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
19992010
new_mi_size = cm->mi_stride * calc_mi_size(cm->mi_rows);
20002011
if (cm->mi_alloc_size < new_mi_size) {
20012012
vp9_free_context_buffers(cm);
2013+
vp9_free_pc_tree(&cpi->td);
2014+
vpx_free(cpi->mbmi_ext_base);
20022015
alloc_compressor_data(cpi);
20032016
realloc_segmentation_maps(cpi);
20042017
cpi->initial_width = cpi->initial_height = 0;
@@ -2014,8 +2027,18 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
20142027
update_frame_size(cpi);
20152028

20162029
if (last_w != cpi->oxcf.width || last_h != cpi->oxcf.height) {
2017-
memset(cpi->consec_zero_mv, 0,
2018-
cm->mi_rows * cm->mi_cols * sizeof(*cpi->consec_zero_mv));
2030+
vpx_free(cpi->consec_zero_mv);
2031+
CHECK_MEM_ERROR(
2032+
cm, cpi->consec_zero_mv,
2033+
vpx_calloc(cm->mi_rows * cm->mi_cols, sizeof(*cpi->consec_zero_mv)));
2034+
2035+
vpx_free(cpi->skin_map);
2036+
CHECK_MEM_ERROR(
2037+
cm, cpi->skin_map,
2038+
vpx_calloc(cm->mi_rows * cm->mi_cols, sizeof(cpi->skin_map[0])));
2039+
2040+
free_copy_partition_data(cpi);
2041+
alloc_copy_partition_data(cpi);
20192042
if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ)
20202043
vp9_cyclic_refresh_reset_resize(cpi);
20212044
rc->rc_1_frame = 0;
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/perl
2+
3+
use strict;
4+
use warnings;
5+
6+
my $remote_version = `wget --quiet https://data.iana.org/time-zones/tzdb/version --output-document -` =~ s/\n//r;
7+
my $local_version;
8+
9+
if ( open my $in, "<data/version" ) {
10+
$local_version = do { local $/; <$in> };
11+
close $in;
12+
}
13+
14+
my $up_to_date = defined($local_version) && $local_version eq $remote_version;
15+
16+
if ( ! $up_to_date ) {
17+
open my $out, ">data/version";
18+
print $out $remote_version;
19+
close $out;
20+
}
21+
22+
$local_version = $remote_version;
23+
24+
`wget --quiet --timestamping --directory-prefix=data https://data.iana.org/time-zones/tzdb-latest.tar.lz`;
25+
`tar --extract --file=data/tzdb-latest.tar.lz --directory=data`;
26+
`make DESTDIR=../ TZDIR=zones-$local_version --directory=data/tzdb-$local_version posix_only`;
27+
28+
print("Yay. Now you can run\n ./timezone-gen.pl --base=data/zones-$local_version --output=timezones-$local_version.conf.xml")
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
tzdb-*
2+
zones-*
3+
version
4+
tzdb-latest.tar.lz

scripts/perl/timezones/fix-tzstr.pl

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/perl
2+
3+
sub fixTzstr {
4+
# switch_time.c expects POSIX-style TZ rule, but it won't process quoted TZ
5+
# rules that look like this: <-04>4 or <-04>4<-03>
6+
# See https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03
7+
8+
# Instead it defaults to UTC for these values. Here we process the quoted
9+
# values and convert them into letters. If the zone name has "GMT", we use
10+
# that as the replacement prefix, otherwise a default "STD" is used. Zones
11+
# that have a quoted suffix have their suffix replaced with "DST".
12+
13+
my ($tzstr, $name) = @_;
14+
15+
if ( $tzstr =~ /(<(?<std>[^>]+)>)([^<]+)(?<dst><.+>)?(?<rest>.+)?/ ) {
16+
my ($tzprefix, $tzsuffix, $tzrest, $offset, $offsetprefix) = ("") x 5;
17+
18+
if ( defined($+{std}) ) {
19+
my $std = $+{std};
20+
21+
if ( lc($name) =~ m/gmt/) {
22+
$tzprefix = "GMT";
23+
} else {
24+
$tzprefix = "STD";
25+
}
26+
27+
if ( $std =~ m/\+/ ) {
28+
$offset = sprintf "%d", $std =~ s/\+//r;
29+
$offsetprefix = "-";
30+
} else {
31+
$offset = sprintf "%d", $std =~ s/\-//r;
32+
}
33+
34+
my @chars = split(//, $offset);
35+
if ( @chars > 2 ) {
36+
my $hours = $chars[-3];
37+
if ( defined( $chars[-4] ) ) {
38+
$hours = $chars[-4].$hours;
39+
}
40+
41+
$offset = $hours.":".$chars[-2].$chars[-1];
42+
}
43+
44+
$offset = $offsetprefix.$offset;
45+
}
46+
47+
if ( defined($+{dst}) ) {
48+
$tzsuffix = "DST";
49+
}
50+
51+
if ( defined($+{rest}) ) {
52+
$tzrest = $+{rest};
53+
}
54+
55+
return $tzprefix.$offset.$tzsuffix.$tzrest;
56+
}
57+
58+
return $tzstr;
59+
}
60+
61+
1;

0 commit comments

Comments
 (0)