mirror of https://github.com/asterisk/asterisk
master
24
23
20
22
releases/22
releases/23
releases/20
releases/24
releases/certified-22.8
certified/22.8
certified/18.9
certified/20.7
21
releases/21
releases/certified-20.7
releases/certified-18.9
18
releases/21-pre-reorder
releases/20-pre-reorder
releases/22.5
releases/20.15
releases/21.10
releases/18
releases/22.4
releases/21.9
releases/20.14
16
19
releases/19
releases/16
20.2
18.17
20.1
19.8
18.16
16.30
20.0
19.7
18.15
16.29
16.19
19.6
18.14
16.28
development/16/python3
development/16/geolocation
19.5
18.13
16.27
19.4
18.12
16.26
19.3
18.11
16.25
certified/16.8
19.2
18.10
16.24
certified/16.3
19.1
18.9
16.23
19.0
18.8
16.22
16.21
18.7
18.6
16.20
18.5
17.9
13.38
17
13
18.4
16.18
18.3
16.17
18.2
16.16
18.1
16.15
jenkinstest-16
18.0
17.8
16.14
13.37
17.7
16.13
13.36
certified/13.21
17.6
16.12
13.35
17.5
16.11
13.34
17.4
16.10
13.33
17.3
16.9
13.32
17.2
16.8
13.31
17.1
16.7
13.30
17.0
16.6
13.29
16.5
15.7
13.28
15
16.4
13.27
16.3
13.26
16.2
13.25
16.1
13.24
16.0
15.6
13.23
14.7
14
certified/13.18
certified/13.13
certified/11.6
11
certified/13.8
certified/13.1
1.8
certified/1.8.28
12
certified/1.8.15
certified/11.2
10-digiumphones
10
certified/1.8.11
certified/1.8.6
1.6.2
1.4
1.6.1
1.6.0
1.2
1.2-netsec
1.0
22.11.0
23.5.0
20.21.0
23.5.0-rc2
22.11.0-rc2
20.21.0-rc2
24.0.0-pre1
certified-22.8-cert4
23.5.0-rc1
22.11.0-rc1
20.21.0-rc1
23.4.1
22.10.1
21.12.3
20.20.1
certified-22.8-cert3
certified-20.7-cert11
23.4.0
22.10.0
20.20.0
23.4.0-rc1
22.10.0-rc1
20.20.0-rc1
certified-18.9-cert18
23.3.0
22.9.0
20.19.0
23.3.0-rc2
22.9.0-rc2
20.19.0-rc2
certified-22.8-cert2
certified-20.7-cert10
21.12.2
22.9.0-rc1
23.3.0-rc1
20.19.0-rc1
certified-22.8-cert1
certified-22.8-cert1-rc1
certified-22.8-cert1-pre1
23.2.2
21.12.1
22.8.2
20.18.2
certified-20.7-cert9
23.2.1
22.8.1
20.18.1
23.2.0
22.8.0
20.18.0
23.2.0-rc1
22.8.0-rc1
20.18.0-rc1
certified-20.7-cert8
22.7.0
21.12.0
23.1.0
20.17.0
23.1.0-rc2
22.7.0-rc2
21.12.0-rc2
20.17.0-rc2
22.7.0-rc1
23.1.0-rc1
21.12.0-rc1
20.17.0-rc1
23.0.0
22.6.0
21.11.0
20.16.0
21.11.0-rc2
23.0.0-rc2
22.6.0-rc2
20.16.0-rc2
20.15.0
20.15.0-rc1
20.15.0-rc2
20.15.0-rc3
20.15.1
20.15.2
20.16.0-rc1
21.10.0
21.10.0-rc1
21.10.0-rc2
21.10.0-rc3
21.10.1
21.10.2
21.11.0-rc1
22.5.0-rc1
22.5.0-rc2
22.5.0-rc3
22.5.0
22.5.1
22.5.2
22.6.0-rc1
23.0.0-rc1
18.26.4
certified-18.9-cert17
23.0.0-pre1
certified-20.7-cert7
certified-18.9-cert16
18.26.3
certified-20.7-cert6
certified-18.9-cert15
22.4.1
21.9.1
20.14.1
18.26.2
certified-20.7-cert5
certified-18.9-cert14
22.4.0
21.9.0
20.14.0
22.4.0-rc1
21.9.0-rc1
20.14.0-rc1
22.3.0
21.8.0
20.13.0
22.3.0-rc1
21.8.0-rc1
20.13.0-rc1
22.2.0
21.7.0
20.12.0
22.2.0-rc2
21.7.0-rc2
20.12.0-rc2
22.2.0-rc1
21.7.0-rc1
20.12.0-rc1
certified-20.7-cert4
certified-18.9-cert13
22.1.1
21.6.1
20.11.1
18.26.1
22.1.0
21.6.0
20.11.0
18.26.0
22.1.0-rc1
21.6.0-rc1
20.11.0-rc1
18.26.0-rc1
18.25.0
20.10.0
21.5.0
22.0.0
22.0.0-rc2
21.5.0-rc2
20.10.0-rc2
18.25.0-rc2
22.0.0-rc1
21.5.0-rc1
20.10.0-rc1
18.25.0-rc1
certified-20.7-cert3
certified-18.9-cert12
21.4.3
20.9.3
18.24.3
22.0.0-pre1
21.4.2
20.9.2
18.24.2
certified-20.7-cert2
certified-18.9-cert11
21.4.1
20.9.1
18.24.1
21.4.0
20.9.0
18.24.0
certified-20.7-cert1
certified-18.9-cert10
21.4.0-rc1
20.9.0-rc1
18.24.0-rc1
21.3.1
20.8.1
18.23.1
21.3.0
20.8.0
18.23.0
certified-20.7-cert1-rc2
certified-18.9-cert9
20.8.0-rc1
21.3.0-rc1
18.23.0-rc1
certified-20.7-cert1-rc1
certified-20.7-cert1-pre1
21.2.0
20.7.0
18.22.0
certified-18.9-cert8
21.2.0-rc2
20.7.0-rc2
18.22.0-rc2
21.2.0-rc1
20.7.0-rc1
18.22.0-rc1
certified-18.9-cert8-rc2
certified-18.9-cert8-rc1
21.1.0
20.6.0
18.21.0
21.1.0-rc2
20.6.0-rc2
18.21.0-rc2
21.1.0-rc1
20.6.0-rc1
18.21.0-rc1
21.0.2
20.5.2
18.20.2
certified-18.9-cert7
certified-18.9-cert6
21.0.1
20.5.1
18.20.1
21.0.0
20.5.0
18.20.0
21.0.0-rc1
20.5.0-rc1
18.20.0-rc1
21.0.0-pre1
18.19.0
20.4.0
20.4.0-rc2
18.19.0-rc2
20.4.0-rc1
18.19.0-rc1
20.3.1
certified-18.9-cert5
19.8.1
18.18.1
16.30.1
certified-18.9-cert4
20.3.0
18.18.0
20.3.0-rc1
18.18.0-rc1
20.2.1
18.17.1
20.2.0
18.17.0
20.2.0-rc1
18.17.0-rc1
certified/18.9-cert4
20.1.0
19.8.0
18.16.0
16.30.0
20.1.0-rc2
19.8.0-rc2
18.16.0-rc2
16.30.0-rc2
20.1.0-rc1
18.16.0-rc1
19.8.0-rc1
16.30.0-rc1
certified/18.9-cert3
20.0.1
19.7.1
18.15.1
16.29.1
19.7.0
20.0.0
18.15.0
16.29.0
certified/18.9-cert2
20.0.0-rc2
19.7.0-rc2
18.15.0-rc2
16.29.0-rc2
20.0.0-rc1
19.7.0-rc1
18.15.0-rc1
16.29.0-rc1
19.6.0
18.14.0
16.28.0
19.6.0-rc2
18.14.0-rc2
16.28.0-rc2
19.6.0-rc1
18.14.0-rc1
16.28.0-rc1
19.5.0
18.13.0
16.27.0
19.5.0-rc1
18.13.0-rc1
16.27.0-rc1
19.4.1
18.12.1
16.26.1
19.4.0
18.12.0
16.26.0
19.4.0-rc1
18.12.0-rc1
16.26.0-rc1
certified/18.9-cert1
19.3.3
18.11.3
16.25.3
certified/16.8-cert14
19.3.2
18.11.2
16.25.2
19.3.1
18.11.1
16.25.1
19.3.0
18.11.0
16.25.0
19.3.0-rc1
18.11.0-rc1
16.25.0-rc1
certified/16.8-cert13
19.2.1
18.10.1
16.24.1
19.2.0
18.10.0
16.24.0
19.2.0-rc1
18.10.0-rc1
16.24.0-rc1
certified/18.9-cert1-rc1
19.1.0
18.9.0
16.23.0
19.1.0-rc1
18.9.0-rc1
16.23.0-rc1
19.0.0
18.8.0
16.22.0
certified/16.8-cert12
19.0.0-rc1
18.8.0-rc1
16.22.0-rc1
16.21.1
18.7.1
18.7.0
16.21.0
18.7.0-rc3
16.21.0-rc3
18.7.0-rc2
16.21.0-rc2
18.7.0-rc1
16.21.0-rc1
certified/16.8-cert11
18.6.0
16.20.0
18.6.0-rc1
16.20.0-rc1
certified/16.8-cert10
18.5.1
17.9.4
16.19.1
13.38.3
18.5.0
16.19.0
certified/16.8-cert9
18.5.0-rc1
16.19.0-rc1
18.4.0
16.18.0
18.4.0-rc1
16.18.0-rc1
certified/16.8-cert8
18.3.0
16.17.0
18.3.0-rc2
16.17.0-rc2
18.3.0-rc1
16.17.0-rc1
certified/16.8-cert7
18.2.2
17.9.3
16.16.2
certified/16.8-cert6
18.2.1
17.9.2
16.16.1
13.38.2
18.2.0
16.16.0
18.2.0-rc1
16.16.0-rc1
18.1.1
17.9.1
16.15.1
13.38.1
18.1.0
17.9.0
16.15.0
13.38.0
18.1.0-rc1
17.9.0-rc1
16.15.0-rc1
13.38.0-rc1
18.0.1
17.8.1
16.14.1
certified/16.8-cert5
13.37.1
certified/16.8-cert4
certified/16.8-cert4-rc4
18.0.0
17.8.0
16.14.0
13.37.0
18.0.0-rc2
certified/16.8-cert4-rc3
18.0.0-rc1
17.8.0-rc1
16.14.0-rc1
13.37.0-rc1
17.7.0
16.13.0
13.36.0
17.7.0-rc2
16.13.0-rc2
13.36.0-rc2
17.7.0-rc1
16.13.0-rc1
13.36.0-rc1
certified/16.8-cert4-rc2
17.6.0
16.12.0
13.35.0
17.6.0-rc1
16.12.0-rc1
13.35.0-rc1
certified/16.8-cert4-rc1
certified/16.8-cert3
17.5.1
16.11.1
17.5.0
16.11.0
13.34.0
17.5.0-rc3
16.11.0-rc3
13.34.0-rc3
17.5.0-rc2
16.11.0-rc2
13.34.0-rc2
17.5.0-rc1
16.11.0-rc1
13.34.0-rc1
certified/16.8-cert2
17.4.0
16.10.0
13.33.0
certified/16.8-cert1
17.4.0-rc2
16.10.0-rc2
13.33.0-rc2
17.4.0-rc1
16.10.0-rc1
13.33.0-rc1
certified/16.8-cert1-rc5
certified/16.8-cert1-rc4
17.3.0
16.9.0
13.32.0
17.3.0-rc1
16.9.0-rc1
13.32.0-rc1
certified/16.8-cert1-rc3
certified/16.8-cert1-rc2
certified/16.8-cert1-rc1
17.2.0
16.8.0
13.31.0
17.2.0-rc2
16.8.0-rc2
13.31.0-rc2
17.2.0-rc1
16.8.0-rc1
13.31.0-rc1
certified/16.3-cert1
certified/13.21-cert6
17.1.0
16.7.0
13.30.0
17.1.0-rc2
16.7.0-rc2
13.30.0-rc2
17.1.0-rc1
16.7.0-rc1
13.30.0-rc1
certified/13.21-cert5
17.0.1
16.6.2
13.29.2
17.0.0
17.0.0-rc3
16.6.1
13.29.1
16.6.0
13.29.0
16.6.0-rc2
13.29.0-rc2
17.0.0-rc2
16.6.0-rc1
13.29.0-rc1
16.5.1
15.7.4
13.28.1
17.0.0-rc1
16.5.0
13.28.0
16.5.0-rc1
13.28.0-rc1
certified/13.21-cert4
16.4.1
15.7.3
13.27.1
16.4.0
13.27.0
16.4.0-rc1
13.27.0-rc1
16.3.0
13.26.0
16.3.0-rc1
13.26.0-rc1
16.2.1
15.7.2
16.2.0
13.25.0
13.25.0-rc3
16.2.0-rc2
13.25.0-rc2
16.2.0-rc1
13.25.0-rc1
16.1.1
15.7.1
13.24.1
16.1.0
13.24.0
15.7.0
16.1.0-rc1
15.7.0-rc1
13.24.0-rc1
16.0.1
15.6.2
16.0.0
16.0.0-rc3
certified/13.21-cert3
15.6.1
14.7.8
13.23.1
16.0.0-rc2
15.6.0
13.23.0
15.6.0-rc1
13.23.0-rc1
16.0.0-rc1
15.5.0
13.22.0
15.5.0-rc1
13.22.0-rc1
15.4.1
14.7.7
certified/13.21-cert2
certified/13.18-cert4
13.21.1
certified/13.21-cert1
certified/13.21-cert1-rc2
certified/13.21-cert1-rc1
15.4.0
13.21.0
15.4.0-rc2
15.4.0-rc1
13.21.0-rc1
15.3.0
13.20.0
15.3.0-rc2
13.20.0-rc2
15.3.0-rc1
13.20.0-rc1
15.2.2
certified/13.18-cert3
14.7.6
13.19.2
13.19.1
15.2.1
15.2.0
13.19.0
15.2.0-rc2
13.19.0-rc2
certified/13.18-cert2
15.1.5
14.7.5
13.18.5
certified/13.18-cert1
15.2.0-rc1
13.19.0-rc1
certified/13.18-cert1-rc3
certified/13.13-cert9
15.1.4
14.7.4
13.18.4
15.1.3
certified/13.13-cert8
14.7.3
13.18.3
certified/13.18-cert1-rc2
15.1.2
14.7.2
13.18.2
certified/13.18-cert1-rc1
certified/13.13-cert7
15.1.1
14.7.1
13.18.1
15.1.0
14.7.0
13.18.0
15.1.0-rc2
14.7.0-rc2
13.18.0-rc2
15.1.0-rc1
14.7.0-rc1
13.18.0-rc1
15.0.0
certified/13.13-cert6
certified/11.6-cert18
14.6.2
13.17.2
11.25.3
15.0.0-rc1
14.6.1
certified/13.13-cert5
13.17.1
certified/11.6-cert17
11.25.2
15.0.0-beta1
14.6.0
13.17.0
14.6.0-rc1
13.17.0-rc1
14.5.0
13.16.0
14.5.0-rc2
13.16.0-rc2
14.5.0-rc1
13.16.0-rc1
certified/13.13-cert4
14.4.1
13.15.1
14.4.0
13.15.0
14.4.0-rc3
13.15.0-rc3
14.3.1
13.14.1
certified/13.13-cert3
13.15.0-rc2
14.4.0-rc2
14.4.0-rc1
13.15.0-rc1
certified/13.13-cert2
14.3.0
13.14.0
certified/13.13-cert1
14.3.0-rc2
13.14.0-rc2
certified/13.13-cert1-rc4
14.3.0-rc1
13.14.0-rc1
certified/13.13-cert1-rc3
certified/13.13-cert1-rc2
certified/11.6-cert16
certified/13.8-cert4
14.2.1
13.13.1
11.25.1
certified/13.13-cert1-rc1
14.2.0
13.13.0
14.2.0-rc2
13.13.0-rc2
11.25.0
14.2.0-rc1
13.13.0-rc1
11.25.0-rc1
14.1.2
13.12.2
14.1.1
13.12.1
11.24.1
14.1.0
13.12.0
11.24.0
14.1.0-rc1
13.12.0-rc1
11.24.0-rc1
14.0.2
14.0.1
14.0.0
14.0.0-rc2
14.0.0-rc1
13.11.2
certified/11.6-cert15
certified/13.8-cert3
11.23.1
13.11.1
13.11.0
13.11.0-rc2
14.0.0-beta2
certified/11.6-cert14
certified/11.6-cert14-rc2
certified/13.8-cert2
certified/13.8-cert2-rc1
certified/11.6-cert14-rc1
13.11.0-rc1
14.0.0-beta1
11.23.0
13.10.0
certified/13.1-cert8
13.10.0-rc3
certified/13.8-cert1
13.10.0-rc2
11.23.0-rc1
13.10.0-rc1
certified/13.8-cert1-rc3
13.9.1
13.9.0
certified/13.8-cert1-rc2
13.9.0-rc2
certified/13.1-cert7
13.9.0-rc1
certified/13.1-cert6
13.8.2
13.8.1
certified/13.1-cert5
certified/13.8-cert1-rc1
13.8.0
11.22.0
certified/13.1-cert4
certified/11.6-cert13
11.21.2
13.7.2
11.20.0
13.6.0
13.5.0
11.19.0
certified/13.1-cert3-rc1
13.4.0
11.18.0
0.1.0
0.1.1
0.1.10
0.1.11
0.1.12
0.1.2
0.1.3
0.1.4
0.1.5
0.1.6
0.1.7
0.1.8
0.1.9
0.2.0
0.3.0
0.4.0
0.5.0
0.7.0
0.7.1
0.7.2
0.9.0
1.0.0
1.0.0-rc1
1.0.0-rc2
1.0.1
1.0.10
1.0.11
1.0.11.1
1.0.12
1.0.2
1.0.4
1.0.5
1.0.6
1.0.7
1.0.8
1.0.9
1.2.0
1.2.0-beta1
1.2.0-beta2
1.2.0-rc1
1.2.0-rc2
1.2.1
1.2.10
1.2.10-netsec
1.2.11
1.2.11-netsec
1.2.12
1.2.12-netsec
1.2.12.1
1.2.12.1-netsec
1.2.13
1.2.13-netsec
1.2.14
1.2.14-netsec
1.2.15
1.2.15-netsec
1.2.16
1.2.16-netsec
1.2.17
1.2.17-netsec
1.2.18
1.2.18-netsec
1.2.19
1.2.19-netsec
1.2.2
1.2.2-netsec
1.2.20
1.2.20-netsec
1.2.21
1.2.21-netsec
1.2.21.1
1.2.21.1-netsec
1.2.22
1.2.22-netsec
1.2.23
1.2.23-netsec
1.2.24
1.2.24-netsec
1.2.25
1.2.25-netsec
1.2.26
1.2.26-netsec
1.2.26.1
1.2.26.1-netsec
1.2.26.2
1.2.26.2-netsec
1.2.27
1.2.28
1.2.28.1
1.2.29
1.2.3
1.2.3-netsec
1.2.30
1.2.30.1
1.2.30.2
1.2.30.3
1.2.30.4
1.2.31
1.2.31.1
1.2.31.2
1.2.32
1.2.33
1.2.34
1.2.35
1.2.36
1.2.37
1.2.38
1.2.39
1.2.4
1.2.4-netsec
1.2.40
1.2.5
1.2.5-netsec
1.2.6
1.2.6-netsec
1.2.7
1.2.7-netsec
1.2.7.1
1.2.7.1-netsec
1.2.8
1.2.8-netsec
1.2.9
1.2.9-netsec
1.2.9.1
1.2.9.1-netsec
1.4.0
1.4.0-beta1
1.4.0-beta2
1.4.0-beta3
1.4.0-beta4
1.4.1
1.4.10
1.4.10.1
1.4.11
1.4.12
1.4.12.1
1.4.13
1.4.14
1.4.15
1.4.16
1.4.16.1
1.4.16.2
1.4.17
1.4.18
1.4.18.1
1.4.19
1.4.19-rc1
1.4.19-rc2
1.4.19-rc3
1.4.19-rc4
1.4.19.1
1.4.19.2
1.4.2
1.4.20
1.4.20-rc1
1.4.20-rc2
1.4.20-rc3
1.4.20.1
1.4.21
1.4.21-rc1
1.4.21-rc2
1.4.21.1
1.4.21.2
1.4.22
1.4.22-rc1
1.4.22-rc2
1.4.22-rc3
1.4.22-rc4
1.4.22-rc5
1.4.22.1
1.4.22.2
1.4.23
1.4.23-rc1
1.4.23-rc2
1.4.23-rc3
1.4.23-rc4
1.4.23-testing
1.4.23.1
1.4.23.2
1.4.24
1.4.24-rc1
1.4.24.1
1.4.25
1.4.25-rc1
1.4.25.1
1.4.26
1.4.26-rc1
1.4.26-rc2
1.4.26-rc3
1.4.26-rc4
1.4.26-rc5
1.4.26-rc6
1.4.26.1
1.4.26.2
1.4.26.3
1.4.27
1.4.27-rc1
1.4.27-rc2
1.4.27-rc3
1.4.27-rc4
1.4.27-rc5
1.4.27.1
1.4.28
1.4.28-rc1
1.4.29
1.4.29-rc1
1.4.29.1
1.4.3
1.4.30
1.4.30-rc1
1.4.30-rc2
1.4.30-rc3
1.4.31
1.4.31-rc1
1.4.31-rc2
1.4.32
1.4.32-rc1
1.4.32-rc2
1.4.33
1.4.33-rc1
1.4.33-rc2
1.4.33.1
1.4.34
1.4.34-rc1
1.4.34-rc2
1.4.35
1.4.35-rc1
1.4.36
1.4.36-rc1
1.4.37
1.4.37-rc1
1.4.37.1
1.4.38
1.4.38-rc1
1.4.38.1
1.4.39
1.4.39-rc1
1.4.39.1
1.4.39.2
1.4.4
1.4.40
1.4.40-rc1
1.4.40-rc2
1.4.40-rc3
1.4.40.1
1.4.40.2
1.4.41
1.4.41-rc1
1.4.41.1
1.4.41.2
1.4.42
1.4.42-rc1
1.4.42-rc2
1.4.43
1.4.44
1.4.5
1.4.6
1.4.7
1.4.7.1
1.4.8
1.4.9
1.6.0
1.6.0-beta1
1.6.0-beta2
1.6.0-beta3
1.6.0-beta4
1.6.0-beta5
1.6.0-beta6
1.6.0-beta7
1.6.0-beta7.1
1.6.0-beta8
1.6.0-beta9
1.6.0-rc1
1.6.0-rc2
1.6.0-rc3
1.6.0-rc4
1.6.0-rc5
1.6.0-rc6
1.6.0.1
1.6.0.10
1.6.0.11-rc1
1.6.0.11-rc2
1.6.0.12
1.6.0.13
1.6.0.13-rc1
1.6.0.14
1.6.0.14-rc1
1.6.0.15
1.6.0.16
1.6.0.16-rc1
1.6.0.16-rc2
1.6.0.17
1.6.0.18
1.6.0.18-rc1
1.6.0.18-rc2
1.6.0.18-rc3
1.6.0.19
1.6.0.2
1.6.0.20
1.6.0.20-rc1
1.6.0.21
1.6.0.21-rc1
1.6.0.22
1.6.0.23
1.6.0.23-rc1
1.6.0.23-rc2
1.6.0.24
1.6.0.25
1.6.0.26
1.6.0.26-rc1
1.6.0.27
1.6.0.27-rc1
1.6.0.27-rc2
1.6.0.27-rc3
1.6.0.28
1.6.0.28-rc1
1.6.0.28-rc2
1.6.0.3
1.6.0.3-rc1
1.6.0.3.1
1.6.0.4-rc1
1.6.0.4-testing
1.6.0.5
1.6.0.6
1.6.0.6-rc1
1.6.0.7
1.6.0.7-rc1
1.6.0.7-rc2
1.6.0.8
1.6.0.9
1.6.1-beta1
1.6.1-beta2
1.6.1-beta3
1.6.1-beta4
1.6.1-rc1
1.6.1.0
1.6.1.0-rc2
1.6.1.0-rc3
1.6.1.0-rc4
1.6.1.0-rc5
1.6.1.1
1.6.1.10
1.6.1.10-rc1
1.6.1.10-rc2
1.6.1.10-rc3
1.6.1.11
1.6.1.12
1.6.1.12-rc1
1.6.1.13
1.6.1.13-rc1
1.6.1.14
1.6.1.15-rc1
1.6.1.15-rc2
1.6.1.16
1.6.1.17
1.6.1.18
1.6.1.18-rc1
1.6.1.18-rc2
1.6.1.19
1.6.1.19-rc1
1.6.1.19-rc2
1.6.1.19-rc3
1.6.1.2
1.6.1.20
1.6.1.20-rc1
1.6.1.20-rc2
1.6.1.21
1.6.1.22
1.6.1.23
1.6.1.24
1.6.1.25
1.6.1.3-rc1
1.6.1.4
1.6.1.5
1.6.1.5-rc1
1.6.1.6
1.6.1.7-rc1
1.6.1.7-rc2
1.6.1.8
1.6.1.9
1.6.2.0
1.6.2.0-beta1
1.6.2.0-beta2
1.6.2.0-beta3
1.6.2.0-beta4
1.6.2.0-rc1
1.6.2.0-rc2
1.6.2.0-rc3
1.6.2.0-rc4
1.6.2.0-rc5
1.6.2.0-rc6
1.6.2.0-rc7
1.6.2.0-rc8
1.6.2.1
1.6.2.1-rc1
1.6.2.10
1.6.2.10-rc1
1.6.2.10-rc2
1.6.2.11
1.6.2.11-rc1
1.6.2.11-rc2
1.6.2.12
1.6.2.12-rc1
1.6.2.13
1.6.2.14
1.6.2.14-rc1
1.6.2.15
1.6.2.15-rc1
1.6.2.15.1
1.6.2.16
1.6.2.16-rc1
1.6.2.16.1
1.6.2.16.2
1.6.2.17
1.6.2.17-rc1
1.6.2.17-rc2
1.6.2.17-rc3
1.6.2.17.1
1.6.2.17.2
1.6.2.17.3
1.6.2.18
1.6.2.18-rc1
1.6.2.18.1
1.6.2.18.2
1.6.2.19
1.6.2.19-rc1
1.6.2.2
1.6.2.20
1.6.2.21
1.6.2.22
1.6.2.23
1.6.2.24
1.6.2.3-rc1
1.6.2.3-rc2
1.6.2.4
1.6.2.5
1.6.2.6
1.6.2.6-rc1
1.6.2.6-rc2
1.6.2.7
1.6.2.7-rc1
1.6.2.7-rc2
1.6.2.7-rc3
1.6.2.8
1.6.2.8-rc1
1.6.2.8-rc2
1.6.2.9
1.6.2.9-rc1
1.6.2.9-rc2
1.6.2.9-rc3
1.8.0
1.8.0-beta1
1.8.0-beta2
1.8.0-beta3
1.8.0-beta4
1.8.0-beta5
1.8.0-rc1
1.8.0-rc2
1.8.0-rc3
1.8.0-rc4
1.8.0-rc5
1.8.1
1.8.1-rc1
1.8.1.1
1.8.1.2
1.8.10.0
1.8.10.0-rc1
1.8.10.0-rc2
1.8.10.0-rc3
1.8.10.0-rc4
1.8.10.1
1.8.11.0
1.8.11.0-rc1
1.8.11.0-rc2
1.8.11.0-rc3
1.8.11.1
1.8.12.0
1.8.12.0-rc1
1.8.12.0-rc2
1.8.12.0-rc3
1.8.12.1
1.8.12.2
1.8.13.0
1.8.13.0-rc1
1.8.13.0-rc2
1.8.13.1
1.8.14.0
1.8.14.0-rc1
1.8.14.0-rc2
1.8.14.1
1.8.15-cert4
1.8.15.0
1.8.15.0-rc1
1.8.15.1
1.8.16.0
1.8.16.0-rc1
1.8.16.0-rc2
1.8.17.0
1.8.17.0-rc1
1.8.17.0-rc2
1.8.17.0-rc3
1.8.18.0
1.8.18.0-rc1
1.8.18.1
1.8.19.0
1.8.19.0-rc1
1.8.19.0-rc2
1.8.19.0-rc3
1.8.19.0-tc1
1.8.19.1
1.8.2
1.8.2-rc1
1.8.2.1
1.8.2.2
1.8.2.3
1.8.2.4
1.8.20.0
1.8.20.0-rc1
1.8.20.0-rc2
1.8.20.1
1.8.20.2
1.8.21.0
1.8.21.0-rc1
1.8.21.0-rc2
1.8.22.0
1.8.22.0-rc1
1.8.22.0-rc2
1.8.23.0
1.8.23.0-rc1
1.8.23.0-rc2
1.8.23.1
1.8.24.0
1.8.24.0-rc1
1.8.24.0-rc2
1.8.24.1
1.8.25.0
1.8.25.0-rc1
1.8.25.0-rc2
1.8.26.0
1.8.26.0-rc1
1.8.26.0-rc2
1.8.26.1
1.8.27.0
1.8.27.0-rc1
1.8.27.0-rc2
1.8.28-cert5
1.8.28.0
1.8.28.0-rc1
1.8.28.1
1.8.28.2
1.8.29.0
1.8.29.0-rc1
1.8.3
1.8.3-rc1
1.8.3-rc2
1.8.3-rc3
1.8.3.1
1.8.3.2
1.8.3.3
1.8.30.0
1.8.30.0-rc1
1.8.31.0
1.8.31.0-rc1
1.8.31.1
1.8.32.0
1.8.32.0-rc1
1.8.32.0-rc2
1.8.32.1
1.8.32.2
1.8.32.3
1.8.4
1.8.4-rc1
1.8.4-rc2
1.8.4-rc3
1.8.4.1
1.8.4.2
1.8.4.3
1.8.4.4
1.8.5-rc1
1.8.5.0
1.8.5.1
1.8.6.0
1.8.6.0-rc1
1.8.6.0-rc2
1.8.6.0-rc3
1.8.7.0
1.8.7.0-rc1
1.8.7.0-rc2
1.8.7.1
1.8.7.2
1.8.8.0
1.8.8.0-rc1
1.8.8.0-rc2
1.8.8.0-rc3
1.8.8.0-rc4
1.8.8.0-rc5
1.8.8.1
1.8.8.2
1.8.9.0
1.8.9.0-rc1
1.8.9.0-rc2
1.8.9.0-rc3
1.8.9.1
1.8.9.2
1.8.9.3
10.0.0
10.0.0-beta1
10.0.0-beta2
10.0.0-rc1
10.0.0-rc2
10.0.0-rc3
10.0.0-rc4
10.0.1
10.1.0
10.1.0-rc1
10.1.0-rc2
10.1.1
10.1.2
10.1.3
10.10.0
10.10.0-digiumphones
10.10.0-digiumphones-rc1
10.10.0-digiumphones-rc2
10.10.0-rc1
10.10.0-rc2
10.10.1
10.10.1-digiumphones
10.11.0
10.11.0-digiumphones
10.11.0-digiumphones-rc1
10.11.0-digiumphones-rc2
10.11.0-digiumphones-rc3
10.11.0-rc1
10.11.0-rc2
10.11.0-rc3
10.11.1
10.11.1-digiumphones
10.12.0
10.12.0-digiumphones
10.12.0-digiumphones-rc1
10.12.0-digiumphones-rc2
10.12.0-rc1
10.12.0-rc2
10.12.1
10.12.1-digiumphones
10.12.2
10.12.2-digiumphones
10.12.3
10.12.3-digiumphones
10.12.4
10.12.4-digiumphones
10.2.0
10.2.0-rc1
10.2.0-rc2
10.2.0-rc3
10.2.0-rc4
10.2.1
10.3.0
10.3.0-rc1
10.3.0-rc2
10.3.0-rc3
10.3.1
10.4.0
10.4.0-digiumphones-rc1
10.4.0-digiumphones-rc2
10.4.0-rc1
10.4.0-rc2
10.4.0-rc3
10.4.1
10.4.2
10.5.0
10.5.0-digiumphones
10.5.0-digiumphones-rc1
10.5.0-digiumphones-rc2
10.5.0-rc1
10.5.0-rc2
10.5.1
10.5.1-digiumphones
10.5.2
10.5.2-digiumphones
10.6.0
10.6.0-digiumphones
10.6.0-digiumphones-rc1
10.6.0-digiumphones-rc2
10.6.0-rc1
10.6.0-rc2
10.6.1
10.6.1-digiumphones
10.7.0
10.7.0-digiumphones
10.7.0-digiumphones-rc1
10.7.0-rc1
10.7.1
10.7.1-digiumphones
10.8.0
10.8.0-digiumphones
10.8.0-digiumphones-rc1
10.8.0-digiumphones-rc2
10.8.0-rc1
10.8.0-rc2
10.9.0
10.9.0-digiumphones
10.9.0-digiumphones-rc1
10.9.0-digiumphones-rc2
10.9.0-digiumphones-rc3
10.9.0-rc1
10.9.0-rc2
10.9.0-rc3
11.0.0
11.0.0-beta1
11.0.0-beta2
11.0.0-rc1
11.0.0-rc2
11.0.1
11.0.2
11.1.0
11.1.0-rc1
11.1.0-rc2
11.1.0-rc3
11.1.1
11.1.2
11.10.0
11.10.0-rc1
11.10.1
11.10.2
11.11.0
11.11.0-rc1
11.12.0
11.12.0-rc1
11.12.1
11.13.0
11.13.0-rc1
11.13.1
11.14.0
11.14.0-rc1
11.14.0-rc2
11.14.1
11.14.2
11.15.0
11.15.0-rc1
11.15.0-rc2
11.15.1
11.16.0
11.16.0-rc1
11.17.0
11.17.0-rc1
11.17.1
11.18.0-rc1
11.19.0-rc1
11.2.0
11.2.0-rc1
11.2.0-rc2
11.2.1
11.2.2
11.20.0-rc1
11.20.0-rc2
11.20.0-rc3
11.21.0
11.21.0-rc1
11.21.0-rc2
11.21.0-rc3
11.21.1
11.22.0-rc1
11.3.0
11.3.0-rc1
11.3.0-rc2
11.4.0
11.4.0-rc1
11.4.0-rc2
11.4.0-rc3
11.5.0
11.5.0-rc1
11.5.0-rc2
11.5.1
11.6-cert11
11.6.0
11.6.0-rc1
11.6.0-rc2
11.6.1
11.7.0
11.7.0-rc1
11.7.0-rc2
11.8.0
11.8.0-rc1
11.8.0-rc2
11.8.0-rc3
11.8.1
11.9.0
11.9.0-rc1
11.9.0-rc2
11.9.0-rc3
12.0.0
12.0.0-alpha1
12.0.0-alpha2
12.0.0-beta1
12.0.0-beta2
12.1.0
12.1.0-rc1
12.1.0-rc2
12.1.0-rc3
12.1.1
12.2.0
12.2.0-rc1
12.2.0-rc2
12.2.0-rc3
12.3.0
12.3.0-rc1
12.3.0-rc2
12.3.1
12.3.2
12.4.0
12.4.0-rc1
12.5.0
12.5.0-rc1
12.5.1
12.6.0
12.6.0-rc1
12.6.1
12.7.0
12.7.0-rc1
12.7.0-rc2
12.7.1
12.7.2
12.8.0
12.8.0-rc1
12.8.0-rc2
12.8.1
12.8.2
13.0.0
13.0.0-beta1
13.0.0-beta2
13.0.0-beta3
13.0.1
13.0.2
13.1-cert2
13.1.0
13.1.0-rc1
13.1.0-rc2
13.1.1
13.2.0
13.2.0-rc1
13.2.1
13.3.0
13.3.0-rc1
13.3.1
13.3.2
13.4.0-rc1
13.5.0-rc1
13.6.0-rc1
13.6.0-rc2
13.6.0-rc3
13.7.0
13.7.0-rc1
13.7.0-rc2
13.7.0-rc3
13.7.1
13.8.0-rc1
certified/1.8.11-cert1
certified/1.8.11-cert10
certified/1.8.11-cert2
certified/1.8.11-cert3-rc1
certified/1.8.11-cert3-rc2
certified/1.8.11-cert4
certified/1.8.11-cert5
certified/1.8.11-cert5-rc1
certified/1.8.11-cert5-rc2
certified/1.8.11-cert6
certified/1.8.11-cert7
certified/1.8.11-cert8
certified/1.8.11-cert9
certified/1.8.11-cert9-rc1
certified/1.8.15-cert1
certified/1.8.15-cert1-rc1
certified/1.8.15-cert1-rc2
certified/1.8.15-cert1-rc3
certified/1.8.15-cert2
certified/1.8.15-cert3
certified/1.8.15-cert4
certified/1.8.15-cert5
certified/1.8.15-cert6
certified/1.8.15-cert7
certified/1.8.28-cert1
certified/1.8.28-cert1-rc1
certified/1.8.28-cert2
certified/1.8.28-cert3
certified/1.8.28-cert4
certified/1.8.28-cert5
certified/1.8.6-cert1
certified/11.2-cert1
certified/11.2-cert1-rc1
certified/11.2-cert1-rc2
certified/11.2-cert2
certified/11.2-cert3
certified/11.6-cert1
certified/11.6-cert1-rc1
certified/11.6-cert1-rc2
certified/11.6-cert10
certified/11.6-cert11
certified/11.6-cert12
certified/11.6-cert2
certified/11.6-cert3
certified/11.6-cert4
certified/11.6-cert5
certified/11.6-cert6
certified/11.6-cert7
certified/11.6-cert8
certified/11.6-cert9
certified/13.1-cert1
certified/13.1-cert1-rc1
certified/13.1-cert1-rc2
certified/13.1-cert1-rc3
certified/13.1-cert2
certified/13.1-cert3
${ noResults }
34417 Commits (e9f33451deae9543172bd99b958643c8a170bbf2)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
e9f33451de |
res_pjsip: Don't allow a leading period when wildcard matching
The reference identifier (what the client provides - in this case a hostname) must start with a domain label, not a `.`. The current implementation will match `.seanbright.com` against `*.seanbright.com` which is incorrect. |
3 months ago |
|
|
0aa6b2c0c4 |
Ensure channel locks aren't held while calling ast_set_variables.
If the channel is locked when calling ast_set_variables and any of the variables contained dialplan functions, there's a possiblilty of a deadlock. To prevent this, either the explicit locks were removed or the call to ast_set_variables moved out of the lock scope. A warning to not hold channel locks is also added to the documentation for ast_set_variables. Resolves: #1936 |
3 months ago |
|
|
4d3d5964fd |
app_queue: fix double increment of member->calls with shared_lastcall
Under high concurrency, update_queue() may be invoked multiple times for the same call, causing member->calls and queue-level counters to be incremented more than once. The existing starttime check is not atomic and allows concurrent execution paths to pass. Treat member->starttime as a single-use token and consume it via CAS to ensure the call is counted exactly once. This also prevents incorrect call distribution when using strategies such as fewestcalls. Observed as a regression after upgrading to 20.17. Resolves: #1736 |
3 months ago |
|
|
94baea6d86 |
chan_dahdi: Fix set but not used in mfcr2_show_links_of().
When openr2 is installed mfcr2_show_links_of() is no longer ifdeffed out which makes gcc-16 complain with 'variable ‘x’ set but not used'. Resolves: #1947 |
3 months ago |
|
|
dfda95831e |
tests: add tests/test_codec_translations.c
This tests checks [slin -> codec -> slin] and then compares slin in vs out regarding signal noise ratio and delay. Near-lossless codecs (ulaw, alaw) are checked with a maximum per-sample error bound. Lossy codecs are checked with a per-codec SNR threshold. Cross-correlation alignment compensates for algorithmic delay in codecs like speex and opus. Covered codecs: ulaw, alaw, adpcm, g726, g726aal2, gsm, speex, speex16, speex32, ilbc, codec2, lpc10, g722, opus. Resolves: #1812 |
3 months ago |
|
|
1511d4d8d3 |
install_prereq: Add a 'minimal' mode for basic build dependencies
|
3 months ago |
|
|
1233b201dd |
chan_websocket: Handle incoming CONTINUATION frames.
chan_websocket now tells res_http_websocket to accumulate incoming CONTINUATION frames into 1024 byte TEXT or BINARY frames. Resolves: #1941 |
3 months ago |
|
|
65fdf73732 |
res_rtp_asterisk: Fix incorrect reference in ast_rtp_get_stat().
``` AST_RTP_STAT_SET(AST_RTP_INSTANCE_STAT_LOCAL_STDEVMES, \ AST_RTP_INSTANCE_STAT_COMBINED_MES, stats->local_stdevmes, \ rtp->rtcp->stdev_rxjitter); ``` Should have been ``` AST_RTP_STAT_SET(AST_RTP_INSTANCE_STAT_LOCAL_STDEVMES, \ AST_RTP_INSTANCE_STAT_COMBINED_MES, stats->local_stdevmes, \ rtp->rtcp->stdev_rxmes); ``` Note the last macro parameter name. Resolves: #1938 |
3 months ago |
|
|
ed375a6a0c |
jansson: Upgrade version to jansson 2.15.0
UpgradeNote: jansson has been upgraded to 2.15.0. For more information visit jansson Github page: https://github.com/akheron/jansson/releases/tag/v2.15.0 Resolves: #1931 |
3 months ago |
|
|
2fedb5d195 |
channel.c: Move setting RTP stats from ast_softhangup to ast_ari_channels_hangup.
The original trigger for setting the RTP stats in ast_softhangup() came from an ARI issue where stats weren't being set in time to be reported on STASIS_END events. The thought was that setting them in a common place like ast_softhangup() would ensure the stats were set in possibly other scenarios. Unfortunately, setting the RTP stats variables in ast_softhangup() broke ABI as it required that no channel locks be held which was not the case earlier. Given that the original issue was ARI, we can move setting the stats to ast_ari_channels_hangup() in resource_channels just before it calls ast_softhangup(). This might not catch all cases of the stats not being set, but it won't break ABI or deadlock either. Resolves: #1928 |
3 months ago |
|
|
deb8a51a26 |
res_rtp_asterisk: Add option to control stun host resolution when TTL = 0
If a hostname is specified for stunaddr in rtp.conf, periodic DNS resolution is enabled based on the TTL returned in the DNS results. If the TTL returned is 0, it means that the next time the IP address is needed, it must be looked up again. I.E. Don't cache. Historically (and incorrectly) however, res_rtp_asterisk stopped the periodic resolution and never re-resolved the hostname again. Besides what's mentioned in the user notes... * Additional debugging was added in various STUN/DNS functions. * The `rtp show settings` CLI command shows more detailed STUN info. * Some debugging was added to dns_core.c and dns_recurring.c. UserNote: A new `stunaddr_reresolve_ttl_0` parameter has been added to rtp.conf that allows control over what happens when a STUN server hostname lookup returns a TTL of 0. The values can be set as follows: - 'no': This is the historical (and current default) behavior of not doing any further lookups and continuing to use the last successful result until Asterisk is restarted or rtp.conf is reloaded. - 'yes': Use the last cached result for the current call but trigger re-resolution in the background for the benefit of future calls. If the result of the background lookup is a ttl > 0, periodic resolution will be restarted otherwise the next call will use the new cached value and will trigger a background lookup again. UserNote: A new CLI command `rtp resolve stun hostname` has been added that will force a resolution of the STUN hostname and (re)start periodic resolution if the result has a TTL > 0. Resolves: #1858 |
3 months ago |
|
|
2eddf5b868 |
pjsip_configuration: Show actual dtls_verify config.
Rather than merely showing dtls_verify : Yes/No in pjsip show endpoint xxx it will now be shown what exactly is being checked, ie, one of: dtls_verify : No dtls_verify : Fingerprint dtls_verify : Certificate dtls_verify : Yes Where Yes implies both Fingerprint and Certificate. Signed-off-by: Jaco Kroon <jaco@uls.co.za> |
4 months ago |
|
|
479808a020 |
app_dial: Properly handle callee hangup while sending digits.
If we are sending digits (either DTMF, MF, or SF) to the called channel after receiving progress or a wink, and the callee hangs up before we have finished sending it digits, there are several problems that can ensue: * If the callee hung up without answering, the calling channel would hang up and not continue in the dialplan. * If the callee *did* answer before hanging up, the answer was never passed through to the caller, since this gets "eaten" by the various digit streaming functions and is never processed by app_dial. This is generally an edge case that occurs due to some kind of signaling failure, but to better handle this: * Set to_answer to 0 to prevent hangup on the exit path, just like other parts of wait_for_answer. * Better document this usage of to_answer. * If the channel did answer while it was receiving digits, manually answer the calling channel before we abort. The call would not continue in the dialplan anyways (either before or after this fix), but technically the call was answered, so the CDRs should probably reflect that, and this mirrors the behavior of calls which normally do not continue. Resolves: #1915 UserNote: If a called channel sends progress or wink and the caller begins sending digits but the callee answers and then hangs up before digit sending can finish, the call is now answered before being disconnected. If the callee hangs up without answering, the call now continues in the dialplan. |
4 months ago |
|
|
d7350fa2e0 |
res_pjsip_messaging: Update To URI only if it is a SIP(S) URI
When a message is sent via ARI, the ARI endpoint only provides a To field which is also used as destination field. This means that the To field might not necessarily contain a SIP URI but might instead specify an Asterisk endpoint (in MessageDestinationInfo format). This led to many warnings even though the message was sent correctly. The fix is to only call `ast_sip_update_to_uri` if the To field starts with the sip: or sips: scheme. Resolves: #1357 |
4 months ago |
|
|
7db199aeac |
Upgrade bundled pjproject to 2.17.
Resolves: #1888 UserNote: Bundled pjproject has been upgraded to 2.17. For more information about what is included in this release, see the pjproject Github page: https://github.com/pjsip/pjproject/releases/tag/2.17 |
4 months ago |
|
|
e497c60bb3 |
res_stir_shaken: fix memory free crash when Asterisk is built with malloc_debug
crypto_utils uses ast_asprintf to allocate the search string when checking the certificate subject, but was not using ast_free to free it. This caused a crash when Asterisk was built with malloc_debug Resolves: #1921 |
4 months ago |
|
|
7c85f7dd9e |
manager: Eliminate unnecessary code, simplify sessions in stasis callbacks
Due to stasis filtering the stasis callback for AMI type messages is guaranteed to only receive messages that can be turned into AMI events, so remove the check done in the callback. The sessions container usage for the stasis callbacks has also been simplified by having a reference on the message router subscription instead of having to acquire the sessions from the global object each time. |
4 months ago |
|
|
9188be8bc0 |
res_stasis/resource_bridges: Split bridge playback control and wrapper cleanup
Modified the bridge playback teardown so the worker thread removes only the playback control, while the after-bridge callback removes the playback wrapper once the announcer has actually left the bridge. This avoids a stale window where a new playback request could create a replacement announcer before the old announcer had fully exited the holding bridge. Also replaced the flexible trailing bridge_id storage in the shared worker thread data with an optional bridge_id pointer, since recording paths use the same structure without a bridge id. Fixes: #1861 |
4 months ago |
|
|
58a128b147 |
res_pjsip_outbound_publish.c: Add more verbose documentation for outbound_proxy usage
|
4 months ago |
|
|
6e23ff15ef |
channel.c: Don't lock the channel in ast_softhangup while setting rtp instance vars
ast_softhangup() was locking the channel before calling ast_rtp_instance_set_stats_vars() which, if the channel was in a bridge, then locked the bridge peer channel. If another thread attempted to set bridge variables on the peer, it would lock that channel first, then this channel causing a lock inversion. ast_softhangup() now holds the channel lock while retrieving the rtp instance, then unlocks it before calling ast_rtp_instance_set_stats_vars(), then locks it again after it returns. Resolves: #1907 |
4 months ago |
|
|
fe454fe207 |
chan_pjsip: Fix deadlock when endpoint set_var uses PJSIP_HEADER
When a PJSIP endpoint is configured with set_var invoking a dialplan function (e.g. PJSIP_HEADER(add,...)), chan_pjsip_new() calls pbx_builtin_setvar_helper() while holding the channel lock. For function-style variables, this dispatches to ast_func_write() which, in the case of PJSIP_HEADER, calls ast_sip_push_task_wait_serializer() -- blocking synchronously while the channel lock is held. If a concurrent operation (ARI, AMI, rtp_check_timeout) traverses the channels container via ast_channel_get_by_name(), it acquires the container lock then tries to lock individual channels in the iteration callback (by_uniqueid_cb/by_name_cb). When the serializer thread also needs the container lock, a circular dependency forms: channel_lock -> serializer_wait -> container_lock -> channel_lock This causes a complete Asterisk freeze. In the observed case, 36 threads were blocked on the container lock until res_freeze_check triggered SIGABRT after its 30-second timeout. Unlock the channel before iterating endpoint channel_vars so that dialplan functions can block without holding the channel lock. Re-lock the channel for ast_channel_stage_snapshot_done() so the batched snapshot is published under lock and captures the full channel state including the variables set during the loop. Fixes: #1872 |
4 months ago |
|
|
8e221dfd03 |
res_pjsip: Add per-endpoint RTP port range configuration
Add rtp_port_start and rtp_port_end options to PJSIP endpoint configuration, allowing each endpoint to use a dedicated RTP port range instead of the global rtp.conf setting. This is useful for scenarios where different endpoints need isolated port ranges, such as firewall rules per trunk, multi-tenant systems, or network QoS policies tied to port ranges. The implementation adds ast_rtp_instance_new_with_port_range() to the RTP engine API, which sets the port range on the instance before the engine allocates the transport. The default RTP engine (res_rtp_asterisk) checks for per-instance overrides in rtp_allocate_transport() and falls back to the global range when none is set. Both options must be set together, with values >= 1024 and rtp_port_end > rtp_port_start. Setting both to 0 (the default) preserves existing behavior. Resolves: https://github.com/asterisk/asterisk-feature-requests/issues/71 UserNote: PJSIP endpoints now support rtp_port_start and rtp_port_end options to configure a dedicated RTP port range per endpoint, overriding the global rtp.conf setting. UpgradeNote: An alembic database migration has been added to add the rtp_port_start and rtp_port_end columns to the ps_endpoints table. Run "alembic upgrade head" to apply the schema change. DeveloperNote: New public API: ast_rtp_instance_new_with_port_range() creates an RTP instance with a per-instance port range. ast_rtp_instance_get_port_start() and ast_rtp_instance_get_port_end() allow RTP engines to query the override. Third-party RTP engines can use these getters to support per-instance port ranges. |
4 months ago |
|
|
47c56d2b48 |
app_queue: Fix raise_respect_min lost in copy_rules() breaking rN queue rules
app_queue: Fix raise_respect_min not copied in copy_rules() causing rN rules to be ignored. `copy_rules()` never copied `raise_respect_min` into the per-call rule list, so the flag was always 0 when a timed penaltychange rule fired, making `rN` behave like plain `N` and raising members below `min_penalty` that should have been excluded. Also fixes `update_qe_rule()` not propagating the flag from `qe->pr` to `qe`, and dropping the `r` prefix when saving back to `QUEUE_RAISE_PENALTY`. Resolves: #1901 |
4 months ago |
|
|
45a288d8cc |
app_voicemail_odbc: fix msgnum race and crash on failed STORE
app_voicemail_odbc: fix msgnum race and crash on failed STORE Two concurrent callers leaving voicemail to the same mailbox could be assigned the same msgnum because ast_unlock_path() was called before STORE(), allowing a second thread to read the same LAST_MSG_INDEX() before the first INSERT committed. The losing thread got a duplicate key error, but execution continued into notify_new_message() -> RETRIEVE() because the STORE() return value was not checked. RETRIEVE() then fetched the winning thread's DB row, mmap'd its blob size against the locally truncated file, and crashed with SIGBUS. Hold the path lock through STORE() and bail out on failure. Fixes: #1653 |
4 months ago |
|
|
8e1abf7aee |
ari_websockets: Fix two issues in the cleanup of outbound websockets.
1. session_cleanup() now saves the websocket type before unlinking the session from the session registry. This prevents a FRACK when cleaning up per-call websockets when MALLOC_DEBUG is used. 2. session_shutdown_cb() and outbound_sessions_load() now call pthread_cancel() to cancel the session handler thread to prevent the thread from continually trying to connect to a server after the connection config has been removed by a reload. This required the thread to use pthread_cleanup_push() to clean up its reference to the session instead of RAII because RAII destructors don't get run when pthread_cancel() is used. Resolves: #1894 |
4 months ago |
|
|
c0e145a453 |
compat.h: Ensure check for `__STDC_VERSION__` is not attempted for c++.
`__STDC_VERSION__` is specific to C but up until gcc 16, the g++ compiler also defined it. With g++ 16.0 it's no longer defined (which is the correct behavior) so compiling channelstorage_cpp_map_name_id.cc fails. The check for `__STDC_VERSION__` in compat.h is now skipped if we're compiling a C++ source file. Resolves: #1903 |
4 months ago |
|
|
da47e8df79 |
pjproject: Backport fix for OpenSSL < 1.1.0 build failure in ssl_sock_ossl.c
Backport pjsip/pjproject#4941 which fixes a build/link failure when compiling against OpenSSL < 1.1.0 (e.g. OpenSSL 1.0.2k on CentOS 7). Two symbols introduced in OpenSSL 1.1.x were called unconditionally in ssl_sock_ossl.c without version guards: - `TLS_method()` in `init_ossl_ctx()` is now guarded with `OPENSSL_VERSION_NUMBER < 0x10100000L`, falling back to `SSLv23_method()` on older OpenSSL. - `SSL_CTX_set_ciphersuites()` is now guarded with `OPENSSL_VERSION_NUMBER >= 0x1010100fL` since this function was introduced in OpenSSL 1.1.1 and is absent in 1.0.x. Without this fix, linking fails with: undefined reference to `TLS_method' undefined reference to `SSL_CTX_set_ciphersuites' when building Asterisk with bundled pjproject on systems such as CentOS 7 with OpenSSL 1.0.2k. Resolves: #1892 |
4 months ago |
|
|
227795eace |
asterisk.c: Fix #if HAVE_LIBEDIT_IS_UNICODE.
Line 2729 has `#if HAVE_LIBEDIT_IS_UNICODE` instead if `#ifdef`. Since macros defined by autoconf are either set to `1` or not set at all, older distros where libedit isn't unicode won't have that macro defined and will fail to compile. Resolves: #1896 |
4 months ago |
|
|
5c9dadcfa0 |
cdrel_custom: fix SQLite compatibility for versions < 3.20.0
cdrel_custom: fix SQLite compatibility for versions < 3.20.0 Replace sqlite3_prepare_v3 + SQLITE_PREPARE_PERSISTENT with a version-guarded fallback to sqlite3_prepare_v2 for older SQLite builds. Resolves: #1885 |
4 months ago |
|
|
861f5b1216 |
translate.c: implement different sample_types for translation computation.
The default (codec) still uses the codec provided samples. Additionally different sample_types can be used with eg: `translate sampletype speech` and then running `core show translation comp 10` to measure performance of different audio scenarios. Resolves: #1807 |
4 months ago |
|
|
60000ce005 |
stasis_broadcast: Add optional ARI broadcast with first-claim-wins
Adds two optional modules: res_stasis_broadcast.so: Infrastructure for broadcasting a single incoming channel to multiple ARI applications with atomic first-claim-wins semantics. app_stasis_broadcast.so: Provides the StasisBroadcast() dialplan application which invokes the broadcast infrastructure. Both modules are self-contained; if neither is loaded there is zero runtime impact. Loading them does not alter existing Stasis or ARI behavior unless explicitly used. Key Features (only active when modules are loaded): Fisher-Yates shuffled broadcast dispatch for fair claim races Atomic claim operations using mutex + condition variable signaling Configurable broadcast timeouts Safe regex application filtering with validation to mitigate ReDoS risk Thread-safe channel variable snapshotting (channel locked during reads) Late-claim safety: broadcast context kept alive until after the Stasis session ends so concurrent claimants always receive 409 Conflict rather than 404 Not Found Memory safety via RAII_VAR, ast_json_ref/unref, and ao2 reference counting Components Added: res/res_stasis_broadcast.c: Core broadcast + claim logic apps/app_stasis_broadcast.c: StasisBroadcast() dialplan application include/asterisk/stasis_app_broadcast.h: Public API header res/ari/resource_events.c: Integrates POST /ari/events/claim endpoint rest-api/api-docs/events.json: New CallBroadcast and CallClaimed events Implementation Notes: Broadcast contexts reside in an ao2 hash container keyed by channel id. Each context holds atomic claim state, winner application name, timeout metadata, and a condition variable for waiters. Broadcast contexts are kept alive until after stasis_app_exec() returns so that concurrent claimants racing against the timeout always receive 409 Conflict. Broadcast dispatch calls stasis_app_send() directly for each matching application in shuffled order. Regex filters are validated with bounded length, group depth, quantified group count, and alternation limits to reduce pathological backtracking. Timeout calculation uses timespec arithmetic with overflow-safe millisecond remainder handling. Event JSON follows existing Stasis/ARI conventions; references are managed correctly to avoid leaks or double frees. Optional Nature / Impact: No changes to existing APIs, events, or applications when absent. Clean fallback: systems ignoring the modules behave identically to prior versions. Development was assisted by Claude (Anthropic). All generated code has been reviewed, tested, and is understood by the author. UserNote: New optional modules res_stasis_broadcast.so and app_stasis_broadcast.so enable broadcasting an incoming channel to multiple ARI applications. The first application to successfully claim (via POST /ari/events/claim) wins channel control. StasisBroadcast() dialplan application initiates broadcasts. CallBroadcast and CallClaimed events notify applications. When modules are not loaded, behavior is unchanged. DeveloperNote: New public APIs in stasis_app_broadcast.h: stasis_app_broadcast_channel(), stasis_app_claim_channel(), stasis_app_broadcast_winner(), and stasis_app_broadcast_wait(). New ARI event types (CallBroadcast, CallClaimed) added to events.json. All code is isolated; no existing ABI modified. |
4 months ago |
|
|
65b98d46bc |
res_audiosocket: Tolerate non-audio frame types
This commit implements the handling of non-voice or DTMF frames like the chan_websocket handling added in #1588. Rather than treating unsupported frames as fatal errors, silently ignore CNG frames and log a warning for other unsupported types. |
4 months ago |
|
|
c45232f02b |
pbx_functions: Save module pointer before calling read and write callbacks.
Before ast_func_read and ast_func_write call their respective read and write callbacks for registered dialplan functions, they use the module pointer in the registered ast_custom_function structure to increment the module use count. They then decrement the usecount when the callback returns. This prevents the providing module from being unloaded while there's a call using the function. Some modules, notably func_odbc, create and destroy dialplan functions based on the contents of a config file. Since the ast_custom_function structure is dynamically allocated, it could be destroyed on reload which means when the module's read or write callback returns to the ast_func calls it would try to decrement the usecount using the module pointer from an ast_custom_function structure that has already been freed. Proper locking or reference counting by the module can reduce the possibility of this happening but it can't prevent it because it doesn't have control after its read or write callback has returned to ast_func_read or ast_func_write. To address this, ast_func_read, ast_func_read2 and ast_func_write save the module pointer to a local variable before calling the module's callback, then use the saved pointer to decrement the use count. The module pointer will always be valid if the module is loaded regardless of the state of the ast_custom_function structure. Resolves: #1818 |
4 months ago |
|
|
60219d49c9 |
chan_iax2: Add CHANNEL getter to retrieve auth method.
Add a property to the CHANNEL method to retrieve the auth method, which can be used to retrieve the specific auth method actually negotiated for a call (e.g. RSA, MD5, etc.). Also clean up some of the documentation for the secure properties to clarify how these relate to call encryption. Resolves: #1878 UserNote: CHANNEL(auth_method) can now be used to retrieve the auth method negotiated for a call on IAX2 channels. |
4 months ago |
|
|
f694aca967 |
fix: backport pjproject stdatomic.h GCC 4.8 build failure patch
pjproject 2.16 (bundled) fails to build on GCC 4.8 (CentOS/RHEL 7) due to a false positive C11 atomics detection introduced in pjproject commit #4570. A fix has been submitted upstream to pjproject (#4933). Adding a local patch to third-party/pjproject/patches/ until a fixed version of pjproject is bundled in Asterisk. Fixes build error: ../src/pj/os_core_unix.c:52:27: fatal error: stdatomic.h: No such file or directory Resolves: #1883 |
4 months ago |
|
|
5e451d77b8 |
res_rtp_asterisk: Destroy ioqueue in rtp_ioqueue_thread_destroy.
The rtp_ioqueue_thread_destroy() function was destroying the the ioqueue thread and releasing its pool but not destroying the ioqueue itself. This was causing the ioqueue's epoll file descriptor to leak. Resolves: #1867 |
5 months ago |
|
|
e4a2b670c8 |
res_pjsip_maintenance: Add PJSIP endpoint maintenance mode
Introduces res_pjsip_maintenance, a loadable module that allows operators to place individual PJSIP endpoints into maintenance mode at runtime without unregistering or disabling them. While an endpoint is in maintenance mode: * New inbound INVITE and SUBSCRIBE dialogs are rejected with 503 Service Unavailable and a Retry-After: 300 header. * In-progress dialogs (re-INVITE, UPDATE, BYE, etc.) are unaffected and complete normally. * Outbound originations via Dial() or ARI originate are refused before any SIP session is created. State is held in-memory only and is cleared on module unload or Asterisk restart. This module was developed with AI assistance (Claude). All code has been reviewed and tested by the author, who takes full responsibility for the submission. CLI interface: pjsip set maintenance <on|off> <endpoint|all> pjsip show maintenance [endpoint] AMI interface: Action: PJSIPSetMaintenance Endpoint: <name>|all State: on|off Action: PJSIPShowMaintenance Endpoint: <name> (optional; omit to list all) Emits PJSIPMaintenanceStatus events per result, followed by PJSIPMaintenanceStatusComplete. State changes also emit an unsolicited PJSIPMaintenanceStatus event. To support outbound blocking, a new session_create callback is added to ast_sip_session_supplement. Supplements that set this callback are invoked at the start of ast_sip_session_create_outgoing() in res_pjsip_session, before any dialog or invite session resources are allocated. res_pjsip_maintenance registers itself as a session supplement and uses this callback to gate outbound session creation on a per-endpoint basis. MODULEINFO: <depend>pjproject</depend> <depend>res_pjsip</depend> <depend>res_pjsip_session</depend> UserNote: New module res_pjsip_maintenance adds runtime maintenance mode for PJSIP endpoints. Use "pjsip set maintenance <on|off> <endpoint|all>" to enable or disable, and "pjsip show maintenance" to list affected endpoints. AMI actions PJSIPSetMaintenance and PJSIPShowMaintenance provide programmatic access. No configuration file changes required. DeveloperNote: ast_sip_session_supplement gains a new optional callback - int (*session_create)(struct ast_sip_endpoint *endpoint, const char *destination). It is called from the global supplement list (not per-session) at the start of ast_sip_session_create_outgoing() via ast_sip_session_check_supplement_create(). Returning non-zero blocks the outgoing session. Modules that need to gate outbound SIP session creation should register a supplement with this callback set rather than hooking into chan_pjsip directly. |
5 months ago |
|
|
eadacd4a4d |
chan_iax2: Add another check to abort frame handling if datalen < 0.
Commit
|
5 months ago |
|
|
dde77e187a |
res_pjsip_outbound_registration: only update the Expires header if the value has changed
The PJSIP outbound registration API has undocumented behavior when reconfiguring the outbound registration if the expires value being set is the same as what was previously set. In this case PJSIP will remove the Expires header entirely from subsequent outbound REGISTER requests. To eliminate this as an issue we now check the current expires value against the configured expires value and only apply it if it differs. This ensures that outbound REGISTER requests always contain an Expires header. Resolves: #1859 |
5 months ago |
|
|
010cbd0569 |
func_talkdetect.c: Clarify dsp_talking_threshold documentation.
Fixes: #1761 |
5 months ago |
|
|
4fdde57bcd |
make_xml_documentation: Remove temporary file on script exit.
Fixes: #1862 |
5 months ago |
|
|
c196f5092a |
res_pjsip_config_wizard: Trigger reloads from a pjsip servant thread
When res_pjsip is reloaded directly, it does the sorcery reload in a pjsip servant thread as it's supposed to. res_pjsip_config_wizard however was not which was leading to occasional deadlocks. It now does the reload in a servant thread just like res_pjsip. Resolves: #1855 |
5 months ago |
|
|
43cda0d8d2 |
build: remove pjsua, pjsystest, Python bindings and asterisk_malloc_debug stubs from pjproject dev build
The pjsua Python module and the pjsua/pjsystest apps were used by the Asterisk Test Suite for SIP simulation in dev mode builds. They are now fully obsolete for three independent reasons: 1. **pjsua Python bindings officially deprecated upstream.** The pjproject maintainers added `pjsip-apps/src/python/DEPRECATED.txt` directing users to the PJSUA2 SWIG binding instead. A build-fix PR (https://github.com/pjsip/pjproject/pull/4892) was closed by the maintainer explicitly citing this deprecation. 2. **Removed from the Asterisk Test Suite.** As confirmed by @mbradeen: > *"We had to get rid of pjsua when we went to Python3 because it would > hang due to a conflict between async calls within pjsua and twisted. > There are still some old references to tests we couldn't fully convert > to sipp, but those are skipped."* 3. **Broken and unmaintained.** Building with Python 2.7 (the only version `configure.ac` searched for) fails with: ``` _pjsua.c: error: 'INIT_RETURN' undeclared (first use in this function) ``` due to a bug in pjproject 2.16's `python3_compat.h` that upstream declined to fix. This PR removes all pjsua-related build artifacts from Asterisk's bundled pjproject build: the pjsua and pjsystest application binaries, the deprecated Python (`_pjsua.so`) bindings, the `asterisk_malloc_debug.c` stubs, and the `PYTHONDEV` detection from `configure.ac`. Also removes `libpjsua` from Asterisk's main linker flags. DeveloperNote: The pjsua and pjsystest application binaries, the deprecated Python pjsua bindings (`_pjsua.so`), and the `asterisk_malloc_debug.c` stub implementations are no longer built or installed as part of the bundled pjproject dev mode build. The `PYTHONDEV` (python2.7-dev) build dependency is also removed. Developers who relied on the pjsua binary for Test Suite SIP simulation should use SIPp instead, which is the current Asterisk Test Suite standard. Fixes: #1840 |
5 months ago |
|
|
0e2b8e5959 |
res_cdrel_custom: do not free config when no new config was loaded
When the res_cdrel_custom modules is reloaded and the config has not been changed asterisk should not free the old config. Otherwise the connection to the database will be closed and no new connection will be opened. Resolves: #1852 |
5 months ago |
|
|
20ae12f1b9 |
res_cdrel_custom: Resolve several formatting issues.
Several issues are resolved: * Internally, floats were used for timestamp values but this could result in wrapping so they've been changed to doubles. * Historically, the default CEL eventtime format is `<seconds>.<microseconds>` with `<microseconds>` always being 6 digits. This should have continued to be the case but res_cdrel_custom wasn't checking the `dateformat` setting in cel.conf and was defaulting to `%F %T`. res_cdrel_custom now gets the default date format from cel.conf, which will be whatever the `dateformat` parameter is set to or `<seconds>.<microseconds>` if not set. * The timeval field formatter for both CDR and CEL wasn't handling custom strftime format strings correctly. This is now fixed so you should be able to specifiy custom strftime format strings for the CEL `eventtime` and CDR `start`, `answer` and `end` fields. For example: `eventtime(%FT%T%z)`. Resolves: #1844 Resolves: #1845 |
5 months ago |
|
|
15bbe5c58d |
callerid: fix signed char causing crash in MDMF parser
Change rawdata buffer from char to unsigned char to prevent sign-extension of TLV length bytes >= 0x80. On signed-char platforms (all Asterisk builds due to -fsigned-char in configure.ac), these values become negative when assigned to int, bypass the `if (res > 32)` bounds check, and reach memcpy as size_t producing a ~18 EB read that immediately crashes with SIGSEGV. Affects DAHDI analog (FXO) channels only. Not reachable via SIP, PRI/BRI, or DTMF-based Caller ID. Fixes: #1839 |
5 months ago |
|
|
b96b15b171 |
res_pjsip: Address pjproject security vulnerabilities
Address the following pjproject security vulnerabilities [GHSA-j29p-pvh2-pvqp - Buffer overflow in ICE with long username](https://github.com/pjsip/pjproject/security/advisories/GHSA-j29p-pvh2-pvqp) [GHSA-8fj4-fv9f-hjpc - Heap use-after-free in PJSIP presense subscription termination header](https://github.com/pjsip/pjproject/security/advisories/GHSA-8fj4-fv9f-hjpc) [GHSA-g88q-c2hm-q7p7 - ICE session use-after-free race conditions](https://github.com/pjsip/pjproject/security/advisories/GHSA-g88q-c2hm-q7p7) [GHSA-x5pq-qrp4-fmrj - Out-of-bounds read in SIP multipart parsing](https://github.com/pjsip/pjproject/security/advisories/GHSA-x5pq-qrp4-fmrj) Resolves: #1833 |
5 months ago |
|
|
ceceea4b38 |
pbx: Hold channel lock for exception datastore access
ast_channel_datastore_find() and ast_channel_datastore_add() must only be called while the channel is locked (see channel.h). raise_exception() and the EXCEPTION dialplan function read path accessed the exception datastore without holding ast_channel_lock, which could corrupt the per-channel datastore list under concurrency and lead to crashes during teardown (e.g. double free in ast_datastore_free). Resolves: #1831 |
5 months ago |
|
|
0c25c9c118 |
xmldoc.c: Fix memory leaks in handling of provided_by.
Added a few calls to ast_xml_free_attr() to squash memory leaks when handling "provided_by". |
6 months ago |
|
|
73df608ae2 |
SECURITY.md: Update with additional instructions.
Also added line breaks for people reading this file directly from the code base. |
6 months ago |