Compare commits

..

415 Commits

Author SHA1 Message Date
Kevin P. Fleming
72c0b62282 Convert all release tags to Opsound music-on-hold.
For more details:
http://blogs.digium.com/2009/08/18/asterisk-music-on-hold-changes/



git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.2.8-netsec@212958 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-08-18 20:42:51 +00:00
Kevin P. Fleming
784c0f301c importing files for 1.2.8-netsec release
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.2.8-netsec@30962 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-30 22:15:52 +00:00
Kevin P. Fleming
58a099d01c Creating tag for the release of asterisk-1.2.8-netsec
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.2.8-netsec@30961 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-30 22:14:55 +00:00
Automerge script
9b23589112 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-30 20:05:55 +00:00
Automerge script
99cf427def automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30834 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-30 17:05:14 +00:00
Automerge script
f16891f03f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-30 15:07:02 +00:00
Automerge script
b2fb09bd73 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30577 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-26 18:06:03 +00:00
Automerge script
b752fe2fb0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30462 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-25 22:05:58 +00:00
Automerge script
ad5a410b70 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-25 20:05:54 +00:00
Automerge script
bc94429e8c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30358 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-25 19:05:14 +00:00
Automerge script
4f6e1f4878 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30327 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-25 18:05:26 +00:00
Automerge script
a5cfea7f28 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30270 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-25 16:05:31 +00:00
Automerge script
aa4d7f8df9 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30127 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-24 22:04:41 +00:00
Automerge script
b5b89d732c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-24 21:05:13 +00:00
Automerge script
a71ff914c6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30067 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-24 20:05:12 +00:00
Automerge script
b30db14404 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@30001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-24 17:05:22 +00:00
Automerge script
0d1e7be6ea automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29966 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-24 13:01:36 +00:00
Automerge script
4bcedb93cc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29934 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-24 04:05:45 +00:00
Automerge script
0a4881b51f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29877 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-23 22:05:06 +00:00
Automerge script
c96816d287 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-23 19:05:12 +00:00
Automerge script
ca89b4e76c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29762 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-23 18:05:13 +00:00
Automerge script
cfd6e75c53 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29702 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-23 16:01:16 +00:00
Automerge script
ebfd515ca7 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29591 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-22 22:06:43 +00:00
Automerge script
db4f8886bd automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29551 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-22 21:05:40 +00:00
Automerge script
1683b50452 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29502 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-22 17:06:30 +00:00
Automerge script
49be813673 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-22 15:06:09 +00:00
Automerge script
bb59b231d3 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-21 16:06:29 +00:00
Automerge script
c8d73b95a0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-20 20:07:15 +00:00
Automerge script
dac92a6182 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29006 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-20 03:06:40 +00:00
Automerge script
142165cb92 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28933 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-20 01:07:21 +00:00
Automerge script
3e6f1fe864 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28831 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 20:06:50 +00:00
Automerge script
134eb7c8f6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28788 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 19:07:56 +00:00
Automerge script
7633ebabe8 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28702 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 17:04:55 +00:00
Automerge script
a2ebf8a0fb automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28674 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 16:07:43 +00:00
Automerge script
54282f4e4b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28392 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-18 21:01:36 +00:00
Automerge script
f360986593 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-18 20:07:21 +00:00
Automerge script
7f5e1b4abe automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28299 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-18 18:07:34 +00:00
Automerge script
1da1f4e939 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28256 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-18 17:08:06 +00:00
Automerge script
f209b6fe9b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28211 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-18 15:07:38 +00:00
Automerge script
1dea733878 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28167 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-18 13:06:54 +00:00
Automerge script
7b5e3d8fd5 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@28015 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 23:08:25 +00:00
Automerge script
2c8f7e39f6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27969 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 20:07:31 +00:00
Automerge script
64fa2ed07a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27890 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 18:07:31 +00:00
Automerge script
2a3e4e3a38 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27811 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 16:07:08 +00:00
Automerge script
8c111c6a6c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27765 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 10:07:11 +00:00
Automerge script
f16c918188 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27677 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 03:07:25 +00:00
Automerge script
c161ad3074 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27635 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-17 00:06:52 +00:00
Automerge script
fcdf61c4b3 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27475 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-16 20:06:30 +00:00
Kevin P. Fleming
1c3ab305ce importing files for 1.2.8-netsec release
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.2.8-netsec@27266 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-15 20:52:45 +00:00
Kevin P. Fleming
b844bc5e43 Creating tag for the release of asterisk-1.2.8-netsec
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.2.8-netsec@27265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-15 20:51:22 +00:00
Automerge script
2e4c3cac8a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27127 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-13 05:07:32 +00:00
Automerge script
a84ea4f014 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@27085 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-12 00:05:45 +00:00
Automerge script
e9ee611581 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@26798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-11 09:10:58 +00:00
Automerge script
d83e489d61 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@26130 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-09 15:07:09 +00:00
Automerge script
269783fdff automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@26089 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-09 14:06:34 +00:00
Automerge script
c43ec5a1bc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25650 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-08 16:07:44 +00:00
Automerge script
407350f13d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25607 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-08 15:07:01 +00:00
Automerge script
626a5228e3 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25561 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-08 14:07:31 +00:00
Automerge script
d4b1647374 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-08 12:06:46 +00:00
Automerge script
151fc69ffc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-07 14:05:27 +00:00
Automerge script
fcdcbf879a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25321 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-07 13:05:43 +00:00
Automerge script
91096b7368 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-06 03:06:16 +00:00
Automerge script
034337fb07 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25158 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-06 01:06:20 +00:00
Automerge script
0d352c2e09 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-05 21:07:01 +00:00
Automerge script
f923e2c1b8 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24949 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-05 18:06:18 +00:00
Automerge script
5c40f5053f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24875 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-05 15:08:18 +00:00
Automerge script
b4c09a0b95 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-04 17:05:55 +00:00
Automerge script
218672370e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24705 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-04 12:05:58 +00:00
Automerge script
696ef06866 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24603 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-03 21:06:33 +00:00
Automerge script
fa4103cc3b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24533 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-03 19:06:04 +00:00
Automerge script
ef55cff62a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-03 13:08:48 +00:00
Automerge script
95c0040574 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24338 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-02 20:07:59 +00:00
Automerge script
d46854d378 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24128 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-02 03:06:29 +00:00
Automerge script
622352f2c9 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-01 21:05:01 +00:00
Automerge script
1a02e1b9c1 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@24018 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-01 20:05:24 +00:00
Automerge script
8cb576b993 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23981 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-01 16:05:04 +00:00
Automerge script
ab900f7fad automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23927 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-01 11:04:46 +00:00
Automerge script
8192165970 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-30 16:05:12 +00:00
Automerge script
5e0ea8da27 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23703 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-30 15:05:31 +00:00
Automerge script
a8798960dd automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23668 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-30 14:05:02 +00:00
Automerge script
ac5119e455 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23610 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-30 12:04:51 +00:00
Automerge script
c67540d87b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-29 12:04:34 +00:00
Automerge script
49e844c0e6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@23206 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-28 17:05:06 +00:00
Automerge script
b51560eaa1 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@22987 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-27 20:05:17 +00:00
Automerge script
3190fe1c57 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@22899 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-27 17:06:05 +00:00
Automerge script
0529a7f84a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@22629 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-26 20:05:58 +00:00
Automerge script
c292909f2e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@22123 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-21 23:02:41 +00:00
Automerge script
37a6092b27 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@21678 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-19 22:05:55 +00:00
Automerge script
f73cbceaf6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@21635 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-19 19:06:20 +00:00
Automerge script
940c220642 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@21274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-19 00:06:11 +00:00
Automerge script
ccc668b5d6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@21076 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-18 07:06:21 +00:00
Automerge script
dd12cba9d0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@21001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-17 17:06:46 +00:00
Automerge script
6e6a00609d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@20074 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-14 18:05:52 +00:00
Automerge script
ee263ee87e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19929 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-13 21:06:44 +00:00
Kevin P. Fleming
63566eac42 Merged revisions 19812 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r19812 | kpfleming | 2006-04-13 12:40:21 -0500 (Thu, 13 Apr 2006) | 2 lines

oops... let's not set a variable and then immediately overwrite it while assuming its old value will magically return

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19818 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-13 17:52:23 +00:00
Automerge script
b64b6ef1f7 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-13 16:06:43 +00:00
Automerge script
54e190dacb automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-11 23:06:48 +00:00
Automerge script
27b633c817 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19391 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-11 22:06:47 +00:00
Automerge script
4099114189 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19344 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-11 21:06:53 +00:00
Automerge script
2c897a8b8c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@19055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-11 02:06:45 +00:00
Automerge script
2aac61e6ad automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18903 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-10 18:06:02 +00:00
Automerge script
1db17b168a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18532 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-08 20:06:31 +00:00
Automerge script
24298e447c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18478 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-07 23:05:40 +00:00
Automerge script
d3a87c1f69 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18297 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-07 15:06:19 +00:00
Automerge script
c72b1b15c4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18259 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-07 14:01:46 +00:00
Automerge script
09609b0510 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@18125 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-06 23:05:57 +00:00
Automerge script
63bd37a91e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17985 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-06 18:06:57 +00:00
Automerge script
760352a196 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17942 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-06 17:06:45 +00:00
Automerge script
1fce77dc68 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-05 20:06:32 +00:00
Automerge script
bde8fa877f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17529 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-05 07:06:34 +00:00
Automerge script
08aecbb1ed automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-04 19:05:53 +00:00
Automerge script
6f8262c9b4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17362 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-04 18:04:52 +00:00
Automerge script
f7feba82bc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17310 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-04 16:04:23 +00:00
Automerge script
c0bff2ac09 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17177 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-03 21:04:38 +00:00
Automerge script
8839755956 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@17102 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-03 18:04:56 +00:00
Automerge script
2648e9f039 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-31 20:03:56 +00:00
Automerge script
15e7ec94e1 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16770 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-31 19:04:28 +00:00
Automerge script
b877a5b0f7 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16599 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-30 23:02:42 +00:00
Automerge script
27405fac27 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16577 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-30 22:02:13 +00:00
Automerge script
d2f451ef0c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16545 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-30 18:01:47 +00:00
Automerge script
b4d9cb0418 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-30 02:06:27 +00:00
Automerge script
c116009930 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16343 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-30 01:06:54 +00:00
Automerge script
99a4cd1de2 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-29 20:06:56 +00:00
Automerge script
9a26882461 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16123 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-29 15:06:30 +00:00
Automerge script
e167a9a350 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@16050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-29 05:06:52 +00:00
Automerge script
f86140a213 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15937 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-29 01:06:53 +00:00
Automerge script
b4589618c4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15783 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-28 21:06:54 +00:00
Automerge script
fd1d8cdf10 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-28 20:06:56 +00:00
Automerge script
7a879ed598 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15698 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-28 19:06:50 +00:00
Automerge script
2764568353 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15657 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-28 18:06:51 +00:00
Automerge script
e8862556fd automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-28 00:07:31 +00:00
Automerge script
1e59a857ae automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@15374 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-27 23:01:43 +00:00
Automerge script
b705a62dc5 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14914 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-25 06:07:49 +00:00
Automerge script
98ba3160e7 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14867 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-25 05:07:29 +00:00
Automerge script
0345a25e6a automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14751 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-24 15:07:22 +00:00
Automerge script
ce930f8e2d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14703 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-24 05:07:41 +00:00
Automerge script
0314e5efc6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14655 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-24 01:07:12 +00:00
Automerge script
c1d5aad112 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14566 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-23 22:07:47 +00:00
Automerge script
7cae785261 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14515 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-23 21:07:45 +00:00
Automerge script
de670a217d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-22 23:06:30 +00:00
Automerge script
78104df395 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-22 22:06:45 +00:00
Automerge script
ba4b234d34 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14229 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-22 21:07:01 +00:00
Kevin P. Fleming
97b3a1c5a4 use proper email address for merge failures
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14182 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-22 20:06:03 +00:00
Automerge script
2a14dad0f0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@14178 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-22 10:10:37 +00:00
Automerge script
c614f4d869 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13999 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 19:06:07 +00:00
Automerge script
e2ad8bd804 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13960 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 18:05:42 +00:00
Automerge script
f06bd477c0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13924 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 17:05:44 +00:00
Automerge script
a0e595febf automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13886 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 16:06:13 +00:00
Automerge script
2395b09fef automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13849 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 15:05:43 +00:00
Automerge script
e3bc797a82 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13784 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 07:06:15 +00:00
Automerge script
00461229c2 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-21 06:06:20 +00:00
Automerge script
c9d7d267cd automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13673 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-20 19:07:11 +00:00
Automerge script
380d8cfcc4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-19 10:10:38 +00:00
Automerge script
fe83f9421b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13318 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-16 21:05:36 +00:00
Automerge script
2b3941fcbf automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-16 18:06:16 +00:00
Automerge script
aad583ff1d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13204 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-16 07:01:26 +00:00
Automerge script
9b1e1fe199 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-15 23:05:42 +00:00
Automerge script
ca6ae319c7 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13130 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-15 19:05:45 +00:00
Automerge script
5e338e72ba automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@13062 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-15 14:06:15 +00:00
Automerge script
10fe0e9c67 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12959 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-14 19:05:40 +00:00
Automerge script
f1fade4fa6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12825 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-13 16:05:25 +00:00
Automerge script
00e45fc396 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12686 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-12 20:05:47 +00:00
Automerge script
0e3f10b86f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12644 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-12 19:05:14 +00:00
Automerge script
d008cda808 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12609 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-12 18:05:51 +00:00
Automerge script
ba70bebc38 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12538 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-12 16:08:23 +00:00
Automerge script
eb6fc20dc8 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12231 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-07 01:05:29 +00:00
Automerge script
db6920d628 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-07 00:05:29 +00:00
Automerge script
0fcae43d36 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12103 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-06 15:05:03 +00:00
Automerge script
8d808bd9d3 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@12040 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-06 11:04:25 +00:00
Automerge script
c0763951ba automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11975 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-06 03:04:43 +00:00
Automerge script
e483c1945d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-05 13:05:27 +00:00
Automerge script
0397dba5a4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11804 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-04 12:04:16 +00:00
Automerge script
c19212f8d0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11745 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-03 18:04:19 +00:00
Automerge script
d848cb43b3 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11683 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-03 09:04:18 +00:00
Automerge script
50464af8c2 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-03 01:03:41 +00:00
Automerge script
7f9c385052 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11633 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-02 23:03:50 +00:00
Automerge script
0840844421 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11585 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-02 20:03:53 +00:00
Automerge script
924be1c3b9 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11553 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-02 07:03:41 +00:00
Automerge script
b2b717e61f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11527 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-01 18:04:00 +00:00
Automerge script
2f6c81bbc5 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11502 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-01 07:03:42 +00:00
Automerge script
490cd4ada5 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11434 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-28 20:04:13 +00:00
Automerge script
ee69978cdc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11406 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-28 19:03:52 +00:00
Automerge script
0a4506d0dd automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11306 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-27 16:04:08 +00:00
Automerge script
b7ad6d8c2d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-27 03:04:02 +00:00
Automerge script
6f665a50e0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-26 17:04:15 +00:00
Automerge script
0bc176e6b8 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-25 20:04:12 +00:00
Automerge script
b9b4ae4c34 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11115 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-25 06:04:09 +00:00
Automerge script
2719e0aa02 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@11088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-25 05:04:25 +00:00
Automerge script
2dc3679b6e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10986 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-24 00:04:40 +00:00
Automerge script
74879cff5b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10870 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-23 15:01:21 +00:00
Automerge script
d58f08a1a9 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10760 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-22 18:03:52 +00:00
Automerge script
2d948fe31e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10601 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-21 00:03:56 +00:00
Automerge script
5efaf11018 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10558 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-20 07:03:44 +00:00
Automerge script
b055431b5c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10534 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-20 06:03:40 +00:00
Automerge script
e3bf4c14dc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10509 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-19 19:03:29 +00:00
Automerge script
d291491eb6 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-19 18:03:48 +00:00
Automerge script
e098adeaf7 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10430 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-18 01:03:27 +00:00
Automerge script
304e39b8ec automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10389 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-17 02:03:24 +00:00
Automerge script
d075508cf0 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10322 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-16 19:03:22 +00:00
Automerge script
bf7f1e75da automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10162 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-15 02:03:35 +00:00
Automerge script
72e192fc42 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10136 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-15 01:04:13 +00:00
Automerge script
86a106023b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10044 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-14 21:05:23 +00:00
Automerge script
3a0ec4568d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@10017 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-14 20:11:19 +00:00
Automerge script
13d5513465 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9987 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-14 19:04:48 +00:00
Automerge script
b670fe8554 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-14 05:01:18 +00:00
Automerge script
beff9bb972 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-14 04:01:20 +00:00
Automerge script
19c52a797b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9842 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-14 01:03:47 +00:00
Automerge script
edbaad38fc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9782 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-13 18:04:04 +00:00
Automerge script
266010c7f2 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-11 20:03:02 +00:00
Automerge script
9bfab982fd automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9606 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-11 19:03:03 +00:00
Automerge script
18dbcd321d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9547 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-11 16:03:16 +00:00
Automerge script
744ec2c02e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9505 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-11 07:00:53 +00:00
Automerge script
c0dce52a12 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9422 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-10 21:03:04 +00:00
Automerge script
cfe7565123 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9346 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-09 22:03:14 +00:00
Automerge script
a6d8e03be5 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-09 03:01:45 +00:00
Automerge script
5fc4e0d280 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9258 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-09 02:01:45 +00:00
Automerge script
1c4e84f888 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9237 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-08 23:00:44 +00:00
Kevin P. Fleming
f6d4da1706 simplify automerge setup
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9169 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-06 20:47:11 +00:00
Automerge script
f5bbba29fb automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9159 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-05 18:00:23 +00:00
Kevin P. Fleming
4f44b40d33 update to current 1.2 branch
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9131 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-02 23:47:35 +00:00
Kevin P. Fleming
08e0a56f32 setup for new automerge process
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9130 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-02 23:45:00 +00:00
Automerge script
a0b6fe01f4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-02 19:01:36 +00:00
Automerge script
a03cf25014 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@9083 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-02 17:01:37 +00:00
Automerge script
9acbdbcc6d automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8916 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-30 18:01:34 +00:00
Automerge script
06765cc9d1 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8818 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-28 14:01:17 +00:00
Automerge script
2cfee72f8e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8795 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-27 09:01:17 +00:00
Automerge script
8ff712f50f automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8767 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-27 01:01:17 +00:00
Automerge script
6a02d8a8d9 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8740 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-26 20:01:20 +00:00
Automerge script
02e4d63d7e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-26 15:01:17 +00:00
Automerge script
6f4c9d5739 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8686 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-25 20:01:00 +00:00
Automerge script
0bd1631812 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8675 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-25 19:01:09 +00:00
Automerge script
edfe61308b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8641 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-25 10:01:13 +00:00
Automerge script
9d4b0ced46 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-25 06:00:59 +00:00
Automerge script
9a8533488e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8617 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-25 02:01:00 +00:00
Automerge script
d7812f6634 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8607 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-24 23:00:59 +00:00
Automerge script
2e10d5244e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8581 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-24 21:01:03 +00:00
Automerge script
e295ae92f3 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8570 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-24 20:00:59 +00:00
Automerge script
0ca5e4125e automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-24 14:01:00 +00:00
Automerge script
86f0c7bfcc automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-22 20:00:19 +00:00
Automerge script
30c9cea332 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8440 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-22 18:00:19 +00:00
Automerge script
ea091271c8 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-22 16:00:19 +00:00
Automerge script
bea37cf37b automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8431 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-22 09:00:21 +00:00
Automerge script
b2d320b259 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-22 03:00:19 +00:00
Automerge script
749b766a8c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8415 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-22 00:00:10 +00:00
Automerge script
6fae615794 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8396 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-21 19:00:20 +00:00
Automerge script
abcbea02c1 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-20 19:01:00 +00:00
Automerge script
65850c0467 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8322 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-20 01:00:57 +00:00
Automerge script
413b215b6c automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8288 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-19 20:00:55 +00:00
Automerge script
30185fdff4 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8247 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-19 05:00:39 +00:00
Kevin P. Fleming
8cedcec2bc add README note to the proper place for future releases
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-18 23:14:04 +00:00
Automerge script
1cc6f6d3bb automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8202 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-18 22:00:37 +00:00
Automerge script
ca0a371996 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8176 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-18 03:00:42 +00:00
Automerge script
b0fd9f9b74 automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8172 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-18 02:00:34 +00:00
Kevin P. Fleming
396f6561a4 set up for automerge
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8159 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-17 23:58:15 +00:00
Kevin P. Fleming
f16619507a updating to current 1.2
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@8046 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-13 03:52:45 +00:00
Kevin P. Fleming
69ac155838 initial import of Asterisk SIP support for network security devices
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@7927 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10 03:10:34 +00:00
Kevin P. Fleming
a6bae85952 prepare for merging changes from main 1.2 branch
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@7926 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10 03:05:18 +00:00
Kevin P. Fleming
494b9c486e create branch to hold network security device code
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@7925 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10 03:03:29 +00:00
Kevin P. Fleming
d8c5d338cb re-initialize _all_ sequence numbers when transfer completes
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7917 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 22:48:48 +00:00
Russell Bryant
417438fea0 add missing unlock (issue #6112)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7915 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 22:07:26 +00:00
Tilghman Lesher
5488ffb6d4 Bug 6157 - Memory leak
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7908 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 20:08:24 +00:00
Tilghman Lesher
e8725ce940 Update variable documentation to match the code
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7904 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 18:37:50 +00:00
Kevin P. Fleming
0e734920e8 commit user/group-related changes from trunk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7900 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 18:11:23 +00:00
Kevin P. Fleming
ad598a2060 backport fix from revision 7856 of trunk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7899 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 18:09:53 +00:00
Kevin P. Fleming
bb47f95262 fix breakage introduced in revision 7871
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7898 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 18:08:07 +00:00
Russell Bryant
a7a2115b9c fix seg fault when using greek syntax in VoicemMailMain (issue #6142)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7871 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 05:11:44 +00:00
Russell Bryant
18429f2a69 backport fix for unnecessary unlock (issue #6171)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7870 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-09 04:52:16 +00:00
Tilghman Lesher
7e6430787c Bug 6156 - catch all threading errors, not just simple failure
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7848 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-07 07:27:18 +00:00
Tilghman Lesher
dc3ba8c223 Dumb error messages - "Context 'context' already included in 'in' context"
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7831 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-06 00:34:40 +00:00
Kevin P. Fleming
2fd6520a7e update agent persistence when an agent gets logged off by autologoff
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7829 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-06 00:21:00 +00:00
Tilghman Lesher
7a61b36104 Bug 6076 - Fix documentation of ast_trim_blank return value
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7827 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 23:53:07 +00:00
Kevin P. Fleming
2f4783a770 eliminate rounding errors that caused call time limits to be inaccurate (issue #5913)
round 'time left' reported during call limit warnings up to sound more accurate


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7825 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 23:49:50 +00:00
Tilghman Lesher
6056391a78 Bug 6081 - fix for memory leak, formatting fixes
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7823 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 23:07:08 +00:00
Kevin P. Fleming
213b3575ce ensure that variable is initialized
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7819 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 20:52:38 +00:00
Olle Johansson
3821e18d08 Fix copyright of changed file
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7812 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 09:13:21 +00:00
Kevin P. Fleming
224c6e3f7c send device state updates for auto-logoff of agents as well
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7809 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 00:58:29 +00:00
Kevin P. Fleming
18ab6f429c doh... fseek() has no useful return value
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7807 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-05 00:18:46 +00:00
Kevin P. Fleming
07f8542ce7 use proper fwrite() parameters and return value
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7805 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 23:51:03 +00:00
Kevin P. Fleming
cf293c224d return properly after extending file
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7803 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 23:45:34 +00:00
Kevin P. Fleming
e234ad0011 ensure that ulaw/alaw sound files are filled with silence when extended (not zeroes)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7800 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 23:27:57 +00:00
Kevin P. Fleming
229b778b0b make monitoring more tolerant of peers that deliver frames in bursts
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 23:02:38 +00:00
Olle Johansson
66f484defe Issue #5980: Removing extra CR+LF in manager events - needs port to trunk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7795 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 21:46:40 +00:00
Olle Johansson
ed523e248a Fixing typo in XML for video updates.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7792 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 21:43:14 +00:00
Russell Bryant
3c49f27bf4 use a more correct way of determining the size of the destination buffer
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 07:06:50 +00:00
BJ Weschke
226d146b25 Fix the 'if' clause to be true under the right conditions. Bug #6126
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 05:27:38 +00:00
Kevin P. Fleming
1892289329 remove unused 'old' expression parser
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7746 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-03 20:22:18 +00:00
Tilghman Lesher
5529fc0355 Bug 6121 - typo in application description
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7743 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-03 18:15:12 +00:00
Kevin P. Fleming
73ef559240 revert incorrect fix for bug #6048 from revision 7709
put in correct (simpler) fix
add doxygen docs for channel spy 'state' values


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7740 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-03 17:24:56 +00:00
Kevin P. Fleming
b59a63c8cd backport rport scanning fix from trunk (bug #6071)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7738 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-03 17:00:01 +00:00
Kevin P. Fleming
c36927137f don't leak memory for (most) expression evaluations
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7736 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-03 16:34:12 +00:00
Tilghman Lesher
649aaad100 Bug 6084 - MixMonitor after a 'cli stop monitor' deadlocks
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-02 07:31:54 +00:00
BJ Weschke
ea4c262482 Fix compiler warnings.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7706 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-02 02:04:14 +00:00
Tilghman Lesher
89de6c9df6 Bug 6091 - Fix race condition around uniqueid
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7677 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-30 14:54:19 +00:00
Russell Bryant
4578bc3b0c fix memory leak in build_rpid (issue #6070)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7665 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-28 17:35:56 +00:00
Russell Bryant
8df1e4866a backport fix for permissions of created recordings (issue #6067)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-27 21:07:08 +00:00
Kevin P. Fleming
9f92220a9c backport fix to ensure that DSP is never enabled on pseudo channels
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7641 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-27 00:07:45 +00:00
Tilghman Lesher
09a9e7bcb7 Remove copy of code in libc, preferring code in utils.c (public domain code)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-26 20:32:50 +00:00
Russell Bryant
a434f8877a cast time_t to an int in printf/scanf (issue #5635)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7634 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-26 18:19:12 +00:00
Tilghman Lesher
ef891dc0a7 Bug 6051 - VMCOUNT should work as documented and count all, not quit after finding 1
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-23 06:38:08 +00:00
Kevin P. Fleming
3ebe29c983 add license reference to copyright notice displayed when CLI session begins
add 'show warranty' and 'show license' CLI commands (still need a complete list of non-GPL components included in Asterisk)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7606 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-23 03:01:24 +00:00
BJ Weschke
1028e43464 Another app documentation tweak.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7605 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-23 00:00:11 +00:00
Tilghman Lesher
4979f66f28 Bug 6050 SQL requires the use of single ticks to delimit values, not quotes
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7601 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-22 22:04:13 +00:00
Russell Bryant
a5e9fe97c8 revert changes to videosupport to allow per-peer setting, since it isn't quite
complete and there is not an obvious fix at this point


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7599 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-22 20:36:47 +00:00
Russell Bryant
2293cfaf84 remove stray unlock (issue #5955)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7595 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-22 16:17:43 +00:00
Josh Roberson
d252dde933 Actually put in the per-peer settings for sip video, as they didn't make it in at astricon somehow, and I've been too busy up until now to redo it.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-21 22:23:39 +00:00
Tilghman Lesher
37a49a5992 Allow a chan_alsa that failed to open sound devices to be unloaded.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7582 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-21 20:01:16 +00:00
BJ Weschke
2783801610 Bug #6040 - Documentation correction
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7580 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-21 19:53:49 +00:00
Tilghman Lesher
82f19c9a91 Bug 5777 - Remove parentheses on Goto in AEL, so that it parses correctly
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7577 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-21 19:23:12 +00:00
Russell Bryant
71d9531e45 check array bounds when parsing arguments to AGI (issue #5868)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7557 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-20 20:21:26 +00:00
Russell Bryant
3bbeaefa57 backport fix for reloading peer context (issue #6007)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7552 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-20 18:05:45 +00:00
Russell Bryant
4611be805a backport fix for segfault on directed pickup when no CDR is available (issue #5998)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-20 17:34:00 +00:00
Kevin P. Fleming
587493fdfc backport fix for larger-than-20ms-frames from trunk (bug #5697)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-20 12:58:37 +00:00
Russell Bryant
50079144e3 I messed up and accidently committed this to the trunk first ...
- add note on required values of sip_methods struct
- remove duplicate function prototype
- remove duplicate ast_mutex_lock (issue #6025)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7529 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-19 23:47:23 +00:00
Tilghman Lesher
2ca80e76a0 Bug 5988 - record append option not working
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7523 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-19 19:06:46 +00:00
Tilghman Lesher
68e6502484 Bug 6026 - segfault for the sequence NoCDR(), SetAMAFlags()
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7521 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-19 05:38:44 +00:00
Tilghman Lesher
1e91dfa5df Document that curley braces must be on the same line as the keyword.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-17 18:55:38 +00:00
Tilghman Lesher
e4e5f7c65b Bug 6009 - off by one error
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7517 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-17 17:19:32 +00:00
Kevin P. Fleming
8ef66261f1 Max-Forwards headers must only be present on requests, not responses
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7515 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-17 03:59:05 +00:00
Kevin P. Fleming
90812b536c forcibly expire previous subscriptions from a peer when they resubscribe (keeps them from building up and waiting for expiration, and stops us sending unwanted NOTIFY messages to devices)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7513 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-17 03:44:30 +00:00
Kevin P. Fleming
2b880d3ef8 fix some buglet when building team branch version strings
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7510 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-17 02:20:04 +00:00
Tilghman Lesher
6ab729aeb3 We want to check the previous value, not the current value (which was just changed).
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7508 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-17 01:02:29 +00:00
Tilghman Lesher
c9f97f49c5 First field is truncated
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-16 00:49:39 +00:00
Christian Richter
8b352fcb94 * Added mISDN/mISDNuser Echo cancel Patch
* Fixed Makefiles so that chan_misdn can be compiled again
* added some hints, that mISDN cannot be compiled against gcc-4, SMP, Spinlock Debug
* fixed some Minor issues in chan_misdn, regarding Type Of Number and Presentation






git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7490 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-15 10:52:30 +00:00
BJ Weschke
5a06af4d57 Bug #6003 - Don't free the channel structure until after having sent the manager event.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7482 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-15 02:51:54 +00:00
Kevin P. Fleming
2ede900bfd clarify substring documentation
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7470 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 18:54:22 +00:00
Kevin P. Fleming
fb0ffc7784 correct broken math in tvfix() for timestamp values over one million
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7468 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 16:06:27 +00:00
Kevin P. Fleming
e69171dc06 restore ability of caller to hangup calls that are still ringing (issue #5839)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 05:53:00 +00:00
Kevin P. Fleming
8452f6b494 ensure that hangups while incoming calls are in early state are handled properly (issue #5919)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7451 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 05:14:27 +00:00
Kevin P. Fleming
f9bc6f8afc only report AGENT_IDLE for callback mode agents when they are actually idle (issue #5902)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 04:43:38 +00:00
Kevin P. Fleming
f9f44d7d9b use the stream's current point when pausing/unpausing, instead of elapsed time (which doesn't work when the stream has been skipped forward or backward) (issue #5897)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7448 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 04:25:14 +00:00
Kevin P. Fleming
86bb1472cc set all the child file descriptors to non-blocking so that we don't hang if the child fails to send a newline-terminated command or error message
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-12 17:30:59 +00:00
Tilghman Lesher
ef09c506c8 Typo
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-12 17:19:29 +00:00
Russell Bryant
af7b3b420e silence a couple of compiler warnings about pointer signedness
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7430 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-11 06:08:56 +00:00
Tilghman Lesher
3b80a35a66 Bug 5965 - major bug in AST_LIST_REMOVE
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7429 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-11 01:26:51 +00:00
Tilghman Lesher
f59b27258c Bug 5967
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7427 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-11 01:15:15 +00:00
BJ Weschke
d38fff38f9 Bug #5877
Make sure the digit string from E&M wink DNIS collection is properly null terminated as it grows.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-10 18:10:50 +00:00
Tilghman Lesher
91c5b12f25 Bug 5960
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7406 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-08 23:45:36 +00:00
Tilghman Lesher
894bdd5cda Documenting two keywords that were previously missing
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-08 23:32:08 +00:00
Kevin P. Fleming
d8c58ca6c8 initialize the buffer before using it...
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7386 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-08 01:05:43 +00:00
Kevin P. Fleming
43f7956422 ensure that hints are allowed to use global variable references
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7382 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-07 20:46:55 +00:00
Kevin P. Fleming
96fcc02900 ensure that sound/music files are handled as binary
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7351 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-06 00:23:05 +00:00
Kevin P. Fleming
2e8b6e7f20 replace with unmodified file
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7349 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-06 00:19:17 +00:00
Kevin P. Fleming
3ed93398e9 _really_ don't mess with line endings
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7347 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-06 00:08:19 +00:00
Kevin P. Fleming
d84e0caea8 don't try to expand keywords in this file
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7346 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-06 00:07:48 +00:00
Kevin P. Fleming
5c1da58b90 set this file to binary mode, so it won't be mangled on export/checkout
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7345 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-06 00:02:08 +00:00
Russell Bryant
018c617199 remove ASTERISKVERSIONNUM from the version string given to doxygen
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7340 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-05 06:47:51 +00:00
Russell Bryant
a49f954f6a don't delete dynamic queue members when reloading the static members from a realtime database (issue #5922)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-05 00:09:12 +00:00
Russell Bryant
03a8791440 fix the order of arguments to an error message (issue #5927)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7335 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-05 00:01:17 +00:00
Kevin P. Fleming
78ad17381e use a more efficient way to get the revision number, that will also report if the working copy contains uncommitted modifications
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7329 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-04 18:03:07 +00:00
Tilghman Lesher
5b03803e2f Bug 5925: check for "Unknown", as that's what app_voicemail puts into the field for Unknown callerid
Also, remove useless res checks (initialized to 0; never set)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7310 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-03 19:55:05 +00:00
Olle Johansson
ee1e461a57 Documenting the default registerattempts setting as 0, continue hammering the server for ever and ever ;-)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7299 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-03 01:24:40 +00:00
Tilghman Lesher
a543725311 Turn on executable bits for startup scripts, and fix bash var interpolation for Mandrake
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7285 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 21:12:05 +00:00
Olle Johansson
8c701a0861 Bug #5907. Improve SIP INFO DTMF debugging output. (1.2 & Trunk)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 00:52:13 +00:00
Kevin P. Fleming
5fbe566524 inherit channel variables into channels created by Page() application (issue #5888)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 00:51:15 +00:00
Kevin P. Fleming
e14cf31bc9 allow previous context-searching behavior to be used if desired (issue #5899)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 00:42:40 +00:00
Kevin P. Fleming
0042c03c7e properly handle password changes when mailbox is last line of config file and not followed by a newline (issue #5870)
reformat password changing code to conform to coding guidelines (issue #5870)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7272 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 00:39:00 +00:00
Kevin P. Fleming
41023ecb9c protect agent_bridgedchannel() from segfaulting when there is no bridged channel (issue #5879)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7271 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 00:28:48 +00:00
Kevin P. Fleming
fb8d0a544d allow variables to exist on both 'halves' of the Local channel (issue #5810)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7270 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-02 00:26:12 +00:00
Kevin P. Fleming
acaf8c9cc9 don't block waiting for the Festival server forever when it goes away (issue #5882)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 23:49:44 +00:00
Kevin P. Fleming
0d3fc8d103 ensure channel's scheduling context is freed (issue #5788)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 23:34:58 +00:00
Kevin P. Fleming
9bbfbacacc Makefile 'update' target now supports updating from Subversion repositories (issue #5875)
remove support for 'patches' subdirectory, it's no longer useful


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7266 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 23:18:29 +00:00
Olle Johansson
8e301c629f Changing bug report address to the Asterisk issue tracker
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 23:18:14 +00:00
Olle Johansson
9576d8a081 Removing references to 1.1dev, replacing with 1.2, in documentation files.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7263 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 22:21:13 +00:00
Olle Johansson
7db96672bf Fixing some spelling errors, as well as changing "cvs" to "subversion" in misdn documentation.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 21:38:38 +00:00
Kevin P. Fleming
0d8f099ca2 ensure that 'svn info' output is in the expected language for the script to parse (issue #5880)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7257 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 19:25:06 +00:00
Russell Bryant
0a4d7e5068 use ast_app_separate_args to split arguments (issue #5686)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7251 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 02:33:58 +00:00
Russell Bryant
a32f75b800 fix queue weight feature - compare member interfaces instead of pointers to
the members, since each queue has its own list of members. (issue #5863)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7249 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 01:19:04 +00:00
Russell Bryant
78f37c51ef use '=' instead of '==' for string comparisons. /bin/bash is ok with this, but
/bin/sh is not.  (issue #5885)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7247 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-01 00:44:34 +00:00
Russell Bryant
d6e5eb75ee remove outdated redhat init script and provide the updated one in 'make rpm' (issue #5786)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7244 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 21:31:18 +00:00
Russell Bryant
6f433a7e7b Comment out LD_ASSUME_KERNEL by default.
Print error messages if the asterisk executable or the asterisk configuration
directory are not found. (issue #5785, #5708)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7242 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 21:24:52 +00:00
Russell Bryant
ce2ecb5582 fix DIALEDTIME when call has not been answered (issue #5862)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7234 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 17:39:36 +00:00
Russell Bryant
45c15e8561 do not allow an rtp message with zero type (issue #5749)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 14:27:59 +00:00
Russell Bryant
5e3f4186da fix hint case sensitivity (issue #5856)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7231 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 07:22:42 +00:00
Russell Bryant
d03694df19 add description of the "fromdomain" option (issue #5874)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7228 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 05:26:26 +00:00
Josh Roberson
d52e8fa7d2 backport fix from trunk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7227 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 03:52:18 +00:00
Kevin P. Fleming
77c6cd0bff remove remaining CVS references
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7226 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 03:37:37 +00:00
Kevin P. Fleming
463ebe8b4b port memory leak fix from rev 7223 in trunk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7224 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-30 03:20:42 +00:00
Kevin P. Fleming
a563eab49a remove extraneous svn:executable properties
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 18:24:39 +00:00
Kevin P. Fleming
bf9d4b103d do the multiple-lock check for cond_wait properly...
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 14:26:22 +00:00
Russell Bryant
7dc2449f3a print an error message if invalid arguments are specified
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 06:12:29 +00:00
Russell Bryant
27cc20db11 fix a couple of typos and a buglet
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 05:11:05 +00:00
Kevin P. Fleming
4e04f5f731 if the lock protected a pthread_cond is held recursively, warn before waiting onthe condition
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7213 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 01:25:28 +00:00
Kevin P. Fleming
5ec3844077 remove CVS ignore lists, set SVN ignore lists
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7212 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 00:46:54 +00:00
Kevin P. Fleming
f641c7cd0d port version string computation from trunk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7208 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-28 04:01:06 +00:00
Kevin P. Fleming
49aa54cafc branch renames
remove unneeded branches


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7199 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-27 16:04:52 +00:00
Russell Bryant
e3b81e66a1 issue #5850
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-25 14:17:38 +00:00
Russell Bryant
7bb6b928b5 fix typo - thanks twisted :)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7194 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-23 06:02:32 +00:00
Russell Bryant
ad4dc7c4a9 fix the date
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7193 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-23 05:59:05 +00:00
Russell Bryant
feb9764721 issue #5828
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-23 05:57:10 +00:00
Russell Bryant
8c74501001 issue #5826
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7190 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-23 05:49:35 +00:00
Russell Bryant
5861d3fd64 issue #5829
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7189 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-23 05:43:27 +00:00
Kevin P. Fleming
08acdc6a86 backport fix from HEAD branch
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7186 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 19:34:09 +00:00
Kevin P. Fleming
3b50570c9b backport fix from HEAD branch
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7184 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 19:31:26 +00:00
Kevin P. Fleming
00d7e962a7 backport fix from HEAD branch
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7183 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 19:29:51 +00:00
Russell Bryant
192f7413c2 revert previous change for Darwin
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7174 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 15:57:51 +00:00
Russell Bryant
5bdb8074aa issue #5789
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7170 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 13:40:34 +00:00
Russell Bryant
6abe5e1b23 don't hardcode poll.o for Darwin
fix incorrect portion of yesterday's Solaris fixes


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7169 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 13:23:53 +00:00
Russell Bryant
4612b4ccca issue #5815
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7167 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 13:17:32 +00:00
Russell Bryant
3245bf61a1 issue #5775
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7165 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 02:44:06 +00:00
Russell Bryant
9ee13167bb issue #5787
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7163 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 02:03:23 +00:00
Russell Bryant
ca9633ca9b issue #5794
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 01:00:51 +00:00
Russell Bryant
e04884545c issue #5806
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7155 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-21 00:03:40 +00:00
Russell Bryant
aa2239a050 issue #5773
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7154 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:56:49 +00:00
Russell Bryant
40a1b60cbd issue #5774
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:51:58 +00:00
Russell Bryant
cccb11916f fix logic for n+101 jumps
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7152 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:42:43 +00:00
Russell Bryant
49641825eb issue #5795
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7151 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:36:45 +00:00
Russell Bryant
c14c078405 issue #5792
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7150 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:33:03 +00:00
Russell Bryant
f2af073588 issue #5799
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7149 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:27:28 +00:00
Russell Bryant
b9a5eddb6d fix issue number for previous commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7148 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:22:10 +00:00
Russell Bryant
bffc815375 issue #5791
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7147 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:21:40 +00:00
Russell Bryant
5c3f322364 Shorten the module description (issue #5791)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7146 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-20 23:18:01 +00:00
Russell Bryant
3a6fae817c fix the output of Makefile generated variables to doxygen
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7133 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-18 04:13:39 +00:00
Russell Bryant
d8f74ecb94 Add missing carriage return and line feed to the SDP line indicating that we don't support VAD (issue #5780)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7131 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-17 20:26:27 +00:00
Kevin P. Fleming
f7f2b1b033 fix remaining breakage related to chan_modem modules
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7127 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-17 04:26:07 +00:00
Admin Commit
601ab7ff82 This commit was manufactured by cvs2svn to create branch 'v1-2'.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-2@7126 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-16 22:40:43 +00:00
2920 changed files with 242628 additions and 1453369 deletions

View File

@@ -1 +1 @@
40
8

View File

@@ -1,87 +0,0 @@
name: Bug
description: File a bug report
title: "[bug]: "
labels: ["bug", "triage"]
#assignees:
# - octocat
body:
- type: markdown
attributes:
value: |
Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.
A good first step is for you to review the Asterisk Issue Guidelines if you haven't already. The guidelines detail what is expected from an Asterisk issue report.
Then, if you are submitting a patch, please review the Patch Contribution Process.
Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.
Please note that by submitting data, code, or documentation to Sangoma through GitHub, you accept the Terms of Use present at
https://www.asterisk.org/terms-of-use/.
Thanks for taking the time to fill out this bug report!
- type: dropdown
id: severity
attributes:
label: Severity
options:
- Trivial
- Minor
- Major
- Critical
- Blocker
validations:
required: true
- type: input
id: versions
attributes:
label: Versions
description: Enter one or more versions separated by commas.
validations:
required: true
- type: input
id: components
attributes:
label: Components/Modules
description: Enter one or more components or modules separated by commas.
validations:
required: true
- type: textarea
id: environment
attributes:
label: Operating Environment
description: OS, Disribution, Version, etc.
validations:
required: true
- type: dropdown
id: frequency
attributes:
label: Frequency of Occurrence
options:
- "Never"
- "One Time"
- "Occasional"
- "Frequent"
- "Constant"
- type: textarea
id: description
attributes:
label: Issue Description
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: markdown
attributes:
value: |
[Asterisk Issue Guidelines](https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines)
- type: checkboxes
id: guidelines
attributes:
label: Asterisk Issue Guidelines
options:
- label: Yes, I have read the Asterisk Issue Guidelines
required: true

View File

@@ -1,11 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Asterisk Community Support
url: https://community.asterisk.org
about: Please ask and answer questions here.
- name: Feature Requests (Without Code)
url: https://github.com/asterisk/asterisk-feature-requests/issues
about: Please submit feature requests (without code) here.
- name: Improvement Requests (Without Code)
url: https://github.com/asterisk/asterisk-feature-requests/issues
about: Please submit improvement requests (without code) here.

View File

@@ -1,27 +0,0 @@
name: Improvement
description: Submit an improvement to existing functionality
title: "[improvement]: "
labels: ["improvement", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.
A good first step is for you to review the Asterisk Issue Guidelines if you haven't already. The guidelines detail what is expected from an Asterisk issue report.
Then, if you are submitting a patch, please review the Patch Contribution Process.
Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.
Please note that by submitting data, code, or documentation to Sangoma through GitHub, you accept the Terms of Use present at
https://www.asterisk.org/terms-of-use/.
Thanks for taking the time to fill out this bug report!
- type: textarea
id: description
attributes:
label: Improvement Description
description: Describe the improvement in as much detail as possible
validations:
required: true

View File

@@ -1,27 +0,0 @@
name: New Feature Submission
description: Submit a New Feature
title: "[new-feature]: "
labels: ["new-feature", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.
A good first step is for you to review the Asterisk Issue Guidelines if you haven't already. The guidelines detail what is expected from an Asterisk issue report.
Then, if you are submitting a patch, please review the Patch Contribution Process.
Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.
Please note that by submitting data, code, or documentation to Sangoma through GitHub, you accept the Terms of Use present at
https://www.asterisk.org/terms-of-use/.
Thanks for taking the time to fill out this bug report!
- type: textarea
id: description
attributes:
label: Feature Description
description: Describe the new feature in as much detail as possible
validations:
required: true

View File

@@ -1,24 +0,0 @@
name: CreateDocs
on:
workflow_dispatch:
inputs:
branches:
description: "JSON array of branches: ['18','20'] (no spaces) or leave blank for all current branches."
required: false
type: string
schedule:
# Times are UTC
- cron: '0 04 * * *'
jobs:
CreateDocs:
if: ${{ ( github.event_name == 'schedule' && fromJSON(vars.WIKIDOCS_ENABLE) ) || github.event_name == 'workflow_dispatch' }}
strategy:
fail-fast: false
matrix:
branch: ${{ fromJSON(inputs.branches || vars.WIKIDOC_BRANCHES) }}
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskCreateDocs.yml@main
with:
asterisk_repo: ${{ github.repository }}
base_branch: ${{ matrix.branch }}

View File

@@ -1,15 +0,0 @@
name: Issue Opened
run-name: "Issue ${{github.event.number}} ${{github.event.action}} by ${{github.actor}}"
on:
issues:
types: opened
jobs:
triage:
runs-on: ubuntu-latest
steps:
- name: initial labeling
uses: andymckay/labeler@master
with:
add-labels: "triage"
ignore-if-labeled: true

View File

@@ -1,11 +0,0 @@
name: NightlyAdmin
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
jobs:
NightlyAdmin:
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskNightlyAdmin.yml@main
secrets:
ASTERISKTEAM_PAT: ${{ secrets.ASTERISKTEAM_PAT }}

View File

@@ -1,25 +0,0 @@
name: NightlyTests
on:
workflow_dispatch:
inputs:
branches:
required: false
type: string
description: "Array of branches to run: ['21','master']. Defaults to NIGHTLYTEST_BRANCHES"
group_list:
required: false
type: string
description: "Array of test groups to run: ['ari1','channels']. Defaults to NIGHTLYTEST_LIST"
schedule:
# Monday-Saturday 2am
- cron: '0 2 * * 1-6'
jobs:
NightlyTests:
name: NightlyTests
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskNightlyTest.yml@main
with:
branches: ${{ inputs.branches || vars.NIGHTLYTEST_BRANCHES }}
group_list: ${{ inputs.group_list || vars.NIGHTLYTEST_LIST }}
realtime: false

View File

@@ -1,14 +0,0 @@
name: PRCPCheck
run-name: "PR ${{ github.event.number }} CPCheck by ${{ github.actor }}"
on:
pull_request_target:
types: [ labeled ]
jobs:
PRCPCheck:
name: "run-cpcheck"
if: ${{ github.event.label.name == vars.CHERRY_PICK_TEST_LABEL }}
concurrency:
group: cpcheck-${{ github.triggering_actor }}-${{ github.head_ref }}
cancel-in-progress: true
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskPRCPCheck.yml@main

View File

@@ -1,14 +0,0 @@
name: PRCheck
run-name: "PR ${{ github.event.number }} Check(${{github.event.action}}) by ${{ github.actor }}"
on:
pull_request_target:
types: [ opened, reopened, synchronize, labeled ]
jobs:
PRCheck:
name: "run-check"
if: ${{ (github.event.action != 'labeled') || (github.event.action == 'labeled' && github.event.label.name == vars.RECHECKPR_LABEL) }}
concurrency:
group: check-${{ github.triggering_actor }}-${{ github.head_ref }}
cancel-in-progress: true
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskPRCheck.yml@main

View File

@@ -1,14 +0,0 @@
name: PRMerge
run-name: "PR ${{ github.event.number }} Merge by ${{ github.actor }}"
on:
pull_request_target:
types: [ labeled ]
jobs:
PRMerge:
name: "run-merge"
if: contains(fromJSON(vars.MERGE_APPROVED_LABELS), github.event.label.name)
concurrency:
group: merge-${{ github.triggering_actor }}-${{ github.head_ref }}
cancel-in-progress: true
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskPRMerge.yml@main

View File

@@ -1,94 +0,0 @@
name: Releaser
run-name: ${{ github.actor }} is creating ${{vars.PRODUCT_NAME}} release ${{inputs.new_version}}
on:
workflow_dispatch:
inputs:
release_type:
description: |
Release Type:
required: true
type: choice
options:
- STANDARD
- SECURITY
- HOTFIX
default: STANDARD
new_version:
description: |
New Version:
Examples:
20.4.0-rc1, 20.4.0-rc2, 20.4.0, 20.4.1
certified-20.4-cert1-rc1, certified-20.4-cert1
required: true
type: string
advisories:
description: |
Comma separated list of advisories for SECURITY releases.
NO SPACES
Example: GHSA-4xjp-22g4-9fxm,GHSA-4xjp-22g4-zzzz
required: false
type: string
skip_cherry_pick:
description: |
Skip automatic cherry-pick for regular RC1 releases? USE WITH CAUTION!
required: true
type: boolean
default: false
force_cherry_pick:
description: |
Force cherry-pick for non-RC1 releases? USE WITH CAUTION!
required: true
type: boolean
default: false
skip_test_builds:
description: |
Skip test builds? USE WITH CAUTION!
required: true
type: boolean
default: false
push_release_branches:
description: |
Push release branches live?
required: true
type: boolean
default: false
create_github_release:
description: |
Create the GitHub release?
required: true
type: boolean
default: false
push_tarballs:
description: |
Push tarballs to downloads server?
required: true
type: boolean
default: false
send_email:
description: |
Send announcement emails?
required: true
type: boolean
default: false
jobs:
Releaser:
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskRelease.yml@main
with:
release_type: ${{inputs.release_type}}
new_version: ${{inputs.new_version}}
advisories: ${{inputs.advisories}}
skip_cherry_pick: ${{inputs.skip_cherry_pick}}
force_cherry_pick: ${{inputs.force_cherry_pick}}
skip_test_builds: ${{inputs.skip_test_builds}}
push_release_branches: ${{inputs.push_release_branches}}
create_github_release: ${{inputs.create_github_release}}
push_tarballs: ${{inputs.push_tarballs}}
send_email: ${{inputs.send_email}}
secrets:
gpg_private_key: ${{secrets.ASTDEV_GPG_PRIV_KEY}}
asteriskteam_gh_token: ${{secrets.ASTERISKTEAM_PAT}}
asteriskteam_email_username: ${{secrets.ASTERISKTEAM_SES_KEY_ID}}
asteriskteam_email_secret: ${{secrets.ASTERISKTEAM_SES_KEY_SECRET}}
deploy_ssh_priv_key: ${{secrets.DOWNLOADS_DEPLOY_SSH_PRIV_KEY}}
deploy_ssh_username: ${{secrets.DOWNLOADS_DEPLOY_SSH_USERNAME}}

View File

@@ -1,25 +0,0 @@
name: WeeklyTests
on:
workflow_dispatch:
inputs:
branches:
required: false
type: string
description: "Array of branches to run: ['21','master']. Defaults to NIGHTLYTEST_BRANCHES"
group_list:
required: false
type: string
description: "Array of test groups to run: ['ari1','channels']. Defaults to NIGHTLYTEST_LIST"
schedule:
# Sunday 2am
- cron: '0 2 * * 0'
jobs:
WeeklyTests:
name: WeeklyTests
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskNightlyTest.yml@main
with:
branches: ${{ inputs.branches || vars.NIGHTLYTEST_BRANCHES }}
group_list: ${{ inputs.group_list || vars.NIGHTLYTEST_LIST }}
realtime: true

40
.gitignore vendored
View File

@@ -1,40 +0,0 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
# See .gitignore in subdirectories for more ignored files
*~
*.[oadi]
*.gz
*.ii
*.oo
*.eo
*.so
*.exports
*.moduleinfo
*.makeopts
*.makedeps
.lastclean
/.pc
aclocal.m4
autom4te.cache
config.log
config.status
defaults.h
makeopts
makeopts.embed_rules
menuselect-tree
*.sha1
*.pyc
*.gcno
*.gcda
latex
doxygen.log
out/
*.orig
tests/CI/output
.develvars

1
.lastclean Normal file
View File

@@ -0,0 +1 @@
8

View File

@@ -1 +1 @@
20.18.2
1.2.8-netsec

View File

@@ -1,11 +0,0 @@
# This is a convenience script for systems on which BSD make is the default,
# such that typing 'make' will do what people expect, instead of producing an
# error (due to incompatibilities between BSD make and GNU make).
.include "makeopts"
all::
$(MAKE)
$(.TARGETS)::
$(MAKE) $(.TARGETS)

12
BUGS
View File

@@ -1,22 +1,22 @@
Asterisk Bug Tracking Information
=================================
To learn about and report Asterisk bugs, please visit
To learn about and report Asterisk bugs, please visit
the official Asterisk Bug Tracker at:
https://github.com/asterisk/asterisk/issues/
http://bugs.digium.com
For more information on using the bug tracker, or to
learn how you can contribute by acting as a bug marshal
For more information on using the bug tracker, or to
learn how you can contribute by acting as a bug marshall
please see:
https://docs.asterisk.org/Asterisk-Community/Asterisk-Issue-Guidelines/
http://www.digium.com/index.php?menu=bugguidelines
If you would like to submit a feature request, please
resist the temptation to post it to the bug tracker.
Feature requests should be posted to the asterisk-dev
mailing list, located at:
http://lists.digium.com
http://lists.digium.com
Thank you!

127
CHANGES Normal file
View File

@@ -0,0 +1,127 @@
Changes since Asterisk 1.2.0-beta2:
* Cygwin build system portability
* Optional generation of outbound silence during channel recording
Changes since Asterisk 1.2.0-beta1:
* Many, many bug fixes
* Documentation and sample configuration updates
* Vastly improved presence/subscription support in the SIP channel driver
* A new (experimental) mISDN channel driver
* A new monitoring application (MixMonitor)
* More portability fixes for non-Linux platforms
* New dialplan functions replacing old applications
* Significant deadlock and performance upgrades for the Manager interface
* An upgrade to the 'new' dialplan expression parser for all users
* New Zaptel echo cancellers with improved performance
* Support for the latest OSP toolkit from TransNexus
* Support user-controlled volume adjustment in MeetMe application
* More dialplan applications now return status variables instead of priority jumping
* Much more powerful ENUM support in the dialplan
* SIP domain support for authentication and virtual hosting
* Many PRI protocol updates and fixes, including more complete Q.SIG support
* New applications: Pickup() and Page()
Changes since Asterisk 1.0:
This list currently only containts changes made from the end of November until
March 26, 2005.
* Add new applications:
-- AgentMonitorOutgoing
-- Curl
-- ExecIf
-- ExecIfTime
-- IAX2Provision
-- MacroExit
-- MacroIf
-- PauseQueueMember
-- ReadFile
-- SetRDNIS
-- SIPAddHeader
-- SIPGetHeader
-- StartMusicOnHold
-- StopMusicOnHold
-- UnpauseQueueMember
-- WaitForSilence
-- While / EndWhile
* app Answer
-- added delay option
* app ChanIsAvail
-- added 's' option
* app Dial
-- add option to specify the class for musiconhold with m option
* app EnumLookup
-- added "reload enum" for configuration
* app Goto
-- added relative priorities
* app GotoIf
-- added relative priorities
* app MeetMe
-- added 'i' option
-- added 'r' option
-- added 'T' option
-- added 'P' option
-- added 'c' option
-- added adminpin to meetme.conf
-- added reload command
* app PrivacyManager
-- add config file privacy.conf
* app queue
-- queues.conf
-- added persistentmembers option to queues.conf
-- changed music option to musiconhold
-- added weight option
-- added note about why agent groups probably shouldn't be used
-- added timeoutrestart option
* app Read
-- added attempts parameter
-- added timeout parameter
* app Record
-- added 'q' option
* app SendDTMF
-- add timeout option
* app SMS
-- document alternative syntax for queueing messages
* app Voicemail
-- add info about VM_CATEGORY
-- voicemail.conf
-- added usedirectory option
-- added VM_CIDNUM and VM_CIDNAME in message config
* chan IAX2
-- new jitterbuffer
-- added setvar option
-- added regex to iax2 show peers/users
-- allow multiple bindaddr lines in iax.conf
-- added reload command
-- added forcejitterbuffer option
-- added note about specifying bindport before bindaddr
-- added trunktimestamps option
* chan Agent
-- added agent logoff CLI command
* chan OSS
-- added Flash CLI command
* chan SIP
-- added setvar option
-- added compactheaders option
-- added usereqphone option
-- added registertimeout option
-- added externhost option
-- added sip notify CLI command
-- added sip_notify.conf
-- added allowguest option
* chan Zap
-- added hanguponplarityswitch option
-- added sendcalleridafter option
-- added priresetinterval option
-- added TON/NPI config options (the ones right above the resetinterval option)
-- added answeronpolarityswitch option
-- added "never" for resetinterval
* extensions
-- allow '*' when including files (#include "sip-*.conf")
-- added eswitch
* General
-- added #exec syntax for including output from a command
-- added show features CLI command
-- added configuration templates for category inheritance

View File

@@ -1 +0,0 @@
ChangeLogs/ChangeLog-20.18.2.html

View File

@@ -1 +0,0 @@
ChangeLogs/ChangeLog-20.18.2.md

373
CREDITS
View File

@@ -1,322 +1,101 @@
=== DEVELOPMENT SUPPORT ===
We'd like to thank the following companies for helping fund development of
Asterisk:
We'd like to thank the following companies for helping fund development of
Asterisk.
Pilosoft, Inc. - for supporting ADSI development in Asterisk
* Pilosoft, Inc. - for supporting ADSI development in Asterisk
Asterlink, Inc. - for supporting broad Asterisk development
* Asterlink, Inc. - for supporting broad Asterisk development
GFS - for supporting ALSA development
* GFS - for supporting ALSA development
Telesthetic - for supporting SIP development
* Telesthetic - for supporting SIP development
Christos Ricudis - for substantial code contributions
* Christos Ricudis - for substantial code contributions
nic.at - ENUM support in Asterisk
* nic.at - ENUM support in Asterisk
Paul Bagyenda, Digital Solutions - for initial Voicetronix driver development
* Paul Bagyenda, Digital Solutions - for initial Voicetronix driver
development.
* John Todd, TalkPlus, Inc. and JR Richardson, Ntegrated Solutions.
for funding the development of SIP Session Timers support.
* Omnitor AB, Gunnar Hellström, for funding work with videocaps,
T.140 RED, originate with video/text and many more
contributions.
* ClearIT AB for work with meetme, res_mutestream, RTCP, manager and
tonezones.
* NetNation Communications (www.netnation.com)
Kevin Lindsay <kevinl@netnation.com>
Persistent Dynamic Queue Members
* inAccess Networks (work funded by Hellas On Line (HOL) www.hol.gr)
Priorities in queues
* Voop AS, Nuvio Inc, Inotel S.A and Foniris Telecom A/S - funding for
rewrite of SIP transfers
=== WISHLIST CONTRIBUTORS ===
We'd like to thank the following for contributing to our wishlist
* Jeremy McNamara - SpeeX support
* Nick Seraphin - RDNIS support
* Gary - Phonejack ADSI (in progress)
* Wasim - Hangup detect
=== WISHLIST CONTRIBUTERS ===
Jeremy McNamara - SpeeX support
Nick Seraphin - RDNIS support
Gary - Phonejack ADSI (in progress)
Wasim - Hangup detect
=== HARDWARE DONORS ===
We'd like to thank the following for granting access to hardware for testing.
* Thanks to QuickNet Technologies for their donation of an Internet
PhoneJack and Linejack card to the project.
(http://www.quicknet.net)
* Thanks to VoipSupply for their donation of Sipura ATAs to the project
for T.38 testing. (http://www.voipsupply.com)
* Thanks to Grandstream for their donation of ATAs to the project for
T.38 testing. (http://www.grandstream.com)
* Thanks to QuickNet Technologies for their donation of an Internet
PhoneJack and Linejack card to the project. (http://www.quicknet.net)
=== MISCELLANEOUS PATCHES ===
We'd like to thank the following for their patches
* Jim Dixon - Zapata Telephony and app_rpt
http://www.zapatatelephony.org/app_rpt.html
* Russell Bryant - Asterisk release manager and countless enhancements
and bug fixes. russell(AT)digium.com
* Anthony Minessale II - Countless big and small fixes, and relentless
forward push. ChanSpy, ForkCDR, ControlPlayback, While/EndWhile,
DumpChan, Dictate, MacroIf, ExecIf, ExecIfTime, RetryDial,
MixMonitor applications; many realtime concepts and
implementation pieces, including res_config_odbc; format_slin;
cdr_custom; several features in Dial including L(), G() and
enhancements to M() and D(); several CDR enhancements including
CDR variables; attended transfer; one touch record; native MOH;
manager eventmask; command line '-t' flag to allow
recording/voicemail on nfs shares; #exec command and multiline
comments in config files; setvar in iax and sip configs.
anthm(AT)signalwire.com http://www.signalwire.com
* James Golovich - Innumerable contributions, including SIP TCP and TLS
support. You can find him and asterisk-perl at
http://asterisk.gnuinter.net
* Andre Bierwirth - Extension hints and status
* Jean-Denis Girard - Various contributions from the South Pacific
Islands jd-girard(AT)sysnux.pf http://www.sysnux.pf
* William Jordan / Vonage - MySQL enhancements to Voicemail
wjordan(AT)vonage.com
* Jac Kersing - Various fixes
* Steven Critchfield - Seek and Trunc functions for playback and
recording critch(AT)basesys.com
* Jefferson Noxon - app_lookupcidname, app_db, and various other
contributions
* Klaus-Peter Junghanns - in-band DTMF on SIP and MGCP
* Ross Finlayson - Dynamic RTP payload support
* Mahmut Fettahlioglu - Audio recording, music-on-hold changes, alaw
file format, and various fixes. Can be contacted at
mahmut(AT)oa.com.au
* James Dennis - Cisco SIP compatibility patches to work with SIP
service providers. Can be contacted at asterisk(AT)jdennis.net
* Tilghman Lesher - ast_localtime(); ast_say_date_with_format();
GotoIfTime, SayUnixTime, HasNewVoicemail applications;
CUT, SORT, EVAL, CURL, FIELDQTY, STRFTIME, some QUEUE*
functions; func_odbc, cdr_adaptive_odbc, and other innumerable
bug fixes. tilghman(AT)digium.com
http://asterisk.drunkcoder.com
* Jayson Vantuyl - Manager protocol changes, various other bugs.
jvantuyl(AT)computingedge.net
* Thorsten Lockert - OpenBSD, FreeBSD ports, making MacOS X port run on
10.3, dialplan include verification, route lookup on OpenBSD,
SNMP agent support (res_snmp), various other bugs.
tholo(AT)sigmasoft.com
* Josh Roberson - chan_zap reload support, Advanced Voicemail Features,
& other misc. patches. josh(AT)asteriasgi.com
http://www.asteriasgi.com
* William Waites - syslog support, SIP NAT traversal for SIP-UA.
ww(AT)styx.org
* Rich Murphey - Porting to FreeBSD, NetBSD, OpenBSD, and Darwin.
rich(AT)whiteoaklabs.com http://whiteoaklabs.com
* Simon Lockhart - Porting to Solaris (based on work of Logan ???)
simon(AT)slimey.org
* Olle E. Johansson - SIP RFC compliance, documentation and testing,
testing, SIP outbound proxy support, Manager 1.1 update, SIP
transfer support, SIP presence support, SIP call state updates
(dialog-info), QUEUE_EXISTS function, device state provider
architecture, multiparking (together with mvanbaak), meetme and
parking device states, MiniVM - the small voicemail system,
RTP improvements, RTCP enhancements, DTMF timing fixes,
many documentation updates/corrections, and many bug fixes.
oej(AT)edvina.net, http://edvina.net
* Steve Kann - new jitter buffer for IAX2
stevek(AT)stevek.com
* Constantine Filin - major contributions to the Asterisk Realtime
Architecture
* Steve Murphy - privacy support, $[ ] parser upgrade, AEL2 parser
upgrade. murf(AT)digium.com
* Claude Patry - bug fixes, feature enhancements, and bug marshalling
cpatry(AT)gmail.com
* Miroslav Nachev, miro(AT)space-comm.com
COSMOS Software Enterprises, Ltd.
Variable for No Answer Timeout for Attended Transfer
* Slav Klenov & Vanheuverzwijn Joachim - development of the generic
jitterbuffer Securax Ltd. info(AT)securax.be
* Roy Sigurd Karlsbakk - providing funding for generic jitterbuffer
development roy(AT)karlsbakk.net, Briiz Telecom AS
* Voop AS, Nuvio Inc, Inotel S.A and Foniris Telecom A/S - rewrite
of SIP transfers
* Philippe Sultan - RADIUS CDR module, many fixes to res_jabber and
gtalk/jingle channel drivers. INRIA, http://www.inria.fr/
* John Martin, Aupix - Improved video support in the SIP channel
T.140 text support in RTP/SIP
* Steve Underwood - Provided T.38 pass through support.
* George Konstantoulakis - Support for Greek in voicemail added by
InAccess Networks (work funded by HOL, www.hol.gr)
gkon(AT)inaccessnetworks.com
* Daniel Nylander - Support for Swedish and Norwegian languages in
voicemail. http://www.danielnylander.se/
* Stojan Sljivic - An option for maximum number of messsages per
mailbox in voicemail. Also an issue with voicemail
synchronization has been fixed. GDS Partners
www.gdspartners.com stojan.sljivic(AT)gdspartners.com
* Bartosz Supczinski - Support for Polish added by DIR (www.dir.pl)
Bartosz.Supczinski(AT)dir.pl
* James Rothenberger - Support for IMAP storage integration added by
OneBizTone LLC Work funded by University of Pennsylvania
jar(AT)onebiztone.com
* Paul Cadach - Bringing chan_h323 up to date, bug fixes, and more!
* Voop AS - Financial support for a lot of work with the SIP driver
and the IAX trunk MTU patch
* Cedric Hans - Development of chan_unistim cedric.hans(AT)mlkj.net
* Takao Takahashi & Mina Naguib - chan_unistim improvements for
smaller devices
* Sergio Fadda - console_video: video support for chan_oss and
chan_alsa
* Marta Carbone - console_video and the astobj2 framework
* Luigi Rizzo - astobj2, console_video, windows build, chan_oss cleanup,
and a bunch of infrastructure work (loader, new_cli, ...)
* Brett Bryant - digit option for musiconhold selection, ENUMQUERY and
ENUMRESULT functions, feature group configuration for
features.conf, per-file CLI debug and verbose settings, TCP and
TLS support for SIP, and various bug fixes.
brettbryant(AT)gmail.com
* Sergey Tamkovich - Realtime support for MusicOnHold, store and destroy
realtime methods and implementations for odbc, sqlite, and pgsql
realtime drivers, attended transfer updates, multiple speeds for
ControlPlayback, and multiple bug fixes See
http://voip-info.org/users/view/sergee serg(AT)voipsolutions.ru
* Klaus Darillon - the SIPremoveHeader function in chan_sip and SIP Path
Support.
* Moises Silva (moy) - for writing LibOpenR2, and providing support for
it in chan_dahdi moises.silva(AT)gmail.com
* Eliel C. Sardanons - XML documentation implementation, and various
other contributions eliels(AT)gmail.com
* Sean Bright - Snom call pickup, newt interface for menuselect,
cdr_tds rewrite, countless other improvements, fixes, and good
ideas. sean(AT)malleable.com
* Jan Kaláb - Calendaring support for Exchange Server 2007+ via
Exchange Web Services.
* University of Oslo (uio.no), Norway - SIP Max-Forwards setting
support (developed by oej)
* FCCN, Lissabon, Portugal - SIP show channels CLI command
(developed by oej)
* Viagenie, Canada - IPv6 support in socket layers and SIP
implementation Developers: Marc Blanchet, Simon Perreault and
Jean-Philippe Dionne
* ClearIT AB, Sweden - res_mutestream, queue_exists and various other
patches (developed by oej)
* Despegar.com, Argentina - AstData API implementation, also sponsored
by Google as part of the gsoc/2009 program (developed by Eliel)
* Philippe Lindheimer - DEV_STATE additions to CCSS
* Andrew "lathama" Latham <lathama at gmail dot com>
Doxygen, HTTP-Static, Phoneprov, make update
* George Joseph - PJSIP CLI commands, PJSIP_HEADER dialplan function
Jim Dixon - Zapata Telephony and app_rpt
http://www.zapatatelephony.org/app_rpt.html
Russell Bryant - Asterisk 1.0 maintainer and misc. enhancements
russelb@clemson.edu
Anthony Minessale II - Countless big and small fixes, and relentless forward push
anthmct@yahoo.com http://www.asterlink.com
James Golovich - Innumerable contributions
You can find him and asterisk-perl at http://asterisk.gnuinter.net
Andre Bierwirth - Extension hints and status
Oliver Daudey - ISDN4Linux fixes
Pauline Middelink - ISDN4Linux patches and some general patches.
She can be found at http://www.polyware.nl/~middelink/En/
Jean-Denis Girard - Various contributions from the South Pacific Islands
jd-girard@esoft.pf http://www.esoft.pf
William Jordan / Vonage - MySQL enhancements to Voicemail
wjordan@vonage.com
Jac Kersing - Various fixes
Steven Critchfield - Seek and Trunc functions for playback and recording
critch@basesys.com
Jefferson Noxon - app_lookupcidname, app_db, and various other contributions
Klaus-Peter Junghanns - in-band DTMF on SIP and MGCP
Ross Finlayson - Dynamic RTP payload support
Mahmut Fettahlioglu - Audio recording, music-on-hold changes, alaw file
format, and various fixes. Can be contacted at mahmut@oa.com.au
James Dennis - Cisco SIP compatibility patches to work with SIP service
providers. Can be contacted at asterisk@jdennis.net
Tilghman Lesher - ast_localtime(); ast_say_date_with_format();
GotoIfTime, Random, SayUnixTime, HasNewVoicemail applications;
CUT, SORT, EVAL, CURL, FIELDQTY, STRFTIME, QUEUEAGENT* functions;
and other innumerable bug fixes. http://asterisk.drunkcoder.com/
Jayson Vantuyl - Manager protocol changes, various other bugs.
jvantuyl@computingedge.net
Thorsten Lockert - OpenBSD, FreeBSD ports, making MacOS X port run on 10.3,
dialplan include verification, route lookup on OpenBSD, various other
bugs. tholo@sigmasoft.com
Brian West - ODBC support and Bug Marshaling
Josh Roberson - chan_zap reload support, Advanced Voicemail Features, other misc. patches,
and Bug Marshalling. - josh@asteriasgi.com, http://www.asteriasgi.com
William Waites - syslog support, SIP NAT traversal for SIP-UA. ww@styx.org
Rich Murphey - Porting to FreeBSD, NetBSD, OpenBSD, and Darwin.
rich@whiteoaklabs.com http://whiteoaklabs.com
Simon Lockhart - Porting to Solaris (based on work of Logan ???)
simon@slimey.org
Olle E. Johansson - SIP RFC compliance, documentation and testing, testing, testing
oej@edvina.net, http://edvina.net
Steve Kann - new jitter buffer for IAX2
stevek@stevek.com
Constantine Filin - major contributions to the Asterisk Realtime Architecture
Steve Murphy - privacy support
Claude Patry - bug fixes, feature enhancements, and bug marshalling
cpatry@gmail.com
=== OTHER CONTRIBUTIONS ===
We'd like to thank the following for their listed contributions.
* John Todd - Monkey sounds and associated teletorture prompt
* Michael Jerris - bug marshaling
* Leif Madsen, Jared Smith and Jim van Meggelen - the Asterisk book
available under a Creative Commons License at
http://www.asteriskdocs.org
* Brian M. Clapper - poll.c emulation
This product includes software developed by
Brian M. Clapper <bmc(AT)clapper.org>
John Todd - Monkey sounds and associated teletorture prompt
Michael Jerris - bug marshaling
Leif Madsen, Jared Smith and Jim van Meggelen - the Asterisk book
available under a Creative Commons License at http://www.asteriskdocs.org
=== HOLD MUSIC ===
We'd like to thank the following for hold music
* Music provided by www.opsound.org
Music provided by www.opsound.org
=== OTHER SOURCE CODE IN ASTERISK ===
We'd like to thank the following for their code use
Digium did not implement the codecs in Asterisk. Here is the copyright on the
GSM source:
* Asterisk uses libedit, the lightweight readline replacement from
NetBSD.
* The cdr_radius module uses libradiusclient-ng, which is also from
NetBSD.
* They are BSD-licensed and require the following statement:
This product includes software developed by the NetBSD
Foundation, Inc. and its contributors.
* Digium did not implement the codecs in Asterisk.
Here is the copyright on the GSM source:
Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
Technische Universitaet Berlin
Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
Technische Universitaet Berlin
Any use of this software is permitted provided that this notice is not
removed and that neither the authors nor the Technische Universitaet Berlin

2392
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,562 +0,0 @@
## Change Log for Release asterisk-20.10.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.10.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.9.3...20.10.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.10.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 24
- Commit Authors: 9
- Issues Resolved: 18
- Security Advisories Resolved: 0
### User Notes:
- #### res_pjsip_notify: add dialplan application
A new dialplan application PJSIPNotify is now available
which can send SIP NOTIFY requests from the dialplan.
The pjsip send notify CLI command has also been enhanced to allow
sending NOTIFY messages to a specific channel. Syntax:
pjsip send notify <option> channel <channel>
- #### channel: Add multi-tenant identifier.
tenantid has been added to channels. It can be read in
dialplan via CHANNEL(tenantid), and it can be set using
Set(CHANNEL(tenantid)=My tenant ID). In pjsip.conf, it is recommended to
use the new tenantid option for pjsip endpoints (e.g., tenantid=My
tenant ID) so that it will show up in Newchannel events. You can set it
like any other channel variable using set_var in pjsip.conf as well, but
note that this will NOT show up in Newchannel events. Tenant ID is also
available in CDR and can be accessed with CDR(tenantid). The peer tenant
ID can also be accessed with CDR(peertenantid). CEL includes tenant ID
as well if it has been set.
- #### res_pjsip_config_wizard.c: Refactor load process
The res_pjsip_config_wizard.so module can now be reloaded.
### Upgrade Notes:
- #### channel: Add multi-tenant identifier.
A new versioned struct (ast_channel_initializers) has been
added that gets passed to __ast_channel_alloc_ap. The new function
ast_channel_alloc_with_initializers should be used when creating
channels that require the use of this struct. Currently the only value
in the struct is for tenantid, but now more fields can be added to the
struct as necessary rather than the __ast_channel_alloc_ap function. A
new option (tenantid) has been added to endpoints in pjsip.conf as well.
CEL has had its version bumped to include tenant ID.
### Commit Authors:
- Alexei Gradinari: (2)
- Ben Ford: (1)
- Cade Parker: (1)
- George Joseph: (10)
- Jaco Kroon: (1)
- Jean-Denis Girard: (1)
- Mike Bradeen: (3)
- Sean Bright: (2)
- Tinet-Mucw: (3)
## Issue and Commit Detail:
### Closed Issues:
- 740: [new-feature]: Add multi-tenant identifier to chan_pjsip
- 763: [bug]: autoservice thread stuck in an endless sleep
- 780: [bug]: Infinite loop of "Indicated Video Update", max CPU usage
- 799: [improvement]: Add PJSIPNOTIFY dialplan application
- 801: [bug]: res_stasis: Occasional 200ms delay adding channel to a bridge
- 809: [bug]: CLI stir_shaken show verification kills asterisk
- 816: [bug]: res_pjsip_config_wizard doesn't load properly if res_pjsip is loaded first
- 831: [bug]: app_voicemail ODBC
- 845: [bug]: Buffer overflow in handling of security mechanisms in res_pjsip
- 847: [bug]: Asterisk not using negotiated fall-back 8K digits
- 854: [bug]: wrong properties in stir_shaken.conf.sample
- 856: [bug]: res_pjsip_sdp_rtp leaks astobj2 ast_format
- 861: [bug]: ChanSpy unable to read audiohook read direction frame when no packet lost on both side of the call
- 876: [bug]: ChanSpy unable to write whisper_audiohook when set flag OPTION_READONLY
- 879: [bug]: res_stir_shaken/verification.c: Getting verification errors when global_disable=yes
- 884: [bug]: A ':' at the top of in stir_shaken.conf make Asterisk producing a core file when starting
- 889: [bug]: res_stir_shaken/verification.c has a stale include for jansson.h that can cause compilation to fail
- 904: [bug]: stir_shaken: attest_level isn't being propagated correctly from attestation to profile to tn
### Commits By Author:
- #### Alexei Gradinari (2):
- res_pjsip_sdp_rtp fix leaking astobj2 ast_format
- autoservice: Do not sleep if autoservice_stop is called within autoservice thr..
- #### Ben Ford (1):
- channel: Add multi-tenant identifier.
- #### Cade Parker (1):
- chan_mobile: decrease CHANNEL_FRAME_SIZE to prevent delay
- #### George Joseph (10):
- bridge_softmix: Fix queueing VIDUPDATE control frames
- res_pjsip_config_wizard.c: Refactor load process
- stir_shaken: CRL fixes and a new CLI command
- manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
- stir_shaken.conf.sample: Fix bad references to private_key_path
- security_agreements.c: Refactor the to_str functions and fix a few other bugs
- res_stir_shaken: Check for disabled before param validation
- res_stir_shaken.c: Fix crash when stir_shaken.conf is invalid
- res_stir_shaken: Remove stale include for jansson.h in verification.c
- stir_shaken: Fix propagation of attest_level and a few other values
- #### Jaco Kroon (1):
- configure: Use . file rather than source file.
- #### Jean-Denis Girard (1):
- app_voicemail: Fix sql insert mismatch caused by cherry-pick
- #### Mike Bradeen (3):
- res_stasis: fix intermittent delays on adding channel to bridge
- res_pjsip_notify: add dialplan application
- res_pjsip_sdp_rtp: Use negotiated DTMF Payload types on bitrate mismatch
- #### Sean Bright (2):
- alembic: Make 'revises' header comment match reality.
- res_pjsip_logger.c: Fix 'OPTIONS' tab completion.
- #### Tinet-mucw (3):
- res_pjsip_sdp_rtp.c: Fix DTMF Handling in Re-INVITE with dtmf_mode set to auto
- app_chanspy.c: resolving the issue with audiohook direction read
- app_chanspy.c: resolving the issue writing frame to whisper audiohook.
### Commit List:
- stir_shaken: Fix propagation of attest_level and a few other values
- res_stir_shaken: Remove stale include for jansson.h in verification.c
- res_stir_shaken.c: Fix crash when stir_shaken.conf is invalid
- res_stir_shaken: Check for disabled before param validation
- app_chanspy.c: resolving the issue writing frame to whisper audiohook.
- app_voicemail: Fix sql insert mismatch caused by cherry-pick
- res_pjsip_sdp_rtp: Use negotiated DTMF Payload types on bitrate mismatch
- app_chanspy.c: resolving the issue with audiohook direction read
- security_agreements.c: Refactor the to_str functions and fix a few other bugs
- res_pjsip_sdp_rtp fix leaking astobj2 ast_format
- stir_shaken.conf.sample: Fix bad references to private_key_path
- res_pjsip_logger.c: Fix 'OPTIONS' tab completion.
- alembic: Make 'revises' header comment match reality.
- chan_mobile: decrease CHANNEL_FRAME_SIZE to prevent delay
- res_pjsip_notify: add dialplan application
- manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
- channel: Add multi-tenant identifier.
- configure: Use . file rather than source file.
- res_stasis: fix intermittent delays on adding channel to bridge
- res_pjsip_sdp_rtp.c: Fix DTMF Handling in Re-INVITE with dtmf_mode set to auto
- stir_shaken: CRL fixes and a new CLI command
- res_pjsip_config_wizard.c: Refactor load process
- bridge_softmix: Fix queueing VIDUPDATE control frames
### Commit Details:
#### stir_shaken: Fix propagation of attest_level and a few other values
Author: George Joseph
Date: 2024-09-24
attest_level, send_mky and check_tn_cert_public_url weren't
propagating correctly from the attestation object to the profile
and tn.
* In the case of attest_level, the enum needed to be changed
so the "0" value (the default) was "NOT_SET" instead of "A". This
now allows the merging of the attestation object, profile and tn
to detect when a value isn't set and use the higher level value.
* For send_mky and check_tn_cert_public_url, the tn default was
forced to "NO" which always overrode the profile and attestation
objects. Their defaults are now "NOT_SET" so the propagation
happens correctly.
* Just to remove some redundant code in tn_config.c, a bunch of calls to
generate_sorcery_enum_from_str() and generate_sorcery_enum_to_str() were
replaced with a single call to generate_acfg_common_sorcery_handlers().
Resolves: #904
#### res_stir_shaken: Remove stale include for jansson.h in verification.c
Author: George Joseph
Date: 2024-09-17
verification.c had an include for jansson.h left over from previous
versions of the module. Since res_stir_shaken no longer has a
dependency on jansson, the bundled version wasn't added to GCC's
include path so if you didn't also have a jansson development package
installed, the compile would fail. Removing the stale include
was the only thing needed.
Resolves: #889
#### res_stir_shaken.c: Fix crash when stir_shaken.conf is invalid
Author: George Joseph
Date: 2024-09-13
* If the call to ast_config_load() returns CONFIG_STATUS_FILEINVALID,
check_for_old_config() now returns LOAD_DECLINE instead of continuing
on with a bad pointer.
* If CONFIG_STATUS_FILEMISSING is returned, check_for_old_config()
assumes the config is being loaded from realtime and now returns
LOAD_SUCCESS. If it's actually not being loaded from realtime,
sorcery will catch that later on.
* Also refactored the error handling in load_module() a bit.
Resolves: #884
#### res_stir_shaken: Check for disabled before param validation
Author: George Joseph
Date: 2024-09-11
For both attestation and verification, we now check whether they've
been disabled either globally or by the profile before validating
things like callerid, orig_tn, dest_tn, etc. This prevents useless
error messages.
Resolves: #879
#### app_chanspy.c: resolving the issue writing frame to whisper audiohook.
Author: Tinet-mucw
Date: 2024-09-10
ChanSpy(${channel}, qEoSw): because flags set o, ast_audiohook_set_frame_feed_direction(audiohook, AST_AUDIOHOOK_DIRECTION_READ); this will effect whisper audiohook and spy audiohook, this makes writing frame to whisper audiohook impossible. So add function start_whispering to starting whisper audiohook.
Resolves: #876
#### autoservice: Do not sleep if autoservice_stop is called within autoservice thr..
Author: Alexei Gradinari
Date: 2024-09-04
It's possible that ast_autoservice_stop is called within the autoservice thread.
In this case the autoservice thread is stuck in an endless sleep.
To avoid endless sleep ast_autoservice_stop must check that it's not called
within the autoservice thread.
Fixes: #763
#### app_voicemail: Fix sql insert mismatch caused by cherry-pick
Author: Jean-Denis Girard
Date: 2024-08-07
When commit e8c9cb80 was cherry-picked in from master, the
fact that the 20 and 18 branches still had the old "macrocontext"
column wasn't taken into account so the number of named parameters
didn't match the number of '?' placeholders. They do now.
We also now use ast_asprintf to create the full mailbox query SQL
statement instead of trying to calculate the proper length ourselves.
Resolves: #831
#### res_pjsip_sdp_rtp: Use negotiated DTMF Payload types on bitrate mismatch
Author: Mike Bradeen
Date: 2024-08-21
When Asterisk sends an offer to Bob that includes 48K and 8K codecs with
matching 4733 offers, Bob may want to use the 48K audio codec but can not
accept 48K digits and so negotiates for a mixed set.
Asterisk will now check Bob's offer to make sure Bob has indicated this is
acceptible and if not, will use Bob's preference.
Fixes: #847
#### app_chanspy.c: resolving the issue with audiohook direction read
Author: Tinet-mucw
Date: 2024-08-30
ChanSpy(${channel}, qEoS): When chanspy spy the direction read, reading frame is often failed when reading direction read audiohook. because chanspy only read audiohook direction read; write_factory_ms will greater than 100ms soon, then ast_slinfactory_flush will being called, then direction read will fail.
Resolves: #861
#### security_agreements.c: Refactor the to_str functions and fix a few other bugs
Author: George Joseph
Date: 2024-08-17
* A static array of security mechanism type names was created.
* ast_sip_str_to_security_mechanism_type() was refactored to do
a lookup in the new array instead of using fixed "if/else if"
statments.
* security_mechanism_to_str() and ast_sip_security_mechanisms_to_str()
were refactored to use ast_str instead of a fixed length buffer
to store the result.
* ast_sip_security_mechanism_type_to_str was removed in favor of
just referencing the new type name array. Despite starting with
"ast_sip_", it was a static function so removing it doesn't affect
ABI.
* Speaking of "ast_sip_", several other static functions that
started with "ast_sip_" were renamed to avoid confusion about
their public availability.
* A few VECTOR free loops were replaced with AST_VECTOR_RESET().
* Fixed a meomry leak in pjsip_configuration.c endpoint_destructor
caused by not calling ast_sip_security_mechanisms_vector_destroy().
* Fixed a memory leak in res_pjsip_outbound_registration.c
add_security_headers() caused by not specifying OBJ_NODATA in
an ao2_callback.
* Fixed a few ao2_callback return code misuses.
Resolves: #845
#### res_pjsip_sdp_rtp fix leaking astobj2 ast_format
Author: Alexei Gradinari
Date: 2024-08-23
PR #700 added a preferred_format for the struct ast_rtp_codecs,
but when set the preferred_format it leaks an astobj2 ast_format.
In the next code
ast_rtp_codecs_set_preferred_format(&codecs, ast_format_cap_get_format(joint, 0));
both functions ast_rtp_codecs_set_preferred_format
and ast_format_cap_get_format increases the ao2 reference count.
Fixes: #856
#### stir_shaken.conf.sample: Fix bad references to private_key_path
Author: George Joseph
Date: 2024-08-22
They should be private_key_file.
Resolves: #854
#### res_pjsip_logger.c: Fix 'OPTIONS' tab completion.
Author: Sean Bright
Date: 2024-08-19
Fixes #843
#### alembic: Make 'revises' header comment match reality.
Author: Sean Bright
Date: 2024-08-17
#### chan_mobile: decrease CHANNEL_FRAME_SIZE to prevent delay
Author: Cade Parker
Date: 2024-08-07
On modern Bluetooth devices or lower-powered asterisk servers, decreasing the channel frame size significantly improves latency and delay on outbound calls with only a mild sacrifice to the quality of the call (the frame size before was massive overkill to begin with)
#### res_pjsip_notify: add dialplan application
Author: Mike Bradeen
Date: 2024-07-09
Add dialplan application PJSIPNOTIFY to send either pre-configured
NOTIFY messages from pjsip_notify.conf or with headers defined in
dialplan.
Also adds the ability to send pre-configured NOTIFY commands to a
channel via the CLI.
Resolves: #799
UserNote: A new dialplan application PJSIPNotify is now available
which can send SIP NOTIFY requests from the dialplan.
The pjsip send notify CLI command has also been enhanced to allow
sending NOTIFY messages to a specific channel. Syntax:
pjsip send notify <option> channel <channel>
#### manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
Author: George Joseph
Date: 2024-08-08
If you run an AMI CoreShowChannelMap on a channel that isn't in a
bridge and you're in DEVMODE, you can get a FRACK because the
bridge id is empty. We now simply return an empty list for that
request.
#### channel: Add multi-tenant identifier.
Author: Ben Ford
Date: 2024-05-21
This patch introduces a new identifier for channels: tenantid. It's
a stringfield on the channel that can be used for general purposes. It
will be inherited by other channels the same way that linkedid is.
You can set tenantid in a few ways. The first is to set it in the
dialplan with the Set and CHANNEL functions:
exten => example,1,Set(CHANNEL(tenantid)=My tenant ID)
It can also be accessed via CHANNEL:
exten => example,2,NoOp(CHANNEL(tenantid))
Another method is to use the new tenantid option for pjsip endpoints in
pjsip.conf:
[my_endpoint]
type=endpoint
tenantid=My tenant ID
This is considered the best approach since you will be able to see the
tenant ID as early as the Newchannel event.
It can also be set using set_var in pjsip.conf on the endpoint like
setting other channel variable:
set_var=CHANNEL(tenantid)=My tenant ID
Note that set_var will not show tenant ID on the Newchannel event,
however.
Tenant ID has also been added to CDR. It's read-only and can be accessed
via CDR(tenantid). You can also get the tenant ID of the last channel
communicated with via CDR(peertenantid).
Tenant ID will also show up in CEL records if it has been set, and the
version number has been bumped accordingly.
Fixes: #740
UserNote: tenantid has been added to channels. It can be read in
dialplan via CHANNEL(tenantid), and it can be set using
Set(CHANNEL(tenantid)=My tenant ID). In pjsip.conf, it is recommended to
use the new tenantid option for pjsip endpoints (e.g., tenantid=My
tenant ID) so that it will show up in Newchannel events. You can set it
like any other channel variable using set_var in pjsip.conf as well, but
note that this will NOT show up in Newchannel events. Tenant ID is also
available in CDR and can be accessed with CDR(tenantid). The peer tenant
ID can also be accessed with CDR(peertenantid). CEL includes tenant ID
as well if it has been set.
UpgradeNote: A new versioned struct (ast_channel_initializers) has been
added that gets passed to __ast_channel_alloc_ap. The new function
ast_channel_alloc_with_initializers should be used when creating
channels that require the use of this struct. Currently the only value
in the struct is for tenantid, but now more fields can be added to the
struct as necessary rather than the __ast_channel_alloc_ap function. A
new option (tenantid) has been added to endpoints in pjsip.conf as well.
CEL has had its version bumped to include tenant ID.
#### configure: Use . file rather than source file.
Author: Jaco Kroon
Date: 2024-08-05
source is a bash concept, so when /bin/sh points to another shell the
existing construct won't work.
Reference: https://bugs.gentoo.org/927055
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
#### res_stasis: fix intermittent delays on adding channel to bridge
Author: Mike Bradeen
Date: 2024-07-10
Previously, on command execution, the control thread was awoken by
sending a SIGURG. It was found that this still resulted in some
instances where the thread was not immediately awoken.
This change instead sends a null frame to awaken the control thread,
which awakens the thread more consistently.
Resolves: #801
#### res_pjsip_sdp_rtp.c: Fix DTMF Handling in Re-INVITE with dtmf_mode set to auto
Author: Tinet-mucw
Date: 2024-08-02
When the endpoint dtmf_mode is set to auto, a SIP request is sent to the UAC, and the SIP SDP from the UAC does not include the telephone-event. Later, the UAC sends an INVITE, and the SIP SDP includes the telephone-event. In this case, DTMF should be sent by RFC2833 rather than using inband signaling.
Resolves: asterisk#826
#### stir_shaken: CRL fixes and a new CLI command
Author: George Joseph
Date: 2024-07-19
* Fixed a bug in crypto_show_cli_store that was causing asterisk
to crash if there were certificate revocation lists in the
verification certificate store. We're also now prefixing
certificates with "Cert:" and CRLs with "CRL:" to distinguish them
in the list.
* Added 'untrusted_cert_file' and 'untrusted_cert_path' options
to both verification and profile objects. If you have CRLs that
are signed by a different CA than the incoming X5U certificate
(indirect CRL), you'll need to provide the certificate of the
CRL signer here. Thse will show up as 'Untrusted" when showing
the verification or profile objects.
* Fixed loading of crl_path. The OpenSSL API we were using to
load CRLs won't actually load them from a directory, only a file.
We now scan the directory ourselves and load the files one-by-one.
* Fixed the verification flags being set on the certificate store.
- Removed the CRL_CHECK_ALL flag as this was causing all certificates
to be checked for CRL extensions and failing to verify the cert if
there was none. This basically caused all certs to fail when a CRL
was provided via crl_file or crl_path.
- Added the EXTENDED_CRL_SUPPORT flag as it is required to handle
indirect CRLs.
* Added a new CLI command...
`stir_shaken verify certificate_file <certificate_file> [ <profile> ]`
which will assist troubleshooting certificate problems by allowing
the user to manually verify a certificate file against either the
global verification certificate store or the store for a specific
profile.
* Updated the XML documentation and the sample config file.
Resolves: #809
#### res_pjsip_config_wizard.c: Refactor load process
Author: George Joseph
Date: 2024-07-23
The way we have been initializing the config wizard prevented it
from registering its objects if res_pjsip happened to load
before it.
* We now use the object_type_registered sorcery observer to kick
things off instead of the wizard_mapped observer.
* The load_module function now checks if res_pjsip has been loaded
already and if it was it fires the proper observers so the objects
load correctly.
Resolves: #816
UserNote: The res_pjsip_config_wizard.so module can now be reloaded.
#### bridge_softmix: Fix queueing VIDUPDATE control frames
Author: George Joseph
Date: 2024-07-17
softmix_bridge_write_control() now calls ast_bridge_queue_everyone_else()
with the bridge_channel so the VIDUPDATE control frame isn't echoed back.
softmix_bridge_write_control() was setting bridge_channel to NULL
when calling ast_bridge_queue_everyone_else() for VIDUPDATE control
frames. This was causing the frame to be echoed back to the
channel it came from. In certain cases, like when two channels or
bridges are being recorded, this can cause a ping-pong effect that
floods the system with VIDUPDATE control frames.
Resolves: #780

View File

@@ -1,766 +0,0 @@
## Change Log for Release asterisk-20.11.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.11.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.10.0...20.11.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.11.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 40
- Commit Authors: 9
- Issues Resolved: 22
- Security Advisories Resolved: 0
### User Notes:
- #### res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.
- #### app_mixmonitor: Add 'D' option for dual-channel audio.
The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.
- #### manager.c: Restrict ModuleLoad to the configured modules directory.
The ModuleLoad AMI action now restricts modules to the
configured modules directory.
- #### manager: Enhance event filtering for performance
You can now perform more granular filtering on events
in manager.conf using expressions like
`eventfilter(name(Newchannel),header(Channel),method(starts_with)) = PJSIP/`
This is much more efficient than
`eventfilter = Event: Newchannel.*Channel: PJSIP/`
Full syntax guide is in configs/samples/manager.conf.sample.
- #### db.c: Remove limit on family/key length
The `ast_db_*()` APIs have had the 253 byte limit on
"/family/key" removed and will now accept families and keys with a
total length of up to SQLITE_MAX_LENGTH (currently 1e9!). This
affects the `DB*` dialplan applications, dialplan functions,
manager actions and `databse` CLI commands. Since the
media_cache also uses the `ast_db_*()` APIs, you can now store
resources with URIs longer than 253 bytes.
### Upgrade Notes:
### Commit Authors:
- Allan Nathanson: (1)
- Ben Ford: (3)
- Chrsmj: (1)
- George Joseph: (15)
- Jiangxc: (1)
- Naveen Albert: (7)
- Peter Jannesen: (2)
- Sean Bright: (8)
- Thomas Guebels: (2)
## Issue and Commit Detail:
### Closed Issues:
- 487: [bug]: Segfault possibly in ast_rtp_stop
- 821: [bug]: app_dial: The progress timeout doesn't cause Dial to exit
- 881: [bug]: Long URLs are being rejected by the media cache because of an astdb key length limit
- 882: [bug]: Value CHANNEL(userfield) is lost by BRIDGE_ENTER
- 897: [improvement]: Restrict ModuleLoad AMI action to the modules directory
- 900: [bug]: astfd.c: NULL pointer passed to fclose with nonnull attribute causes compilation failure
- 902: [bug]: app_voicemail: Pager emails are ill-formatted when custom subject is used
- 916: [bug]: Compilation errors on FreeBSD
- 923: [bug]: Transport monitor shutdown callback only works on the first disconnection
- 924: [bug]: dnsmgr.c: dnsmgr_refresh() should not flag change if IP address order changes
- 928: [bug]: chan_dahdi: MWI while off-hook when hung up on after recall ring
- 932: [bug]: When connected to multiple IP addresses the transport monitor is only set on the first one
- 937: [bug]: Wrong format for sample config file 'geolocation.conf.sample'
- 938: [bug]: memory leak - CBAnn leaks a small amount format_cap related memory for every confbridge
- 945: [improvement]: Add stereo recording support for app_mixmonitor
- 951: [new-feature]: func_evalexten: Add `EVAL_SUB` function
- 974: [improvement]: change and/or remove some wiki mentions to docs mentions in the sample configs
- 979: [improvement]: Add ability to suppress MOH when a remote endpoint sends "sendonly" or "inactive"
- 982: [bug]: The addition of tenantid to the ast_sip_endpoint structure broke ABI compatibility
- 990: [improvement]: The help for PJSIP_AOR should indicate that you need to call PJSIP_CONTACT to get contact details
- 995: [bug]: suppress_moh_on_sendonly should use AST_BOOL_VALUES instead of YESNO_VALUES in alembic script
### Commits By Author:
- #### Allan Nathanson (1):
- dnsmgr.c: dnsmgr_refresh() incorrectly flags change with DNS round-robin
- #### Ben Ford (3):
- manager.c: Restrict ModuleLoad to the configured modules directory.
- app_mixmonitor: Add 'D' option for dual-channel audio.
- Add res_pjsip_config_sangoma external module.
- #### George Joseph (15):
- db.c: Remove limit on family/key length
- manager.c: Split XML documentation to manager_doc.xml
- manager: Enhance event filtering for performance
- manager.conf.sample: Fix mathcing typo
- Fix application references to Background
- res_rtp_asterisk: Fix dtls timer issues causing FRACKs and SEGVs
- manager.c: Add unit test for Originate app and appdata permissions
- geolocation.sample.conf: Fix comment marker at end of file
- core_unreal.c: Fix memory leak in ast_unreal_new_channels()
- pjproject_bundled: Tweaks to support out-of-tree development
- res_srtp: Change Unsupported crypto suite msg from verbose to debug
- res_pjsip: Move tenantid to end of ast_sip_endpoint
- func_pjsip_aor/contact: Fix documentation for contact ID
- res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
- res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
- #### Naveen Albert (7):
- app_voicemail: Fix ill-formatted pager emails with custom subject.
- astfd.c: Avoid calling fclose with NULL argument.
- main, res, tests: Fix compilation errors on FreeBSD.
- chan_dahdi: Never send MWI while off-hook.
- app_dial: Fix progress timeout.
- app_dial: Fix progress timeout calculation with no answer timeout.
- func_evalexten: Add EVAL_SUB function.
- #### Peter Jannesen (2):
- cel_custom: Allow absolute filenames.
- channel: Preserve CHANNEL(userfield) on masquerade.
- #### Sean Bright (8):
- res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
- cdr_custom: Allow absolute filenames.
- res_agi.c: Ensure SIGCHLD handler functions are properly balanced.
- alembic: Drop redundant voicemail_messages index.
- func_base64.c: Ensure we set aside enough room for base64 encoded data.
- Revert "res_rtp_asterisk: Count a roll-over of the sequence number even on los..
- chan_sip.c: Fix __sip_reliable_xmit build error
- res_pjsip.c: Fix Contact header rendering for IPv6 addresses.
- #### Thomas Guebels (2):
- pjsip_transport_events: Avoid monitor destruction
- pjsip_transport_events: handle multiple addresses for a domain
- #### chrsmj (1):
- samples: remove and/or change some wiki mentions
- #### jiangxc (1):
- res_agi.c: Prevent possible double free during `SPEECH RECOGNIZE`
### Commit List:
- res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
- res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
- res_pjsip.c: Fix Contact header rendering for IPv6 addresses.
- samples: remove and/or change some wiki mentions
- func_pjsip_aor/contact: Fix documentation for contact ID
- res_pjsip: Move tenantid to end of ast_sip_endpoint
- pjsip_transport_events: handle multiple addresses for a domain
- func_evalexten: Add EVAL_SUB function.
- res_srtp: Change Unsupported crypto suite msg from verbose to debug
- Add res_pjsip_config_sangoma external module.
- app_mixmonitor: Add 'D' option for dual-channel audio.
- pjsip_transport_events: Avoid monitor destruction
- app_dial: Fix progress timeout calculation with no answer timeout.
- pjproject_bundled: Tweaks to support out-of-tree development
- chan_sip.c: Fix __sip_reliable_xmit build error
- core_unreal.c: Fix memory leak in ast_unreal_new_channels()
- dnsmgr.c: dnsmgr_refresh() incorrectly flags change with DNS round-robin
- geolocation.sample.conf: Fix comment marker at end of file
- func_base64.c: Ensure we set aside enough room for base64 encoded data.
- app_dial: Fix progress timeout.
- chan_dahdi: Never send MWI while off-hook.
- manager.c: Add unit test for Originate app and appdata permissions
- alembic: Drop redundant voicemail_messages index.
- res_agi.c: Ensure SIGCHLD handler functions are properly balanced.
- main, res, tests: Fix compilation errors on FreeBSD.
- res_rtp_asterisk: Fix dtls timer issues causing FRACKs and SEGVs
- manager.c: Restrict ModuleLoad to the configured modules directory.
- res_agi.c: Prevent possible double free during `SPEECH RECOGNIZE`
- cdr_custom: Allow absolute filenames.
- astfd.c: Avoid calling fclose with NULL argument.
- channel: Preserve CHANNEL(userfield) on masquerade.
- cel_custom: Allow absolute filenames.
- app_voicemail: Fix ill-formatted pager emails with custom subject.
- res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
- Fix application references to Background
- manager.conf.sample: Fix mathcing typo
- manager: Enhance event filtering for performance
- manager.c: Split XML documentation to manager_doc.xml
- db.c: Remove limit on family/key length
### Commit Details:
#### res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
Author: George Joseph
Date: 2024-11-15
The suppress_moh_on_sendonly endpoint option should have been
defined as OPT_BOOL_T in pjsip_configuration.c and AST_BOOL_VALUES
in the alembic script instead of OPT_YESNO_T and YESNO_VALUES.
Also updated contrib/ast-db-manage/README.md to indicate that
AST_BOOL_VALUES should always be used and provided an example.
Resolves: #995
#### res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
Author: George Joseph
Date: 2024-11-05
Normally, when one party in a call sends Asterisk an SDP with
a "sendonly" or "inactive" attribute it means "hold" and causes
Asterisk to start playing MOH back to the other party. This can be
problematic if it happens at certain times, such as in a 183
Progress message, because the MOH will replace any early media you
may be playing to the calling party. If you set this option
to "yes" on an endpoint and the endpoint receives an SDP
with "sendonly" or "inactive", Asterisk will NOT play MOH back to
the other party.
Resolves: #979
UserNote: The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.
#### res_pjsip.c: Fix Contact header rendering for IPv6 addresses.
Author: Sean Bright
Date: 2024-11-08
Fix suggested by @nvsystems.
Fixes #985
#### samples: remove and/or change some wiki mentions
Author: chrsmj
Date: 2024-11-01
Cleaned some dead links. Replaced word wiki with
either docs or link to https://docs.asterisk.org/
Resolves: #974
#### func_pjsip_aor/contact: Fix documentation for contact ID
Author: George Joseph
Date: 2024-11-09
Clarified the use of the contact ID returned from PJSIP_AOR.
Resolves: #990
#### res_pjsip: Move tenantid to end of ast_sip_endpoint
Author: George Joseph
Date: 2024-11-06
The tenantid field was originally added to the ast_sip_endpoint
structure at the end of the AST_DECLARE_STRING_FIELDS block. This
caused everything after it in the structure to move down in memory
and break ABI compatibility. It's now at the end of the structure
as an AST_STRING_FIELD_EXTENDED. Given the number of string fields
in the structure now, the initial string field allocation was
also increased from 64 to 128 bytes.
Resolves: #982
#### pjsip_transport_events: handle multiple addresses for a domain
Author: Thomas Guebels
Date: 2024-10-29
The key used for transport monitors was the remote host name for the
transport and not the remote address resolved for this domain.
This was problematic for domains returning multiple addresses as several
transport monitors were created with the same key.
Whenever a subsystem wanted to register a callback it would always end
up attached to the first transport monitor with a matching key.
The key used for transport monitors is now the remote address and port
the transport actually connected to.
Fixes: #932
#### func_evalexten: Add EVAL_SUB function.
Author: Naveen Albert
Date: 2024-10-17
This adds an EVAL_SUB function, which is similar to the existing
EVAL_EXTEN function but significantly more powerful, as it allows
executing arbitrary dialplan and capturing its return value as
the function's output. While EVAL_EXTEN should be preferred if it
is possible to use it, EVAL_SUB can be used in a wider variety
of cases and allows arbitrary computation to be performed in
a dialplan function call, leveraging the dialplan.
Resolves: #951
#### res_srtp: Change Unsupported crypto suite msg from verbose to debug
Author: George Joseph
Date: 2024-11-01
There's really no point in spamming logs with a verbose message
for every unsupported crypto suite an older client may send
in an SDP. If none are supported, there will be an error or
warning.
#### Add res_pjsip_config_sangoma external module.
Author: Ben Ford
Date: 2024-11-01
Adds res_pjsip_config_sangoma as an external module that can be
downloaded via menuselect. It lives under the Resource Modules section.
#### app_mixmonitor: Add 'D' option for dual-channel audio.
Author: Ben Ford
Date: 2024-10-28
Adds the 'D' option to app_mixmonitor that interleaves the input and
output frames of the channel being recorded in the monitor output frame.
This allows for two streams in the recording: the transmitted audio and
the received audio. The 't' and 'r' options are compatible with this.
Fixes: #945
UserNote: The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.
#### pjsip_transport_events: Avoid monitor destruction
Author: Thomas Guebels
Date: 2024-10-28
When a transport is disconnected, several events can arrive following
each other. The first event will be PJSIP_TP_STATE_DISCONNECT and it
will trigger the destruction of the transport monitor object. The lookup
for the transport monitor to destroy is done using the transport key,
that contains the transport destination host:port.
A reconnect attempt by pjsip will be triggered as soon something needs to
send a packet using that transport. This can happen directly after a
disconnect since ca
Subsequent events can arrive later like PJSIP_TP_STATE_DESTROY and will
also try to trigger the destruction of the transport monitor if not
already done. Since the lookup for the transport monitor to destroy is
done using the transport key, it can match newly created transports
towards the same destination and destroy their monitor object.
Because of this, it was sometimes not possible to monitor a transport
after one or more disconnections.
This fix adds an additional check on the transport pointer to ensure
only a monitor for that specific transport is removed.
Fixes: #923
#### app_dial: Fix progress timeout calculation with no answer timeout.
Author: Naveen Albert
Date: 2024-10-16
If to_answer is -1, simply comparing to see if the progress timeout
is smaller than the answer timeout to prefer it will fail. Add
an additional check that chooses the progress timeout if there is
no answer timeout (or as before, if the progress timeout is smaller).
Resolves: #821
#### pjproject_bundled: Tweaks to support out-of-tree development
Author: George Joseph
Date: 2024-10-17
* pjproject is now configured with --disable-libsrtp so it will
build correctly when doing "out-of-tree" development. Asterisk
doesn't use pjproject for handling media so pjproject doesn't
need libsrtp itself.
* The pjsua app (which we used to use for the testsuite) no longer
builds in pjproject's master branch so we just skip it. The
testsuite no longer needs it anyway.
See third-party/pjproject/README-hacking.md for more info on building
pjproject "out-of-tree".
#### chan_sip.c: Fix __sip_reliable_xmit build error
Author: Sean Bright
Date: 2024-10-17
Fixes #954
#### Revert "res_rtp_asterisk: Count a roll-over of the sequence number even on los..
Author: Sean Bright
Date: 2024-10-07
This reverts commit cb5e3445be6c55517c8d05aca601b648341f8ae9.
The original change from 16 to 15 bit sequence numbers was predicated
on the following from the now-defunct libSRTP FAQ on sourceforge.net:
> *Q6. The use of implicit synchronization via ROC seems
> dangerous. Can senders and receivers lose ROC synchronization?*
>
> **A.** It is possible to lose ROC synchronization between sender and
> receiver(s), though it is not likely in practice, and practical
> steps can be taken to avoid it. A burst loss of 2^16 packets or more
> will always break synchronization. For example, a conversational
> voice codec that sends 50 packets per second will have its ROC
> increment about every 22 minutes. A network with a burst of packet
> loss that long has problems other than ROC synchronization.
>
> There is a higher sensitivity to loss at the very outset of an SRTP
> stream. If the sender's initial sequence number is close to the
> maximum value of 2^16-1, and all packets are lost from the initial
> packet until the sequence number cycles back to zero, the sender
> will increment its ROC, but the receiver will not. The receiver
> cannot determine that the initial packets were lost and that
> sequence-number rollover has occurred. In this case, the receiver's
> ROC would be zero whereas the sender's ROC would be one, while their
> sequence numbers would be so close that the ROC-guessing algorithm
> could not detect this fact.
>
> There is a simple solution to this problem: the SRTP sender should
> randomly select an initial sequence number that is always less than
> 2^15. This ensures correct SRTP operation so long as fewer than 2^15
> initial packets are lost in succession, which is within the maximum
> tolerance of SRTP packet-index determination (see Appendix A and
> page 14, first paragraph of RFC 3711). An SRTP receiver should
> carefully implement the index-guessing algorithm. A naive
> implementation can unintentionally guess the value of
> 0xffffffffffffLL whenever the SEQ in the packet is greater than 2^15
> and the locally stored SEQ and ROC are zero. (This can happen when
> the implementation fails to treat those zero values as a special
> case.)
>
> When ROC synchronization is lost, the receiver will not be able to
> properly process the packets. If anti-replay protection is turned
> on, then the desynchronization will appear as a burst of replay
> check failures. Otherwise, if authentication is being checked, then
> it will appear as a burst of authentication failures. Otherwise, if
> encryption is being used, the desynchronization may not be detected
> by the SRTP layer, and the packets may be improperly decrypted.
However, modern libSRTP (as of 1.0.1[1]) now mentions the following in
their README.md[2]:
> The sequence number in the rtp packet is used as the low 16 bits of
> the sender's local packet index. Note that RTP will start its
> sequence number in a random place, and the SRTP layer just jumps
> forward to that number at its first invocation. An earlier version
> of this library used initial sequence numbers that are less than
> 32,768; this trick is no longer required as the
> rdbx_estimate_index(...) function has been made smarter.
So truncating our initial sequence number to 15 bit is no longer
necessary.
1. https://github.com/cisco/libsrtp/blob/0eb007f0dc611f27cbfe0bf9855ed85182496cec/CHANGES#L271-L289
2. https://github.com/cisco/libsrtp/blob/2de20dd9e9c8afbaf02fcf5d4048ce1ec9ddc0ae/README.md#implementation-notes
#### core_unreal.c: Fix memory leak in ast_unreal_new_channels()
Author: George Joseph
Date: 2024-10-15
When the channel tech is multistream capable, the reference to
chan_topology was passed to the new channel. When the channel tech
isn't multistream capable, the reference to chan_topology was never
released. "Local" channels are multistream capable so it didn't
affect them but the confbridge "CBAnn" and the bridge_media
"Recorder" channels are not so they caused a leak every time one
of them was created.
Also added tracing to ast_stream_topology_alloc() and
stream_topology_destroy() to assist with debugging.
Resolves: #938
#### dnsmgr.c: dnsmgr_refresh() incorrectly flags change with DNS round-robin
Author: Allan Nathanson
Date: 2024-09-29
The dnsmgr_refresh() function checks to see if the IP address associated
with a name/service has changed. The gotcha is that the ast_get_ip_or_srv()
function only returns the first IP address returned by the DNS query. If
there are multiple IPs associated with the name and the returned order is
not consistent (e.g. with DNS round-robin) then the other IP addresses are
not included in the comparison and the entry is flagged as changed even
though the IP is still valid.
Updated the code to check all IP addresses and flag a change only if the
original IP is no longer valid.
Resolves: #924
#### geolocation.sample.conf: Fix comment marker at end of file
Author: George Joseph
Date: 2024-10-08
Resolves: #937
#### func_base64.c: Ensure we set aside enough room for base64 encoded data.
Author: Sean Bright
Date: 2024-10-08
Reported by SingularTricycle on IRC.
Fixes #940
#### app_dial: Fix progress timeout.
Author: Naveen Albert
Date: 2024-10-03
Under some circumstances, the progress timeout feature added in commit
320c98eec87c473bfa814f76188a37603ea65ddd does not work as expected,
such as if there is no media flowing. Adjust the waitfor call to
explicitly use the progress timeout if it would be reached sooner than
the answer timeout to ensure we handle the timers properly.
Resolves: #821
#### chan_dahdi: Never send MWI while off-hook.
Author: Naveen Albert
Date: 2024-10-01
In some circumstances, it is possible for the do_monitor thread to
erroneously think that a line is on-hook and send an MWI FSK spill
to it when the line is really off-hook and no MWI should be sent.
Commit 0a8b3d34673277b70be6b0e8ac50191b1f3c72c6 previously fixed this
issue in a more readily encountered scenario, but it has still been
possible for MWI to be sent when it shouldn't be. To robustly fix
this issue, query DAHDI for the hook status to ensure we don't send
MWI on a line that is actually still off hook.
Resolves: #928
#### manager.c: Add unit test for Originate app and appdata permissions
Author: George Joseph
Date: 2024-10-03
This unit test checks that dialplan apps and app data specified
as parameters for the Originate action are allowed with the
permissions the user has.
#### alembic: Drop redundant voicemail_messages index.
Author: Sean Bright
Date: 2024-09-26
The `voicemail_messages_dir` index is a left prefix of the table's
primary key and therefore unnecessary.
#### res_agi.c: Ensure SIGCHLD handler functions are properly balanced.
Author: Sean Bright
Date: 2024-09-30
Calls to `ast_replace_sigchld()` and `ast_unreplace_sigchld()` must be
balanced to ensure that we can capture the exit status of child
processes when we need to. This extends to functions that call
`ast_replace_sigchld()` and `ast_unreplace_sigchld()` such as
`ast_safe_fork()` and `ast_safe_fork_cleanup()`.
The primary change here is ensuring that we do not call
`ast_safe_fork_cleanup()` in `res_agi.c` if we have not previously
called `ast_safe_fork()`.
Additionally we reinforce some of the documentation and add an
assertion to, ideally, catch this sooner were this to happen again.
Fixes #922
#### main, res, tests: Fix compilation errors on FreeBSD.
Author: Naveen Albert
Date: 2024-09-29
asterisk.c, manager.c: Increase buffer sizes to avoid truncation warnings.
config.c: Include header file for WIFEXITED/WEXITSTATUS macros.
res_timing_kqueue: Use more portable format specifier.
test_crypto: Use non-linux limits.h header file.
Resolves: #916
#### res_rtp_asterisk: Fix dtls timer issues causing FRACKs and SEGVs
Author: George Joseph
Date: 2024-09-16
In dtls_srtp_handle_timeout(), when DTLSv1_get_timeout() returned
success but with a timeout of 0, we were stopping the timer and
decrementing the refcount on instance but not resetting the
timeout_timer to -1. When dtls_srtp_stop_timeout_timer()
was later called, it was atempting to stop a stale timer and could
decrement the refcount on instance again which would then cause
the instance destructor to run early. This would result in either
a FRACK or a SEGV when ast_rtp_stop(0 was called.
According to the OpenSSL docs, we shouldn't have been stopping the
timer when DTLSv1_get_timeout() returned success and the new timeout
was 0 anyway. We should have been calling DTLSv1_handle_timeout()
again immediately so we now reschedule the timer callback for
1ms (almost immediately).
Additionally, instead of scheduling the timer callback at a fixed
interval returned by the initial call to DTLSv1_get_timeout()
(usually 999 ms), we now reschedule the next callback based on
the last call to DTLSv1_get_timeout().
Resolves: #487
#### manager.c: Restrict ModuleLoad to the configured modules directory.
Author: Ben Ford
Date: 2024-09-25
When using the ModuleLoad AMI action, it was possible to traverse
upwards through the directories to files outside of the configured
modules directory. We decided it would be best to restrict access to
modules exclusively in the configured directory. You will now get an
error when the specified module is outside of this limitation.
Fixes: #897
UserNote: The ModuleLoad AMI action now restricts modules to the
configured modules directory.
#### res_agi.c: Prevent possible double free during `SPEECH RECOGNIZE`
Author: jiangxc
Date: 2024-07-17
When using the speech recognition module, crashes can occur
sporadically due to a "double free or corruption (out)" error. Now, in
the section where the audio stream is being captured in a loop, each
time after releasing fr, it is set to NULL to prevent repeated
deallocation.
Fixes #772
#### cdr_custom: Allow absolute filenames.
Author: Sean Bright
Date: 2024-09-26
A follow up to #893 that brings the same functionality to
cdr_custom. Also update the sample configuration files to note support
for absolute paths.
#### astfd.c: Avoid calling fclose with NULL argument.
Author: Naveen Albert
Date: 2024-09-24
Don't pass through a NULL argument to fclose, which is undefined
behavior, and instead return -1 and set errno appropriately. This
also avoids a compiler warning with glibc 2.38 and newer, as glibc
commit 71d9e0fe766a3c22a730995b9d024960970670af
added the nonnull attribute to this argument.
Resolves: #900
#### channel: Preserve CHANNEL(userfield) on masquerade.
Author: Peter Jannesen
Date: 2024-09-20
In certain circumstances a channel may undergo an operation
referred to as a masquerade. If this occurs the CHANNEL(userfield)
value was not preserved causing it to get lost. This change makes
it so that this field is now preserved.
Fixes: #882
#### cel_custom: Allow absolute filenames.
Author: Peter Jannesen
Date: 2024-09-20
If a filename starts with a '/' in cel_custom [mappings] assume it is
a absolute file path and not relative filename/path to
AST_LOG_DIR/cel_custom/
#### app_voicemail: Fix ill-formatted pager emails with custom subject.
Author: Naveen Albert
Date: 2024-09-24
Add missing end-of-headers newline to pager emails with custom
subjects, since this was missing from this code path.
Resolves: #902
#### res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
Author: Sean Bright
Date: 2024-09-23
Fixes #895
#### Fix application references to Background
Author: George Joseph
Date: 2024-09-20
The app is actually named "BackGround" but several references
in XML documentation were spelled "Background" with the lower
case "g". This was causing documentation links to return
"not found" messages.
#### manager.conf.sample: Fix mathcing typo
Author: George Joseph
Date: 2024-09-24
#### manager: Enhance event filtering for performance
Author: George Joseph
Date: 2024-07-31
UserNote: You can now perform more granular filtering on events
in manager.conf using expressions like
`eventfilter(name(Newchannel),header(Channel),method(starts_with)) = PJSIP/`
This is much more efficient than
`eventfilter = Event: Newchannel.*Channel: PJSIP/`
Full syntax guide is in configs/samples/manager.conf.sample.
#### manager.c: Split XML documentation to manager_doc.xml
Author: George Joseph
Date: 2024-08-01
#### db.c: Remove limit on family/key length
Author: George Joseph
Date: 2024-09-11
Consumers like media_cache have been running into issues with
the previous astdb "/family/key" limit of 253 bytes when needing
to store things like long URIs. An Amazon S3 URI is a good example
of this. Now, instead of using a static 256 byte buffer for
"/family/key", we use ast_asprintf() to dynamically create it.
Both test_db.c and test_media_cache.c were also updated to use
keys/URIs over the old 253 character limit.
Resolves: #881
UserNote: The `ast_db_*()` APIs have had the 253 byte limit on
"/family/key" removed and will now accept families and keys with a
total length of up to SQLITE_MAX_LENGTH (currently 1e9!). This
affects the `DB*` dialplan applications, dialplan functions,
manager actions and `databse` CLI commands. Since the
media_cache also uses the `ast_db_*()` APIs, you can now store
resources with URIs longer than 253 bytes.

View File

@@ -1,65 +0,0 @@
## Change Log for Release asterisk-20.11.1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.11.1.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.11.0...20.11.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.11.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-33x6-fj46-6rfh](https://github.com/asterisk/asterisk/security/advisories/GHSA-33x6-fj46-6rfh): Path traversal via AMI ListCategories allows access to outside files
### User Notes:
- #### manager.c: Restrict ListCategories to the configuration directory.
The ListCategories AMI action now restricts files to the
configured configuration directory.
### Upgrade Notes:
### Commit Authors:
- Ben Ford: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-33x6-fj46-6rfh: Path traversal via AMI ListCategories allows access to outside files
### Commits By Author:
- #### Ben Ford (1):
- manager.c: Restrict ListCategories to the configuration directory.
### Commit List:
- manager.c: Restrict ListCategories to the configuration directory.
### Commit Details:
#### manager.c: Restrict ListCategories to the configuration directory.
Author: Ben Ford
Date: 2024-12-17
When using the ListCategories AMI action, it was possible to traverse
upwards through the directories to files outside of the configured
configuration directory. This action is now restricted to the configured
directory and an error will now be returned if the specified file is
outside of this limitation.
Resolves: #GHSA-33x6-fj46-6rfh
UserNote: The ListCategories AMI action now restricts files to the
configured configuration directory.

File diff suppressed because it is too large Load Diff

View File

@@ -1,575 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.13.0</title></head><body>
<h2>Change Log for Release asterisk-20.13.0</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.13.0.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.12.0...20.13.0">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.13.0.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 29</li>
<li>Commit Authors: 12</li>
<li>Issues Resolved: 12</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>ari/pjsip: Make it possible to control transfers through ARI</h4>
Call transfers on the PJSIP channel can now be controlled by
ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
dialplan function.</li>
</ul>
<h3>Upgrade Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>Allan Nathanson: (1)</li>
<li>Ben Ford: (1)</li>
<li>Fabriziopicconi: (1)</li>
<li>George Joseph: (11)</li>
<li>Holger Hans Peter Freyther: (1)</li>
<li>Jeremy Lainé: (1)</li>
<li>Joshua Elson: (1)</li>
<li>Luz Paz: (3)</li>
<li>Maximilian Fridrich: (1)</li>
<li>Mike Bradeen: (1)</li>
<li>Naveen Albert: (1)</li>
<li>Sean Bright: (6)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>211: [bug]: stasis: Off-nominal channel leave causes bridge to be destroyed</li>
<li>1085: [bug]: utils: Compilation failure with DEVMODE due to old-style definitions</li>
<li>1101: [bug]: when setting a var with a double quotes and using Set(HASH)</li>
<li>1109: [bug]: Off nominal memory leak in res/ari/resource_channels.c</li>
<li>1112: [bug]: STIR/SHAKEN verification doesn't allow anonymous callerid to be passed to the dialplan.</li>
<li>1119: [bug]: Realtime database not working after upgrade from 22.0.0 to 22.2.0</li>
<li>1122: Need status on CVE-2024-57520 claim.</li>
<li>1124: [bug]: Race condition between bridge and channel delete can over-write cause code set in hangup.</li>
<li>1131: [bug]: CHANGES link broken in README.md</li>
<li>1135: [bug]: Problems with video decoding due to RTP marker bit set</li>
<li>1149: [bug]: res_pjsip: Mismatch in tcp_keepalive_enable causes not to enable</li>
<li>1164: [bug]: WARNING Message in messages.log for res_curl.conf [globals]</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Allan Nathanson (1):</h4>
</li>
<li>
<p>config.c: #include of non-existent file should not crash</p>
</li>
<li>
<h4>Ben Ford (1):</h4>
</li>
<li>
<p>documentation: Update Gosub, Goto, and add new documentationtype.</p>
</li>
<li>
<h4>George Joseph (11):</h4>
</li>
<li>docs: Add version information to ARI resources and methods.</li>
<li>docs: Add version information to AGI command XML elements.</li>
<li>func_strings.c: Prevent SEGV in HASH single-argument mode.</li>
<li>resource_channels.c: Fix memory leak in ast_ari_channels_external_media.</li>
<li>res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.</li>
<li>res_config_pgsql: Fix regression that removed dbname config.</li>
<li>bridging: Fix multiple bridging issues causing SEGVs and FRACKs.</li>
<li>swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().</li>
<li>manager.c: Check for restricted file in action_createconfig.</li>
<li>README.md: Updates and Fixes</li>
<li>
<p>res_pjsip_outbound_registration.c: Remove xpointer reference to user_agent.</p>
</li>
<li>
<h4>Holger Hans Peter Freyther (1):</h4>
</li>
<li>
<p>ari/pjsip: Make it possible to control transfers through ARI</p>
</li>
<li>
<h4>Jeremy Lainé (1):</h4>
</li>
<li>
<p>docs: Fix minor typo in MixMonitor AMI action</p>
</li>
<li>
<h4>Joshua Elson (1):</h4>
</li>
<li>
<p>fix: Correct default flag for tcp_keepalive_enable option</p>
</li>
<li>
<h4>Luz Paz (3):</h4>
</li>
<li>docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..</li>
<li>docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..</li>
<li>
<p>docs: Fix typos in cdr/ Found via codespell</p>
</li>
<li>
<h4>Maximilian Fridrich (1):</h4>
</li>
<li>
<p>Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"</p>
</li>
<li>
<h4>Mike Bradeen (1):</h4>
</li>
<li>
<p>bridge_channel: don't set cause code on channel during bridge delete if alread..</p>
</li>
<li>
<h4>Naveen Albert (1):</h4>
</li>
<li>
<p>utils: Disable old style definition warnings for libdb.</p>
</li>
<li>
<h4>Sean Bright (6):</h4>
</li>
<li>docs: Indent <since> tags.</li>
<li>channel.c: Remove dead AST_GENERATOR_FD code.</li>
<li>res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.</li>
<li>docs: AMI documentation fixes.</li>
<li>res_rtp_asterisk.c: Don't truncate spec-compliant <code>ice-ufrag</code> or <code>ice-pwd</code>.</li>
<li>
<p>res_config_curl.c: Remove unnecessary warnings.</p>
</li>
<li>
<h4>fabriziopicconi (1):</h4>
</li>
<li>rtp.conf.sample: Correct stunaddr example.</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>documentation: Update Gosub, Goto, and add new documentationtype.</li>
<li>res_config_curl.c: Remove unnecessary warnings.</li>
<li>res_pjsip_outbound_registration.c: Remove xpointer reference to user_agent.</li>
<li>README.md: Updates and Fixes</li>
<li>res_rtp_asterisk.c: Don't truncate spec-compliant <code>ice-ufrag</code> or <code>ice-pwd</code>.</li>
<li>fix: Correct default flag for tcp_keepalive_enable option</li>
<li>docs: AMI documentation fixes.</li>
<li>config.c: #include of non-existent file should not crash</li>
<li>manager.c: Check for restricted file in action_createconfig.</li>
<li>swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().</li>
<li>Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"</li>
<li>res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.</li>
<li>docs: Fix typos in cdr/ Found via codespell</li>
<li>bridging: Fix multiple bridging issues causing SEGVs and FRACKs.</li>
<li>res_config_pgsql: Fix regression that removed dbname config.</li>
<li>res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.</li>
<li>resource_channels.c: Fix memory leak in ast_ari_channels_external_media.</li>
<li>ari/pjsip: Make it possible to control transfers through ARI</li>
<li>channel.c: Remove dead AST_GENERATOR_FD code.</li>
<li>func_strings.c: Prevent SEGV in HASH single-argument mode.</li>
<li>docs: Add version information to AGI command XML elements.</li>
<li>docs: Fix minor typo in MixMonitor AMI action</li>
<li>utils: Disable old style definition warnings for libdb.</li>
<li>rtp.conf.sample: Correct stunaddr example.</li>
<li>docs: Add version information to ARI resources and methods.</li>
<li>docs: Indent <since> tags.</li>
</ul>
<h3>Commit Details:</h3>
<h4>documentation: Update Gosub, Goto, and add new documentationtype.</h4>
<p>Author: Ben Ford
Date: 2025-03-14</p>
<p>Gosub and Goto were not displaying their syntax correctly on the docs
site. This change adds a new way to specify an optional context, an
optional extension, and a required priority that the xml stylesheet can
parse without having to know which optional parameters come in which
order. In Asterisk, it looks like this:</p>
<pre><code>parameter name="context" documentationtype="dialplan_context"
parameter name="extension" documentationtype="dialplan_extension"
parameter name="priority" documentationtype="dialplan_priority" required="true"
</code></pre>
<p>The stylesheet will ignore the context and extension parameters, but for
priority, it will automatically inject the following:</p>
<pre><code>[[context,]extension,]priority
</code></pre>
<p>This is the correct oder for applications such as Gosub and Goto.</p>
<h4>res_config_curl.c: Remove unnecessary warnings.</h4>
<p>Author: Sean Bright
Date: 2025-03-17</p>
<p>Resolves: #1164</p>
<h4>res_pjsip_outbound_registration.c: Remove xpointer reference to user_agent.</h4>
<p>Author: George Joseph
Date: 2025-03-14</p>
<p>Commit e86f937e added AMI documentation to the module but the cherry-pick
from master to the 20 branch pulled in an xpointer reference to the
<code>user_agent</code> config option which doesn't actually exist in 20. This causes
asterisk to fail to start because it can't load the core-en_US.xml
documentation file. The CI cherry-pick tests should have caught this but
there was bug in the cherry-picker that was causing the commits to be
cherry-picked to the wrong branch. Just removing the xpointer reference
resolves the issue.</p>
<h4>README.md: Updates and Fixes</h4>
<p>Author: George Joseph
Date: 2025-03-05</p>
<ul>
<li>Outdated information has been removed.</li>
<li>New links added.</li>
<li>Placeholder added for link to change logs.</li>
</ul>
<p>Going forward, the release process will create HTML versions of the README
and change log and will update the link in the README to the current
change log for the branch...</p>
<ul>
<li>In the development branches, the link will always point to the current
release on GitHub.</li>
<li>In the "releases/*" branches and the tarballs, the link will point to the
ChangeLogs/ChangeLog-<version>.html file in the source directory.</li>
<li>On the downloads website, the link will point to the
ChangeLog-<version>.html file in the same directory.</li>
</ul>
<p>Resolves: #1131</p>
<h4>res_rtp_asterisk.c: Don't truncate spec-compliant <code>ice-ufrag</code> or <code>ice-pwd</code>.</h4>
<p>Author: Sean Bright
Date: 2025-03-07</p>
<p>RFC 8839[1] indicates that the <code>ice-ufrag</code> and <code>ice-pwd</code> attributes
can be up to 256 bytes long. While we don't generate values of that
size, we should be able to accomodate them without truncating.</p>
<ol>
<li>https://www.rfc-editor.org/rfc/rfc8839#name-ice-ufrag-and-ice-pwd-attri</li>
</ol>
<h4>fix: Correct default flag for tcp_keepalive_enable option</h4>
<p>Author: Joshua Elson
Date: 2025-03-06</p>
<p>Resolves an issue where the tcp_keepalive_enable option was not properly enabled in the sample configuration due to an incorrect default flag setting.</p>
<p>Fixes: #1149</p>
<h4>docs: AMI documentation fixes.</h4>
<p>Author: Sean Bright
Date: 2025-02-18</p>
<p>Most of this patch is adding missing PJSIP-related event
documentation, but the one functional change was adding a sorcery
to-string handler for endpoint's <code>redirect_method</code> which was not
showing up in the AMI event details or <code>pjsip show endpoint
&lt;endpoint&gt;</code> output.</p>
<p>The rest of the changes are summarized below:</p>
<ul>
<li>app_agent_pool.c: Typo fix Epoche -&gt; Epoch.</li>
<li>stasis_bridges.c: Add missing AttendedTransfer properties.</li>
<li>stasis_channels.c: Add missing AgentLogoff properties.</li>
<li>pjsip_manager.xml:<ul>
<li>Add missing AorList properties.</li>
<li>Add missing AorDetail properties.</li>
<li>Add missing ContactList properties.</li>
<li>Add missing ContactStatusDetail properties.</li>
<li>Add missing EventDetail properties.</li>
<li>Add missing AuthList properties.</li>
<li>Add missing AuthDetail properties.</li>
<li>Add missing TransportDetail properties.</li>
<li>Add missing EndpointList properties.</li>
<li>Add missing IdentifyDetail properties.</li>
</ul>
</li>
<li>res_pjsip_registrar.c: Add missing InboundRegistrationDetail documentation.</li>
<li>res_pjsip_pubsub.c:<ul>
<li>Add missing ResourceListDetail documentation.</li>
<li>Add missing InboundSubscriptionDetail documentation.</li>
<li>Add missing OutboundSubscriptionDetail documentation.</li>
</ul>
</li>
<li>res_pjsip_outbound_registration.c: Add missing OutboundRegistrationDetail documentation.</li>
</ul>
<h4>config.c: #include of non-existent file should not crash</h4>
<p>Author: Allan Nathanson
Date: 2025-03-03</p>
<p>Corrects a segmentation fault when a configuration file has a #include
statement that referenced a file that does not exist.</p>
<p>Resolves: https://github.com/asterisk/asterisk/issues/1139</p>
<h4>manager.c: Check for restricted file in action_createconfig.</h4>
<p>Author: George Joseph
Date: 2025-03-03</p>
<p>The <code>CreateConfig</code> manager action now ensures that a config file can
only be created in the AST_CONFIG_DIR unless <code>live_dangerously</code> is set.</p>
<p>Resolves: #1122</p>
<h4>swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().</h4>
<p>Author: George Joseph
Date: 2025-03-04</p>
<p>Recent python versions complain when backslashes in strings create invalid
escape sequences. This causes issues for strings used as regex patterns like
<code>'^List\[(.*)\]$'</code> where you want the regex parser to treat <code>[</code> and <code>]</code>
as literals. Double-backslashing is one way to fix it but simply converting
the string to a raw string <code>re.match(r'^List\[(.*)\]$', text)</code> is easier
and less error prone.</p>
<h4>Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"</h4>
<p>Author: Maximilian Fridrich
Date: 2025-02-28</p>
<p>This reverts commit f30ad96b3f467739c38ff415e80bffc4afff1da7.</p>
<p>The original change was not RFC compliant and caused issues because it
set the RTP marker bit in cases when it shouldn't be set. See the
linked issue #1135 for a detailed explanation.</p>
<p>Fixes: #1135.</p>
<h4>res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.</h4>
<p>Author: Sean Bright
Date: 2025-02-24</p>
<p>Found while reviewing #1128</p>
<h4>docs: Fix typos in cdr/ Found via codespell</h4>
<p>Author: Luz Paz
Date: 2025-02-12</p>
<h4>docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..</h4>
<p>Author: Luz Paz
Date: 2025-02-04</p>
<h4>docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..</h4>
<p>Author: Luz Paz
Date: 2025-02-04</p>
<h4>bridging: Fix multiple bridging issues causing SEGVs and FRACKs.</h4>
<p>Author: George Joseph
Date: 2025-01-22</p>
<p>Issues:</p>
<ul>
<li>
<p>The bridging core allowed multiple bridges to be created with the same
unique bridgeId at the same time. Only the last bridge created with the
duplicate name was actually saved to the core bridges container.</p>
</li>
<li>
<p>The bridging core was creating a stasis topic for the bridge and saving it
in the bridge-&gt;topic field but not increasing its reference count. In the
case where two bridges were created with the same uniqueid (which is also
the topic name), the second bridge would get the <em>existing</em> topic the first
bridge created. When the first bridge was destroyed, it would take the
topic with it so when the second bridge attempted to publish a message to
it it either FRACKed or SEGVd.</p>
</li>
<li>
<p>The bridge destructor, which also destroys the bridge topic, is run from the
bridge manager thread not the caller's thread. This makes it possible for
an ARI developer to create a new one with the same uniqueid believing the
old one was destroyed when, in fact, the old one's destructor hadn't
completed. This could cause the new bridge to get the old one's topic just
before the topic was destroyed. When the new bridge attempted to publish
a message on that topic, asterisk could either FRACK or SEGV.</p>
</li>
<li>
<p>The ARI bridges resource also allowed multiple bridges to be created with
the same uniqueid but it kept the duplicate bridges in its app_bridges
container. This created a situation where if you added two bridges with
the same "bridge1" uniqueid, all operations on "bridge1" were performed on
the first bridge created and the second was basically orphaned. If you
attempted to delete what you thought was the second bridge, you actually
deleted the first one created.</p>
</li>
</ul>
<p>Changes:</p>
<ul>
<li>
<p>A new API <code>ast_bridge_topic_exists(uniqueid)</code> was created to determine if
a topic already exists for a bridge.</p>
</li>
<li>
<p><code>bridge_base_init()</code> in bridge.c and <code>ast_ari_bridges_create()</code> in
resource_bridges.c now call <code>ast_bridge_topic_exists(uniqueid)</code> to check
if a bridge with the requested uniqueid already exists and will fail if it
does.</p>
</li>
<li>
<p><code>bridge_register()</code> in bridges.c now checks the core bridges container to
make sure a bridge doesn't already exist with the requested uniqueid.
Although most callers of <code>bridge_register()</code> will have already called
<code>bridge_base_init()</code>, which will now fail on duplicate bridges, there
is no guarantee of this so we must check again.</p>
</li>
<li>
<p>The core bridges container allocation was changed to reject duplicate
uniqueids instead of silently replacing an existing one. This is a "belt
and suspenders" check.</p>
</li>
<li>
<p>A global mutex was added to bridge.c to prevent concurrent calls to
<code>bridge_base_init()</code> and <code>bridge_register()</code>.</p>
</li>
<li>
<p>Even though you can no longer create multiple bridges with the same uniqueid
at the same time, it's still possible that the bridge topic might be
destroyed while a second bridge with the same uniqueid was trying to use
it. To address this, the bridging core now increments the reference count
on bridge-&gt;topic when a bridge is created and decrements it when the
bridge is destroyed.</p>
</li>
<li>
<p><code>bridge_create_common()</code> in res_stasis.c now checks the stasis app_bridges
container to make sure a bridge with the requested uniqueid doesn't already
exist. This may seem like overkill but there are so many entrypoints to
bridge creation that we need to be safe and catch issues as soon in the
process as possible.</p>
</li>
<li>
<p>The stasis app_bridges container allocation was changed to reject duplicate
uniqueids instead of adding them. This is a "belt and suspenders" check.</p>
</li>
<li>
<p>The <code>bridge show all</code> CLI command now shows the bridge name as well as the
bridge id.</p>
</li>
<li>
<p>Response code 409 "Conflict" was added as a possible response from the ARI
bridge create resources to signal that a bridge with the requested uniqueid
already exists.</p>
</li>
<li>
<p>Additional debugging was added to multiple bridging and stasis files.</p>
</li>
</ul>
<p>Resolves: #211</p>
<h4>bridge_channel: don't set cause code on channel during bridge delete if alread..</h4>
<p>Author: Mike Bradeen
Date: 2025-02-18</p>
<p>Due to a potential race condition via ARI when hanging up a channel hangup with cause
while also deleting a bridge containing that channel, the bridge delete can over-write
the hangup cause code resulting in Normal Call Clearing instead of the set value.</p>
<p>With this change, bridge deletion will only set the hangup code if it hasn't been
previously set.</p>
<p>Resolves: #1124</p>
<h4>res_config_pgsql: Fix regression that removed dbname config.</h4>
<p>Author: George Joseph
Date: 2025-02-11</p>
<p>A recent commit accidentally removed the code that sets dbname.
This commit adds it back in.</p>
<p>Resolves: #1119</p>
<h4>res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.</h4>
<p>Author: George Joseph
Date: 2025-02-05</p>
<p>The verification check for missing or anonymous callerid was happening before
the endpoint's profile was retrieved which meant that the failure_action
parameter wasn't available. Therefore, if verification was enabled and there
was no callerid or it was "anonymous", the call was immediately terminated
instead of giving the dialplan the ability to decide what to do with the call.</p>
<ul>
<li>
<p>The callerid check now happens after the verification context is created and
the endpoint's stir_shaken_profile is available.</p>
</li>
<li>
<p>The check now processes the callerid failure just as it does for other
verification failures and respects the failure_action parameter. If set
to "continue" or "continue_return_reason", <code>STIR_SHAKEN(0,verify_result)</code>
in the dialplan will return "invalid_or_no_callerid".</p>
</li>
<li>
<p>If the endpoint's failure_action is "reject_request", the call will be
rejected with <code>433 "Anonymity Disallowed"</code>.</p>
</li>
<li>
<p>If the endpoint's failure_action is "continue_return_reason", the call will
continue but a <code>Reason: STIR; cause=433; text="Anonymity Disallowed"</code>
header will be added to the next provisional or final response.</p>
</li>
</ul>
<p>Resolves: #1112</p>
<h4>resource_channels.c: Fix memory leak in ast_ari_channels_external_media.</h4>
<p>Author: George Joseph
Date: 2025-02-04</p>
<p>Between ast_ari_channels_external_media(), external_media_rtp_udp(),
and external_media_audiosocket_tcp(), the <code>variables</code> structure being passed
around wasn't being cleaned up properly when there was a failure.</p>
<ul>
<li>
<p>In ast_ari_channels_external_media(), the <code>variables</code> structure is now
defined with RAII_VAR to ensure it always gets cleaned up.</p>
</li>
<li>
<p>The ast_variables_destroy() call was removed from external_media_rtp_udp().</p>
</li>
<li>
<p>The ast_variables_destroy() call was removed from
external_media_audiosocket_tcp(), its <code>endpoint</code> allocation was changed to
to use ast_asprintf() as external_media_rtp_udp() does, and it now
returns an error on failure.</p>
</li>
<li>
<p>ast_ari_channels_external_media() now checks the new return code from
external_media_audiosocket_tcp() and sets the appropriate error response.</p>
</li>
</ul>
<p>Resolves: #1109</p>
<h4>ari/pjsip: Make it possible to control transfers through ARI</h4>
<p>Author: Holger Hans Peter Freyther
Date: 2024-06-15</p>
<p>Introduce a ChannelTransfer event and the ability to notify progress to
ARI. Implement emitting this event from the PJSIP channel instead of
handling the transfer in Asterisk when configured.</p>
<p>Introduce a dialplan function to the PJSIP channel to switch between the
"core" and "ari-only" behavior.</p>
<p>UserNote: Call transfers on the PJSIP channel can now be controlled by
ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
dialplan function.</p>
<h4>channel.c: Remove dead AST_GENERATOR_FD code.</h4>
<p>Author: Sean Bright
Date: 2025-02-06</p>
<p>Nothing ever sets the <code>AST_GENERATOR_FD</code>, so this block of code will
never execute. It also is the only place where the <code>generate</code> callback
is called with the channel lock held which made it difficult to reason
about the thread safety of <code>ast_generator</code>s.</p>
<p>In passing, also note that <code>AST_AGENT_FD</code> isn't used either.</p>
<h4>func_strings.c: Prevent SEGV in HASH single-argument mode.</h4>
<p>Author: George Joseph
Date: 2025-01-30</p>
<p>When in single-argument mode (very rarely used), a malformation of a column
name (also very rare) could cause a NULL to be returned when retrieving the
channel variable for that column. Passing that to strncat causes a SEGV. We
now check for the NULL and print a warning message.</p>
<p>Resolves: #1101</p>
<h4>docs: Add version information to AGI command XML elements.</h4>
<p>Author: George Joseph
Date: 2025-01-24</p>
<p>This process was a bit different than the others because everything
is in the same file, there's an array that contains the command
names and their handler functions, and the last command was created
over 15 years ago.</p>
<ul>
<li>Dump a <code>git blame</code> of res/res_agi.c from BEFORE the handle_* prototypes
were changed.</li>
<li>Create a command &lt;&gt; handler function xref by parsing the the agi_command
array.</li>
<li>For each entry, grep the function definition line "static int handle_*"
from the git blame output and capture the commit. This will be the
commit the command was created in.</li>
<li>Do a <code>git tag --contains &lt;commit&gt; | sort -V | head -1</code> to get the
tag the function was created in.</li>
<li>Add a single since/version element to the command XML. Multiple versions
aren't supported here because the branching and tagging scheme changed
several times in the 2000's.</li>
</ul>
<h4>docs: Fix minor typo in MixMonitor AMI action</h4>
<p>Author: Jeremy Lainé
Date: 2025-01-28</p>
<p>The <code>Options</code> argument was erroneously documented as lowercase
<code>options</code>.</p>
<h4>utils: Disable old style definition warnings for libdb.</h4>
<p>Author: Naveen Albert
Date: 2025-01-23</p>
<p>Newer versions of gcc now warn about old style definitions, such
as those in libdb, which causes compilation failure with DEVMODE
enabled. Ignore these warnings for libdb.</p>
<p>Resolves: #1085</p>
<h4>rtp.conf.sample: Correct stunaddr example.</h4>
<p>Author: fabriziopicconi
Date: 2024-09-25</p>
<h4>docs: Add version information to ARI resources and methods.</h4>
<p>Author: George Joseph
Date: 2025-01-27</p>
<ul>
<li>
<p>Dump a git blame of each file in rest-api/api-docs.</p>
</li>
<li>
<p>Get the commit for each "resourcePath" and "httpMethod" entry.</p>
</li>
<li>
<p>Find the tags for each commit (same as other processes).</p>
</li>
<li>
<p>Insert a "since" array after each "resourcePath" and "httpMethod" entry.</p>
</li>
</ul>
<h4>docs: Indent <since> tags.</h4>
<p>Author: Sean Bright
Date: 2025-01-23</p>
<p>Also updates the 'since' of applications/functions that existed before
XML documentation was introduced (1.6.2.0).</p>
</body></html>

View File

@@ -1,589 +0,0 @@
## Change Log for Release asterisk-20.13.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.13.0.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.12.0...20.13.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.13.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 29
- Commit Authors: 12
- Issues Resolved: 12
- Security Advisories Resolved: 0
### User Notes:
- #### ari/pjsip: Make it possible to control transfers through ARI
Call transfers on the PJSIP channel can now be controlled by
ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
dialplan function.
### Upgrade Notes:
### Commit Authors:
- Allan Nathanson: (1)
- Ben Ford: (1)
- Fabriziopicconi: (1)
- George Joseph: (11)
- Holger Hans Peter Freyther: (1)
- Jeremy Lainé: (1)
- Joshua Elson: (1)
- Luz Paz: (3)
- Maximilian Fridrich: (1)
- Mike Bradeen: (1)
- Naveen Albert: (1)
- Sean Bright: (6)
## Issue and Commit Detail:
### Closed Issues:
- 211: [bug]: stasis: Off-nominal channel leave causes bridge to be destroyed
- 1085: [bug]: utils: Compilation failure with DEVMODE due to old-style definitions
- 1101: [bug]: when setting a var with a double quotes and using Set(HASH)
- 1109: [bug]: Off nominal memory leak in res/ari/resource_channels.c
- 1112: [bug]: STIR/SHAKEN verification doesn't allow anonymous callerid to be passed to the dialplan.
- 1119: [bug]: Realtime database not working after upgrade from 22.0.0 to 22.2.0
- 1122: Need status on CVE-2024-57520 claim.
- 1124: [bug]: Race condition between bridge and channel delete can over-write cause code set in hangup.
- 1131: [bug]: CHANGES link broken in README.md
- 1135: [bug]: Problems with video decoding due to RTP marker bit set
- 1149: [bug]: res_pjsip: Mismatch in tcp_keepalive_enable causes not to enable
- 1164: [bug]: WARNING Message in messages.log for res_curl.conf [globals]
### Commits By Author:
- #### Allan Nathanson (1):
- config.c: #include of non-existent file should not crash
- #### Ben Ford (1):
- documentation: Update Gosub, Goto, and add new documentationtype.
- #### George Joseph (11):
- docs: Add version information to ARI resources and methods.
- docs: Add version information to AGI command XML elements.
- func_strings.c: Prevent SEGV in HASH single-argument mode.
- resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
- res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
- res_config_pgsql: Fix regression that removed dbname config.
- bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
- swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
- manager.c: Check for restricted file in action_createconfig.
- README.md: Updates and Fixes
- res_pjsip_outbound_registration.c: Remove xpointer reference to user_agent.
- #### Holger Hans Peter Freyther (1):
- ari/pjsip: Make it possible to control transfers through ARI
- #### Jeremy Lainé (1):
- docs: Fix minor typo in MixMonitor AMI action
- #### Joshua Elson (1):
- fix: Correct default flag for tcp_keepalive_enable option
- #### Luz Paz (3):
- docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..
- docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..
- docs: Fix typos in cdr/ Found via codespell
- #### Maximilian Fridrich (1):
- Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
- #### Mike Bradeen (1):
- bridge_channel: don't set cause code on channel during bridge delete if alread..
- #### Naveen Albert (1):
- utils: Disable old style definition warnings for libdb.
- #### Sean Bright (6):
- docs: Indent <since> tags.
- channel.c: Remove dead AST_GENERATOR_FD code.
- res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
- docs: AMI documentation fixes.
- res_rtp_asterisk.c: Don't truncate spec-compliant `ice-ufrag` or `ice-pwd`.
- res_config_curl.c: Remove unnecessary warnings.
- #### fabriziopicconi (1):
- rtp.conf.sample: Correct stunaddr example.
### Commit List:
- documentation: Update Gosub, Goto, and add new documentationtype.
- res_config_curl.c: Remove unnecessary warnings.
- res_pjsip_outbound_registration.c: Remove xpointer reference to user_agent.
- README.md: Updates and Fixes
- res_rtp_asterisk.c: Don't truncate spec-compliant `ice-ufrag` or `ice-pwd`.
- fix: Correct default flag for tcp_keepalive_enable option
- docs: AMI documentation fixes.
- config.c: #include of non-existent file should not crash
- manager.c: Check for restricted file in action_createconfig.
- swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
- Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
- res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
- docs: Fix typos in cdr/ Found via codespell
- bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
- res_config_pgsql: Fix regression that removed dbname config.
- res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
- resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
- ari/pjsip: Make it possible to control transfers through ARI
- channel.c: Remove dead AST_GENERATOR_FD code.
- func_strings.c: Prevent SEGV in HASH single-argument mode.
- docs: Add version information to AGI command XML elements.
- docs: Fix minor typo in MixMonitor AMI action
- utils: Disable old style definition warnings for libdb.
- rtp.conf.sample: Correct stunaddr example.
- docs: Add version information to ARI resources and methods.
- docs: Indent <since> tags.
### Commit Details:
#### documentation: Update Gosub, Goto, and add new documentationtype.
Author: Ben Ford
Date: 2025-03-14
Gosub and Goto were not displaying their syntax correctly on the docs
site. This change adds a new way to specify an optional context, an
optional extension, and a required priority that the xml stylesheet can
parse without having to know which optional parameters come in which
order. In Asterisk, it looks like this:
parameter name="context" documentationtype="dialplan_context"
parameter name="extension" documentationtype="dialplan_extension"
parameter name="priority" documentationtype="dialplan_priority" required="true"
The stylesheet will ignore the context and extension parameters, but for
priority, it will automatically inject the following:
[[context,]extension,]priority
This is the correct oder for applications such as Gosub and Goto.
#### res_config_curl.c: Remove unnecessary warnings.
Author: Sean Bright
Date: 2025-03-17
Resolves: #1164
#### res_pjsip_outbound_registration.c: Remove xpointer reference to user_agent.
Author: George Joseph
Date: 2025-03-14
Commit e86f937e added AMI documentation to the module but the cherry-pick
from master to the 20 branch pulled in an xpointer reference to the
`user_agent` config option which doesn't actually exist in 20. This causes
asterisk to fail to start because it can't load the core-en_US.xml
documentation file. The CI cherry-pick tests should have caught this but
there was bug in the cherry-picker that was causing the commits to be
cherry-picked to the wrong branch. Just removing the xpointer reference
resolves the issue.
#### README.md: Updates and Fixes
Author: George Joseph
Date: 2025-03-05
* Outdated information has been removed.
* New links added.
* Placeholder added for link to change logs.
Going forward, the release process will create HTML versions of the README
and change log and will update the link in the README to the current
change log for the branch...
* In the development branches, the link will always point to the current
release on GitHub.
* In the "releases/*" branches and the tarballs, the link will point to the
ChangeLogs/ChangeLog-<version>.html file in the source directory.
* On the downloads website, the link will point to the
ChangeLog-<version>.html file in the same directory.
Resolves: #1131
#### res_rtp_asterisk.c: Don't truncate spec-compliant `ice-ufrag` or `ice-pwd`.
Author: Sean Bright
Date: 2025-03-07
RFC 8839[1] indicates that the `ice-ufrag` and `ice-pwd` attributes
can be up to 256 bytes long. While we don't generate values of that
size, we should be able to accomodate them without truncating.
1. https://www.rfc-editor.org/rfc/rfc8839#name-ice-ufrag-and-ice-pwd-attri
#### fix: Correct default flag for tcp_keepalive_enable option
Author: Joshua Elson
Date: 2025-03-06
Resolves an issue where the tcp_keepalive_enable option was not properly enabled in the sample configuration due to an incorrect default flag setting.
Fixes: #1149
#### docs: AMI documentation fixes.
Author: Sean Bright
Date: 2025-02-18
Most of this patch is adding missing PJSIP-related event
documentation, but the one functional change was adding a sorcery
to-string handler for endpoint's `redirect_method` which was not
showing up in the AMI event details or `pjsip show endpoint
<endpoint>` output.
The rest of the changes are summarized below:
* app_agent_pool.c: Typo fix Epoche -> Epoch.
* stasis_bridges.c: Add missing AttendedTransfer properties.
* stasis_channels.c: Add missing AgentLogoff properties.
* pjsip_manager.xml:
- Add missing AorList properties.
- Add missing AorDetail properties.
- Add missing ContactList properties.
- Add missing ContactStatusDetail properties.
- Add missing EventDetail properties.
- Add missing AuthList properties.
- Add missing AuthDetail properties.
- Add missing TransportDetail properties.
- Add missing EndpointList properties.
- Add missing IdentifyDetail properties.
* res_pjsip_registrar.c: Add missing InboundRegistrationDetail documentation.
* res_pjsip_pubsub.c:
- Add missing ResourceListDetail documentation.
- Add missing InboundSubscriptionDetail documentation.
- Add missing OutboundSubscriptionDetail documentation.
* res_pjsip_outbound_registration.c: Add missing OutboundRegistrationDetail documentation.
#### config.c: #include of non-existent file should not crash
Author: Allan Nathanson
Date: 2025-03-03
Corrects a segmentation fault when a configuration file has a #include
statement that referenced a file that does not exist.
Resolves: https://github.com/asterisk/asterisk/issues/1139
#### manager.c: Check for restricted file in action_createconfig.
Author: George Joseph
Date: 2025-03-03
The `CreateConfig` manager action now ensures that a config file can
only be created in the AST_CONFIG_DIR unless `live_dangerously` is set.
Resolves: #1122
#### swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
Author: George Joseph
Date: 2025-03-04
Recent python versions complain when backslashes in strings create invalid
escape sequences. This causes issues for strings used as regex patterns like
`'^List\[(.*)\]$'` where you want the regex parser to treat `[` and `]`
as literals. Double-backslashing is one way to fix it but simply converting
the string to a raw string `re.match(r'^List\[(.*)\]$', text)` is easier
and less error prone.
#### Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
Author: Maximilian Fridrich
Date: 2025-02-28
This reverts commit f30ad96b3f467739c38ff415e80bffc4afff1da7.
The original change was not RFC compliant and caused issues because it
set the RTP marker bit in cases when it shouldn't be set. See the
linked issue #1135 for a detailed explanation.
Fixes: #1135.
#### res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
Author: Sean Bright
Date: 2025-02-24
Found while reviewing #1128
#### docs: Fix typos in cdr/ Found via codespell
Author: Luz Paz
Date: 2025-02-12
#### docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..
Author: Luz Paz
Date: 2025-02-04
#### docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..
Author: Luz Paz
Date: 2025-02-04
#### bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
Author: George Joseph
Date: 2025-01-22
Issues:
* The bridging core allowed multiple bridges to be created with the same
unique bridgeId at the same time. Only the last bridge created with the
duplicate name was actually saved to the core bridges container.
* The bridging core was creating a stasis topic for the bridge and saving it
in the bridge->topic field but not increasing its reference count. In the
case where two bridges were created with the same uniqueid (which is also
the topic name), the second bridge would get the _existing_ topic the first
bridge created. When the first bridge was destroyed, it would take the
topic with it so when the second bridge attempted to publish a message to
it it either FRACKed or SEGVd.
* The bridge destructor, which also destroys the bridge topic, is run from the
bridge manager thread not the caller's thread. This makes it possible for
an ARI developer to create a new one with the same uniqueid believing the
old one was destroyed when, in fact, the old one's destructor hadn't
completed. This could cause the new bridge to get the old one's topic just
before the topic was destroyed. When the new bridge attempted to publish
a message on that topic, asterisk could either FRACK or SEGV.
* The ARI bridges resource also allowed multiple bridges to be created with
the same uniqueid but it kept the duplicate bridges in its app_bridges
container. This created a situation where if you added two bridges with
the same "bridge1" uniqueid, all operations on "bridge1" were performed on
the first bridge created and the second was basically orphaned. If you
attempted to delete what you thought was the second bridge, you actually
deleted the first one created.
Changes:
* A new API `ast_bridge_topic_exists(uniqueid)` was created to determine if
a topic already exists for a bridge.
* `bridge_base_init()` in bridge.c and `ast_ari_bridges_create()` in
resource_bridges.c now call `ast_bridge_topic_exists(uniqueid)` to check
if a bridge with the requested uniqueid already exists and will fail if it
does.
* `bridge_register()` in bridges.c now checks the core bridges container to
make sure a bridge doesn't already exist with the requested uniqueid.
Although most callers of `bridge_register()` will have already called
`bridge_base_init()`, which will now fail on duplicate bridges, there
is no guarantee of this so we must check again.
* The core bridges container allocation was changed to reject duplicate
uniqueids instead of silently replacing an existing one. This is a "belt
and suspenders" check.
* A global mutex was added to bridge.c to prevent concurrent calls to
`bridge_base_init()` and `bridge_register()`.
* Even though you can no longer create multiple bridges with the same uniqueid
at the same time, it's still possible that the bridge topic might be
destroyed while a second bridge with the same uniqueid was trying to use
it. To address this, the bridging core now increments the reference count
on bridge->topic when a bridge is created and decrements it when the
bridge is destroyed.
* `bridge_create_common()` in res_stasis.c now checks the stasis app_bridges
container to make sure a bridge with the requested uniqueid doesn't already
exist. This may seem like overkill but there are so many entrypoints to
bridge creation that we need to be safe and catch issues as soon in the
process as possible.
* The stasis app_bridges container allocation was changed to reject duplicate
uniqueids instead of adding them. This is a "belt and suspenders" check.
* The `bridge show all` CLI command now shows the bridge name as well as the
bridge id.
* Response code 409 "Conflict" was added as a possible response from the ARI
bridge create resources to signal that a bridge with the requested uniqueid
already exists.
* Additional debugging was added to multiple bridging and stasis files.
Resolves: #211
#### bridge_channel: don't set cause code on channel during bridge delete if alread..
Author: Mike Bradeen
Date: 2025-02-18
Due to a potential race condition via ARI when hanging up a channel hangup with cause
while also deleting a bridge containing that channel, the bridge delete can over-write
the hangup cause code resulting in Normal Call Clearing instead of the set value.
With this change, bridge deletion will only set the hangup code if it hasn't been
previously set.
Resolves: #1124
#### res_config_pgsql: Fix regression that removed dbname config.
Author: George Joseph
Date: 2025-02-11
A recent commit accidentally removed the code that sets dbname.
This commit adds it back in.
Resolves: #1119
#### res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
Author: George Joseph
Date: 2025-02-05
The verification check for missing or anonymous callerid was happening before
the endpoint's profile was retrieved which meant that the failure_action
parameter wasn't available. Therefore, if verification was enabled and there
was no callerid or it was "anonymous", the call was immediately terminated
instead of giving the dialplan the ability to decide what to do with the call.
* The callerid check now happens after the verification context is created and
the endpoint's stir_shaken_profile is available.
* The check now processes the callerid failure just as it does for other
verification failures and respects the failure_action parameter. If set
to "continue" or "continue_return_reason", `STIR_SHAKEN(0,verify_result)`
in the dialplan will return "invalid_or_no_callerid".
* If the endpoint's failure_action is "reject_request", the call will be
rejected with `433 "Anonymity Disallowed"`.
* If the endpoint's failure_action is "continue_return_reason", the call will
continue but a `Reason: STIR; cause=433; text="Anonymity Disallowed"`
header will be added to the next provisional or final response.
Resolves: #1112
#### resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
Author: George Joseph
Date: 2025-02-04
Between ast_ari_channels_external_media(), external_media_rtp_udp(),
and external_media_audiosocket_tcp(), the `variables` structure being passed
around wasn't being cleaned up properly when there was a failure.
* In ast_ari_channels_external_media(), the `variables` structure is now
defined with RAII_VAR to ensure it always gets cleaned up.
* The ast_variables_destroy() call was removed from external_media_rtp_udp().
* The ast_variables_destroy() call was removed from
external_media_audiosocket_tcp(), its `endpoint` allocation was changed to
to use ast_asprintf() as external_media_rtp_udp() does, and it now
returns an error on failure.
* ast_ari_channels_external_media() now checks the new return code from
external_media_audiosocket_tcp() and sets the appropriate error response.
Resolves: #1109
#### ari/pjsip: Make it possible to control transfers through ARI
Author: Holger Hans Peter Freyther
Date: 2024-06-15
Introduce a ChannelTransfer event and the ability to notify progress to
ARI. Implement emitting this event from the PJSIP channel instead of
handling the transfer in Asterisk when configured.
Introduce a dialplan function to the PJSIP channel to switch between the
"core" and "ari-only" behavior.
UserNote: Call transfers on the PJSIP channel can now be controlled by
ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
dialplan function.
#### channel.c: Remove dead AST_GENERATOR_FD code.
Author: Sean Bright
Date: 2025-02-06
Nothing ever sets the `AST_GENERATOR_FD`, so this block of code will
never execute. It also is the only place where the `generate` callback
is called with the channel lock held which made it difficult to reason
about the thread safety of `ast_generator`s.
In passing, also note that `AST_AGENT_FD` isn't used either.
#### func_strings.c: Prevent SEGV in HASH single-argument mode.
Author: George Joseph
Date: 2025-01-30
When in single-argument mode (very rarely used), a malformation of a column
name (also very rare) could cause a NULL to be returned when retrieving the
channel variable for that column. Passing that to strncat causes a SEGV. We
now check for the NULL and print a warning message.
Resolves: #1101
#### docs: Add version information to AGI command XML elements.
Author: George Joseph
Date: 2025-01-24
This process was a bit different than the others because everything
is in the same file, there's an array that contains the command
names and their handler functions, and the last command was created
over 15 years ago.
* Dump a `git blame` of res/res_agi.c from BEFORE the handle_* prototypes
were changed.
* Create a command <> handler function xref by parsing the the agi_command
array.
* For each entry, grep the function definition line "static int handle_*"
from the git blame output and capture the commit. This will be the
commit the command was created in.
* Do a `git tag --contains <commit> | sort -V | head -1` to get the
tag the function was created in.
* Add a single since/version element to the command XML. Multiple versions
aren't supported here because the branching and tagging scheme changed
several times in the 2000's.
#### docs: Fix minor typo in MixMonitor AMI action
Author: Jeremy Lainé
Date: 2025-01-28
The `Options` argument was erroneously documented as lowercase
`options`.
#### utils: Disable old style definition warnings for libdb.
Author: Naveen Albert
Date: 2025-01-23
Newer versions of gcc now warn about old style definitions, such
as those in libdb, which causes compilation failure with DEVMODE
enabled. Ignore these warnings for libdb.
Resolves: #1085
#### rtp.conf.sample: Correct stunaddr example.
Author: fabriziopicconi
Date: 2024-09-25
#### docs: Add version information to ARI resources and methods.
Author: George Joseph
Date: 2025-01-27
* Dump a git blame of each file in rest-api/api-docs.
* Get the commit for each "resourcePath" and "httpMethod" entry.
* Find the tags for each commit (same as other processes).
* Insert a "since" array after each "resourcePath" and "httpMethod" entry.
#### docs: Indent <since> tags.
Author: Sean Bright
Date: 2025-01-23
Also updates the 'since' of applications/functions that existed before
XML documentation was introduced (1.6.2.0).

View File

@@ -1,537 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.14.0</title></head><body>
<h2>Change Log for Release asterisk-20.14.0</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.14.0.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.13.0...20.14.0">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.14.0.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 24</li>
<li>Commit Authors: 18</li>
<li>Issues Resolved: 12</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>stasis/control.c: Set Hangup Cause to No Answer on Dial timeout</h4>
<p>A Dial timeout on POST /channels/{channelId}/dial will now result in a
CANCEL and ChannelDestroyed with cause 19 / User alerting, no answer. Previously
no explicit cause was set, resulting in a cause of 16 / Normal Call Clearing.</p>
</li>
<li>
<h4>contrib: Add systemd service and timer files for malloc trim.</h4>
<p>Service and timer files for systemd have been added to the
contrib/systemd/ directory. If you are experiencing memory issues,
install these files to have "malloc trim" periodically run on the
system.</p>
</li>
<li>
<h4>Add log-caller-id-name option to log Caller ID Name in queue log</h4>
<p>This patch adds a global configuration option, log-caller-id-name, to queues.conf
to control whether the Caller ID name is logged as parameter 4 when a call enters a queue.
When log-caller-id-name=yes, the Caller ID name is included in the queue log,
Any '|' characters in the caller ID name will be replaced with '_'.
(provided its allowed by the existing log_restricted_caller_id rules).
When log-caller-id-name=no (the default), the Caller ID name is omitted.</p>
</li>
<li>
<h4>asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.</h4>
<p>In cli.conf, you can now define startup commands that run before
core initialization and before module initialization.</p>
</li>
<li>
<h4>audiosocket: added support for DTMF frames</h4>
<p>The AudioSocket protocol now forwards DTMF frames with
payload type 0x03. The payload is a 1-byte ascii representing the DTMF
digit (0-9,*,#...).</p>
</li>
</ul>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>ARI: REST over Websocket</h4>
This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.
See https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/</li>
</ul>
<h3>Commit Authors:</h3>
<ul>
<li>Albrecht Oster: (1)</li>
<li>Alexei Gradinari: (1)</li>
<li>Allan Nathanson: (1)</li>
<li>Andreas Wehrmann: (1)</li>
<li>Ben Ford: (1)</li>
<li>Florent CHAUVEAU: (1)</li>
<li>George Joseph: (4)</li>
<li>Joshua C. Colp: (1)</li>
<li>Luz Paz: (1)</li>
<li>Mark Murawski: (1)</li>
<li>Mike Bradeen: (1)</li>
<li>Mkmer: (1)</li>
<li>Naveen Albert: (3)</li>
<li>Norm Harrison: (2)</li>
<li>Peter Jannesen: (1)</li>
<li>Phoneben: (1)</li>
<li>Sean Bright: (1)</li>
<li>Zhai Liangliang: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>505: [bug]: res_pjproject: ast_sockaddr_cmp() always fails on sockaddrs created by ast_sockaddr_from_pj_sockaddr()</li>
<li>643: [new-feature]: pjsip show contact -- show all details same as AMI PJSIPShowContacts</li>
<li>963: [bug]: missing hangup cause for ARI ChannelDestroyed when Dial times out</li>
<li>1091: [improvement]: app queue :add to queue log callerid name</li>
<li>1144: [bug]: action_redirect don't remove bridge_after_goto data</li>
<li>1171: [improvement]: Need the capability in audiohook.c for fractional (float) type volume adjustments.</li>
<li>1181: [bug]: Incorrect PJSIP Endpoint Device States on Multiple Channels</li>
<li>1190: [bug]: Crash when starting ConfBridge recording over CLI and AMI</li>
<li>1197: [bug]: ChannelHangupRequest does not show cause code in all cases</li>
<li>1206: [improvement]: chan_iax2: Minor improvements to documentation and warning messages.</li>
<li>1220: [bug]: res_pjsip_caller_id: OLI is not parsed if contained in a URI parameter</li>
<li>1224: [improvement]: app_meetme: Removal version is incorrect</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Albrecht Oster (1):</h4>
</li>
<li>
<p>res_pjproject: Fix DTLS client check failing on some platforms</p>
</li>
<li>
<h4>Alexei Gradinari (1):</h4>
</li>
<li>
<p>chan_pjsip: set correct Endpoint Device State on multiple channels</p>
</li>
<li>
<h4>Allan Nathanson (1):</h4>
</li>
<li>
<p>file.c: missing "custom" sound files should not generate warning logs</p>
</li>
<li>
<h4>Andreas Wehrmann (1):</h4>
</li>
<li>
<p>pbx_ael: unregister AELSub application and CLI commands on module load failure</p>
</li>
<li>
<h4>Ben Ford (1):</h4>
</li>
<li>
<p>contrib: Add systemd service and timer files for malloc trim.</p>
</li>
<li>
<h4>Florent CHAUVEAU (1):</h4>
</li>
<li>
<p>audiosocket: added support for DTMF frames</p>
</li>
<li>
<h4>George Joseph (4):</h4>
</li>
<li>ARI: REST over Websocket</li>
<li>ari_websockets: Fix frack if ARI config fails to load.</li>
<li>asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.</li>
<li>
<p>Prequisites for ARI Outbound Websockets</p>
</li>
<li>
<h4>Joshua C. Colp (1):</h4>
</li>
<li>
<p>channel: Always provide cause code in ChannelHangupRequest.</p>
</li>
<li>
<h4>Luz Paz (1):</h4>
</li>
<li>
<p>docs: Fix typos in apps/</p>
</li>
<li>
<h4>Mark Murawski (1):</h4>
</li>
<li>
<p>chan_pjsip: Add the same details as PJSIPShowContacts to the CLI via 'pjsip s..</p>
</li>
<li>
<h4>Mike Bradeen (1):</h4>
</li>
<li>
<p>stasis/control.c: Set Hangup Cause to No Answer on Dial timeout</p>
</li>
<li>
<h4>Naveen Albert (3):</h4>
</li>
<li>chan_iax2: Minor improvements to documentation and warning messages.</li>
<li>app_meetme: Remove inaccurate removal version from xmldocs.</li>
<li>
<p>res_pjsip_caller_id: Also parse URI parameters for ANI2.</p>
</li>
<li>
<h4>Norm Harrison (2):</h4>
</li>
<li>audiosocket: fix timeout, fix dialplan app exit, server address in logs</li>
<li>
<p>asterisk/channel.h: fix documentation for 'ast_waitfor_nandfds()'</p>
</li>
<li>
<h4>Peter Jannesen (1):</h4>
</li>
<li>
<p>action_redirect: remove after_bridge_goto_info</p>
</li>
<li>
<h4>Sean Bright (1):</h4>
</li>
<li>
<p>app_confbridge: Prevent crash when publishing channel-less event.</p>
</li>
<li>
<h4>Zhai Liangliang (1):</h4>
</li>
<li>
<p>Update config.guess and config.sub</p>
</li>
<li>
<h4>mkmer (1):</h4>
</li>
<li>
<p>audiohook.c: Add ability to adjust volume with float</p>
</li>
<li>
<h4>phoneben (1):</h4>
</li>
<li>Add log-caller-id-name option to log Caller ID Name in queue log</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>res_pjsip_caller_id: Also parse URI parameters for ANI2.</li>
<li>app_meetme: Remove inaccurate removal version from xmldocs.</li>
<li>docs: Fix typos in apps/</li>
<li>stasis/control.c: Set Hangup Cause to No Answer on Dial timeout</li>
<li>chan_iax2: Minor improvements to documentation and warning messages.</li>
<li>pbx_ael: unregister AELSub application and CLI commands on module load failure</li>
<li>res_pjproject: Fix DTLS client check failing on some platforms</li>
<li>Prequisites for ARI Outbound Websockets</li>
<li>contrib: Add systemd service and timer files for malloc trim.</li>
<li>action_redirect: remove after_bridge_goto_info</li>
<li>channel: Always provide cause code in ChannelHangupRequest.</li>
<li>Add log-caller-id-name option to log Caller ID Name in queue log</li>
<li>asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.</li>
<li>app_confbridge: Prevent crash when publishing channel-less event.</li>
<li>ari_websockets: Fix frack if ARI config fails to load.</li>
<li>ARI: REST over Websocket</li>
<li>audiohook.c: Add ability to adjust volume with float</li>
<li>audiosocket: added support for DTMF frames</li>
<li>asterisk/channel.h: fix documentation for 'ast_waitfor_nandfds()'</li>
<li>audiosocket: fix timeout, fix dialplan app exit, server address in logs</li>
<li>Update config.guess and config.sub</li>
<li>chan_pjsip: set correct Endpoint Device State on multiple channels</li>
<li>file.c: missing "custom" sound files should not generate warning logs</li>
</ul>
<h3>Commit Details:</h3>
<h4>res_pjsip_caller_id: Also parse URI parameters for ANI2.</h4>
<p>Author: Naveen Albert
Date: 2025-04-26</p>
<p>If the isup-oli was sent as a URI parameter, rather than a header
parameter, it was not being parsed. Make sure we parse both if
needed so the ANI2 is set regardless of which type of parameter
the isup-oli is sent as.</p>
<p>Resolves: #1220</p>
<h4>app_meetme: Remove inaccurate removal version from xmldocs.</h4>
<p>Author: Naveen Albert
Date: 2025-04-26</p>
<p>app_meetme is deprecated but wasn't removed as planned in 21,
so remove the inaccurate removal version.</p>
<p>Resolves: #1224</p>
<h4>docs: Fix typos in apps/</h4>
<p>Author: Luz Paz
Date: 2025-04-09</p>
<p>Found via codespell</p>
<h4>stasis/control.c: Set Hangup Cause to No Answer on Dial timeout</h4>
<p>Author: Mike Bradeen
Date: 2025-04-17</p>
<p>Other Dial operations (dial, app_dial) use Q.850 cause 19 when a dial timeout occurs,
but the Dial command via ARI did not set an explicit reason. This resulted in a
CANCEL with Normal Call Clearing and corresponding ChannelDestroyed.</p>
<p>This change sets the hangup cause to AST_CAUSE_NO_ANSWER to be consistent with the
other operations.</p>
<p>Fixes: #963</p>
<p>UserNote: A Dial timeout on POST /channels/{channelId}/dial will now result in a
CANCEL and ChannelDestroyed with cause 19 / User alerting, no answer. Previously
no explicit cause was set, resulting in a cause of 16 / Normal Call Clearing.</p>
<h4>chan_iax2: Minor improvements to documentation and warning messages.</h4>
<p>Author: Naveen Albert
Date: 2025-04-18</p>
<ul>
<li>Update Dial() documentation for IAX2 to include syntax for RSA
public key names.</li>
<li>Add additional details to a couple warnings to provide more context
when an undecodable frame is received.</li>
</ul>
<p>Resolves: #1206</p>
<h4>pbx_ael: unregister AELSub application and CLI commands on module load failure</h4>
<p>Author: Andreas Wehrmann
Date: 2025-04-18</p>
<p>This fixes crashes/hangs I noticed with Asterisk 20.3.0 and 20.13.0 and quickly found out,
that the AEL module doesn't do proper cleanup when it fails to load.
This happens for example when there are syntax errors and AEL fails to compile in which case pbx_load_module()
returns an error but load_module() doesn't then unregister CLI cmds and the application.</p>
<h4>res_pjproject: Fix DTLS client check failing on some platforms</h4>
<p>Author: Albrecht Oster
Date: 2025-04-10</p>
<p>Certain platforms (mainly BSD derivatives) have an additional length
field in <code>sockaddr_in6</code> and <code>sockaddr_in</code>.
<code>ast_sockaddr_from_pj_sockaddr()</code> does not take this field into account
when copying over values from the <code>pj_sockaddr</code> into the <code>ast_sockaddr</code>.
The resulting <code>ast_sockaddr</code> will have an uninitialized value for
<code>sin6_len</code>/<code>sin_len</code> while the other <code>ast_sockaddr</code> (not converted from
a <code>pj_sockaddr</code>) to check against in <code>ast_sockaddr_pj_sockaddr_cmp()</code>
has the correct length value set.</p>
<p>This has the effect that <code>ast_sockaddr_cmp()</code> will always indicate
an address mismatch, because it does a bitwise comparison, and all DTLS
packets are dropped even if addresses and ports match.</p>
<p><code>ast_sockaddr_from_pj_sockaddr()</code> now checks whether the length fields
are available on the current platform and sets the values accordingly.</p>
<p>Resolves: #505</p>
<h4>Prequisites for ARI Outbound Websockets</h4>
<p>Author: George Joseph
Date: 2025-04-16</p>
<p>stasis:
* Added stasis_app_is_registered().
* Added stasis_app_control_mark_failed().
* Added stasis_app_control_is_failed().
* Fixed res_stasis_device_state so unsubscribe all works properly.
* Modified stasis_app_unregister() to unsubscribe from all event sources.
* Modified stasis_app_exec to return -1 if stasis_app_control_is_failed()
returns true.</p>
<p>http:
* Added ast_http_create_basic_auth_header().</p>
<p>md5:
* Added define for MD5_DIGEST_LENGTH.</p>
<p>tcptls:
* Added flag to ast_tcptls_session_args to suppress connection log messages
to give callers more control over logging.</p>
<p>http_websocket:
* Add flag to ast_websocket_client_options to suppress connection log messages
to give callers more control over logging.
* Added username and password to ast_websocket_client_options to support
outbound basic authentication.
* Added ast_websocket_result_to_str().</p>
<h4>contrib: Add systemd service and timer files for malloc trim.</h4>
<p>Author: Ben Ford
Date: 2025-04-16</p>
<p>Adds two files to the contrib/systemd/ directory that can be installed
to periodically run "malloc trim" on Asterisk. These files do nothing
unless they are explicitly moved to the correct location on the system.
Users who are experiencing Asterisk memory issues can use this service
to potentially help combat the problem. These files can also be
configured to change the start time and interval. See systemd.timer(5)
and systemd.time(7) for more information.</p>
<p>UserNote: Service and timer files for systemd have been added to the
contrib/systemd/ directory. If you are experiencing memory issues,
install these files to have "malloc trim" periodically run on the
system.</p>
<h4>action_redirect: remove after_bridge_goto_info</h4>
<p>Author: Peter Jannesen
Date: 2025-03-13</p>
<p>Under certain circumstances the context/extens/prio are stored in the
after_bridge_goto_info. This info is used when the bridge is broken by
for hangup of the other party. In the situation that the bridge is
broken by an AMI Redirect this info is not used but also not removed.
With the result that when the channel is put back in a bridge and the
bridge is broken the execution continues at the wrong
context/extens/prio.</p>
<p>Resolves: #1144</p>
<h4>channel: Always provide cause code in ChannelHangupRequest.</h4>
<p>Author: Joshua C. Colp
Date: 2025-04-16</p>
<p>When queueing a channel to be hung up a cause code can be
specified in one of two ways:</p>
<ol>
<li>
<p>ast_queue_hangup_with_cause
This function takes in a cause code and queues it as part
of the hangup request, which ultimately results in it being
set on the channel.</p>
</li>
<li>
<p>ast_channel_hangupcause_set + ast_queue_hangup
This combination sets the hangup cause on the channel before
queueing the hangup instead of as part of that process.</p>
</li>
</ol>
<p>In the #2 case the ChannelHangupRequest event would not contain
the cause code. For consistency if a cause code has been set
on the channel it will now be added to the event.</p>
<p>Resolves: #1197</p>
<h4>Add log-caller-id-name option to log Caller ID Name in queue log</h4>
<p>Author: phoneben
Date: 2025-02-28</p>
<p>Add log-caller-id-name option to log Caller ID Name in queue log</p>
<p>This patch introduces a new global configuration option, log-caller-id-name,
to queues.conf to control whether the Caller ID name is logged when a call enters a queue.</p>
<p>When log-caller-id-name=yes, the Caller ID name is logged
as parameter 4 in the queue log, provided its allowed by the
existing log_restricted_caller_id rules. If log-caller-id-name=no (the default),
the Caller ID name is omitted from the logs.</p>
<p>Fixes: #1091</p>
<p>UserNote: This patch adds a global configuration option, log-caller-id-name, to queues.conf
to control whether the Caller ID name is logged as parameter 4 when a call enters a queue.
When log-caller-id-name=yes, the Caller ID name is included in the queue log,
Any '|' characters in the caller ID name will be replaced with '_'.
(provided its allowed by the existing log_restricted_caller_id rules).
When log-caller-id-name=no (the default), the Caller ID name is omitted.</p>
<h4>asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.</h4>
<p>Author: George Joseph
Date: 2025-04-10</p>
<p>Commands in the "[startup_commands]" section of cli.conf have historically run
after all core and module initialization has been completed and just before
"Asterisk Ready" is printed on the console. This meant that if you
wanted to debug initialization of a specific module, your only option
was to turn on debug for everything by setting "debug" in asterisk.conf.</p>
<p>This commit introduces options to allow you to run CLI commands earlier in
the asterisk startup process.</p>
<p>A command with a value of "pre-init" will run just after logger initialization
but before most core, and all module, initialization.</p>
<p>A command with a value of "pre-module" will run just after all core
initialization but before all module initialization.</p>
<p>A command with a value of "fully-booted" (or "yes" for backwards
compatibility) will run as they always have been...after all
initialization and just before "Asterisk Ready" is printed on the console.</p>
<p>This means you could do this...</p>
<p><code>[startup_commands]
core set debug 3 res_pjsip.so = pre-module
core set debug 0 res_pjsip.so = fully-booted</code></p>
<p>This would turn debugging on for res_pjsip.so to catch any module
initialization debug messages then turn it off again after the module is
loaded.</p>
<p>UserNote: In cli.conf, you can now define startup commands that run before
core initialization and before module initialization.</p>
<h4>app_confbridge: Prevent crash when publishing channel-less event.</h4>
<p>Author: Sean Bright
Date: 2025-04-07</p>
<p>Resolves: #1190</p>
<h4>ari_websockets: Fix frack if ARI config fails to load.</h4>
<p>Author: George Joseph
Date: 2025-04-02</p>
<p>ari_ws_session_registry_dtor() wasn't checking that the container was valid
before running ao2_callback on it to shutdown registered sessions.</p>
<h4>ARI: REST over Websocket</h4>
<p>Author: George Joseph
Date: 2025-03-12</p>
<p>This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.</p>
<p>For full details on how to use the new capability, visit...</p>
<p>https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/</p>
<p>Changes:</p>
<ul>
<li>Added utilities to http.c:<ul>
<li>ast_get_http_method_from_string().</li>
<li>ast_http_parse_post_form().</li>
</ul>
</li>
<li>Added utilities to json.c:<ul>
<li>ast_json_nvp_array_to_ast_variables().</li>
<li>ast_variables_to_json_nvp_array().</li>
</ul>
</li>
<li>Added definitions for new events to carry REST responses.</li>
<li>Created res/ari/ari_websocket_requests.c to house the new request handlers.</li>
<li>Moved non-event specific code out of res/ari/resource_events.c into
res/ari/ari_websockets.c</li>
<li>Refactored res/res_ari.c to move non-http code out of ast_ari_callback()
(which is http specific) and into ast_ari_invoke() so it can be shared
between both the http and websocket transports.</li>
</ul>
<p>UpgradeNote: This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.
See https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/</p>
<h4>audiohook.c: Add ability to adjust volume with float</h4>
<p>Author: mkmer
Date: 2025-03-18</p>
<p>Add the capability to audiohook for float type volume adjustments. This allows for adjustments to volume smaller than 6dB. With INT adjustments, the first step is 2 which converts to ~6dB (or 1/2 volume / double volume depending on adjustment sign). 3dB is a typical adjustment level which can now be accommodated with an adjustment value of 1.41.</p>
<p>This is accomplished by the following:
Convert internal variables to type float.
Always use ast_frame_adjust_volume_float() for adjustments.
Cast int to float in original functions ast_audiohook_volume_set(), and ast_volume_adjust().
Cast float to int in ast_audiohook_volume_get()
Add functions ast_audiohook_volume_get_float, ast_audiohook_volume_set_float, and ast_audiohook_volume_adjust_float.</p>
<p>This update maintains 100% backward compatibility.</p>
<p>Resolves: #1171</p>
<h4>audiosocket: added support for DTMF frames</h4>
<p>Author: Florent CHAUVEAU
Date: 2025-02-28</p>
<p>Updated the AudioSocket protocol to allow sending DTMF frames.
AST_FRAME_DTMF frames are now forwarded to the server, in addition to
AST_FRAME_AUDIO frames. A new payload type AST_AUDIOSOCKET_KIND_DTMF
with value 0x03 was added to the protocol. The payload is a 1-byte
ascii representing the DTMF digit (0-9,*,#...).</p>
<p>UserNote: The AudioSocket protocol now forwards DTMF frames with
payload type 0x03. The payload is a 1-byte ascii representing the DTMF
digit (0-9,*,#...).</p>
<h4>asterisk/channel.h: fix documentation for 'ast_waitfor_nandfds()'</h4>
<p>Author: Norm Harrison
Date: 2023-04-03</p>
<p>Co-authored-by: Florent CHAUVEAU <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#102;&#108;&#111;&#114;&#101;&#110;&#116;&#99;&#104;&#64;&#112;&#109;&#46;&#109;&#101;">&#102;&#108;&#111;&#114;&#101;&#110;&#116;&#99;&#104;&#64;&#112;&#109;&#46;&#109;&#101;</a></p>
<h4>audiosocket: fix timeout, fix dialplan app exit, server address in logs</h4>
<p>Author: Norm Harrison
Date: 2023-04-03</p>
<ul>
<li>Correct wait timeout logic in the dialplan application.</li>
<li>Include server address in log messages for better traceability.</li>
<li>Allow dialplan app to exit gracefully on hangup messages and socket closure.</li>
<li>Optimize I/O by reducing redundant read()/write() operations.</li>
</ul>
<p>Co-authored-by: Florent CHAUVEAU <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#102;&#108;&#111;&#114;&#101;&#110;&#116;&#99;&#104;&#64;&#112;&#109;&#46;&#109;&#101;">&#102;&#108;&#111;&#114;&#101;&#110;&#116;&#99;&#104;&#64;&#112;&#109;&#46;&#109;&#101;</a></p>
<h4>chan_pjsip: Add the same details as PJSIPShowContacts to the CLI via 'pjsip s..</h4>
<p>Author: Mark Murawski
Date: 2025-03-23</p>
<p>CLI 'pjsip show contact' does not show enough information.
One must telnet to AMI or write a script to ask Asterisk for example what the User-Agent is on a Contact
This feature adds the same details as PJSIPShowContacts to the CLI</p>
<p>Resolves: #643</p>
<h4>Update config.guess and config.sub</h4>
<p>Author: Zhai Liangliang
Date: 2025-03-26</p>
<h4>chan_pjsip: set correct Endpoint Device State on multiple channels</h4>
<p>Author: Alexei Gradinari
Date: 2025-03-25</p>
<ol>
<li>
<p>When one channel is placed on hold, the device state is set to ONHOLD
without checking other channels states.
In case of AST_CONTROL_HOLD set the device state as AST_DEVICE_UNKNOWN
to calculate aggregate device state of all active channels.</p>
</li>
<li>
<p>The current implementation incorrectly classifies channels in use.
The only channels that has the states: UP, RING and BUSY are considered as "in use".
A channel should be considered "in use" if its state is anything other than
DOWN or RESERVED.</p>
</li>
<li>
<p>Currently, if the number of channels "in use" is greater than device_state_busy_at,
the system does not set the state to BUSY. Instead, it incorrectly assigns an aggregate
device state.
The endpoint device state should be BUSY if the number of channels "in use" is greater
than or equal to device_state_busy_at.</p>
</li>
</ol>
<p>Fixes: #1181</p>
<h4>file.c: missing "custom" sound files should not generate warning logs</h4>
<p>Author: Allan Nathanson
Date: 2025-03-18</p>
<p>With <code>sounds_search_custom_dir = yes</code> we first look to see if a sound file
is present in the "custom" sound directory before looking in the standard
sound directories. We should not be issuing a WARNING log message if a
sound cannot be found in the "custom" directory.</p>
<p>Resolves: https://github.com/asterisk/asterisk/issues/1170</p>
</body></html>

View File

@@ -1,564 +0,0 @@
## Change Log for Release asterisk-20.14.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.14.0.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.13.0...20.14.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.14.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 24
- Commit Authors: 18
- Issues Resolved: 12
- Security Advisories Resolved: 0
### User Notes:
- #### stasis/control.c: Set Hangup Cause to No Answer on Dial timeout
A Dial timeout on POST /channels/{channelId}/dial will now result in a
CANCEL and ChannelDestroyed with cause 19 / User alerting, no answer. Previously
no explicit cause was set, resulting in a cause of 16 / Normal Call Clearing.
- #### contrib: Add systemd service and timer files for malloc trim.
Service and timer files for systemd have been added to the
contrib/systemd/ directory. If you are experiencing memory issues,
install these files to have "malloc trim" periodically run on the
system.
- #### Add log-caller-id-name option to log Caller ID Name in queue log
This patch adds a global configuration option, log-caller-id-name, to queues.conf
to control whether the Caller ID name is logged as parameter 4 when a call enters a queue.
When log-caller-id-name=yes, the Caller ID name is included in the queue log,
Any '|' characters in the caller ID name will be replaced with '_'.
(provided its allowed by the existing log_restricted_caller_id rules).
When log-caller-id-name=no (the default), the Caller ID name is omitted.
- #### asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.
In cli.conf, you can now define startup commands that run before
core initialization and before module initialization.
- #### audiosocket: added support for DTMF frames
The AudioSocket protocol now forwards DTMF frames with
payload type 0x03. The payload is a 1-byte ascii representing the DTMF
digit (0-9,*,#...).
### Upgrade Notes:
- #### ARI: REST over Websocket
This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.
See https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/
### Commit Authors:
- Albrecht Oster: (1)
- Alexei Gradinari: (1)
- Allan Nathanson: (1)
- Andreas Wehrmann: (1)
- Ben Ford: (1)
- Florent CHAUVEAU: (1)
- George Joseph: (4)
- Joshua C. Colp: (1)
- Luz Paz: (1)
- Mark Murawski: (1)
- Mike Bradeen: (1)
- Mkmer: (1)
- Naveen Albert: (3)
- Norm Harrison: (2)
- Peter Jannesen: (1)
- Phoneben: (1)
- Sean Bright: (1)
- Zhai Liangliang: (1)
## Issue and Commit Detail:
### Closed Issues:
- 505: [bug]: res_pjproject: ast_sockaddr_cmp() always fails on sockaddrs created by ast_sockaddr_from_pj_sockaddr()
- 643: [new-feature]: pjsip show contact -- show all details same as AMI PJSIPShowContacts
- 963: [bug]: missing hangup cause for ARI ChannelDestroyed when Dial times out
- 1091: [improvement]: app queue :add to queue log callerid name
- 1144: [bug]: action_redirect don't remove bridge_after_goto data
- 1171: [improvement]: Need the capability in audiohook.c for fractional (float) type volume adjustments.
- 1181: [bug]: Incorrect PJSIP Endpoint Device States on Multiple Channels
- 1190: [bug]: Crash when starting ConfBridge recording over CLI and AMI
- 1197: [bug]: ChannelHangupRequest does not show cause code in all cases
- 1206: [improvement]: chan_iax2: Minor improvements to documentation and warning messages.
- 1220: [bug]: res_pjsip_caller_id: OLI is not parsed if contained in a URI parameter
- 1224: [improvement]: app_meetme: Removal version is incorrect
### Commits By Author:
- #### Albrecht Oster (1):
- res_pjproject: Fix DTLS client check failing on some platforms
- #### Alexei Gradinari (1):
- chan_pjsip: set correct Endpoint Device State on multiple channels
- #### Allan Nathanson (1):
- file.c: missing "custom" sound files should not generate warning logs
- #### Andreas Wehrmann (1):
- pbx_ael: unregister AELSub application and CLI commands on module load failure
- #### Ben Ford (1):
- contrib: Add systemd service and timer files for malloc trim.
- #### Florent CHAUVEAU (1):
- audiosocket: added support for DTMF frames
- #### George Joseph (4):
- ARI: REST over Websocket
- ari_websockets: Fix frack if ARI config fails to load.
- asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.
- Prequisites for ARI Outbound Websockets
- #### Joshua C. Colp (1):
- channel: Always provide cause code in ChannelHangupRequest.
- #### Luz Paz (1):
- docs: Fix typos in apps/
- #### Mark Murawski (1):
- chan_pjsip: Add the same details as PJSIPShowContacts to the CLI via 'pjsip s..
- #### Mike Bradeen (1):
- stasis/control.c: Set Hangup Cause to No Answer on Dial timeout
- #### Naveen Albert (3):
- chan_iax2: Minor improvements to documentation and warning messages.
- app_meetme: Remove inaccurate removal version from xmldocs.
- res_pjsip_caller_id: Also parse URI parameters for ANI2.
- #### Norm Harrison (2):
- audiosocket: fix timeout, fix dialplan app exit, server address in logs
- asterisk/channel.h: fix documentation for 'ast_waitfor_nandfds()'
- #### Peter Jannesen (1):
- action_redirect: remove after_bridge_goto_info
- #### Sean Bright (1):
- app_confbridge: Prevent crash when publishing channel-less event.
- #### Zhai Liangliang (1):
- Update config.guess and config.sub
- #### mkmer (1):
- audiohook.c: Add ability to adjust volume with float
- #### phoneben (1):
- Add log-caller-id-name option to log Caller ID Name in queue log
### Commit List:
- res_pjsip_caller_id: Also parse URI parameters for ANI2.
- app_meetme: Remove inaccurate removal version from xmldocs.
- docs: Fix typos in apps/
- stasis/control.c: Set Hangup Cause to No Answer on Dial timeout
- chan_iax2: Minor improvements to documentation and warning messages.
- pbx_ael: unregister AELSub application and CLI commands on module load failure
- res_pjproject: Fix DTLS client check failing on some platforms
- Prequisites for ARI Outbound Websockets
- contrib: Add systemd service and timer files for malloc trim.
- action_redirect: remove after_bridge_goto_info
- channel: Always provide cause code in ChannelHangupRequest.
- Add log-caller-id-name option to log Caller ID Name in queue log
- asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.
- app_confbridge: Prevent crash when publishing channel-less event.
- ari_websockets: Fix frack if ARI config fails to load.
- ARI: REST over Websocket
- audiohook.c: Add ability to adjust volume with float
- audiosocket: added support for DTMF frames
- asterisk/channel.h: fix documentation for 'ast_waitfor_nandfds()'
- audiosocket: fix timeout, fix dialplan app exit, server address in logs
- Update config.guess and config.sub
- chan_pjsip: set correct Endpoint Device State on multiple channels
- file.c: missing "custom" sound files should not generate warning logs
### Commit Details:
#### res_pjsip_caller_id: Also parse URI parameters for ANI2.
Author: Naveen Albert
Date: 2025-04-26
If the isup-oli was sent as a URI parameter, rather than a header
parameter, it was not being parsed. Make sure we parse both if
needed so the ANI2 is set regardless of which type of parameter
the isup-oli is sent as.
Resolves: #1220
#### app_meetme: Remove inaccurate removal version from xmldocs.
Author: Naveen Albert
Date: 2025-04-26
app_meetme is deprecated but wasn't removed as planned in 21,
so remove the inaccurate removal version.
Resolves: #1224
#### docs: Fix typos in apps/
Author: Luz Paz
Date: 2025-04-09
Found via codespell
#### stasis/control.c: Set Hangup Cause to No Answer on Dial timeout
Author: Mike Bradeen
Date: 2025-04-17
Other Dial operations (dial, app_dial) use Q.850 cause 19 when a dial timeout occurs,
but the Dial command via ARI did not set an explicit reason. This resulted in a
CANCEL with Normal Call Clearing and corresponding ChannelDestroyed.
This change sets the hangup cause to AST_CAUSE_NO_ANSWER to be consistent with the
other operations.
Fixes: #963
UserNote: A Dial timeout on POST /channels/{channelId}/dial will now result in a
CANCEL and ChannelDestroyed with cause 19 / User alerting, no answer. Previously
no explicit cause was set, resulting in a cause of 16 / Normal Call Clearing.
#### chan_iax2: Minor improvements to documentation and warning messages.
Author: Naveen Albert
Date: 2025-04-18
* Update Dial() documentation for IAX2 to include syntax for RSA
public key names.
* Add additional details to a couple warnings to provide more context
when an undecodable frame is received.
Resolves: #1206
#### pbx_ael: unregister AELSub application and CLI commands on module load failure
Author: Andreas Wehrmann
Date: 2025-04-18
This fixes crashes/hangs I noticed with Asterisk 20.3.0 and 20.13.0 and quickly found out,
that the AEL module doesn't do proper cleanup when it fails to load.
This happens for example when there are syntax errors and AEL fails to compile in which case pbx_load_module()
returns an error but load_module() doesn't then unregister CLI cmds and the application.
#### res_pjproject: Fix DTLS client check failing on some platforms
Author: Albrecht Oster
Date: 2025-04-10
Certain platforms (mainly BSD derivatives) have an additional length
field in `sockaddr_in6` and `sockaddr_in`.
`ast_sockaddr_from_pj_sockaddr()` does not take this field into account
when copying over values from the `pj_sockaddr` into the `ast_sockaddr`.
The resulting `ast_sockaddr` will have an uninitialized value for
`sin6_len`/`sin_len` while the other `ast_sockaddr` (not converted from
a `pj_sockaddr`) to check against in `ast_sockaddr_pj_sockaddr_cmp()`
has the correct length value set.
This has the effect that `ast_sockaddr_cmp()` will always indicate
an address mismatch, because it does a bitwise comparison, and all DTLS
packets are dropped even if addresses and ports match.
`ast_sockaddr_from_pj_sockaddr()` now checks whether the length fields
are available on the current platform and sets the values accordingly.
Resolves: #505
#### Prequisites for ARI Outbound Websockets
Author: George Joseph
Date: 2025-04-16
stasis:
* Added stasis_app_is_registered().
* Added stasis_app_control_mark_failed().
* Added stasis_app_control_is_failed().
* Fixed res_stasis_device_state so unsubscribe all works properly.
* Modified stasis_app_unregister() to unsubscribe from all event sources.
* Modified stasis_app_exec to return -1 if stasis_app_control_is_failed()
returns true.
http:
* Added ast_http_create_basic_auth_header().
md5:
* Added define for MD5_DIGEST_LENGTH.
tcptls:
* Added flag to ast_tcptls_session_args to suppress connection log messages
to give callers more control over logging.
http_websocket:
* Add flag to ast_websocket_client_options to suppress connection log messages
to give callers more control over logging.
* Added username and password to ast_websocket_client_options to support
outbound basic authentication.
* Added ast_websocket_result_to_str().
#### contrib: Add systemd service and timer files for malloc trim.
Author: Ben Ford
Date: 2025-04-16
Adds two files to the contrib/systemd/ directory that can be installed
to periodically run "malloc trim" on Asterisk. These files do nothing
unless they are explicitly moved to the correct location on the system.
Users who are experiencing Asterisk memory issues can use this service
to potentially help combat the problem. These files can also be
configured to change the start time and interval. See systemd.timer(5)
and systemd.time(7) for more information.
UserNote: Service and timer files for systemd have been added to the
contrib/systemd/ directory. If you are experiencing memory issues,
install these files to have "malloc trim" periodically run on the
system.
#### action_redirect: remove after_bridge_goto_info
Author: Peter Jannesen
Date: 2025-03-13
Under certain circumstances the context/extens/prio are stored in the
after_bridge_goto_info. This info is used when the bridge is broken by
for hangup of the other party. In the situation that the bridge is
broken by an AMI Redirect this info is not used but also not removed.
With the result that when the channel is put back in a bridge and the
bridge is broken the execution continues at the wrong
context/extens/prio.
Resolves: #1144
#### channel: Always provide cause code in ChannelHangupRequest.
Author: Joshua C. Colp
Date: 2025-04-16
When queueing a channel to be hung up a cause code can be
specified in one of two ways:
1. ast_queue_hangup_with_cause
This function takes in a cause code and queues it as part
of the hangup request, which ultimately results in it being
set on the channel.
2. ast_channel_hangupcause_set + ast_queue_hangup
This combination sets the hangup cause on the channel before
queueing the hangup instead of as part of that process.
In the #2 case the ChannelHangupRequest event would not contain
the cause code. For consistency if a cause code has been set
on the channel it will now be added to the event.
Resolves: #1197
#### Add log-caller-id-name option to log Caller ID Name in queue log
Author: phoneben
Date: 2025-02-28
Add log-caller-id-name option to log Caller ID Name in queue log
This patch introduces a new global configuration option, log-caller-id-name,
to queues.conf to control whether the Caller ID name is logged when a call enters a queue.
When log-caller-id-name=yes, the Caller ID name is logged
as parameter 4 in the queue log, provided its allowed by the
existing log_restricted_caller_id rules. If log-caller-id-name=no (the default),
the Caller ID name is omitted from the logs.
Fixes: #1091
UserNote: This patch adds a global configuration option, log-caller-id-name, to queues.conf
to control whether the Caller ID name is logged as parameter 4 when a call enters a queue.
When log-caller-id-name=yes, the Caller ID name is included in the queue log,
Any '|' characters in the caller ID name will be replaced with '_'.
(provided its allowed by the existing log_restricted_caller_id rules).
When log-caller-id-name=no (the default), the Caller ID name is omitted.
#### asterisk.c: Add "pre-init" and "pre-module" capability to cli.conf.
Author: George Joseph
Date: 2025-04-10
Commands in the "[startup_commands]" section of cli.conf have historically run
after all core and module initialization has been completed and just before
"Asterisk Ready" is printed on the console. This meant that if you
wanted to debug initialization of a specific module, your only option
was to turn on debug for everything by setting "debug" in asterisk.conf.
This commit introduces options to allow you to run CLI commands earlier in
the asterisk startup process.
A command with a value of "pre-init" will run just after logger initialization
but before most core, and all module, initialization.
A command with a value of "pre-module" will run just after all core
initialization but before all module initialization.
A command with a value of "fully-booted" (or "yes" for backwards
compatibility) will run as they always have been...after all
initialization and just before "Asterisk Ready" is printed on the console.
This means you could do this...
```
[startup_commands]
core set debug 3 res_pjsip.so = pre-module
core set debug 0 res_pjsip.so = fully-booted
```
This would turn debugging on for res_pjsip.so to catch any module
initialization debug messages then turn it off again after the module is
loaded.
UserNote: In cli.conf, you can now define startup commands that run before
core initialization and before module initialization.
#### app_confbridge: Prevent crash when publishing channel-less event.
Author: Sean Bright
Date: 2025-04-07
Resolves: #1190
#### ari_websockets: Fix frack if ARI config fails to load.
Author: George Joseph
Date: 2025-04-02
ari_ws_session_registry_dtor() wasn't checking that the container was valid
before running ao2_callback on it to shutdown registered sessions.
#### ARI: REST over Websocket
Author: George Joseph
Date: 2025-03-12
This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.
For full details on how to use the new capability, visit...
https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/
Changes:
* Added utilities to http.c:
* ast_get_http_method_from_string().
* ast_http_parse_post_form().
* Added utilities to json.c:
* ast_json_nvp_array_to_ast_variables().
* ast_variables_to_json_nvp_array().
* Added definitions for new events to carry REST responses.
* Created res/ari/ari_websocket_requests.c to house the new request handlers.
* Moved non-event specific code out of res/ari/resource_events.c into
res/ari/ari_websockets.c
* Refactored res/res_ari.c to move non-http code out of ast_ari_callback()
(which is http specific) and into ast_ari_invoke() so it can be shared
between both the http and websocket transports.
UpgradeNote: This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.
See https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/
#### audiohook.c: Add ability to adjust volume with float
Author: mkmer
Date: 2025-03-18
Add the capability to audiohook for float type volume adjustments. This allows for adjustments to volume smaller than 6dB. With INT adjustments, the first step is 2 which converts to ~6dB (or 1/2 volume / double volume depending on adjustment sign). 3dB is a typical adjustment level which can now be accommodated with an adjustment value of 1.41.
This is accomplished by the following:
Convert internal variables to type float.
Always use ast_frame_adjust_volume_float() for adjustments.
Cast int to float in original functions ast_audiohook_volume_set(), and ast_volume_adjust().
Cast float to int in ast_audiohook_volume_get()
Add functions ast_audiohook_volume_get_float, ast_audiohook_volume_set_float, and ast_audiohook_volume_adjust_float.
This update maintains 100% backward compatibility.
Resolves: #1171
#### audiosocket: added support for DTMF frames
Author: Florent CHAUVEAU
Date: 2025-02-28
Updated the AudioSocket protocol to allow sending DTMF frames.
AST_FRAME_DTMF frames are now forwarded to the server, in addition to
AST_FRAME_AUDIO frames. A new payload type AST_AUDIOSOCKET_KIND_DTMF
with value 0x03 was added to the protocol. The payload is a 1-byte
ascii representing the DTMF digit (0-9,*,#...).
UserNote: The AudioSocket protocol now forwards DTMF frames with
payload type 0x03. The payload is a 1-byte ascii representing the DTMF
digit (0-9,*,#...).
#### asterisk/channel.h: fix documentation for 'ast_waitfor_nandfds()'
Author: Norm Harrison
Date: 2023-04-03
Co-authored-by: Florent CHAUVEAU <florentch@pm.me>
#### audiosocket: fix timeout, fix dialplan app exit, server address in logs
Author: Norm Harrison
Date: 2023-04-03
- Correct wait timeout logic in the dialplan application.
- Include server address in log messages for better traceability.
- Allow dialplan app to exit gracefully on hangup messages and socket closure.
- Optimize I/O by reducing redundant read()/write() operations.
Co-authored-by: Florent CHAUVEAU <florentch@pm.me>
#### chan_pjsip: Add the same details as PJSIPShowContacts to the CLI via 'pjsip s..
Author: Mark Murawski
Date: 2025-03-23
CLI 'pjsip show contact' does not show enough information.
One must telnet to AMI or write a script to ask Asterisk for example what the User-Agent is on a Contact
This feature adds the same details as PJSIPShowContacts to the CLI
Resolves: #643
#### Update config.guess and config.sub
Author: Zhai Liangliang
Date: 2025-03-26
#### chan_pjsip: set correct Endpoint Device State on multiple channels
Author: Alexei Gradinari
Date: 2025-03-25
1. When one channel is placed on hold, the device state is set to ONHOLD
without checking other channels states.
In case of AST_CONTROL_HOLD set the device state as AST_DEVICE_UNKNOWN
to calculate aggregate device state of all active channels.
2. The current implementation incorrectly classifies channels in use.
The only channels that has the states: UP, RING and BUSY are considered as "in use".
A channel should be considered "in use" if its state is anything other than
DOWN or RESERVED.
3. Currently, if the number of channels "in use" is greater than device_state_busy_at,
the system does not set the state to BUSY. Instead, it incorrectly assigns an aggregate
device state.
The endpoint device state should be BUSY if the number of channels "in use" is greater
than or equal to device_state_busy_at.
Fixes: #1181
#### file.c: missing "custom" sound files should not generate warning logs
Author: Allan Nathanson
Date: 2025-03-18
With `sounds_search_custom_dir = yes` we first look to see if a sound file
is present in the "custom" sound directory before looking in the standard
sound directories. We should not be issuing a WARNING log message if a
sound cannot be found in the "custom" directory.
Resolves: https://github.com/asterisk/asterisk/issues/1170

View File

@@ -1,611 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.15.0</title></head><body>
<h2>Change Log for Release asterisk-20.15.0</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.15.0.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.14.1...20.15.0">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.15.0.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 29</li>
<li>Commit Authors: 14</li>
<li>Issues Resolved: 19</li>
<li>Security Advisories Resolved: 1</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-c7p6-7mvq-8jq2">GHSA-c7p6-7mvq-8jq2</a>: cli_permissions.conf: deny option does not work for disallowing shell commands</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>res_stir_shaken.so: Handle X5U certificate chains.</h4>
<p>The STIR/SHAKEN verification process will now load a full
certificate chain retrieved via the X5U URL instead of loading only
the end user cert.</p>
</li>
<li>
<h4>res_stir_shaken: Add "ignore_sip_date_header" config option.</h4>
<p>A new STIR/SHAKEN verification option "ignore_sip_date_header" has
been added that when set to true, will cause the verification process to
not consider a missing or invalid SIP "Date" header to be a failure. This
will make the IAT the sole "truth" for Date in the verification process.
The option can be set in the "verification" and "profile" sections of
stir_shaken.conf.
Also fixed a bug in the port match logic.
Resolves: #1251
Resolves: #1271</p>
</li>
<li>
<h4>app_record: Add RECORDING_INFO function.</h4>
<p>The RECORDING_INFO function can now be used
to retrieve the duration of a recording.</p>
</li>
<li>
<h4>app_queue: queue rules Add support for QUEUE_RAISE_PENALTY=rN to raise penal..</h4>
<p>This change introduces QUEUE_RAISE_PENALTY=rN, allowing selective penalty raises
only for members whose current penalty is within the [min_penalty, max_penalty] range.
Members with lower or higher penalties are unaffected.
This behavior is backward-compatible with existing queue rule configurations.</p>
</li>
<li>
<h4>res_odbc: cache_size option to limit the cached connections.</h4>
<p>New cache_size option for res_odbc to on a per class basis limit the
number of cached connections. Please reference the sample configuration
for details.</p>
</li>
<li>
<h4>res_odbc: cache_type option for res_odbc.</h4>
<p>When using res_odbc it should be noted that back-end
connections to the underlying database can now be configured to re-use
the cached connections in a round-robin manner rather than repeatedly
re-using the same connection. This helps to keep connections alive, and
to purge dead connections from the system, thus more dynamically
adjusting to actual load. The downside is that one could keep too many
connections active for a longer time resulting in resource also begin
consumed on the database side.</p>
</li>
<li>
<h4>ARI Outbound Websockets</h4>
<p>Asterisk can now establish websocket sessions <em>to</em> your ARI applications
as well as accepting websocket sessions <em>from</em> them.
Full details: http://s.asterisk.net/ari-outbound-ws</p>
</li>
<li>
<h4>res_websocket_client: Create common utilities for websocket clients.</h4>
<p>A new module "res_websocket_client" and config file
"websocket_client.conf" have been added to support several upcoming new
capabilities that need common websocket client configuration.</p>
</li>
<li>
<h4>asterisk.c: Add option to restrict shell access from remote consoles.</h4>
<p>A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.
Resolves: #GHSA-c7p6-7mvq-8jq2</p>
</li>
<li>
<h4>sig_analog: Add Call Waiting Deluxe support.</h4>
<p>Call Waiting Deluxe can now be enabled for FXS channels
by enabling its corresponding option.</p>
</li>
</ul>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>jansson: Upgrade version to jansson 2.14.1</h4>
<p>jansson has been upgraded to 2.14.1. For more
information visit jansson Github page: https://github.com/akheron/jansson/releases/tag/v2.14.1
Resolves: #1178</p>
</li>
<li>
<h4>Alternate Channel Storage Backends</h4>
<p>With this release, you can now select an alternate channel
storage backend based on C++ Maps. Using the new backend may increase
performance and reduce the chances of deadlocks on heavily loaded systems.
For more information, see http://s.asterisk.net/dc679ec3</p>
</li>
</ul>
<h3>Commit Authors:</h3>
<ul>
<li>George Joseph: (10)</li>
<li>Itzanh: (1)</li>
<li>Jaco Kroon: (2)</li>
<li>Joe Searle: (1)</li>
<li>Michal Hajek: (1)</li>
<li>Mike Bradeen: (2)</li>
<li>Mkmer: (1)</li>
<li>Nathan Monfils: (1)</li>
<li>Naveen Albert: (3)</li>
<li>Phoneben: (1)</li>
<li>Sean Bright: (2)</li>
<li>Stanislav Abramenkov: (1)</li>
<li>Sven Kube: (2)</li>
<li>Thomas B. Clark: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-c7p6-7mvq-8jq2: cli_permissions.conf: deny option does not work for disallowing shell commands</li>
<li>271: [new-feature]: sig_analog: Add Call Waiting Deluxe support.</li>
<li>548: [improvement]: Get Record() audio duration/length</li>
<li>1088: [bug]: app_sms: Compilation failure in DEVMODE due to stringop-overflow error in GCC 15 pre-release</li>
<li>1141: [bug]: res_pjsip: Contact header set incorrectly for call redirect (302 Moved temp.) when external_* set</li>
<li>1178: [improvement]: jansson: Upgrade version to jansson 2.14.1</li>
<li>1230: [bug]: ast_frame_adjust_volume and ast_frame_adjust_volume_float crash on interpolated frames</li>
<li>1234: [bug]: Set CalllerID lost on DTMF attended transfer</li>
<li>1240: [bug]: WebRTC invites failing on Chrome 136</li>
<li>1243: [bug]: make menuconfig fails due to changes in GTK callbacks</li>
<li>1251: [improvement]: PJSIP shouldn't require SIP Date header to process full shaken passport which includes iat</li>
<li>1254: [bug]: ActiveChannels not reported when using AMI command PJSIPShowEndpoint</li>
<li>1271: [bug]: STIR/SHAKEN not accepting port 8443 in certificate URLs</li>
<li>1272: [improvement]: STIR/SHAKEN handle X5U certificate chains</li>
<li>1276: MixMonitor produces broken recordings in bridged calls with asymmetric codecs (e.g., alaw vs G.722)</li>
<li>1279: [bug]: regression: 20.12.0 downgrades quality of wav16 recordings</li>
<li>1282: [bug]: Alternate Channel Storage Backends menuselect not enabling it</li>
<li>1287: [bug]: channelstorage.c: Compilation failure with DEBUG_FD_LEAKS</li>
<li>1288: [bug]: Crash when destroying channel with C++ alternative storage backend enabled</li>
<li>ASTERISK-30373: sig_analog: Add Call Waiting Deluxe options</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>George Joseph (10):</h4>
</li>
<li>Alternate Channel Storage Backends</li>
<li>lock.h: Add include for string.h when DEBUG_THREADS is defined.</li>
<li>asterisk.c: Add option to restrict shell access from remote consoles.</li>
<li>res_websocket_client: Create common utilities for websocket clients.</li>
<li>ARI Outbound Websockets</li>
<li>res_websocket_client: Add more info to the XML documentation.</li>
<li>res_stir_shaken: Add "ignore_sip_date_header" config option.</li>
<li>res_stir_shaken.so: Handle X5U certificate chains.</li>
<li>channelstorage_cpp_map_name_id: Fix callback returning non-matching channels.</li>
<li>
<p>channelstorage: Rename callbacks that conflict with DEBUG_FD_LEAKS.</p>
</li>
<li>
<h4>Itzanh (1):</h4>
</li>
<li>
<p>app_sms.c: Fix sending and receiving SMS messages in protocol 2</p>
</li>
<li>
<h4>Jaco Kroon (2):</h4>
</li>
<li>res_odbc: cache_type option for res_odbc.</li>
<li>
<p>res_odbc: cache_size option to limit the cached connections.</p>
</li>
<li>
<h4>Joe Searle (1):</h4>
</li>
<li>
<p>pjproject: Increase maximum SDP formats and attribute limits</p>
</li>
<li>
<h4>Michal Hajek (1):</h4>
</li>
<li>
<p>audiohook.c: Improve frame pairing logic to avoid MixMonitor breakage with mix..</p>
</li>
<li>
<h4>Mike Bradeen (2):</h4>
</li>
<li>chan_pjsip: Serialize INVITE creation on DTMF attended transfer</li>
<li>
<p>res_pjsip_nat.c: Do not overwrite transfer host</p>
</li>
<li>
<h4>Nathan Monfils (1):</h4>
</li>
<li>
<p>manager.c: Invalid ref-counting when purging events</p>
</li>
<li>
<h4>Naveen Albert (3):</h4>
</li>
<li>app_sms: Ignore false positive vectorization warning.</li>
<li>sig_analog: Add Call Waiting Deluxe support.</li>
<li>
<p>app_record: Add RECORDING_INFO function.</p>
</li>
<li>
<h4>Sean Bright (2):</h4>
</li>
<li>res_pjsip: Fix empty <code>ActiveChannels</code> property in AMI responses.</li>
<li>
<p>channelstorage_makeopts.xml: Remove errant XML character.</p>
</li>
<li>
<h4>Stanislav Abramenkov (1):</h4>
</li>
<li>
<p>jansson: Upgrade version to jansson 2.14.1</p>
</li>
<li>
<h4>Sven Kube (2):</h4>
</li>
<li>res_audiosocket.c: Set the TCP_NODELAY socket option</li>
<li>
<p>res_audiosocket.c: Add retry mechanism for reading data from AudioSocket</p>
</li>
<li>
<h4>Thomas B. Clark (1):</h4>
</li>
<li>
<p>menuselect: Fix GTK menu callbacks for Fedora 42 compatibility</p>
</li>
<li>
<h4>mkmer (1):</h4>
</li>
<li>
<p>frame.c: validate frame data length is less than samples when adjusting volume</p>
</li>
<li>
<h4>phoneben (1):</h4>
</li>
<li>app_queue: queue rules Add support for QUEUE_RAISE_PENALTY=rN to raise penal..</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>channelstorage: Rename callbacks that conflict with DEBUG_FD_LEAKS.</li>
<li>channelstorage_cpp_map_name_id: Fix callback returning non-matching channels.</li>
<li>channelstorage_makeopts.xml: Remove errant XML character.</li>
<li>res_stir_shaken.so: Handle X5U certificate chains.</li>
<li>res_stir_shaken: Add "ignore_sip_date_header" config option.</li>
<li>app_record: Add RECORDING_INFO function.</li>
<li>app_sms.c: Fix sending and receiving SMS messages in protocol 2</li>
<li>res_websocket_client: Add more info to the XML documentation.</li>
<li>res_odbc: cache_size option to limit the cached connections.</li>
<li>res_odbc: cache_type option for res_odbc.</li>
<li>res_pjsip: Fix empty <code>ActiveChannels</code> property in AMI responses.</li>
<li>ARI Outbound Websockets</li>
<li>res_websocket_client: Create common utilities for websocket clients.</li>
<li>asterisk.c: Add option to restrict shell access from remote consoles.</li>
<li>frame.c: validate frame data length is less than samples when adjusting volume</li>
<li>res_audiosocket.c: Add retry mechanism for reading data from AudioSocket</li>
<li>res_audiosocket.c: Set the TCP_NODELAY socket option</li>
<li>menuselect: Fix GTK menu callbacks for Fedora 42 compatibility</li>
<li>jansson: Upgrade version to jansson 2.14.1</li>
<li>pjproject: Increase maximum SDP formats and attribute limits</li>
<li>manager.c: Invalid ref-counting when purging events</li>
<li>res_pjsip_nat.c: Do not overwrite transfer host</li>
<li>chan_pjsip: Serialize INVITE creation on DTMF attended transfer</li>
<li>sig_analog: Add Call Waiting Deluxe support.</li>
<li>app_sms: Ignore false positive vectorization warning.</li>
<li>lock.h: Add include for string.h when DEBUG_THREADS is defined.</li>
<li>Alternate Channel Storage Backends</li>
</ul>
<h3>Commit Details:</h3>
<h4>channelstorage: Rename callbacks that conflict with DEBUG_FD_LEAKS.</h4>
<p>Author: George Joseph
Date: 2025-07-08</p>
<p>DEBUG_FD_LEAKS replaces calls to "open" and "close" with functions that keep
track of file descriptors, even when those calls are actually callbacks
defined in structures like ast_channelstorage_instance-&gt;open and don't touch
file descriptors. This causes compilation failures. Those callbacks
have been renamed to "open_instance" and "close_instance" respectively.</p>
<p>Resolves: #1287</p>
<h4>channelstorage_cpp_map_name_id: Fix callback returning non-matching channels.</h4>
<p>Author: George Joseph
Date: 2025-07-09</p>
<p>When the callback() API was invoked but no channel passed the test, callback
would return the last channel tested instead of NULL. It now correctly
returns NULL when no channel matches.</p>
<p>Resolves: #1288</p>
<h4>audiohook.c: Improve frame pairing logic to avoid MixMonitor breakage with mix..</h4>
<p>Author: Michal Hajek
Date: 2025-05-21</p>
<p>This patch adjusts the read/write synchronization logic in audiohook_read_frame_both()
to better handle calls where participants use different codecs or sample sizes
(e.g., alaw vs G.722). The previous hard threshold of 2 * samples caused MixMonitor
recordings to break or stutter when frames were not aligned between both directions.</p>
<p>The new logic uses a more tolerant limit (1.5 * samples), which prevents audio tearing
without causing excessive buffer overruns. This fix specifically addresses issues
with MixMonitor when recording directly on a channel in a bridge using mixed codecs.</p>
<p>Reported-by: Michal Hajek <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#105;&#99;&#104;&#97;&#108;&#46;&#104;&#97;&#106;&#101;&#107;&#64;&#100;&#97;&#107;&#116;&#101;&#108;&#97;&#46;&#99;&#111;&#109;">&#109;&#105;&#99;&#104;&#97;&#108;&#46;&#104;&#97;&#106;&#101;&#107;&#64;&#100;&#97;&#107;&#116;&#101;&#108;&#97;&#46;&#99;&#111;&#109;</a></p>
<p>Resolves: #1276
Resolves: #1279</p>
<h4>channelstorage_makeopts.xml: Remove errant XML character.</h4>
<p>Author: Sean Bright
Date: 2025-06-30</p>
<p>Resolves: #1282</p>
<h4>res_stir_shaken.so: Handle X5U certificate chains.</h4>
<p>Author: George Joseph
Date: 2025-06-18</p>
<p>The verification process will now load a full certificate chain retrieved
via the X5U URL instead of loading only the end user cert.</p>
<ul>
<li>
<p>Renamed crypto_load_cert_from_file() and crypto_load_cert_from_memory()
to crypto_load_cert_chain_from_file() and crypto_load_cert_chain_from_memory()
respectively.</p>
</li>
<li>
<p>The two load functions now continue to load certs from the file or memory
PEMs and store them in a separate stack of untrusted certs specific to the
current verification context.</p>
</li>
<li>
<p>crypto_is_cert_trusted() now uses the stack of untrusted certs that were
extracted from the PEM in addition to any untrusted certs that were passed
in from the configuration (and any CA certs passed in from the config of
course).</p>
</li>
</ul>
<p>Resolves: #1272</p>
<p>UserNote: The STIR/SHAKEN verification process will now load a full
certificate chain retrieved via the X5U URL instead of loading only
the end user cert.</p>
<h4>res_stir_shaken: Add "ignore_sip_date_header" config option.</h4>
<p>Author: George Joseph
Date: 2025-06-15</p>
<p>UserNote: A new STIR/SHAKEN verification option "ignore_sip_date_header" has
been added that when set to true, will cause the verification process to
not consider a missing or invalid SIP "Date" header to be a failure. This
will make the IAT the sole "truth" for Date in the verification process.
The option can be set in the "verification" and "profile" sections of
stir_shaken.conf.</p>
<p>Also fixed a bug in the port match logic.</p>
<p>Resolves: #1251
Resolves: #1271</p>
<h4>app_record: Add RECORDING_INFO function.</h4>
<p>Author: Naveen Albert
Date: 2024-01-22</p>
<p>Add a function that can be used to retrieve info
about a previous recording, such as its duration.</p>
<p>This is being added as a function to avoid possibly
trampling on dialplan variables, and could be extended
to provide other information in the future.</p>
<p>Resolves: #548</p>
<p>UserNote: The RECORDING_INFO function can now be used
to retrieve the duration of a recording.</p>
<h4>app_sms.c: Fix sending and receiving SMS messages in protocol 2</h4>
<p>Author: Itzanh
Date: 2025-04-06</p>
<p>This fixes bugs in SMS messaging to SMS-capable analog phones that prevented app_sms.c from talking to phones using SMS protocol 2.</p>
<ul>
<li>Fix MORX message reception (from phone to Asterisk) in SMS protocol 2</li>
<li>Fix MTTX message transmission (from Asterisk to phone) in SMS protocol 2</li>
</ul>
<p>One of the bugs caused messages to have random characters and junk appended at the end up to the character limit. Another bug prevented Asterisk from sending messages from Asterisk to the phone at all. A final bug caused the transmission from Asterisk to the phone to take a long time because app_sms.c did not hang up after correctly sending the message, causing the phone to have to time out and hang up in order to complete the message transmission.</p>
<p>This was tested with a Linksys PAP2T and with a GrandStream HT814, sending and receiving messages with Telefónica DOMO Mensajes phones from Telefónica Spain. I had to play with both the network jitter buffer and the dB gain to get it to work. One of my phones required the gain to be set to +3dB for it to work, while another required it to be set to +6dB.</p>
<p>Only MORX and MTTX were tested, I did not test sending and receiving messages to a TelCo SMSC.</p>
<h4>app_queue: queue rules Add support for QUEUE_RAISE_PENALTY=rN to raise penal..</h4>
<p>Author: phoneben
Date: 2025-05-26</p>
<p>This update adds support for a new QUEUE_RAISE_PENALTY format: rN</p>
<p>When QUEUE_RAISE_PENALTY is set to rN (e.g., r4), only members whose current penalty
is greater than or equal to the defined min_penalty and less than or equal to max_penalty
will have their penalty raised to N.</p>
<p>Members with penalties outside the min/max range remain unchanged.</p>
<p>Example behaviors:</p>
<p>QUEUE_RAISE_PENALTY=4 → Raise all members with penalty &lt; 4 (existing behavior)
QUEUE_RAISE_PENALTY=r4 → Raise only members with penalty in [min_penalty, max_penalty] to 4</p>
<p>Implementation details:</p>
<p>Adds parsing logic to detect the r prefix and sets the raise_respect_min flag</p>
<p>Modifies the raise logic to skip members outside the defined penalty range when the flag is active</p>
<p>UserNote: This change introduces QUEUE_RAISE_PENALTY=rN, allowing selective penalty raises
only for members whose current penalty is within the [min_penalty, max_penalty] range.
Members with lower or higher penalties are unaffected.
This behavior is backward-compatible with existing queue rule configurations.</p>
<h4>res_websocket_client: Add more info to the XML documentation.</h4>
<p>Author: George Joseph
Date: 2025-06-05</p>
<p>Added "see-also" links to chan_websocket and ARI Outbound WebSocket and
added an example configuration for each.</p>
<h4>res_odbc: cache_size option to limit the cached connections.</h4>
<p>Author: Jaco Kroon
Date: 2024-12-13</p>
<p>Signed-off-by: Jaco Kroon <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#97;&#99;&#111;&#64;&#117;&#108;&#115;&#46;&#99;&#111;&#46;&#122;&#97;">&#106;&#97;&#99;&#111;&#64;&#117;&#108;&#115;&#46;&#99;&#111;&#46;&#122;&#97;</a></p>
<p>UserNote: New cache_size option for res_odbc to on a per class basis limit the
number of cached connections. Please reference the sample configuration
for details.</p>
<h4>res_odbc: cache_type option for res_odbc.</h4>
<p>Author: Jaco Kroon
Date: 2024-12-10</p>
<p>This enables setting cache_type classes to a round-robin queueing system
rather than the historic stack mechanism.</p>
<p>This should result in lower risk of connection drops due to shorter idle
times (the first connection to go onto the stack could in theory never
be used again, ever, but sit there consuming resources, there could be
multiple of these).</p>
<p>And with a queue rather than a stack, dead connections are guaranteed to
be detected and purged eventually.</p>
<p>This should end up better balancing connection_cnt with actual load
over time, assuming the database doesn't keep connections open
excessively long from it's side.</p>
<p>Signed-off-by: Jaco Kroon <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#97;&#99;&#111;&#64;&#117;&#108;&#115;&#46;&#99;&#111;&#46;&#122;&#97;">&#106;&#97;&#99;&#111;&#64;&#117;&#108;&#115;&#46;&#99;&#111;&#46;&#122;&#97;</a></p>
<p>UserNote: When using res_odbc it should be noted that back-end
connections to the underlying database can now be configured to re-use
the cached connections in a round-robin manner rather than repeatedly
re-using the same connection. This helps to keep connections alive, and
to purge dead connections from the system, thus more dynamically
adjusting to actual load. The downside is that one could keep too many
connections active for a longer time resulting in resource also begin
consumed on the database side.</p>
<h4>res_pjsip: Fix empty <code>ActiveChannels</code> property in AMI responses.</h4>
<p>Author: Sean Bright
Date: 2025-05-27</p>
<p>The logic appears to have been reversed since it was introduced in
05cbf8df.</p>
<p>Resolves: #1254</p>
<h4>ARI Outbound Websockets</h4>
<p>Author: George Joseph
Date: 2025-03-28</p>
<p>Asterisk can now establish websocket sessions <em>to</em> your ARI applications
as well as accepting websocket sessions <em>from</em> them.
Full details: http://s.asterisk.net/ari-outbound-ws</p>
<p>Code change summary:
* Added an ast_vector_string_join() function,
* Added ApplicationRegistered and ApplicationUnregistered ARI events.
* Converted res/ari/config.c to use sorcery to process ari.conf.
* Added the "outbound-websocket" ARI config object.
* Refactored res/ari/ari_websockets.c to handle outbound websockets.
* Refactored res/ari/cli.c for the sorcery changeover.
* Updated res/res_stasis.c for the sorcery changeover.
* Updated apps/app_stasis.c to allow initiating per-call outbound websockets.
* Added CLI commands to manage ARI websockets.
* Added the new "outbound-websocket" object to ari.conf.sample.
* Moved the ARI XML documentation out of res_ari.c into res/ari/ari_doc.xml</p>
<p>UserNote: Asterisk can now establish websocket sessions <em>to</em> your ARI applications
as well as accepting websocket sessions <em>from</em> them.
Full details: http://s.asterisk.net/ari-outbound-ws</p>
<h4>res_websocket_client: Create common utilities for websocket clients.</h4>
<p>Author: George Joseph
Date: 2025-05-02</p>
<p>Since multiple Asterisk capabilities now need to create websocket clients
it makes sense to create a common set of utilities rather than making
each of those capabilities implement their own.</p>
<ul>
<li>A new configuration file "websocket_client.conf" is used to store common
client parameters in named configuration sections.</li>
<li>APIs are provided to list and retrieve ast_websocket_client objects created
from the named configurations.</li>
<li>An API is provided that accepts an ast_websocket_client object, connects
to the remote server with retries and returns an ast_websocket object. TLS is
supported as is basic authentication.</li>
<li>An observer can be registered to receive notification of loaded or reloaded
client objects.</li>
<li>An API is provided to compare an existing client object to one just
reloaded and return the fields that were changed. The caller can then decide
what action to take based on which fields changed.</li>
</ul>
<p>Also as part of thie commit, several sorcery convenience macros were created
to make registering common object fields easier.</p>
<p>UserNote: A new module "res_websocket_client" and config file
"websocket_client.conf" have been added to support several upcoming new
capabilities that need common websocket client configuration.</p>
<h4>asterisk.c: Add option to restrict shell access from remote consoles.</h4>
<p>Author: George Joseph
Date: 2025-05-19</p>
<p>UserNote: A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.</p>
<p>Resolves: #GHSA-c7p6-7mvq-8jq2</p>
<h4>frame.c: validate frame data length is less than samples when adjusting volume</h4>
<p>Author: mkmer
Date: 2025-05-12</p>
<p>Resolves: #1230</p>
<h4>res_audiosocket.c: Add retry mechanism for reading data from AudioSocket</h4>
<p>Author: Sven Kube
Date: 2025-05-13</p>
<p>The added retry mechanism addresses an issue that arises when fragmented TCP
packets are received, each containing only a portion of an AudioSocket packet.
This situation can occur if the external service sending the AudioSocket data
has Nagle's algorithm enabled.</p>
<h4>res_audiosocket.c: Set the TCP_NODELAY socket option</h4>
<p>Author: Sven Kube
Date: 2025-05-13</p>
<p>Disable Nagle's algorithm by setting the TCP_NODELAY socket option.
This reduces latency by preventing delays caused by packet buffering.</p>
<h4>menuselect: Fix GTK menu callbacks for Fedora 42 compatibility</h4>
<p>Author: Thomas B. Clark
Date: 2025-05-12</p>
<p>This patch resolves a build failure in <code>menuselect_gtk.c</code> when running
<code>make menuconfig</code> on Fedora 42. The new version of GTK introduced stricter
type checking for callback signatures.</p>
<p>Changes include:
- Add wrapper functions to match the expected <code>void (*)(void)</code> signature.
- Update <code>menu_items</code> array to use these wrappers.</p>
<p>Fixes: #1243</p>
<h4>jansson: Upgrade version to jansson 2.14.1</h4>
<p>Author: Stanislav Abramenkov
Date: 2025-03-24</p>
<p>UpgradeNote: jansson has been upgraded to 2.14.1. For more
information visit jansson Github page: https://github.com/akheron/jansson/releases/tag/v2.14.1</p>
<p>Resolves: #1178</p>
<h4>pjproject: Increase maximum SDP formats and attribute limits</h4>
<p>Author: Joe Searle
Date: 2025-05-15</p>
<p>Since Chrome 136, using Windows, when initiating a video call the INVITE SDP exceeds the maximum number of allowed attributes, resulting in the INVITE being rejected. This increases the attribute limit and the number of formats allowed when using bundled pjproject.</p>
<p>Fixes: #1240</p>
<h4>manager.c: Invalid ref-counting when purging events</h4>
<p>Author: Nathan Monfils
Date: 2025-05-05</p>
<p>We have a use-case where we generate a <em>lot</em> of events on the AMI, and
then when doing <code>manager show eventq</code> we would see some events which
would linger for hours or days in there. Obviously something was leaking.
Testing allowed us to track down this logic bug in the ref-counting on
the event purge.</p>
<p>Reproducing the bug was not super trivial, we managed to do it in a
production-like load testing environment with multiple AMI consumers.</p>
<p>The race condition itself:</p>
<ol>
<li>something allocates and links <code>session</code></li>
<li><code>purge_sessions</code> iterates over that <code>session</code> (takes ref)</li>
<li><code>purge_session</code> correctly de-referencess that session</li>
<li><code>purge_session</code> re-evaluates the while() loop, taking a reference</li>
<li><code>purge_session</code> exits (<code>n_max &gt; 0</code> is false)</li>
<li>whatever allocated the <code>session</code> deallocates it, but a reference is
now lost since we exited the <code>while</code> loop before de-referencing.</li>
<li>since the destructor is never called, the session-&gt;last_ev-&gt;usecount
is never decremented, leading to events lingering in the queue</li>
</ol>
<p>The impact of this bug does not seem major. The events are small and do
not seem, from our testing, to be causing meaningful additional CPU
usage. Mainly we wanted to fix this issue because we are internally
adding prometheus metrics to the eventq and those leaked events were
causing the metrics to show garbage data.</p>
<h4>res_pjsip_nat.c: Do not overwrite transfer host</h4>
<p>Author: Mike Bradeen
Date: 2025-05-08</p>
<p>When a call is transfered via dialplan behind a NAT, the
host portion of the Contact header in the 302 will no longer
be over-written with the external NAT IP and will retain the
hostname.</p>
<p>Fixes: #1141</p>
<h4>chan_pjsip: Serialize INVITE creation on DTMF attended transfer</h4>
<p>Author: Mike Bradeen
Date: 2025-05-05</p>
<p>When a call is transfered via DTMF feature code, the Transfer Target and
Transferer are bridged immediately. This opens the possibilty of a race
condition between the creation of an INVITE and the bridge induced colp
update that can result in the set caller ID being over-written with the
transferer's default info.</p>
<p>Fixes: #1234</p>
<h4>sig_analog: Add Call Waiting Deluxe support.</h4>
<p>Author: Naveen Albert
Date: 2023-08-24</p>
<p>Adds support for Call Waiting Deluxe options to enhance
the current call waiting feature.</p>
<p>As part of this change, a mechanism is also added that
allows a channel driver to queue an audio file for Dial()
to play, which is necessary for the announcement function.</p>
<p>ASTERISK-30373 #close</p>
<p>Resolves: #271</p>
<p>UserNote: Call Waiting Deluxe can now be enabled for FXS channels
by enabling its corresponding option.</p>
<h4>app_sms: Ignore false positive vectorization warning.</h4>
<p>Author: Naveen Albert
Date: 2025-01-24</p>
<p>Ignore gcc warning about writing 32 bytes into a region of size 6,
since we check that we don't go out of bounds for each byte.
This is due to a vectorization bug in gcc 15, stemming from
gcc commit 68326d5d1a593dc0bf098c03aac25916168bc5a9.</p>
<p>Resolves: #1088</p>
<h4>lock.h: Add include for string.h when DEBUG_THREADS is defined.</h4>
<p>Author: George Joseph
Date: 2025-05-02</p>
<p>When DEBUG_THREADS is defined, lock.h uses strerror(), which is defined
in the libc string.h file, to print warning messages. If the including
source file doesn't include string.h then strerror() won't be found and
and compile errors will be thrown. Since lock.h depends on this, string.h
is now included from there if DEBUG_THREADS is defined. This way, including
source files don't have to worry about it.</p>
<h4>Alternate Channel Storage Backends</h4>
<p>Author: George Joseph
Date: 2024-12-31</p>
<p>Full details: http://s.asterisk.net/dc679ec3</p>
<p>The previous proof-of-concept showed that the cpp_map_name_id alternate
storage backed performed better than all the others so this final PR
adds only that option. You still need to enable it in menuselect under
the "Alternate Channel Storage Backends" category.</p>
<p>To select which one is used at runtime, set the "channel_storage_backend"
option in asterisk.conf to one of the values described in
asterisk.conf.sample. The default remains "ao2_legacy".</p>
<p>UpgradeNote: With this release, you can now select an alternate channel
storage backend based on C++ Maps. Using the new backend may increase
performance and reduce the chances of deadlocks on heavily loaded systems.
For more information, see http://s.asterisk.net/dc679ec3</p>
</body></html>

View File

@@ -1,677 +0,0 @@
## Change Log for Release asterisk-20.15.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.15.0.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.14.1...20.15.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.15.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 29
- Commit Authors: 14
- Issues Resolved: 19
- Security Advisories Resolved: 1
- [GHSA-c7p6-7mvq-8jq2](https://github.com/asterisk/asterisk/security/advisories/GHSA-c7p6-7mvq-8jq2): cli_permissions.conf: deny option does not work for disallowing shell commands
### User Notes:
- #### res_stir_shaken.so: Handle X5U certificate chains.
The STIR/SHAKEN verification process will now load a full
certificate chain retrieved via the X5U URL instead of loading only
the end user cert.
- #### res_stir_shaken: Add "ignore_sip_date_header" config option.
A new STIR/SHAKEN verification option "ignore_sip_date_header" has
been added that when set to true, will cause the verification process to
not consider a missing or invalid SIP "Date" header to be a failure. This
will make the IAT the sole "truth" for Date in the verification process.
The option can be set in the "verification" and "profile" sections of
stir_shaken.conf.
Also fixed a bug in the port match logic.
Resolves: #1251
Resolves: #1271
- #### app_record: Add RECORDING_INFO function.
The RECORDING_INFO function can now be used
to retrieve the duration of a recording.
- #### app_queue: queue rules Add support for QUEUE_RAISE_PENALTY=rN to raise penal..
This change introduces QUEUE_RAISE_PENALTY=rN, allowing selective penalty raises
only for members whose current penalty is within the [min_penalty, max_penalty] range.
Members with lower or higher penalties are unaffected.
This behavior is backward-compatible with existing queue rule configurations.
- #### res_odbc: cache_size option to limit the cached connections.
New cache_size option for res_odbc to on a per class basis limit the
number of cached connections. Please reference the sample configuration
for details.
- #### res_odbc: cache_type option for res_odbc.
When using res_odbc it should be noted that back-end
connections to the underlying database can now be configured to re-use
the cached connections in a round-robin manner rather than repeatedly
re-using the same connection. This helps to keep connections alive, and
to purge dead connections from the system, thus more dynamically
adjusting to actual load. The downside is that one could keep too many
connections active for a longer time resulting in resource also begin
consumed on the database side.
- #### ARI Outbound Websockets
Asterisk can now establish websocket sessions _to_ your ARI applications
as well as accepting websocket sessions _from_ them.
Full details: http://s.asterisk.net/ari-outbound-ws
- #### res_websocket_client: Create common utilities for websocket clients.
A new module "res_websocket_client" and config file
"websocket_client.conf" have been added to support several upcoming new
capabilities that need common websocket client configuration.
- #### asterisk.c: Add option to restrict shell access from remote consoles.
A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.
Resolves: #GHSA-c7p6-7mvq-8jq2
- #### sig_analog: Add Call Waiting Deluxe support.
Call Waiting Deluxe can now be enabled for FXS channels
by enabling its corresponding option.
### Upgrade Notes:
- #### jansson: Upgrade version to jansson 2.14.1
jansson has been upgraded to 2.14.1. For more
information visit jansson Github page: https://github.com/akheron/jansson/releases/tag/v2.14.1
Resolves: #1178
- #### Alternate Channel Storage Backends
With this release, you can now select an alternate channel
storage backend based on C++ Maps. Using the new backend may increase
performance and reduce the chances of deadlocks on heavily loaded systems.
For more information, see http://s.asterisk.net/dc679ec3
### Commit Authors:
- George Joseph: (10)
- Itzanh: (1)
- Jaco Kroon: (2)
- Joe Searle: (1)
- Michal Hajek: (1)
- Mike Bradeen: (2)
- Mkmer: (1)
- Nathan Monfils: (1)
- Naveen Albert: (3)
- Phoneben: (1)
- Sean Bright: (2)
- Stanislav Abramenkov: (1)
- Sven Kube: (2)
- Thomas B. Clark: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-c7p6-7mvq-8jq2: cli_permissions.conf: deny option does not work for disallowing shell commands
- 271: [new-feature]: sig_analog: Add Call Waiting Deluxe support.
- 548: [improvement]: Get Record() audio duration/length
- 1088: [bug]: app_sms: Compilation failure in DEVMODE due to stringop-overflow error in GCC 15 pre-release
- 1141: [bug]: res_pjsip: Contact header set incorrectly for call redirect (302 Moved temp.) when external_* set
- 1178: [improvement]: jansson: Upgrade version to jansson 2.14.1
- 1230: [bug]: ast_frame_adjust_volume and ast_frame_adjust_volume_float crash on interpolated frames
- 1234: [bug]: Set CalllerID lost on DTMF attended transfer
- 1240: [bug]: WebRTC invites failing on Chrome 136
- 1243: [bug]: make menuconfig fails due to changes in GTK callbacks
- 1251: [improvement]: PJSIP shouldn't require SIP Date header to process full shaken passport which includes iat
- 1254: [bug]: ActiveChannels not reported when using AMI command PJSIPShowEndpoint
- 1271: [bug]: STIR/SHAKEN not accepting port 8443 in certificate URLs
- 1272: [improvement]: STIR/SHAKEN handle X5U certificate chains
- 1276: MixMonitor produces broken recordings in bridged calls with asymmetric codecs (e.g., alaw vs G.722)
- 1279: [bug]: regression: 20.12.0 downgrades quality of wav16 recordings
- 1282: [bug]: Alternate Channel Storage Backends menuselect not enabling it
- 1287: [bug]: channelstorage.c: Compilation failure with DEBUG_FD_LEAKS
- 1288: [bug]: Crash when destroying channel with C++ alternative storage backend enabled
- ASTERISK-30373: sig_analog: Add Call Waiting Deluxe options
### Commits By Author:
- #### George Joseph (10):
- Alternate Channel Storage Backends
- lock.h: Add include for string.h when DEBUG_THREADS is defined.
- asterisk.c: Add option to restrict shell access from remote consoles.
- res_websocket_client: Create common utilities for websocket clients.
- ARI Outbound Websockets
- res_websocket_client: Add more info to the XML documentation.
- res_stir_shaken: Add "ignore_sip_date_header" config option.
- res_stir_shaken.so: Handle X5U certificate chains.
- channelstorage_cpp_map_name_id: Fix callback returning non-matching channels.
- channelstorage: Rename callbacks that conflict with DEBUG_FD_LEAKS.
- #### Itzanh (1):
- app_sms.c: Fix sending and receiving SMS messages in protocol 2
- #### Jaco Kroon (2):
- res_odbc: cache_type option for res_odbc.
- res_odbc: cache_size option to limit the cached connections.
- #### Joe Searle (1):
- pjproject: Increase maximum SDP formats and attribute limits
- #### Michal Hajek (1):
- audiohook.c: Improve frame pairing logic to avoid MixMonitor breakage with mix..
- #### Mike Bradeen (2):
- chan_pjsip: Serialize INVITE creation on DTMF attended transfer
- res_pjsip_nat.c: Do not overwrite transfer host
- #### Nathan Monfils (1):
- manager.c: Invalid ref-counting when purging events
- #### Naveen Albert (3):
- app_sms: Ignore false positive vectorization warning.
- sig_analog: Add Call Waiting Deluxe support.
- app_record: Add RECORDING_INFO function.
- #### Sean Bright (2):
- res_pjsip: Fix empty `ActiveChannels` property in AMI responses.
- channelstorage_makeopts.xml: Remove errant XML character.
- #### Stanislav Abramenkov (1):
- jansson: Upgrade version to jansson 2.14.1
- #### Sven Kube (2):
- res_audiosocket.c: Set the TCP_NODELAY socket option
- res_audiosocket.c: Add retry mechanism for reading data from AudioSocket
- #### Thomas B. Clark (1):
- menuselect: Fix GTK menu callbacks for Fedora 42 compatibility
- #### mkmer (1):
- frame.c: validate frame data length is less than samples when adjusting volume
- #### phoneben (1):
- app_queue: queue rules Add support for QUEUE_RAISE_PENALTY=rN to raise penal..
### Commit List:
- channelstorage: Rename callbacks that conflict with DEBUG_FD_LEAKS.
- channelstorage_cpp_map_name_id: Fix callback returning non-matching channels.
- channelstorage_makeopts.xml: Remove errant XML character.
- res_stir_shaken.so: Handle X5U certificate chains.
- res_stir_shaken: Add "ignore_sip_date_header" config option.
- app_record: Add RECORDING_INFO function.
- app_sms.c: Fix sending and receiving SMS messages in protocol 2
- res_websocket_client: Add more info to the XML documentation.
- res_odbc: cache_size option to limit the cached connections.
- res_odbc: cache_type option for res_odbc.
- res_pjsip: Fix empty `ActiveChannels` property in AMI responses.
- ARI Outbound Websockets
- res_websocket_client: Create common utilities for websocket clients.
- asterisk.c: Add option to restrict shell access from remote consoles.
- frame.c: validate frame data length is less than samples when adjusting volume
- res_audiosocket.c: Add retry mechanism for reading data from AudioSocket
- res_audiosocket.c: Set the TCP_NODELAY socket option
- menuselect: Fix GTK menu callbacks for Fedora 42 compatibility
- jansson: Upgrade version to jansson 2.14.1
- pjproject: Increase maximum SDP formats and attribute limits
- manager.c: Invalid ref-counting when purging events
- res_pjsip_nat.c: Do not overwrite transfer host
- chan_pjsip: Serialize INVITE creation on DTMF attended transfer
- sig_analog: Add Call Waiting Deluxe support.
- app_sms: Ignore false positive vectorization warning.
- lock.h: Add include for string.h when DEBUG_THREADS is defined.
- Alternate Channel Storage Backends
### Commit Details:
#### channelstorage: Rename callbacks that conflict with DEBUG_FD_LEAKS.
Author: George Joseph
Date: 2025-07-08
DEBUG_FD_LEAKS replaces calls to "open" and "close" with functions that keep
track of file descriptors, even when those calls are actually callbacks
defined in structures like ast_channelstorage_instance->open and don't touch
file descriptors. This causes compilation failures. Those callbacks
have been renamed to "open_instance" and "close_instance" respectively.
Resolves: #1287
#### channelstorage_cpp_map_name_id: Fix callback returning non-matching channels.
Author: George Joseph
Date: 2025-07-09
When the callback() API was invoked but no channel passed the test, callback
would return the last channel tested instead of NULL. It now correctly
returns NULL when no channel matches.
Resolves: #1288
#### audiohook.c: Improve frame pairing logic to avoid MixMonitor breakage with mix..
Author: Michal Hajek
Date: 2025-05-21
This patch adjusts the read/write synchronization logic in audiohook_read_frame_both()
to better handle calls where participants use different codecs or sample sizes
(e.g., alaw vs G.722). The previous hard threshold of 2 * samples caused MixMonitor
recordings to break or stutter when frames were not aligned between both directions.
The new logic uses a more tolerant limit (1.5 * samples), which prevents audio tearing
without causing excessive buffer overruns. This fix specifically addresses issues
with MixMonitor when recording directly on a channel in a bridge using mixed codecs.
Reported-by: Michal Hajek <michal.hajek@daktela.com>
Resolves: #1276
Resolves: #1279
#### channelstorage_makeopts.xml: Remove errant XML character.
Author: Sean Bright
Date: 2025-06-30
Resolves: #1282
#### res_stir_shaken.so: Handle X5U certificate chains.
Author: George Joseph
Date: 2025-06-18
The verification process will now load a full certificate chain retrieved
via the X5U URL instead of loading only the end user cert.
* Renamed crypto_load_cert_from_file() and crypto_load_cert_from_memory()
to crypto_load_cert_chain_from_file() and crypto_load_cert_chain_from_memory()
respectively.
* The two load functions now continue to load certs from the file or memory
PEMs and store them in a separate stack of untrusted certs specific to the
current verification context.
* crypto_is_cert_trusted() now uses the stack of untrusted certs that were
extracted from the PEM in addition to any untrusted certs that were passed
in from the configuration (and any CA certs passed in from the config of
course).
Resolves: #1272
UserNote: The STIR/SHAKEN verification process will now load a full
certificate chain retrieved via the X5U URL instead of loading only
the end user cert.
#### res_stir_shaken: Add "ignore_sip_date_header" config option.
Author: George Joseph
Date: 2025-06-15
UserNote: A new STIR/SHAKEN verification option "ignore_sip_date_header" has
been added that when set to true, will cause the verification process to
not consider a missing or invalid SIP "Date" header to be a failure. This
will make the IAT the sole "truth" for Date in the verification process.
The option can be set in the "verification" and "profile" sections of
stir_shaken.conf.
Also fixed a bug in the port match logic.
Resolves: #1251
Resolves: #1271
#### app_record: Add RECORDING_INFO function.
Author: Naveen Albert
Date: 2024-01-22
Add a function that can be used to retrieve info
about a previous recording, such as its duration.
This is being added as a function to avoid possibly
trampling on dialplan variables, and could be extended
to provide other information in the future.
Resolves: #548
UserNote: The RECORDING_INFO function can now be used
to retrieve the duration of a recording.
#### app_sms.c: Fix sending and receiving SMS messages in protocol 2
Author: Itzanh
Date: 2025-04-06
This fixes bugs in SMS messaging to SMS-capable analog phones that prevented app_sms.c from talking to phones using SMS protocol 2.
- Fix MORX message reception (from phone to Asterisk) in SMS protocol 2
- Fix MTTX message transmission (from Asterisk to phone) in SMS protocol 2
One of the bugs caused messages to have random characters and junk appended at the end up to the character limit. Another bug prevented Asterisk from sending messages from Asterisk to the phone at all. A final bug caused the transmission from Asterisk to the phone to take a long time because app_sms.c did not hang up after correctly sending the message, causing the phone to have to time out and hang up in order to complete the message transmission.
This was tested with a Linksys PAP2T and with a GrandStream HT814, sending and receiving messages with Telefónica DOMO Mensajes phones from Telefónica Spain. I had to play with both the network jitter buffer and the dB gain to get it to work. One of my phones required the gain to be set to +3dB for it to work, while another required it to be set to +6dB.
Only MORX and MTTX were tested, I did not test sending and receiving messages to a TelCo SMSC.
#### app_queue: queue rules Add support for QUEUE_RAISE_PENALTY=rN to raise penal..
Author: phoneben
Date: 2025-05-26
This update adds support for a new QUEUE_RAISE_PENALTY format: rN
When QUEUE_RAISE_PENALTY is set to rN (e.g., r4), only members whose current penalty
is greater than or equal to the defined min_penalty and less than or equal to max_penalty
will have their penalty raised to N.
Members with penalties outside the min/max range remain unchanged.
Example behaviors:
QUEUE_RAISE_PENALTY=4 → Raise all members with penalty < 4 (existing behavior)
QUEUE_RAISE_PENALTY=r4 → Raise only members with penalty in [min_penalty, max_penalty] to 4
Implementation details:
Adds parsing logic to detect the r prefix and sets the raise_respect_min flag
Modifies the raise logic to skip members outside the defined penalty range when the flag is active
UserNote: This change introduces QUEUE_RAISE_PENALTY=rN, allowing selective penalty raises
only for members whose current penalty is within the [min_penalty, max_penalty] range.
Members with lower or higher penalties are unaffected.
This behavior is backward-compatible with existing queue rule configurations.
#### res_websocket_client: Add more info to the XML documentation.
Author: George Joseph
Date: 2025-06-05
Added "see-also" links to chan_websocket and ARI Outbound WebSocket and
added an example configuration for each.
#### res_odbc: cache_size option to limit the cached connections.
Author: Jaco Kroon
Date: 2024-12-13
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
UserNote: New cache_size option for res_odbc to on a per class basis limit the
number of cached connections. Please reference the sample configuration
for details.
#### res_odbc: cache_type option for res_odbc.
Author: Jaco Kroon
Date: 2024-12-10
This enables setting cache_type classes to a round-robin queueing system
rather than the historic stack mechanism.
This should result in lower risk of connection drops due to shorter idle
times (the first connection to go onto the stack could in theory never
be used again, ever, but sit there consuming resources, there could be
multiple of these).
And with a queue rather than a stack, dead connections are guaranteed to
be detected and purged eventually.
This should end up better balancing connection_cnt with actual load
over time, assuming the database doesn't keep connections open
excessively long from it's side.
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
UserNote: When using res_odbc it should be noted that back-end
connections to the underlying database can now be configured to re-use
the cached connections in a round-robin manner rather than repeatedly
re-using the same connection. This helps to keep connections alive, and
to purge dead connections from the system, thus more dynamically
adjusting to actual load. The downside is that one could keep too many
connections active for a longer time resulting in resource also begin
consumed on the database side.
#### res_pjsip: Fix empty `ActiveChannels` property in AMI responses.
Author: Sean Bright
Date: 2025-05-27
The logic appears to have been reversed since it was introduced in
05cbf8df.
Resolves: #1254
#### ARI Outbound Websockets
Author: George Joseph
Date: 2025-03-28
Asterisk can now establish websocket sessions _to_ your ARI applications
as well as accepting websocket sessions _from_ them.
Full details: http://s.asterisk.net/ari-outbound-ws
Code change summary:
* Added an ast_vector_string_join() function,
* Added ApplicationRegistered and ApplicationUnregistered ARI events.
* Converted res/ari/config.c to use sorcery to process ari.conf.
* Added the "outbound-websocket" ARI config object.
* Refactored res/ari/ari_websockets.c to handle outbound websockets.
* Refactored res/ari/cli.c for the sorcery changeover.
* Updated res/res_stasis.c for the sorcery changeover.
* Updated apps/app_stasis.c to allow initiating per-call outbound websockets.
* Added CLI commands to manage ARI websockets.
* Added the new "outbound-websocket" object to ari.conf.sample.
* Moved the ARI XML documentation out of res_ari.c into res/ari/ari_doc.xml
UserNote: Asterisk can now establish websocket sessions _to_ your ARI applications
as well as accepting websocket sessions _from_ them.
Full details: http://s.asterisk.net/ari-outbound-ws
#### res_websocket_client: Create common utilities for websocket clients.
Author: George Joseph
Date: 2025-05-02
Since multiple Asterisk capabilities now need to create websocket clients
it makes sense to create a common set of utilities rather than making
each of those capabilities implement their own.
* A new configuration file "websocket_client.conf" is used to store common
client parameters in named configuration sections.
* APIs are provided to list and retrieve ast_websocket_client objects created
from the named configurations.
* An API is provided that accepts an ast_websocket_client object, connects
to the remote server with retries and returns an ast_websocket object. TLS is
supported as is basic authentication.
* An observer can be registered to receive notification of loaded or reloaded
client objects.
* An API is provided to compare an existing client object to one just
reloaded and return the fields that were changed. The caller can then decide
what action to take based on which fields changed.
Also as part of thie commit, several sorcery convenience macros were created
to make registering common object fields easier.
UserNote: A new module "res_websocket_client" and config file
"websocket_client.conf" have been added to support several upcoming new
capabilities that need common websocket client configuration.
#### asterisk.c: Add option to restrict shell access from remote consoles.
Author: George Joseph
Date: 2025-05-19
UserNote: A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.
Resolves: #GHSA-c7p6-7mvq-8jq2
#### frame.c: validate frame data length is less than samples when adjusting volume
Author: mkmer
Date: 2025-05-12
Resolves: #1230
#### res_audiosocket.c: Add retry mechanism for reading data from AudioSocket
Author: Sven Kube
Date: 2025-05-13
The added retry mechanism addresses an issue that arises when fragmented TCP
packets are received, each containing only a portion of an AudioSocket packet.
This situation can occur if the external service sending the AudioSocket data
has Nagle's algorithm enabled.
#### res_audiosocket.c: Set the TCP_NODELAY socket option
Author: Sven Kube
Date: 2025-05-13
Disable Nagle's algorithm by setting the TCP_NODELAY socket option.
This reduces latency by preventing delays caused by packet buffering.
#### menuselect: Fix GTK menu callbacks for Fedora 42 compatibility
Author: Thomas B. Clark
Date: 2025-05-12
This patch resolves a build failure in `menuselect_gtk.c` when running
`make menuconfig` on Fedora 42. The new version of GTK introduced stricter
type checking for callback signatures.
Changes include:
- Add wrapper functions to match the expected `void (*)(void)` signature.
- Update `menu_items` array to use these wrappers.
Fixes: #1243
#### jansson: Upgrade version to jansson 2.14.1
Author: Stanislav Abramenkov
Date: 2025-03-24
UpgradeNote: jansson has been upgraded to 2.14.1. For more
information visit jansson Github page: https://github.com/akheron/jansson/releases/tag/v2.14.1
Resolves: #1178
#### pjproject: Increase maximum SDP formats and attribute limits
Author: Joe Searle
Date: 2025-05-15
Since Chrome 136, using Windows, when initiating a video call the INVITE SDP exceeds the maximum number of allowed attributes, resulting in the INVITE being rejected. This increases the attribute limit and the number of formats allowed when using bundled pjproject.
Fixes: #1240
#### manager.c: Invalid ref-counting when purging events
Author: Nathan Monfils
Date: 2025-05-05
We have a use-case where we generate a *lot* of events on the AMI, and
then when doing `manager show eventq` we would see some events which
would linger for hours or days in there. Obviously something was leaking.
Testing allowed us to track down this logic bug in the ref-counting on
the event purge.
Reproducing the bug was not super trivial, we managed to do it in a
production-like load testing environment with multiple AMI consumers.
The race condition itself:
1. something allocates and links `session`
2. `purge_sessions` iterates over that `session` (takes ref)
3. `purge_session` correctly de-referencess that session
4. `purge_session` re-evaluates the while() loop, taking a reference
5. `purge_session` exits (`n_max > 0` is false)
6. whatever allocated the `session` deallocates it, but a reference is
now lost since we exited the `while` loop before de-referencing.
7. since the destructor is never called, the session->last_ev->usecount
is never decremented, leading to events lingering in the queue
The impact of this bug does not seem major. The events are small and do
not seem, from our testing, to be causing meaningful additional CPU
usage. Mainly we wanted to fix this issue because we are internally
adding prometheus metrics to the eventq and those leaked events were
causing the metrics to show garbage data.
#### res_pjsip_nat.c: Do not overwrite transfer host
Author: Mike Bradeen
Date: 2025-05-08
When a call is transfered via dialplan behind a NAT, the
host portion of the Contact header in the 302 will no longer
be over-written with the external NAT IP and will retain the
hostname.
Fixes: #1141
#### chan_pjsip: Serialize INVITE creation on DTMF attended transfer
Author: Mike Bradeen
Date: 2025-05-05
When a call is transfered via DTMF feature code, the Transfer Target and
Transferer are bridged immediately. This opens the possibilty of a race
condition between the creation of an INVITE and the bridge induced colp
update that can result in the set caller ID being over-written with the
transferer's default info.
Fixes: #1234
#### sig_analog: Add Call Waiting Deluxe support.
Author: Naveen Albert
Date: 2023-08-24
Adds support for Call Waiting Deluxe options to enhance
the current call waiting feature.
As part of this change, a mechanism is also added that
allows a channel driver to queue an audio file for Dial()
to play, which is necessary for the announcement function.
ASTERISK-30373 #close
Resolves: #271
UserNote: Call Waiting Deluxe can now be enabled for FXS channels
by enabling its corresponding option.
#### app_sms: Ignore false positive vectorization warning.
Author: Naveen Albert
Date: 2025-01-24
Ignore gcc warning about writing 32 bytes into a region of size 6,
since we check that we don't go out of bounds for each byte.
This is due to a vectorization bug in gcc 15, stemming from
gcc commit 68326d5d1a593dc0bf098c03aac25916168bc5a9.
Resolves: #1088
#### lock.h: Add include for string.h when DEBUG_THREADS is defined.
Author: George Joseph
Date: 2025-05-02
When DEBUG_THREADS is defined, lock.h uses strerror(), which is defined
in the libc string.h file, to print warning messages. If the including
source file doesn't include string.h then strerror() won't be found and
and compile errors will be thrown. Since lock.h depends on this, string.h
is now included from there if DEBUG_THREADS is defined. This way, including
source files don't have to worry about it.
#### Alternate Channel Storage Backends
Author: George Joseph
Date: 2024-12-31
Full details: http://s.asterisk.net/dc679ec3
The previous proof-of-concept showed that the cpp_map_name_id alternate
storage backed performed better than all the others so this final PR
adds only that option. You still need to enable it in menuselect under
the "Alternate Channel Storage Backends" category.
To select which one is used at runtime, set the "channel_storage_backend"
option in asterisk.conf to one of the values described in
asterisk.conf.sample. The default remains "ao2_legacy".
UpgradeNote: With this release, you can now select an alternate channel
storage backend based on C++ Maps. Using the new backend may increase
performance and reduce the chances of deadlocks on heavily loaded systems.
For more information, see http://s.asterisk.net/dc679ec3

View File

@@ -1,78 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.15.1</title></head><body>
<h2>Change Log for Release asterisk-20.15.1</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.15.1.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.15.0...20.15.1">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.15.1.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 2</li>
<li>Commit Authors: 2</li>
<li>Issues Resolved: 0</li>
<li>Security Advisories Resolved: 2</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-mrq5-74j5-f5cr">GHSA-mrq5-74j5-f5cr</a>: Remote DoS and possible RCE in asterisk/res/res_stir_shaken/verification.c</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-v9q8-9j8m-5xwp">GHSA-v9q8-9j8m-5xwp</a>: Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.</li>
</ul>
<h3>User Notes:</h3>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</h4>
The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.</li>
</ul>
<h3>Developer Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>George Joseph: (1)</li>
<li>ThatTotallyRealMyth: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-mrq5-74j5-f5cr: Remote DoS and possible RCE in asterisk/res/res_stir_shaken/verification.c</li>
<li>!GHSA-v9q8-9j8m-5xwp: Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>George Joseph (1):</h4>
</li>
<li>
<p>res_stir_shaken: Test for missing semicolon in Identity header.</p>
</li>
<li>
<h4>ThatTotallyRealMyth (1):</h4>
</li>
<li>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</li>
<li>res_stir_shaken: Test for missing semicolon in Identity header.</li>
</ul>
<h3>Commit Details:</h3>
<h4>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</h4>
<p>Author: ThatTotallyRealMyth
Date: 2025-06-10</p>
<p>UpgradeNote: The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.</p>
<p>Resolves: #GHSA-v9q8-9j8m-5xwp</p>
<h4>res_stir_shaken: Test for missing semicolon in Identity header.</h4>
<p>Author: George Joseph
Date: 2025-07-31</p>
<p>ast_stir_shaken_vs_verify() now makes sure there's a semicolon in
the Identity header to prevent a possible segfault.</p>
<p>Resolves: #GHSA-mrq5-74j5-f5cr</p>
</body></html>

View File

@@ -1,86 +0,0 @@
## Change Log for Release asterisk-20.15.1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.15.1.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.15.0...20.15.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.15.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 2
- Commit Authors: 2
- Issues Resolved: 0
- Security Advisories Resolved: 2
- [GHSA-mrq5-74j5-f5cr](https://github.com/asterisk/asterisk/security/advisories/GHSA-mrq5-74j5-f5cr): Remote DoS and possible RCE in asterisk/res/res_stir_shaken/verification.c
- [GHSA-v9q8-9j8m-5xwp](https://github.com/asterisk/asterisk/security/advisories/GHSA-v9q8-9j8m-5xwp): Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.
### User Notes:
### Upgrade Notes:
- #### safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.
### Developer Notes:
### Commit Authors:
- George Joseph: (1)
- ThatTotallyRealMyth: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-mrq5-74j5-f5cr: Remote DoS and possible RCE in asterisk/res/res_stir_shaken/verification.c
- !GHSA-v9q8-9j8m-5xwp: Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.
### Commits By Author:
- #### George Joseph (1):
- res_stir_shaken: Test for missing semicolon in Identity header.
- #### ThatTotallyRealMyth (1):
- safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
### Commit List:
- safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
- res_stir_shaken: Test for missing semicolon in Identity header.
### Commit Details:
#### safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
Author: ThatTotallyRealMyth
Date: 2025-06-10
UpgradeNote: The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.
Resolves: #GHSA-v9q8-9j8m-5xwp
#### res_stir_shaken: Test for missing semicolon in Identity header.
Author: George Joseph
Date: 2025-07-31
ast_stir_shaken_vs_verify() now makes sure there's a semicolon in
the Identity header to prevent a possible segfault.
Resolves: #GHSA-mrq5-74j5-f5cr

View File

@@ -1,50 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.15.2</title></head><body>
<h2>Change Log for Release asterisk-20.15.2</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.15.2.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.15.1...20.15.2">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.15.2.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 1</li>
<li>Commit Authors: 1</li>
<li>Issues Resolved: 0</li>
<li>Security Advisories Resolved: 1</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-64qc-9x89-rx5j">GHSA-64qc-9x89-rx5j</a>: A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash</li>
</ul>
<h3>User Notes:</h3>
<h3>Upgrade Notes:</h3>
<h3>Developer Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>George Joseph: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-64qc-9x89-rx5j: A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>George Joseph (1):</h4>
</li>
<li>res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.</li>
</ul>
<h3>Commit Details:</h3>
<h4>res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.</h4>
<p>Author: George Joseph
Date: 2025-08-28</p>
<p>In the highly-unlikely event that get_authorization_hdr() couldn't find an
Authorization header in a request, trying to get the digest algorithm
would cauase a SEGV. We now check that we have an auth header that matches
the realm before trying to get the algorithm from it.</p>
<p>Resolves: #GHSA-64qc-9x89-rx5j</p>
</body></html>

View File

@@ -1,60 +0,0 @@
## Change Log for Release asterisk-20.15.2
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.15.2.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.15.1...20.15.2)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.15.2.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-64qc-9x89-rx5j](https://github.com/asterisk/asterisk/security/advisories/GHSA-64qc-9x89-rx5j): A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash
### User Notes:
### Upgrade Notes:
### Developer Notes:
### Commit Authors:
- George Joseph: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-64qc-9x89-rx5j: A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash
### Commits By Author:
- #### George Joseph (1):
- res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.
### Commit List:
- res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.
### Commit Details:
#### res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.
Author: George Joseph
Date: 2025-08-28
In the highly-unlikely event that get_authorization_hdr() couldn't find an
Authorization header in a request, trying to get the digest algorithm
would cauase a SEGV. We now check that we have an auth header that matches
the realm before trying to get the algorithm from it.
Resolves: #GHSA-64qc-9x89-rx5j

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,775 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.17.0</title></head><body>
<h2>Change Log for Release asterisk-20.17.0</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.17.0.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.16.0...20.17.0">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.17.0.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 50</li>
<li>Commit Authors: 16</li>
<li>Issues Resolved: 34</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</h4>
<p>The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.</p>
</li>
<li>
<h4>func_channel: Allow R/W of ADSI CPE capability setting.</h4>
<p>CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.</p>
</li>
<li>
<h4>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</h4>
<p>Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.</p>
</li>
<li>
<h4>func_math: Add DIGIT_SUM function.</h4>
<p>The DIGIT_SUM function can be used to return the digit sum of
a number.</p>
</li>
<li>
<h4>app_sf: Add post-digit timer option to ReceiveSF.</h4>
<p>The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.</p>
</li>
<li>
<h4>app_dial: Allow fractional seconds for dial timeouts.</h4>
<p>The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.</p>
</li>
<li>
<h4>chan_dahdi: Add DAHDI_CHANNEL function.</h4>
<p>The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.</p>
</li>
</ul>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>res_audiosocket: add message types for all slin sample rates</h4>
<p>New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.</p>
</li>
<li>
<h4>taskpool: Add taskpool API, switch Stasis to using it.</h4>
<p>The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.</p>
</li>
</ul>
<h3>Developer Notes:</h3>
<ul>
<li>
<h4>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</h4>
<p>A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.</p>
</li>
<li>
<h4>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</h4>
<p>The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.</p>
</li>
<li>
<h4>taskpool: Add taskpool API, switch Stasis to using it.</h4>
<p>The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.</p>
</li>
</ul>
<h3>Commit Authors:</h3>
<ul>
<li>Anthony Minessale: (1)</li>
<li>Bastian Triller: (1)</li>
<li>Ben Ford: (1)</li>
<li>Christoph Moench-Tegeder: (1)</li>
<li>George Joseph: (9)</li>
<li>Igor Goncharovsky: (1)</li>
<li>Joshua C. Colp: (6)</li>
<li>Max Grobecker: (1)</li>
<li>Nathan Monfils: (1)</li>
<li>Naveen Albert: (17)</li>
<li>Roman Pertsev: (1)</li>
<li>Sean Bright: (3)</li>
<li>Sven Kube: (3)</li>
<li>Tinet-mucw: (1)</li>
<li>gauravs456: (1)</li>
<li>phoneben: (2)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>781: [improvement]: Allow call by call disabling Stir/Shaken header inclusion </li>
<li>1340: [bug]: comfort noise packet corrupted</li>
<li>1419: [bug]: static code analysis issues in app_adsiprog.c</li>
<li>1422: [bug]: static code analysis issues in apps/app_externalivr.c</li>
<li>1425: [bug]: static code analysis issues in apps/app_queue.c</li>
<li>1434: [improvement]: pbx_variables: Create real channel for dialplan eval CLI command</li>
<li>1436: [improvement]: res_cliexec: Avoid unnecessary cast to char*</li>
<li>1455: [new-feature]: chan_dahdi: Add DAHDI_CHANNEL function</li>
<li>1467: [bug]: Crash in res_pjsip_refer during REFER progress teardown with PJSIP_TRANSFER_HANDLING(ari-only)</li>
<li>1478: [improvement]: Stasis threadpool -&gt; taskpool</li>
<li>1479: [bug]: The ARI bridge play and record APIs limit audio bandwidth by forcing the slin8 format.</li>
<li>1483: [improvement]: sig_analog: Eliminate possible timeout for Last Number Redial</li>
<li>1485: [improvement]: func_scramble: Add example to XML documentation.</li>
<li>1487: [improvement]: app_dial: Allow partial seconds to be used for dial timeouts</li>
<li>1489: [improvement]: config_options.c: Improve misleading error message</li>
<li>1491: [bug]: Segfault: <code>channelstorage_cpp</code> fast lookup without lock (<code>get_by_name_exact</code>/<code>get_by_uniqueid</code>) leads to UAF during hangup</li>
<li>1493: [new-feature]: app_sf: Add post-digit timer option</li>
<li>1496: [improvement]: dsp.c: Minor fixes to debug log messages</li>
<li>1499: [new-feature]: func_math: Add function to return the digit sum</li>
<li>1505: [improvement]: res_fax: Add XML documentation for channel variables</li>
<li>1507: [improvement]: res_tonedetect: Minor formatting issue in documentation</li>
<li>1509: [improvement]: res_fax.c — log debug error as debug, not regular log</li>
<li>1510: [new-feature]: sig_analog: Allow '#' to end the inter-digit timeout when dialing.</li>
<li>1514: [improvement]: func_channel: Allow R/W of ADSI CPE capability setting.</li>
<li>1517: [improvement]: core_unreal: Preserve ADSI capability when dialing Local channels</li>
<li>1519: [improvement]: app_dial / func_callerid: DNIS information is not propagated by Dial</li>
<li>1525: [bug]: chan_websocket: fix use of raw payload variable for string comparison in process_text_message</li>
<li>1535: [bug]: chan_pjsip changes SSRC on WebRTC channels, which is unsupported by some browsers</li>
<li>1536: [bug]: asterisk -rx connects to console instead of executing a command</li>
<li>1539: [bug]: safe_asterisk without TTY doesn't log to file</li>
<li>1544: [improvement]: While Receiving the MediaConnect Message Using External Media Over websocket ChannelID is Details are missing</li>
<li>1554: [bug]: safe_asterisk recurses into subdirectories of startup.d after f97361</li>
<li>1559: [improvement]: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.</li>
<li>1578: [bug]: Deadlock with externalMedia custom channel id and cpp map channel backend</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Anthony Minessale (1):</h4>
</li>
<li>
<h4>Bastian Triller (1):</h4>
</li>
<li>
<h4>Ben Ford (1):</h4>
</li>
<li>
<h4>Christoph Moench-Tegeder (1):</h4>
</li>
<li>
<h4>George Joseph (9):</h4>
</li>
<li>
<h4>Igor Goncharovsky (1):</h4>
</li>
<li>
<h4>Joshua C. Colp (6):</h4>
</li>
<li>
<h4>Max Grobecker (1):</h4>
</li>
<li>
<h4>Nathan Monfils (1):</h4>
</li>
<li>
<h4>Naveen Albert (17):</h4>
</li>
<li>
<h4>Roman Pertsev (1):</h4>
</li>
<li>
<h4>Sean Bright (3):</h4>
</li>
<li>
<h4>Sven Kube (3):</h4>
</li>
<li>
<h4>Tinet-mucw (1):</h4>
</li>
<li>
<h4>gauravs456 (1):</h4>
</li>
<li>
<h4>phoneben (2):</h4>
</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>channelstorage: Allow storage driver read locking to be skipped.</li>
<li>res_audiosocket: fix temporarily unavailable</li>
<li>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</li>
<li>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</li>
<li>iostream.c: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.</li>
<li>chan_pjsip: Disable SSRC change for WebRTC endpoints.</li>
<li>chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END events.</li>
<li>safe_asterisk: Fix logging and sorting issue.</li>
<li>Fix Endianness detection in utils.h for non-Linux</li>
<li>devicestate: Don't publish redundant device state messages.</li>
<li>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</li>
<li>res_audiosocket: add message types for all slin sample rates</li>
<li>res_fax.c: lower FAXOPT read warning to debug level</li>
<li>endpoints: Remove need for stasis subscription.</li>
<li>app_queue: Allow stasis message filtering to work.</li>
<li>taskpool: Fix some references to threadpool that should be taskpool.</li>
<li>Update contact information for anthm</li>
<li>chan_websocket.c: Change payload references to command instead.</li>
<li>func_callerid: Document limitation of DNID fields.</li>
<li>func_channel: Allow R/W of ADSI CPE capability setting.</li>
<li>core_unreal: Preserve ADSI capability when dialing Local channels.</li>
<li>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</li>
<li>sig_analog: Allow '#' to end the inter-digit timeout when dialing.</li>
<li>func_math: Add DIGIT_SUM function.</li>
<li>app_sf: Add post-digit timer option to ReceiveSF.</li>
<li>res_tonedetect: Fix formatting of XML documentation.</li>
<li>res_fax: Add XML documentation for channel variables.</li>
<li>channelstorage_cpp_map_name_id: Add read locking around retrievals.</li>
<li>app_dial: Allow fractional seconds for dial timeouts.</li>
<li>dsp.c: Make minor fixes to debug log messages.</li>
<li>config_options.c: Improve misleading warning.</li>
<li>func_scramble: Add example to XML documentation.</li>
<li>sig_analog: Eliminate potential timeout with Last Number Redial.</li>
<li>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</li>
<li>res_pjsip_geolocation: Add support for Geolocation loc-src parameter</li>
<li>sorcery: Move from threadpool to taskpool.</li>
<li>stasis_channels.c: Make protocol_id optional to enable blind transfer via ari</li>
<li>Fix some doxygen, typos and whitespace</li>
<li>stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_create</li>
<li>app_queue: Add NULL pointer checks in app_queue</li>
<li>app_externalivr: Prevent out-of-bounds read during argument processing.</li>
<li>chan_dahdi: Add DAHDI_CHANNEL function.</li>
<li>taskpool: Update versions for taskpool stasis options.</li>
<li>taskpool: Add taskpool API, switch Stasis to using it.</li>
<li>app_adsiprog: Fix possible NULL dereference.</li>
<li>manager.c: Fix presencestate object leak</li>
<li>audiohook.c: Ensure correct AO2 reference is dereffed.</li>
<li>res_cliexec: Remove unnecessary casts to char*.</li>
<li>rtp_engine.c: Add exception for comfort noise payload.</li>
<li>pbx_variables.c: Create real channel for "dialplan eval function".</li>
</ul>
<h3>Commit Details:</h3>
<h4>channelstorage: Allow storage driver read locking to be skipped.</h4>
<p>Author: George Joseph
Date: 2025-11-06</p>
<p>After PR #1498 added read locking to channelstorage_cpp_map_name_id, if ARI
channels/externalMedia was called with a custom channel id AND the
cpp_map_name_id channel storage backend is in use, a deadlock can occur when
hanging up the channel. It's actually triggered in
channel.c:__ast_channel_alloc_ap() when it gets a write lock on the
channelstorage driver then subsequently does a lookup for channel uniqueid
which now does a read lock. This is an invalid operation and causes the lock
state to get "bad". When the channels try to hang up, a write lock is
attempted again which hangs and causes the deadlock.</p>
<p>Now instead of the cpp_map_name_id channelstorage driver "get" APIs
automatically performing a read lock, they take a "lock" parameter which
allows a caller who already has a write lock to indicate that the "get" API
must not attempt its own lock. This prevents the state from getting mesed up.</p>
<p>The ao2_legacy driver uses the ao2 container's recursive mutex so doesn't
have this issue but since it also implements the common channelstorage API,
it needed its "get" implementations updated to take the lock parameter. They
just don't use it.</p>
<p>Resolves: #1578</p>
<h4>res_audiosocket: fix temporarily unavailable</h4>
<p>Author: Roman Pertsev
Date: 2025-10-07</p>
<p>Operations on non-blocking sockets may return a resource temporarily unavailable error (EAGAIN or EWOULDBLOCK). This is not a fatal error but a normal condition indicating that the operation would block.</p>
<p>This patch corrects the handling of this case. Instead of incorrectly treating it as a reason to terminate the connection, the code now waits for data to arrive on the socket.</p>
<h4>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</h4>
<p>Author: Sean Bright
Date: 2025-10-22</p>
<ul>
<li>Using <code>==</code> with the POSIX sh <code>test</code> utility is UB.</li>
<li>Switch back to using globs instead of using <code>$(find … | sort)</code>.</li>
<li>Fix a missing redirect when checking for the OS type.</li>
</ul>
<p>Resolves: #1554</p>
<h4>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</h4>
<p>Author: George Joseph
Date: 2025-10-24</p>
<p>Also...</p>
<ul>
<li>
<p>Refactored the verification datastore process so instead of having
a separate channel datastore for each verification result, there's only
one channel datastore with a vector of results.</p>
</li>
<li>
<p>Refactored some log messages to include channel name and removed
some that would be redundant if a memory allocation failed.</p>
</li>
</ul>
<p>Resolves: #781</p>
<p>UserNote: The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.</p>
<h4>iostream.c: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.</h4>
<p>Author: Tinet-mucw
Date: 2025-10-26</p>
<p>The TCP three-way handshake completes, but if the server is under a TLS handshake attack, asterisk will get stuck at SSL_do_handshake().
In this case, a timeout mechanism should be set for the SSL/TLS handshake process to prevent indefinite waiting during the SSL handshake.</p>
<p>Resolves: #1559</p>
<h4>chan_pjsip: Disable SSRC change for WebRTC endpoints.</h4>
<p>Author: George Joseph
Date: 2025-10-21</p>
<p>Commit b333ee3b introduced a fix to chan_pjsip that addressed RTP issues with
blind transfers and some SBCs. Unfortunately, the fix broke some WebRTC
clients that are sensitive to SSRC changes and non-monotonic timestamps so
the fix is now disabled for endpoints with the "bundle" parameter set to true.</p>
<p>Resolves: #1535</p>
<h4>chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END events.</h4>
<p>Author: gauravs456
Date: 2025-10-21</p>
<p>Resolves: #1544</p>
<h4>safe_asterisk: Fix logging and sorting issue.</h4>
<p>Author: George Joseph
Date: 2025-10-17</p>
<p>Re-enabled "TTY=9" which was erroneously disabled as part of a recent
security fix and removed another logging "fix" that was added.</p>
<p>Also added a sort to the "find" that enumerates the scripts to be sourced so
they're sourced in the correct order.</p>
<p>Resolves: #1539</p>
<h4>Fix Endianness detection in utils.h for non-Linux</h4>
<p>Author: Christoph Moench-Tegeder
Date: 2025-10-19</p>
<p>Commit 43bf8a4ded7a65203b766b91eaf8331a600e9d8d introduced endian
dependend byte-swapping code in include/asterisk/utils.h, where the
endianness was detected using the __BYTE_ORDER macro. This macro
lives in endian.h, which on Linux is included implicitely (by the
network-related headers, I think), but on FreeBSD the headers are
laid out differently and we do not get __BYTE_ORDER the implicit way.</p>
<p>Instead, this makes the usage of endian.h explicit by including it
where we need it, and switches the BYTE_ORDER/*ENDIAN macros to the
POSIX-defined ones (see
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/endian.h.html
for standard compliance). Additionally, this adds a compile-time check
for the endianness-logic: compilation will fail if neither big nor
little endian can be detected.</p>
<p>Fixes: #1536</p>
<h4>devicestate: Don't publish redundant device state messages.</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-17</p>
<p>When publishing device state check the local cache for the
existing device state. If the new device state is unchanged
from the prior one, don't bother publishing the update. This
can reduce the work done by consumers of device state, such
as hints and app_queue, by not publishing a message to them.</p>
<p>These messages would most often occur with devices that are
seeing numerous simultaneous channels. The underlying device
state would remain as in use throughout, but an update would
be published as channels are created and hung up.</p>
<h4>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</h4>
<p>Author: George Joseph
Date: 2025-10-14</p>
<p>Although the ISDN/Q.850/Q.931 hangup cause code is already part of the ARI
and AMI hangup and channel destroyed events, it can be helpful to know what
the actual channel technology code was if the call was unsuccessful.
For PJSIP, it's the SIP response code.</p>
<ul>
<li>
<p>A new "tech_hangupcause" field was added to the ast_channel structure along
with ast_channel_tech_hangupcause() and ast_channel_tech_hangupcause_set()
functions. It should only be set for off-nominal terminations.</p>
</li>
<li>
<p>chan_pjsip was modified to set the tech hangup cause in the
chan_pjsip_hangup() and chan_pjsip_session_end() functions. This is a bit
tricky because these two functions aren't always called in the same order.
The channel that hangs up first will get chan_pjsip_session_end() called
first which will trigger the core to call chan_pjsip_hangup() on itself,
then call chan_pjsip_hangup() on the other channel. The other channel's
chan_pjsip_session_end() function will get called last. Unfortunately,
the other channel's HangupRequest events are sent before chan_pjsip has had a
chance to set the tech hangupcause code so the HangupRequest events for that
channel won't have the cause code set. The ChannelDestroyed and Hangup
events however will have the code set for both channels.</p>
</li>
<li>
<p>A new "tech_cause" field was added to the ast_channel_snapshot_hangup
structure. This is a public structure so a bit of refactoring was needed to
preserve ABI compatibility.</p>
</li>
<li>
<p>The ARI ChannelHangupRequest and ChannelDestroyed events were modified to
include the "tech_cause" parameter in the JSON for off-nominal terminations.
The parameter is suppressed for nominal termination.</p>
</li>
<li>
<p>The AMI SoftHangupRequest, HangupRequest and Hangup events were modified to
include the "TechCause" parameter for off-nominal terminations. Like their ARI
counterparts, the parameter is suppressed for nominal termination.</p>
</li>
</ul>
<p>DeveloperNote: A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.</p>
<h4>res_audiosocket: add message types for all slin sample rates</h4>
<p>Author: Sven Kube
Date: 2025-10-10</p>
<p>Extend audiosocket messages with types 0x11 - 0x18 to create asterisk
frames in slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 format, enabling the transmission of audio at a higher sample
rates. For audiosocket messages sent by Asterisk, the message kind is
determined by the format of the originating asterisk frame.</p>
<p>UpgradeNote: New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.</p>
<h4>res_fax.c: lower FAXOPT read warning to debug level</h4>
<p>Author: phoneben
Date: 2025-10-03</p>
<p>Reading ${FAXOPT()} before a fax session is common in dialplans to check fax state.
Currently this logs an error even when no fax datastore exists, creating excessive noise.
Change these messages to ast_debug(3, …) so they appear only with debug enabled.</p>
<p>Resolves: #1509</p>
<h4>endpoints: Remove need for stasis subscription.</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-10</p>
<p>When an endpoint is created in the core of Asterisk a subscription
was previously created alongside it to monitor any channels being
destroyed that were related to it. This was done by receiving all
channel snapshot updates for every channel and only reacting when
it was indicated that the channel was dead.</p>
<p>This change removes this logic and instead provides an API call
for directly removing a channel from an endpoint. This is called
when channels are destroyed. This operation is fast, so blocking
the calling thread for a short period of time doesn't have any
noticeable impact.</p>
<h4>app_queue: Allow stasis message filtering to work.</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-10</p>
<p>The app_queue module subscribes on a per-dialed agent basis to both
the bridge all and channel all topics to keep apprised of things going
on involving them. This subscription has associated state that must
be cleaned up when the subscription ends. This was done by setting
a default router callback that only had logic to handle the case
where the subscription ends. By using the default router callback
all filtering for the subscription was disabled, causing unrelated
messages to get published and handled by it.</p>
<p>This change makes it so that an explicit route is added for the
message type used for the message indicating the subscription has
ended and removes the default router callback. This allows message
filtering to occur on publishing reducing the messages to app_queue
to only those it is interested in.</p>
<h4>taskpool: Fix some references to threadpool that should be taskpool.</h4>
<p>Author: George Joseph
Date: 2025-10-10</p>
<p>Resolves: #1478</p>
<h4>Update contact information for anthm</h4>
<p>Author: Anthony Minessale
Date: 2025-10-10</p>
<h4>chan_websocket.c: Change payload references to command instead.</h4>
<p>Author: George Joseph
Date: 2025-10-08</p>
<p>Some of the tests in process_text_message() were still comparing to the
websocket message payload instead of the "command" string.</p>
<p>Resolves: #1525</p>
<h4>func_callerid: Document limitation of DNID fields.</h4>
<p>Author: Naveen Albert
Date: 2025-10-06</p>
<p>The Dial() application does not propagate DNID fields, which is counter
to the behavior of the other Caller ID fields. This behavior is likely
intentional since the use of Dial theoretically suggests a new dialed
number, but document this caveat to inform users of it.</p>
<p>Resolves: #1519</p>
<h4>func_channel: Allow R/W of ADSI CPE capability setting.</h4>
<p>Author: Naveen Albert
Date: 2025-10-06</p>
<p>Allow retrieving and setting the channel's ADSI capability from the
dialplan.</p>
<p>Resolves: #1514</p>
<p>UserNote: CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.</p>
<h4>core_unreal: Preserve ADSI capability when dialing Local channels.</h4>
<p>Author: Naveen Albert
Date: 2025-10-06</p>
<p>Dial() already preserves the ADSI capability by copying it to the new
channel, but since Local channel pairs consist of two channels, we
also need to copy the capability to the second channel.</p>
<p>Resolves: #1517</p>
<h4>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</h4>
<p>Author: Igor Goncharovsky
Date: 2025-09-04</p>
<p>As soon as SIP call may end with several Reason headers, we
want to make all of them available through the HAGUPCAUSE() function.
This implementation uses the same ao2 hash for cause codes storage
and adds a flag to make difference between last processed sip
message and content of reason headers.</p>
<p>UserNote: Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.</p>
<h4>sig_analog: Allow '#' to end the inter-digit timeout when dialing.</h4>
<p>Author: Naveen Albert
Date: 2025-10-03</p>
<p>It is customary to allow # to terminate digit collection immediately
when there would normally be a timeout. However, currently, users are
forced to wait for the timeout to expire when dialing numbers that
are prefixes of other valid matches, and there is no way to end the
timeout early. Customarily, # terminates the timeout, but at the moment,
this is just rejected unless there happens to be a matching extension
ending in #.</p>
<p>Allow # to terminate the timeout in cases where there is no dialplan
match. This ensures that the dialplan is always respected, but if a
valid extension has been dialed that happens to prefix other valid
matches, # can be used to dial it immediately.</p>
<p>Resolves: #1510</p>
<h4>func_math: Add DIGIT_SUM function.</h4>
<p>Author: Naveen Albert
Date: 2025-10-01</p>
<p>Add a function (DIGIT_SUM) which returns the digit sum of a number.</p>
<p>Resolves: #1499</p>
<p>UserNote: The DIGIT_SUM function can be used to return the digit sum of
a number.</p>
<h4>app_sf: Add post-digit timer option to ReceiveSF.</h4>
<p>Author: Naveen Albert
Date: 2025-10-01</p>
<p>Add a sorely needed option to set a timeout between digits, rather than
for receiving the entire number. This is needed if the number of digits
being sent is unknown by the receiver in advance. Previously, we had
to wait for the entire timer to expire.</p>
<p>Resolves: #1493</p>
<p>UserNote: The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.</p>
<h4>res_tonedetect: Fix formatting of XML documentation.</h4>
<p>Author: Naveen Albert
Date: 2025-10-02</p>
<p>Fix the indentation in the documentation for the variable list.</p>
<p>Resolves: #1507</p>
<h4>res_fax: Add XML documentation for channel variables.</h4>
<p>Author: Naveen Albert
Date: 2025-10-02</p>
<p>Document the channel variables currently set by SendFAX and ReceiveFAX.</p>
<p>Resolves: #1505</p>
<h4>channelstorage_cpp_map_name_id: Add read locking around retrievals.</h4>
<p>Author: George Joseph
Date: 2025-10-01</p>
<p>When we retrieve a channel from a C++ map, we actually get back a wrapper
object that points to the channel then right after we retrieve it, we bump its
reference count. There's a tiny chance however that between those two
statements a delete and/or unref might happen which would cause the wrapper
object or the channel itself to become invalid resulting in a SEGV. To avoid
this we now perform a read lock on the driver around those statements.</p>
<p>Resolves: #1491</p>
<h4>app_dial: Allow fractional seconds for dial timeouts.</h4>
<p>Author: Naveen Albert
Date: 2025-09-30</p>
<p>Even though Dial() internally uses milliseconds for its dial timeouts,
this capability has been mostly obscured from users as the argument is
only parsed as an integer, thus forcing the use of whole seconds for
timeouts.</p>
<p>Parse it as a decimal instead so that timeouts can now truly have
millisecond precision.</p>
<p>Resolves: #1487</p>
<p>UserNote: The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.</p>
<h4>dsp.c: Make minor fixes to debug log messages.</h4>
<p>Author: Naveen Albert
Date: 2025-10-01</p>
<p>Commit dc8e3eeaaf094a3d16991289934093d5e7127680 improved the debug log
messages in dsp.c. This makes two minor corrections to it:</p>
<ul>
<li>Properly guard an added log statement in a conditional.</li>
<li>Don't add one to the hit count if there was no hit (however, we do
still want to do this for the case where this is one).</li>
</ul>
<p>Resolves: #1496</p>
<h4>config_options.c: Improve misleading warning.</h4>
<p>Author: Naveen Albert
Date: 2025-09-30</p>
<p>When running "config show help <module>", if no XML documentation exists
for the specified module, "Module <module> not found." is returned,
which is misleading if the module is loaded but simply has no XML
documentation for its config. Improve the message to clarify that the
module may simply have no config documentation.</p>
<p>Resolves: #1489</p>
<h4>func_scramble: Add example to XML documentation.</h4>
<p>Author: Naveen Albert
Date: 2025-09-29</p>
<p>The previous lack of an example made it ambiguous if the arguments went
inside the function arguments or were part of the right-hand value.</p>
<p>Resolves: #1485</p>
<h4>sig_analog: Eliminate potential timeout with Last Number Redial.</h4>
<p>Author: Naveen Albert
Date: 2025-09-29</p>
<p>If Last Number Redial is used to redial, ensure that we do not wait
for further digits. This was possible if the number that was last
dialed is a prefix of another possible dialplan match. Since all we
did is copy the number into the extension buffer, if other matches
are now possible, there would thus be a timeout before the call went
through. We now complete redialed calls immediaetly in all cases.</p>
<p>Resolves: #1483</p>
<h4>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</h4>
<p>Author: George Joseph
Date: 2025-09-25</p>
<p>The bridge play and record APIs were forcing the Announcer/Recorder channel
to slin8 which meant that if you played or recorded audio with a sample
rate &gt; 8K, it was downsampled to 8K limiting the bandwidth.</p>
<ul>
<li>
<p>The /bridges/play REST APIs have a new "announcer_format" parameter that
allows the caller to explicitly set the format on the "Announcer" channel
through which the audio is played into the bridge. If not specified, the
default depends on how many channels are currently in the bridge. If
a single channel is in the bridge, then the Announcer channel's format
will be set to the same as that channel's. If multiple channels are in the
bridge, the channels will be scanned to find the one with the highest
sample rate and the Announcer channel's format will be set to the slin
format that has an equal to or greater than sample rate.</p>
</li>
<li>
<p>The /bridges/record REST API has a new "recorder_format" parameter that
allows the caller to explicitly set the format on the "Recorder" channel
from which audio is retrieved to write to the file. If not specified,
the Recorder channel's format will be set to the format that was requested
to save the audio in.</p>
</li>
</ul>
<p>Resolves: #1479</p>
<p>DeveloperNote: The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.</p>
<h4>res_pjsip_geolocation: Add support for Geolocation loc-src parameter</h4>
<p>Author: Max Grobecker
Date: 2025-09-21</p>
<p>This adds support for the Geolocation 'loc-src' parameter to res_pjsip_geolocation.
The already existing config option 'location_source` in res_geolocation is documented to add a 'loc-src' parameter containing a user-defined FQDN to the 'Geolocation:' header,
but that option had no effect as it was not implemented by res_pjsip_geolocation.</p>
<p>If the <code>location_source</code> configuration option is not set or invalid, that parameter will not be added (this is already checked by res_geolocation).</p>
<p>This commits adds already documented functionality.</p>
<h4>sorcery: Move from threadpool to taskpool.</h4>
<p>Author: Joshua C. Colp
Date: 2025-09-23</p>
<p>This change moves observer invocation from the use of
a threadpool to a taskpool. The taskpool options have also
been adjusted to ensure that at least one taskprocessor
remains available at all times.</p>
<h4>stasis_channels.c: Make protocol_id optional to enable blind transfer via ari</h4>
<p>Author: Sven Kube
Date: 2025-09-22</p>
<p>When handling SIP transfers via ARI, there is no protocol_id in case of
a blind transfer.</p>
<p>Resolves: #1467</p>
<h4>Fix some doxygen, typos and whitespace</h4>
<p>Author: Bastian Triller
Date: 2025-09-22</p>
<h4>stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_create</h4>
<p>Author: Sven Kube
Date: 2025-09-18</p>
<p>When handling SIP transfers via ARI, the <code>referred_by</code> field in
<code>transfer_ari_state</code> may be null, since SIP REFER requests are not
required to include a <code>Referred-By</code> header. Without this check, a null
value caused the transfer to fail and triggered a NOTIFY with a 500
Internal Server Error.</p>
<h4>app_queue: Add NULL pointer checks in app_queue</h4>
<p>Author: phoneben
Date: 2025-09-11</p>
<p>Add NULL check for word_list before calling word_in_list()
Add NULL checks for channel snapshots from ast_multi_channel_blob_get_channel()</p>
<p>Resolves: #1425</p>
<h4>app_externalivr: Prevent out-of-bounds read during argument processing.</h4>
<p>Author: Sean Bright
Date: 2025-09-17</p>
<p>Resolves: #1422</p>
<h4>chan_dahdi: Add DAHDI_CHANNEL function.</h4>
<p>Author: Naveen Albert
Date: 2025-09-11</p>
<p>Add a dialplan function that can be used to get/set properties of
DAHDI channels (as opposed to Asterisk channels). This exposes
properties that were not previously available, allowing for certain
operations to now be performed in the dialplan.</p>
<p>Resolves: #1455</p>
<p>UserNote: The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.</p>
<h4>taskpool: Update versions for taskpool stasis options.</h4>
<p>Author: Joshua C. Colp
Date: 2025-09-16</p>
<h4>taskpool: Add taskpool API, switch Stasis to using it.</h4>
<p>Author: Joshua C. Colp
Date: 2025-08-06</p>
<p>This change introduces a new API called taskpool. This is a pool
of taskprocessors. It provides the following functionality:</p>
<ol>
<li>Task pushing to a pool of taskprocessors</li>
<li>Synchronous tasks</li>
<li>Serializers for execution ordering of tasks</li>
<li>Growing/shrinking of number of taskprocessors in pool</li>
</ol>
<p>This functionality already exists through the combination of
threadpool+taskprocessors but through investigating I determined
that this carries substantial overhead for short to medium duration
tasks. The threadpool uses a single queue of work, and for management
of threads it involves additional tasks.</p>
<p>I wrote taskpool to eliminate the extra overhead and management
as much as possible. Instead of a single queue of work each
taskprocessor has its own queue and at push time a selector chooses
the taskprocessor to queue the task to. Each taskprocessor also
has its own thread like normal. This spreads out the tasks immediately
and reduces contention on shared resources.</p>
<p>Using the included efficiency tests the number of tasks that can be
executed per second in a taskpool is 6-12 times more than an equivalent
threadpool+taskprocessor setup.</p>
<p>Stasis has been moved over to using this new API as it is a heavy consumer
of threadpool+taskprocessors and produces a lot of tasks.</p>
<p>UpgradeNote: The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.</p>
<p>DeveloperNote: The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.</p>
<h4>app_adsiprog: Fix possible NULL dereference.</h4>
<p>Author: Naveen Albert
Date: 2025-09-10</p>
<p>get_token can return NULL, but process_token uses this result without
checking for NULL; as elsewhere, check for a NULL result to avoid
possible NULL dereference.</p>
<p>Resolves: #1419</p>
<h4>manager.c: Fix presencestate object leak</h4>
<p>Author: Nathan Monfils
Date: 2025-09-08</p>
<p>ast_presence_state allocates subtype and message. We straightforwardly
need to clean those up.</p>
<h4>audiohook.c: Ensure correct AO2 reference is dereffed.</h4>
<p>Author: Sean Bright
Date: 2025-09-10</p>
<p>Part of #1440.</p>
<h4>res_cliexec: Remove unnecessary casts to char*.</h4>
<p>Author: Naveen Albert
Date: 2025-09-09</p>
<p>Resolves: #1436</p>
<h4>rtp_engine.c: Add exception for comfort noise payload.</h4>
<p>Author: Ben Ford
Date: 2025-09-09</p>
<p>In a previous commit, a change was made to
ast_rtp_codecs_payload_code_tx_sample_rate to check for differing sample
rates. This ended up returning an invalid payload int for comfort noise.
A check has been added that returns early if the payload is in fact
supposed to be comfort noise.</p>
<p>Fixes: #1340</p>
<h4>pbx_variables.c: Create real channel for "dialplan eval function".</h4>
<p>Author: Naveen Albert
Date: 2025-09-09</p>
<p>"dialplan eval function" has been using a dummy channel for function
evaluation, much like many of the unit tests. However, sometimes, this
can cause issues for functions that are not expecting dummy channels.
As an example, ast_channel_tech(chan) is NULL on such channels, and
ast_channel_tech(chan)-&gt;type consequently results in a NULL dereference.
Normally, functions do not worry about this since channels executing
dialplan aren't dummy channels.</p>
<p>While some functions are better about checking for these sorts of edge
cases, use a real channel with a dummy technology to make this CLI
command inherently safe for any dialplan function that could be evaluated
from the CLI.</p>
<p>Resolves: #1434</p>
</body></html>

View File

@@ -1,888 +0,0 @@
## Change Log for Release asterisk-20.17.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.17.0.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.16.0...20.17.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.17.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 50
- Commit Authors: 16
- Issues Resolved: 34
- Security Advisories Resolved: 0
### User Notes:
- #### res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.
- #### func_channel: Allow R/W of ADSI CPE capability setting.
CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.
- #### func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.
- #### func_math: Add DIGIT_SUM function.
The DIGIT_SUM function can be used to return the digit sum of
a number.
- #### app_sf: Add post-digit timer option to ReceiveSF.
The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.
- #### app_dial: Allow fractional seconds for dial timeouts.
The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.
- #### chan_dahdi: Add DAHDI_CHANNEL function.
The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.
### Upgrade Notes:
- #### res_audiosocket: add message types for all slin sample rates
New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.
- #### taskpool: Add taskpool API, switch Stasis to using it.
The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.
### Developer Notes:
- #### chan_pjsip: Add technology-specific off-nominal hangup cause to events.
A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.
- #### ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.
- #### taskpool: Add taskpool API, switch Stasis to using it.
The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.
### Commit Authors:
- Anthony Minessale: (1)
- Bastian Triller: (1)
- Ben Ford: (1)
- Christoph Moench-Tegeder: (1)
- George Joseph: (9)
- Igor Goncharovsky: (1)
- Joshua C. Colp: (6)
- Max Grobecker: (1)
- Nathan Monfils: (1)
- Naveen Albert: (17)
- Roman Pertsev: (1)
- Sean Bright: (3)
- Sven Kube: (3)
- Tinet-mucw: (1)
- gauravs456: (1)
- phoneben: (2)
## Issue and Commit Detail:
### Closed Issues:
- 781: [improvement]: Allow call by call disabling Stir/Shaken header inclusion
- 1340: [bug]: comfort noise packet corrupted
- 1419: [bug]: static code analysis issues in app_adsiprog.c
- 1422: [bug]: static code analysis issues in apps/app_externalivr.c
- 1425: [bug]: static code analysis issues in apps/app_queue.c
- 1434: [improvement]: pbx_variables: Create real channel for dialplan eval CLI command
- 1436: [improvement]: res_cliexec: Avoid unnecessary cast to char*
- 1455: [new-feature]: chan_dahdi: Add DAHDI_CHANNEL function
- 1467: [bug]: Crash in res_pjsip_refer during REFER progress teardown with PJSIP_TRANSFER_HANDLING(ari-only)
- 1478: [improvement]: Stasis threadpool -> taskpool
- 1479: [bug]: The ARI bridge play and record APIs limit audio bandwidth by forcing the slin8 format.
- 1483: [improvement]: sig_analog: Eliminate possible timeout for Last Number Redial
- 1485: [improvement]: func_scramble: Add example to XML documentation.
- 1487: [improvement]: app_dial: Allow partial seconds to be used for dial timeouts
- 1489: [improvement]: config_options.c: Improve misleading error message
- 1491: [bug]: Segfault: `channelstorage_cpp` fast lookup without lock (`get_by_name_exact`/`get_by_uniqueid`) leads to UAF during hangup
- 1493: [new-feature]: app_sf: Add post-digit timer option
- 1496: [improvement]: dsp.c: Minor fixes to debug log messages
- 1499: [new-feature]: func_math: Add function to return the digit sum
- 1505: [improvement]: res_fax: Add XML documentation for channel variables
- 1507: [improvement]: res_tonedetect: Minor formatting issue in documentation
- 1509: [improvement]: res_fax.c — log debug error as debug, not regular log
- 1510: [new-feature]: sig_analog: Allow '#' to end the inter-digit timeout when dialing.
- 1514: [improvement]: func_channel: Allow R/W of ADSI CPE capability setting.
- 1517: [improvement]: core_unreal: Preserve ADSI capability when dialing Local channels
- 1519: [improvement]: app_dial / func_callerid: DNIS information is not propagated by Dial
- 1525: [bug]: chan_websocket: fix use of raw payload variable for string comparison in process_text_message
- 1535: [bug]: chan_pjsip changes SSRC on WebRTC channels, which is unsupported by some browsers
- 1536: [bug]: asterisk -rx connects to console instead of executing a command
- 1539: [bug]: safe_asterisk without TTY doesn't log to file
- 1544: [improvement]: While Receiving the MediaConnect Message Using External Media Over websocket ChannelID is Details are missing
- 1554: [bug]: safe_asterisk recurses into subdirectories of startup.d after f97361
- 1559: [improvement]: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.
- 1578: [bug]: Deadlock with externalMedia custom channel id and cpp map channel backend
### Commits By Author:
- #### Anthony Minessale (1):
- #### Bastian Triller (1):
- #### Ben Ford (1):
- #### Christoph Moench-Tegeder (1):
- #### George Joseph (9):
- #### Igor Goncharovsky (1):
- #### Joshua C. Colp (6):
- #### Max Grobecker (1):
- #### Nathan Monfils (1):
- #### Naveen Albert (17):
- #### Roman Pertsev (1):
- #### Sean Bright (3):
- #### Sven Kube (3):
- #### Tinet-mucw (1):
- #### gauravs456 (1):
- #### phoneben (2):
### Commit List:
- channelstorage: Allow storage driver read locking to be skipped.
- res_audiosocket: fix temporarily unavailable
- safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.
- res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
- iostream.c: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.
- chan_pjsip: Disable SSRC change for WebRTC endpoints.
- chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END events.
- safe_asterisk: Fix logging and sorting issue.
- Fix Endianness detection in utils.h for non-Linux
- devicestate: Don't publish redundant device state messages.
- chan_pjsip: Add technology-specific off-nominal hangup cause to events.
- res_audiosocket: add message types for all slin sample rates
- res_fax.c: lower FAXOPT read warning to debug level
- endpoints: Remove need for stasis subscription.
- app_queue: Allow stasis message filtering to work.
- taskpool: Fix some references to threadpool that should be taskpool.
- Update contact information for anthm
- chan_websocket.c: Change payload references to command instead.
- func_callerid: Document limitation of DNID fields.
- func_channel: Allow R/W of ADSI CPE capability setting.
- core_unreal: Preserve ADSI capability when dialing Local channels.
- func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
- sig_analog: Allow '#' to end the inter-digit timeout when dialing.
- func_math: Add DIGIT_SUM function.
- app_sf: Add post-digit timer option to ReceiveSF.
- res_tonedetect: Fix formatting of XML documentation.
- res_fax: Add XML documentation for channel variables.
- channelstorage_cpp_map_name_id: Add read locking around retrievals.
- app_dial: Allow fractional seconds for dial timeouts.
- dsp.c: Make minor fixes to debug log messages.
- config_options.c: Improve misleading warning.
- func_scramble: Add example to XML documentation.
- sig_analog: Eliminate potential timeout with Last Number Redial.
- ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
- res_pjsip_geolocation: Add support for Geolocation loc-src parameter
- sorcery: Move from threadpool to taskpool.
- stasis_channels.c: Make protocol_id optional to enable blind transfer via ari
- Fix some doxygen, typos and whitespace
- stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_create
- app_queue: Add NULL pointer checks in app_queue
- app_externalivr: Prevent out-of-bounds read during argument processing.
- chan_dahdi: Add DAHDI_CHANNEL function.
- taskpool: Update versions for taskpool stasis options.
- taskpool: Add taskpool API, switch Stasis to using it.
- app_adsiprog: Fix possible NULL dereference.
- manager.c: Fix presencestate object leak
- audiohook.c: Ensure correct AO2 reference is dereffed.
- res_cliexec: Remove unnecessary casts to char*.
- rtp_engine.c: Add exception for comfort noise payload.
- pbx_variables.c: Create real channel for "dialplan eval function".
### Commit Details:
#### channelstorage: Allow storage driver read locking to be skipped.
Author: George Joseph
Date: 2025-11-06
After PR #1498 added read locking to channelstorage_cpp_map_name_id, if ARI
channels/externalMedia was called with a custom channel id AND the
cpp_map_name_id channel storage backend is in use, a deadlock can occur when
hanging up the channel. It's actually triggered in
channel.c:__ast_channel_alloc_ap() when it gets a write lock on the
channelstorage driver then subsequently does a lookup for channel uniqueid
which now does a read lock. This is an invalid operation and causes the lock
state to get "bad". When the channels try to hang up, a write lock is
attempted again which hangs and causes the deadlock.
Now instead of the cpp_map_name_id channelstorage driver "get" APIs
automatically performing a read lock, they take a "lock" parameter which
allows a caller who already has a write lock to indicate that the "get" API
must not attempt its own lock. This prevents the state from getting mesed up.
The ao2_legacy driver uses the ao2 container's recursive mutex so doesn't
have this issue but since it also implements the common channelstorage API,
it needed its "get" implementations updated to take the lock parameter. They
just don't use it.
Resolves: #1578
#### res_audiosocket: fix temporarily unavailable
Author: Roman Pertsev
Date: 2025-10-07
Operations on non-blocking sockets may return a resource temporarily unavailable error (EAGAIN or EWOULDBLOCK). This is not a fatal error but a normal condition indicating that the operation would block.
This patch corrects the handling of this case. Instead of incorrectly treating it as a reason to terminate the connection, the code now waits for data to arrive on the socket.
#### safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.
Author: Sean Bright
Date: 2025-10-22
* Using `==` with the POSIX sh `test` utility is UB.
* Switch back to using globs instead of using `$(find … | sort)`.
* Fix a missing redirect when checking for the OS type.
Resolves: #1554
#### res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
Author: George Joseph
Date: 2025-10-24
Also...
* Refactored the verification datastore process so instead of having
a separate channel datastore for each verification result, there's only
one channel datastore with a vector of results.
* Refactored some log messages to include channel name and removed
some that would be redundant if a memory allocation failed.
Resolves: #781
UserNote: The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.
#### iostream.c: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.
Author: Tinet-mucw
Date: 2025-10-26
The TCP three-way handshake completes, but if the server is under a TLS handshake attack, asterisk will get stuck at SSL_do_handshake().
In this case, a timeout mechanism should be set for the SSL/TLS handshake process to prevent indefinite waiting during the SSL handshake.
Resolves: #1559
#### chan_pjsip: Disable SSRC change for WebRTC endpoints.
Author: George Joseph
Date: 2025-10-21
Commit b333ee3b introduced a fix to chan_pjsip that addressed RTP issues with
blind transfers and some SBCs. Unfortunately, the fix broke some WebRTC
clients that are sensitive to SSRC changes and non-monotonic timestamps so
the fix is now disabled for endpoints with the "bundle" parameter set to true.
Resolves: #1535
#### chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END events.
Author: gauravs456
Date: 2025-10-21
Resolves: #1544
#### safe_asterisk: Fix logging and sorting issue.
Author: George Joseph
Date: 2025-10-17
Re-enabled "TTY=9" which was erroneously disabled as part of a recent
security fix and removed another logging "fix" that was added.
Also added a sort to the "find" that enumerates the scripts to be sourced so
they're sourced in the correct order.
Resolves: #1539
#### Fix Endianness detection in utils.h for non-Linux
Author: Christoph Moench-Tegeder
Date: 2025-10-19
Commit 43bf8a4ded7a65203b766b91eaf8331a600e9d8d introduced endian
dependend byte-swapping code in include/asterisk/utils.h, where the
endianness was detected using the __BYTE_ORDER macro. This macro
lives in endian.h, which on Linux is included implicitely (by the
network-related headers, I think), but on FreeBSD the headers are
laid out differently and we do not get __BYTE_ORDER the implicit way.
Instead, this makes the usage of endian.h explicit by including it
where we need it, and switches the BYTE_ORDER/*ENDIAN macros to the
POSIX-defined ones (see
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/endian.h.html
for standard compliance). Additionally, this adds a compile-time check
for the endianness-logic: compilation will fail if neither big nor
little endian can be detected.
Fixes: #1536
#### devicestate: Don't publish redundant device state messages.
Author: Joshua C. Colp
Date: 2025-10-17
When publishing device state check the local cache for the
existing device state. If the new device state is unchanged
from the prior one, don't bother publishing the update. This
can reduce the work done by consumers of device state, such
as hints and app_queue, by not publishing a message to them.
These messages would most often occur with devices that are
seeing numerous simultaneous channels. The underlying device
state would remain as in use throughout, but an update would
be published as channels are created and hung up.
#### chan_pjsip: Add technology-specific off-nominal hangup cause to events.
Author: George Joseph
Date: 2025-10-14
Although the ISDN/Q.850/Q.931 hangup cause code is already part of the ARI
and AMI hangup and channel destroyed events, it can be helpful to know what
the actual channel technology code was if the call was unsuccessful.
For PJSIP, it's the SIP response code.
* A new "tech_hangupcause" field was added to the ast_channel structure along
with ast_channel_tech_hangupcause() and ast_channel_tech_hangupcause_set()
functions. It should only be set for off-nominal terminations.
* chan_pjsip was modified to set the tech hangup cause in the
chan_pjsip_hangup() and chan_pjsip_session_end() functions. This is a bit
tricky because these two functions aren't always called in the same order.
The channel that hangs up first will get chan_pjsip_session_end() called
first which will trigger the core to call chan_pjsip_hangup() on itself,
then call chan_pjsip_hangup() on the other channel. The other channel's
chan_pjsip_session_end() function will get called last. Unfortunately,
the other channel's HangupRequest events are sent before chan_pjsip has had a
chance to set the tech hangupcause code so the HangupRequest events for that
channel won't have the cause code set. The ChannelDestroyed and Hangup
events however will have the code set for both channels.
* A new "tech_cause" field was added to the ast_channel_snapshot_hangup
structure. This is a public structure so a bit of refactoring was needed to
preserve ABI compatibility.
* The ARI ChannelHangupRequest and ChannelDestroyed events were modified to
include the "tech_cause" parameter in the JSON for off-nominal terminations.
The parameter is suppressed for nominal termination.
* The AMI SoftHangupRequest, HangupRequest and Hangup events were modified to
include the "TechCause" parameter for off-nominal terminations. Like their ARI
counterparts, the parameter is suppressed for nominal termination.
DeveloperNote: A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.
#### res_audiosocket: add message types for all slin sample rates
Author: Sven Kube
Date: 2025-10-10
Extend audiosocket messages with types 0x11 - 0x18 to create asterisk
frames in slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 format, enabling the transmission of audio at a higher sample
rates. For audiosocket messages sent by Asterisk, the message kind is
determined by the format of the originating asterisk frame.
UpgradeNote: New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.
#### res_fax.c: lower FAXOPT read warning to debug level
Author: phoneben
Date: 2025-10-03
Reading ${FAXOPT()} before a fax session is common in dialplans to check fax state.
Currently this logs an error even when no fax datastore exists, creating excessive noise.
Change these messages to ast_debug(3, …) so they appear only with debug enabled.
Resolves: #1509
#### endpoints: Remove need for stasis subscription.
Author: Joshua C. Colp
Date: 2025-10-10
When an endpoint is created in the core of Asterisk a subscription
was previously created alongside it to monitor any channels being
destroyed that were related to it. This was done by receiving all
channel snapshot updates for every channel and only reacting when
it was indicated that the channel was dead.
This change removes this logic and instead provides an API call
for directly removing a channel from an endpoint. This is called
when channels are destroyed. This operation is fast, so blocking
the calling thread for a short period of time doesn't have any
noticeable impact.
#### app_queue: Allow stasis message filtering to work.
Author: Joshua C. Colp
Date: 2025-10-10
The app_queue module subscribes on a per-dialed agent basis to both
the bridge all and channel all topics to keep apprised of things going
on involving them. This subscription has associated state that must
be cleaned up when the subscription ends. This was done by setting
a default router callback that only had logic to handle the case
where the subscription ends. By using the default router callback
all filtering for the subscription was disabled, causing unrelated
messages to get published and handled by it.
This change makes it so that an explicit route is added for the
message type used for the message indicating the subscription has
ended and removes the default router callback. This allows message
filtering to occur on publishing reducing the messages to app_queue
to only those it is interested in.
#### taskpool: Fix some references to threadpool that should be taskpool.
Author: George Joseph
Date: 2025-10-10
Resolves: #1478
#### Update contact information for anthm
Author: Anthony Minessale
Date: 2025-10-10
#### chan_websocket.c: Change payload references to command instead.
Author: George Joseph
Date: 2025-10-08
Some of the tests in process_text_message() were still comparing to the
websocket message payload instead of the "command" string.
Resolves: #1525
#### func_callerid: Document limitation of DNID fields.
Author: Naveen Albert
Date: 2025-10-06
The Dial() application does not propagate DNID fields, which is counter
to the behavior of the other Caller ID fields. This behavior is likely
intentional since the use of Dial theoretically suggests a new dialed
number, but document this caveat to inform users of it.
Resolves: #1519
#### func_channel: Allow R/W of ADSI CPE capability setting.
Author: Naveen Albert
Date: 2025-10-06
Allow retrieving and setting the channel's ADSI capability from the
dialplan.
Resolves: #1514
UserNote: CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.
#### core_unreal: Preserve ADSI capability when dialing Local channels.
Author: Naveen Albert
Date: 2025-10-06
Dial() already preserves the ADSI capability by copying it to the new
channel, but since Local channel pairs consist of two channels, we
also need to copy the capability to the second channel.
Resolves: #1517
#### func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
Author: Igor Goncharovsky
Date: 2025-09-04
As soon as SIP call may end with several Reason headers, we
want to make all of them available through the HAGUPCAUSE() function.
This implementation uses the same ao2 hash for cause codes storage
and adds a flag to make difference between last processed sip
message and content of reason headers.
UserNote: Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.
#### sig_analog: Allow '#' to end the inter-digit timeout when dialing.
Author: Naveen Albert
Date: 2025-10-03
It is customary to allow # to terminate digit collection immediately
when there would normally be a timeout. However, currently, users are
forced to wait for the timeout to expire when dialing numbers that
are prefixes of other valid matches, and there is no way to end the
timeout early. Customarily, # terminates the timeout, but at the moment,
this is just rejected unless there happens to be a matching extension
ending in #.
Allow # to terminate the timeout in cases where there is no dialplan
match. This ensures that the dialplan is always respected, but if a
valid extension has been dialed that happens to prefix other valid
matches, # can be used to dial it immediately.
Resolves: #1510
#### func_math: Add DIGIT_SUM function.
Author: Naveen Albert
Date: 2025-10-01
Add a function (DIGIT_SUM) which returns the digit sum of a number.
Resolves: #1499
UserNote: The DIGIT_SUM function can be used to return the digit sum of
a number.
#### app_sf: Add post-digit timer option to ReceiveSF.
Author: Naveen Albert
Date: 2025-10-01
Add a sorely needed option to set a timeout between digits, rather than
for receiving the entire number. This is needed if the number of digits
being sent is unknown by the receiver in advance. Previously, we had
to wait for the entire timer to expire.
Resolves: #1493
UserNote: The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.
#### res_tonedetect: Fix formatting of XML documentation.
Author: Naveen Albert
Date: 2025-10-02
Fix the indentation in the documentation for the variable list.
Resolves: #1507
#### res_fax: Add XML documentation for channel variables.
Author: Naveen Albert
Date: 2025-10-02
Document the channel variables currently set by SendFAX and ReceiveFAX.
Resolves: #1505
#### channelstorage_cpp_map_name_id: Add read locking around retrievals.
Author: George Joseph
Date: 2025-10-01
When we retrieve a channel from a C++ map, we actually get back a wrapper
object that points to the channel then right after we retrieve it, we bump its
reference count. There's a tiny chance however that between those two
statements a delete and/or unref might happen which would cause the wrapper
object or the channel itself to become invalid resulting in a SEGV. To avoid
this we now perform a read lock on the driver around those statements.
Resolves: #1491
#### app_dial: Allow fractional seconds for dial timeouts.
Author: Naveen Albert
Date: 2025-09-30
Even though Dial() internally uses milliseconds for its dial timeouts,
this capability has been mostly obscured from users as the argument is
only parsed as an integer, thus forcing the use of whole seconds for
timeouts.
Parse it as a decimal instead so that timeouts can now truly have
millisecond precision.
Resolves: #1487
UserNote: The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.
#### dsp.c: Make minor fixes to debug log messages.
Author: Naveen Albert
Date: 2025-10-01
Commit dc8e3eeaaf094a3d16991289934093d5e7127680 improved the debug log
messages in dsp.c. This makes two minor corrections to it:
* Properly guard an added log statement in a conditional.
* Don't add one to the hit count if there was no hit (however, we do
still want to do this for the case where this is one).
Resolves: #1496
#### config_options.c: Improve misleading warning.
Author: Naveen Albert
Date: 2025-09-30
When running "config show help <module>", if no XML documentation exists
for the specified module, "Module <module> not found." is returned,
which is misleading if the module is loaded but simply has no XML
documentation for its config. Improve the message to clarify that the
module may simply have no config documentation.
Resolves: #1489
#### func_scramble: Add example to XML documentation.
Author: Naveen Albert
Date: 2025-09-29
The previous lack of an example made it ambiguous if the arguments went
inside the function arguments or were part of the right-hand value.
Resolves: #1485
#### sig_analog: Eliminate potential timeout with Last Number Redial.
Author: Naveen Albert
Date: 2025-09-29
If Last Number Redial is used to redial, ensure that we do not wait
for further digits. This was possible if the number that was last
dialed is a prefix of another possible dialplan match. Since all we
did is copy the number into the extension buffer, if other matches
are now possible, there would thus be a timeout before the call went
through. We now complete redialed calls immediaetly in all cases.
Resolves: #1483
#### ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
Author: George Joseph
Date: 2025-09-25
The bridge play and record APIs were forcing the Announcer/Recorder channel
to slin8 which meant that if you played or recorded audio with a sample
rate > 8K, it was downsampled to 8K limiting the bandwidth.
* The /bridges/play REST APIs have a new "announcer_format" parameter that
allows the caller to explicitly set the format on the "Announcer" channel
through which the audio is played into the bridge. If not specified, the
default depends on how many channels are currently in the bridge. If
a single channel is in the bridge, then the Announcer channel's format
will be set to the same as that channel's. If multiple channels are in the
bridge, the channels will be scanned to find the one with the highest
sample rate and the Announcer channel's format will be set to the slin
format that has an equal to or greater than sample rate.
* The /bridges/record REST API has a new "recorder_format" parameter that
allows the caller to explicitly set the format on the "Recorder" channel
from which audio is retrieved to write to the file. If not specified,
the Recorder channel's format will be set to the format that was requested
to save the audio in.
Resolves: #1479
DeveloperNote: The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.
#### res_pjsip_geolocation: Add support for Geolocation loc-src parameter
Author: Max Grobecker
Date: 2025-09-21
This adds support for the Geolocation 'loc-src' parameter to res_pjsip_geolocation.
The already existing config option 'location_source` in res_geolocation is documented to add a 'loc-src' parameter containing a user-defined FQDN to the 'Geolocation:' header,
but that option had no effect as it was not implemented by res_pjsip_geolocation.
If the `location_source` configuration option is not set or invalid, that parameter will not be added (this is already checked by res_geolocation).
This commits adds already documented functionality.
#### sorcery: Move from threadpool to taskpool.
Author: Joshua C. Colp
Date: 2025-09-23
This change moves observer invocation from the use of
a threadpool to a taskpool. The taskpool options have also
been adjusted to ensure that at least one taskprocessor
remains available at all times.
#### stasis_channels.c: Make protocol_id optional to enable blind transfer via ari
Author: Sven Kube
Date: 2025-09-22
When handling SIP transfers via ARI, there is no protocol_id in case of
a blind transfer.
Resolves: #1467
#### Fix some doxygen, typos and whitespace
Author: Bastian Triller
Date: 2025-09-22
#### stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_create
Author: Sven Kube
Date: 2025-09-18
When handling SIP transfers via ARI, the `referred_by` field in
`transfer_ari_state` may be null, since SIP REFER requests are not
required to include a `Referred-By` header. Without this check, a null
value caused the transfer to fail and triggered a NOTIFY with a 500
Internal Server Error.
#### app_queue: Add NULL pointer checks in app_queue
Author: phoneben
Date: 2025-09-11
Add NULL check for word_list before calling word_in_list()
Add NULL checks for channel snapshots from ast_multi_channel_blob_get_channel()
Resolves: #1425
#### app_externalivr: Prevent out-of-bounds read during argument processing.
Author: Sean Bright
Date: 2025-09-17
Resolves: #1422
#### chan_dahdi: Add DAHDI_CHANNEL function.
Author: Naveen Albert
Date: 2025-09-11
Add a dialplan function that can be used to get/set properties of
DAHDI channels (as opposed to Asterisk channels). This exposes
properties that were not previously available, allowing for certain
operations to now be performed in the dialplan.
Resolves: #1455
UserNote: The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.
#### taskpool: Update versions for taskpool stasis options.
Author: Joshua C. Colp
Date: 2025-09-16
#### taskpool: Add taskpool API, switch Stasis to using it.
Author: Joshua C. Colp
Date: 2025-08-06
This change introduces a new API called taskpool. This is a pool
of taskprocessors. It provides the following functionality:
1. Task pushing to a pool of taskprocessors
2. Synchronous tasks
3. Serializers for execution ordering of tasks
4. Growing/shrinking of number of taskprocessors in pool
This functionality already exists through the combination of
threadpool+taskprocessors but through investigating I determined
that this carries substantial overhead for short to medium duration
tasks. The threadpool uses a single queue of work, and for management
of threads it involves additional tasks.
I wrote taskpool to eliminate the extra overhead and management
as much as possible. Instead of a single queue of work each
taskprocessor has its own queue and at push time a selector chooses
the taskprocessor to queue the task to. Each taskprocessor also
has its own thread like normal. This spreads out the tasks immediately
and reduces contention on shared resources.
Using the included efficiency tests the number of tasks that can be
executed per second in a taskpool is 6-12 times more than an equivalent
threadpool+taskprocessor setup.
Stasis has been moved over to using this new API as it is a heavy consumer
of threadpool+taskprocessors and produces a lot of tasks.
UpgradeNote: The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.
DeveloperNote: The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.
#### app_adsiprog: Fix possible NULL dereference.
Author: Naveen Albert
Date: 2025-09-10
get_token can return NULL, but process_token uses this result without
checking for NULL; as elsewhere, check for a NULL result to avoid
possible NULL dereference.
Resolves: #1419
#### manager.c: Fix presencestate object leak
Author: Nathan Monfils
Date: 2025-09-08
ast_presence_state allocates subtype and message. We straightforwardly
need to clean those up.
#### audiohook.c: Ensure correct AO2 reference is dereffed.
Author: Sean Bright
Date: 2025-09-10
Part of #1440.
#### res_cliexec: Remove unnecessary casts to char*.
Author: Naveen Albert
Date: 2025-09-09
Resolves: #1436
#### rtp_engine.c: Add exception for comfort noise payload.
Author: Ben Ford
Date: 2025-09-09
In a previous commit, a change was made to
ast_rtp_codecs_payload_code_tx_sample_rate to check for differing sample
rates. This ended up returning an invalid payload int for comfort noise.
A check has been added that returns early if the payload is in fact
supposed to be comfort noise.
Fixes: #1340
#### pbx_variables.c: Create real channel for "dialplan eval function".
Author: Naveen Albert
Date: 2025-09-09
"dialplan eval function" has been using a dummy channel for function
evaluation, much like many of the unit tests. However, sometimes, this
can cause issues for functions that are not expecting dummy channels.
As an example, ast_channel_tech(chan) is NULL on such channels, and
ast_channel_tech(chan)->type consequently results in a NULL dereference.
Normally, functions do not worry about this since channels executing
dialplan aren't dummy channels.
While some functions are better about checking for these sorts of edge
cases, use a real channel with a dummy technology to make this CLI
command inherently safe for any dialplan function that could be evaluated
from the CLI.
Resolves: #1434

View File

@@ -1,963 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.18.0</title></head><body>
<h2>Change Log for Release asterisk-20.18.0</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.18.0.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.17.0...20.18.0">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.18.0.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 57</li>
<li>Commit Authors: 20</li>
<li>Issues Resolved: 40</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>chan_websocket.conf.sample: Fix category name.</h4>
<p>The category name in the chan_websocket.conf.sample file was
incorrect. It should be "global" instead of "general".</p>
</li>
<li>
<h4>cli.c: Allow 'channel request hangup' to accept patterns.</h4>
<p>The 'channel request hangup' CLI command now accepts
multiple channel names, POSIX Extended Regular Expressions, glob-like
patterns, or a combination of all of them. See the CLI command 'core
show help channel request hangup' for full details.</p>
</li>
<li>
<h4>res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command</h4>
<p>The AMI command sorcery memory cache populate will now
return an error if there is an internal error performing the populate.
The CLI command will display an error in this case as well.</p>
</li>
<li>
<h4>res_geolocation: Fix multiple issues with XML generation.</h4>
<p>Geolocation: Two new optional profile parameters have been added.</p>
</li>
<li><code>pidf_element_id</code> which sets the value of the <code>id</code> attribute on the top-level
PIDF-LO <code>device</code>, <code>person</code> or <code>tuple</code> elements.</li>
<li>
<p><code>device_id</code> which sets the content of the <code>&lt;deviceID&gt;</code> element.
Both parameters can include channel variables.</p>
</li>
<li>
<h4>res_pjsip_messaging: Add support for following 3xx redirects</h4>
<p>A new pjsip endpoint option follow_redirect_methods was added.
This option is a comma-delimited, case-insensitive list of SIP methods
for which SIP 3XX redirect responses are followed. An alembic upgrade
script has been added for adding this new option to the Asterisk
database.</p>
</li>
<li>
<h4>taskprocessors: Improve logging and add new cli options</h4>
<p>New CLI command has been added -
core show taskprocessor name <taskprocessor-name></p>
</li>
<li>
<h4>ccss: Add option to ccss.conf to globally disable it.</h4>
<p>A new "enabled" parameter has been added to ccss.conf. It defaults
to "yes" to preserve backwards compatibility but CCSS is rarely used so
setting "enabled = no" in the "general" section can save some unneeded channel
locking operations and log message spam. Disabling ccss will also prevent
the func_callcompletion and chan_dahdi modules from loading.</p>
</li>
<li>
<h4>Makefile: Add module-list-* targets.</h4>
<p>Try "make module-list-deprecated" to see what modules
are on their way out the door.</p>
</li>
<li>
<h4>app_mixmonitor: Add 's' (skip) option to delay recording.</h4>
<p>This change introduces a new 's(<seconds>)' (skip) option to the MixMonitor
application. Example:
MixMonitor(${UNIQUEID}.wav,s(3))
This skips recording for the first 3 seconds before writing audio to the file.
Existing MixMonitor behavior remains unchanged when the 's' option is not used.</p>
</li>
<li>
<h4>app_queue.c: Only announce to head caller if announce_to_first_user</h4>
<p>When announce_to_first_user is false, no announcements are played to the head caller</p>
</li>
</ul>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>res_geolocation: Fix multiple issues with XML generation.</h4>
Geolocation: In order to correct bugs in both code and
documentation, the following changes to the parameters for GML geolocation
locations are now in effect:</li>
<li>The documented but unimplemented <code>crs</code> (coordinate reference system) element
has been added to the location_info parameter that indicates whether the <code>2d</code>
or <code>3d</code> reference system is to be used. If the crs isn't valid for the shape
specified, an error will be generated. The default depends on the shape
specified.</li>
<li>The Circle, Ellipse and ArcBand shapes MUST use a <code>2d</code> crs. If crs isn't
specified, it will default to <code>2d</code> for these shapes.
The Sphere, Ellipsoid and Prism shapes MUST use a <code>3d</code> crs. If crs isn't
specified, it will default to <code>3d</code> for these shapes.
The Point and Polygon shapes may use either crs. The default crs is <code>2d</code>
however so if <code>3d</code> positions are used, the crs must be explicitly set to <code>3d</code>.</li>
<li>The <code>geoloc show gml_shape_defs</code> CLI command has been updated to show which
coordinate reference systems are valid for each shape.</li>
<li>The <code>pos3d</code> element has been removed in favor of allowing the <code>pos</code> element
to include altitude if the crs is <code>3d</code>. The number of values in the <code>pos</code>
element MUST be 2 if the crs is <code>2d</code> and 3 if the crs is <code>3d</code>. An error
will be generated for any other combination.</li>
<li>
<p>The angle unit-of-measure for shapes that use angles should now be included
in the respective parameter. The default is <code>degrees</code>. There were some
inconsistent references to <code>orientation_uom</code> in some documentation but that
parameter never worked and is now removed. See examples below.
Examples...
<code>location_info = shape="Sphere", pos="39.0 -105.0 1620", radius="20"
location_info = shape="Point", crs="3d", pos="39.0 -105.0 1620"
location_info = shape="Point", pos="39.0 -105.0"
location_info = shape=Ellipsoid, pos="39.0 -105.0 1620", semiMajorAxis="20"
semiMinorAxis="10", verticalAxis="0", orientation="25 degrees"
pidf_element_id = ${CHANNEL(name)}-${EXTEN}
device_id = mac:001122334455
Set(GEOLOC_PROFILE(pidf_element_id)=${CHANNEL(name)}/${EXTEN})</code></p>
</li>
<li>
<h4>pjsip: Move from threadpool to taskpool</h4>
<p>The threadpool_* options in pjsip.conf have now
been deprecated though they continue to be read and used.
They have been replaced with taskpool options that give greater
control over the underlying taskpool used for PJSIP. An alembic
upgrade script has been added to add these options to realtime
as well.</p>
</li>
<li>
<h4>app_directed_pickup.c: Change some log messages from NOTICE to VERBOSE.</h4>
<p>In an effort to reduce log spam, two normal progress
"pickup attempted" log messages from app_directed_pickup have been changed
from NOTICE to VERBOSE(3). This puts them on par with other normal
dialplan progress messages.</p>
</li>
</ul>
<h3>Developer Notes:</h3>
<ul>
<li>
<h4>ccss: Add option to ccss.conf to globally disable it.</h4>
<p>A new API ast_is_cc_enabled() has been added. It should be
used to ensure that CCSS is enabled before making any other ast_cc_* calls.</p>
</li>
<li>
<h4>chan_websocket: Add ability to place a MARK in the media stream.</h4>
<p>Apps can now send a <code>MARK_MEDIA</code> command with an optional
<code>correlation_id</code> parameter to chan_websocket which will be placed in the
media frame queue. When that frame is dequeued after all intervening media
has been played to the core, chan_websocket will send a
<code>MEDIA_MARK_PROCESSED</code> event to the app with the same correlation_id
(if any).</p>
</li>
<li>
<h4>chan_websocket: Add capability for JSON control messages and events.</h4>
<p>The chan_websocket plain-text control and event messages are now
deprecated (but remain the default) in favor of JSON formatted messages.
See https://docs.asterisk.org/Configuration/Channel-Drivers/WebSocket for
more information.
A "transport_data" parameter has been added to the</p>
</li>
</ul>
<h3>Commit Authors:</h3>
<ul>
<li>Alexei Gradinari: (1)</li>
<li>C. Maj: (1)</li>
<li>Daouda Taha: (1)</li>
<li>Etienne Lessard: (1)</li>
<li>George Joseph: (12)</li>
<li>Joe Garlick: (2)</li>
<li>Joshua C. Colp: (1)</li>
<li>Justin T. Gibbs: (1)</li>
<li>Kristian F. Høgh: (1)</li>
<li>Maximilian Fridrich: (2)</li>
<li>Michal Hajek: (1)</li>
<li>Mike Bradeen: (2)</li>
<li>Nathaniel Wesley Filardo: (1)</li>
<li>Naveen Albert: (3)</li>
<li>Peter Krall: (1)</li>
<li>Sean Bright: (17)</li>
<li>Sven Kube: (1)</li>
<li>Tinet-mucw: (2)</li>
<li>phoneben: (5)</li>
<li>sarangr7: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>60: [bug]: Can't enter any of UTF-8 character in the CLI prompt</li>
<li>1417: [bug]: static code analysis issues in abstract_jb</li>
<li>1421: [bug]: static code analysis issues in apps/app_dtmfstore.c</li>
<li>1427: [bug]: static code analysis issues in apps/app_stream_echo.c</li>
<li>1430: [bug]: static code analysis issues in res/stasis/app.c</li>
<li>1442: [bug]: static code analysis issues in main/bridge_basic.c</li>
<li>1444: [bug]: static code analysis issues in bridges/bridge_simple.c</li>
<li>1446: [bug]: static code analysis issues in bridges/bridge_softmix.c</li>
<li>1531: [bug]: Memory corruption in manager.c due to double free of criteria variable.</li>
<li>1546: [improvement]: Not able to pass the custom variables over the websockets using external Media with ari client library nodejs</li>
<li>1552: [improvement]: chan_dahdi.conf.sample: Warnings for callgroup/pickupgroup in stock config</li>
<li>1563: [bug]: chan_websocket.c: Wrong variable used in ast_strings_equal() (payload instead of command)</li>
<li>1566: [improvement]: Improve Taskprocessor logging</li>
<li>1568: [improvement]: Queue is playing announcements when announce_to_first_user is false</li>
<li>1572: [improvement]: List modules at various support levels</li>
<li>1574: [improvement]: Add playback progress acknowledgment for WebSocket media (per-chunk or byte-level acknowledgment)</li>
<li>1576: [improvement]: res_pjsip_messaging: Follow 3xx redirect messages if redirect_method=uri_pjsip</li>
<li>1585: [bug]: cli 'stasis show topics' calls a read lock which freezes asterisk till the process is done</li>
<li>1587: [bug]: chan_websocket terminates websocket on CNG/non-audio</li>
<li>1590: [bug]: Fix: Use ast instead of p-&gt;chan to get the DIALSTATUS variable</li>
<li>1597: [bug]: app_reload: Reload() without arguments doesn't work.</li>
<li>1599: [bug]: pbx.c: Running "dialplan reload" shows wrong number of contexts</li>
<li>1604: [bug]: asterisk crashes during dtmf input thru websocket -- fixed</li>
<li>1609: [bug]: Crash: Double free in ast_channel_destructor leading to SIGABRT (Asterisk 20.17.0) with C++ channel storage</li>
<li>1635: [bug]: Regression: Fix endpoint memory leak</li>
<li>1638: [bug]: Channel drivers creating ephemeral channels create per-endpoint topics and cache when they shouldn't</li>
<li>1643: [bug]: chan_websocket crash when channel hung up before read thread is started</li>
<li>1645: [bug]: chan_websocket stuck channels</li>
<li>1647: [bug]: "presencestate change" CLI command doesn't accept NOT_SET</li>
<li>1648: [bug]: ARI announcer channel can cause crash in specific scenario due to unreffing of borrowed format</li>
<li>1660: [bug]: missing hangup cause for ARI ChannelDestroyed when Originated channel times out</li>
<li>1662: [improvement]: Include remote IP address in http.c “Requested URI has no handler” log entries</li>
<li>1667: [bug]: Multiple geolocation issues with rendering XML</li>
<li>1673: [bug]: A crash occurs during the call to mixmonitor_ds_remove_and_free</li>
<li>1675: [bug]: res_pjsip_mwi: off-nominal endpoint ao2 reference leak in mwi_get_notify_data()</li>
<li>1681: [bug]: stasis/control.c: Memory leak of hangup_time in set-timeout</li>
<li>1683: [improvement]: chan_websocket: Use channel FD polling to read data from websocket instead of dedicated thread.</li>
<li>1692: [improvement]: Add comment to asterisk.conf.sample clarifying that template sections are ignored</li>
<li>1700: [improvement]: Improve sorcery cache populate</li>
<li>1711: [bug]: Missing Contact: header in 200 OK</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Alexei Gradinari (1):</h4>
</li>
<li>
<h4>C. Maj (1):</h4>
</li>
<li>
<h4>Daouda Taha (1):</h4>
</li>
<li>
<h4>Etienne Lessard (1):</h4>
</li>
<li>
<h4>George Joseph (12):</h4>
</li>
<li>
<h4>Joe Garlick (2):</h4>
</li>
<li>
<h4>Joshua C. Colp (1):</h4>
</li>
<li>
<h4>Justin T. Gibbs (1):</h4>
</li>
<li>
<h4>Kristian F. Høgh (1):</h4>
</li>
<li>
<h4>Maximilian Fridrich (2):</h4>
</li>
<li>
<h4>Michal Hajek (1):</h4>
</li>
<li>
<h4>Mike Bradeen (2):</h4>
</li>
<li>
<h4>Nathaniel Wesley Filardo (1):</h4>
</li>
<li>
<h4>Naveen Albert (3):</h4>
</li>
<li>
<h4>Peter Krall (1):</h4>
</li>
<li>
<h4>Sean Bright (17):</h4>
</li>
<li>
<h4>Sven Kube (1):</h4>
</li>
<li>
<h4>Tinet-mucw (2):</h4>
</li>
<li>
<h4>phoneben (5):</h4>
</li>
<li>
<h4>sarangr7 (1):</h4>
</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>chan_websocket.conf.sample: Fix category name.</li>
<li>chan_websocket: Fixed Ping/Pong messages hanging up the websocket channel</li>
<li>cli.c: Allow 'channel request hangup' to accept patterns.</li>
<li>chan_sip.c: Ensure Contact header is set on responses to INVITE.</li>
<li>res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command</li>
<li>Add comment to asterisk.conf.sample clarifying that template sections are ignored</li>
<li>chan_websocket: Use the channel's ability to poll fds for the websocket read.</li>
<li>asterisk.c: Allow multi-byte characters on the Asterisk CLI.</li>
<li>func_presencestate.c: Allow <code>NOT_SET</code> to be set from CLI.</li>
<li>res/ari/resource_bridges.c: Normalize channel_format ref handling for bridge media</li>
<li>res_geolocation: Fix multiple issues with XML generation.</li>
<li>stasis/control.c: Add destructor to timeout_datastore.</li>
<li>func_talkdetect.c: Remove reference to non-existent variables.</li>
<li>configure.ac: use AC_PATH_TOOL for nm</li>
<li>res_pjsip_mwi: Fix off-nominal endpoint ao2 ref leak in mwi_get_notify_data</li>
<li>res_pjsip_messaging: Add support for following 3xx redirects</li>
<li>res_pjsip: Introduce redirect module for handling 3xx responses</li>
<li>app_mixmonitor.c: Fix crash in mixmonitor_ds_remove_and_free when datastore is NULL</li>
<li>res_pjsip_refer: don't defer session termination for ari transfer</li>
<li>chan_dahdi.conf.sample: Avoid warnings with default configs.</li>
<li>main/dial.c: Set channel hangup cause on timeout in handle_timeout_trip</li>
<li>cel: Add missing manager documentation.</li>
<li>res_odbc: Use SQL_SUCCEEDED() macro where applicable.</li>
<li>rtp/rtcp: Configure dual-stack behavior via IPV6_V6ONLY</li>
<li>http.c: Include remote address in URI handler message.</li>
<li>pjsip: Move from threadpool to taskpool</li>
<li>Disable device state caching for ephemeral channels</li>
<li>chan_websocket: Add locking in send_event and check for NULL websocket handle.</li>
<li>Fix false null-deref warning in channel_state</li>
<li>endpoint.c: Plug a memory leak in ast_endpoint_shutdown().</li>
<li>Revert "func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()"</li>
<li>cel_manager.c: Correct manager event mask for CEL events.</li>
<li>app_queue.c: Update docs to correct QueueMemberPause event name.</li>
<li>taskprocessors: Improve logging and add new cli options</li>
<li>manager: fix double free of criteria variable when adding filter</li>
<li>app_stream_echo.c: Check that stream is non-NULL before dereferencing.</li>
<li>abstract_jb.c: Remove redundant timer check per static analysis.</li>
<li>channelstorage_cpp: Fix fallback return value in channelstorage callback</li>
<li>ccss: Add option to ccss.conf to globally disable it.</li>
<li>app_directed_pickup.c: Change some log messages from NOTICE to VERBOSE.</li>
<li>chan_websocket: Fix crash on DTMF_END event.</li>
<li>chan_websocket.c: Tolerate other frame types</li>
<li>app_reload: Fix Reload() without arguments.</li>
<li>pbx.c: Print new context count when reloading dialplan.</li>
<li>Makefile: Add module-list-* targets.</li>
<li>core_unreal.c: Use ast instead of p-&gt;chan to get the DIALSTATUS variable</li>
<li>ast_coredumper: Fix multiple issues</li>
<li>app_mixmonitor: Add 's' (skip) option to delay recording.</li>
<li>stasis: switch stasis show topics temporary container from list - RBtree</li>
<li>app_dtmfstore: Avoid a potential buffer overflow.</li>
<li>main: Explicitly mark case statement fallthrough as such.</li>
<li>bridge_softmix: Return early on topology allocation failure.</li>
<li>bridge_simple: Increase code verbosity for clarity.</li>
<li>app_queue.c: Only announce to head caller if announce_to_first_user</li>
<li>chan_websocket: Add ability to place a MARK in the media stream.</li>
<li>chan_websocket: Add capability for JSON control messages and events.</li>
<li>build: Add menuselect options to facilitate code tracing and coverage</li>
</ul>
<h3>Commit Details:</h3>
<h4>chan_websocket.conf.sample: Fix category name.</h4>
<p>Author: George Joseph
Date: 2026-01-21</p>
<p>UserNote: The category name in the chan_websocket.conf.sample file was
incorrect. It should be "global" instead of "general".</p>
<h4>chan_websocket: Fixed Ping/Pong messages hanging up the websocket channel</h4>
<p>Author: Joe Garlick
Date: 2026-01-15</p>
<p>When chan_websocket received a Ping or a Pong opcode it would cause the channel to hangup. This change allows Ping/Pong opcodes and allows them to silently pass</p>
<h4>cli.c: Allow 'channel request hangup' to accept patterns.</h4>
<p>Author: Sean Bright
Date: 2026-01-05</p>
<p>This extends 'channel request hangup' to accept multiple channel
names, a POSIX Extended Regular Expression, a glob-like pattern, or a
combination of all of them.</p>
<p>UserNote: The 'channel request hangup' CLI command now accepts
multiple channel names, POSIX Extended Regular Expressions, glob-like
patterns, or a combination of all of them. See the CLI command 'core
show help channel request hangup' for full details.</p>
<h4>chan_sip.c: Ensure Contact header is set on responses to INVITE.</h4>
<p>Author: Etienne Lessard
Date: 2026-01-09</p>
<p>From the original report* on ASTERISK-24915:</p>
<pre><code>&gt; The problem occurs because the handle_incoming function updates
p-&gt;method to req-&gt;method (p being a struct sip_pvt *) before
checking if the CSeq makes sense, and if the CSeq is unexpected, it
does not reset p-&gt;method to its old value before returning. Then,
when asterisk sends the 200 OK response for the original INVITE,
since p-&gt;method is now equal to SIP_ACK (instead of SIP_INVITE), the
resp_need_contact function (called from respprep) says "its a SIP
ACK, no need to add a Contact header for the response", which is
wrong, since it's not a SIP ACK but a SIP INVITE dialog.
</code></pre>
<p>I have confirmed that the analysis is correct and that the patch fixes
the behavior.</p>
<p>*: https://issues-archive.asterisk.org/ASTERISK-24915</p>
<p>Resolves: #1711</p>
<h4>res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command</h4>
<p>Author: Mike Bradeen
Date: 2026-01-06</p>
<p>Reduce cache lock time for AMI and CLI sorcery memory cache populate
commands by adding a new populate_lock to the sorcery_memory_cache
struct which is locked separately from the existing cache lock so that
the cache lock can be maintained for a reduced time, locking only when
the cache objects are removed and re-populated.</p>
<p>Resolves: #1700</p>
<p>UserNote: The AMI command sorcery memory cache populate will now
return an error if there is an internal error performing the populate.
The CLI command will display an error in this case as well.</p>
<h4>Add comment to asterisk.conf.sample clarifying that template sections are ignored</h4>
<p>Author: phoneben
Date: 2026-01-05</p>
<p>Add comment to asterisk.conf.sample clarifying that template sections are ignored.</p>
<p>Resolves: #1692</p>
<h4>chan_websocket: Use the channel's ability to poll fds for the websocket read.</h4>
<p>Author: George Joseph
Date: 2025-12-30</p>
<p>We now add the websocket's file descriptor to the channel's fd array and let
it poll for data availability instead if having a dedicated thread that
does the polling. This eliminates the thread and allows removal of most
explicit locking since the core channel code will lock the channel to prevent
simultaneous calls to webchan_read, webchan_hangup, etc.</p>
<p>While we were here, the hangup code was refactored to use ast_hangup_with_cause
instead of directly queueing an AST_CONTROL_HANGUP frame. This allows us
to set hangup causes and generate snapshots.</p>
<p>For a bit of extra debugging, a table of websocket close codes was added
to http_websocket.h with an accompanying "to string" function added to
res_http_websocket.c</p>
<p>Resolves: #1683</p>
<h4>asterisk.c: Allow multi-byte characters on the Asterisk CLI.</h4>
<p>Author: Sean Bright
Date: 2025-12-13</p>
<p>Versions of libedit that support Unicode expect that the
EL_GETCFN (the function that does character I/O) will fill in a
<code>wchar_t</code> with a character, which may be multi-byte. The built-in
function that libedit provides, but does not expose with a public API,
does properly handle multi-byte sequences.</p>
<p>Due to the design of Asterisk's console processing loop, Asterisk
provides its own implementation which does not handle multi-byte
characters. Changing Asterisk to use libedit's built-in function would
be ideal, but would also require changing some fundamental things
about console processing which could be fairly disruptive.</p>
<p>Instead, we bring in libedit's <code>read_char</code> implementation and modify
it to suit our specific needs.</p>
<p>Resolves: #60</p>
<h4>func_presencestate.c: Allow <code>NOT_SET</code> to be set from CLI.</h4>
<p>Author: Sean Bright
Date: 2026-01-01</p>
<p>Resolves: #1647</p>
<h4>res/ari/resource_bridges.c: Normalize channel_format ref handling for bridge media</h4>
<p>Author: Peter Krall
Date: 2025-12-17</p>
<p>Always take an explicit reference on the format used for bridge playback
and recording channels, regardless of where it was sourced, and release
it after prepare_bridge_media_channel. This aligns the code paths and
avoids mixing borrowed and owned references while preserving behavior.</p>
<p>Fixes: #1648</p>
<h4>res_geolocation: Fix multiple issues with XML generation.</h4>
<p>Author: George Joseph
Date: 2025-12-17</p>
<ul>
<li>3d positions were being rendered without an enclosing <code>&lt;gml:pos&gt;</code>
element resulting in invalid XML.</li>
<li>There was no way to set the <code>id</code> attribute on the enclosing <code>tuple</code>, <code>device</code>
and <code>person</code> elements.</li>
<li>There was no way to set the value of the <code>deviceID</code> element.</li>
<li>Parsing of degree and radian UOMs was broken resulting in them appearing
outside an XML element.</li>
<li>The UOM schemas for degrees and radians were reversed.</li>
<li>The Ellipsoid shape was missing and the Ellipse shape was defined multiple
times.</li>
<li>The <code>crs</code> location_info parameter, although documented, didn't work.</li>
<li>The <code>pos3d</code> location_info parameter appears in some documentation but
wasn't being parsed correctly.</li>
<li>The retransmission-allowed and retention-expiry sub-elements of usage-rules
were using the <code>gp</code> namespace instead of the <code>gbp</code> namespace.</li>
</ul>
<p>In addition to fixing the above, several other code refactorings were
performed and the unit test enhanced to include a round trip
XML -&gt; eprofile -&gt; XML validation.</p>
<p>Resolves: #1667</p>
<p>UserNote: Geolocation: Two new optional profile parameters have been added.
* <code>pidf_element_id</code> which sets the value of the <code>id</code> attribute on the top-level
PIDF-LO <code>device</code>, <code>person</code> or <code>tuple</code> elements.
* <code>device_id</code> which sets the content of the <code>&lt;deviceID&gt;</code> element.
Both parameters can include channel variables.</p>
<p>UpgradeNote: Geolocation: In order to correct bugs in both code and
documentation, the following changes to the parameters for GML geolocation
locations are now in effect:
* The documented but unimplemented <code>crs</code> (coordinate reference system) element
has been added to the location_info parameter that indicates whether the <code>2d</code>
or <code>3d</code> reference system is to be used. If the crs isn't valid for the shape
specified, an error will be generated. The default depends on the shape
specified.
* The Circle, Ellipse and ArcBand shapes MUST use a <code>2d</code> crs. If crs isn't
specified, it will default to <code>2d</code> for these shapes.
The Sphere, Ellipsoid and Prism shapes MUST use a <code>3d</code> crs. If crs isn't
specified, it will default to <code>3d</code> for these shapes.
The Point and Polygon shapes may use either crs. The default crs is <code>2d</code>
however so if <code>3d</code> positions are used, the crs must be explicitly set to <code>3d</code>.
* The <code>geoloc show gml_shape_defs</code> CLI command has been updated to show which
coordinate reference systems are valid for each shape.
* The <code>pos3d</code> element has been removed in favor of allowing the <code>pos</code> element
to include altitude if the crs is <code>3d</code>. The number of values in the <code>pos</code>
element MUST be 2 if the crs is <code>2d</code> and 3 if the crs is <code>3d</code>. An error
will be generated for any other combination.
* The angle unit-of-measure for shapes that use angles should now be included
in the respective parameter. The default is <code>degrees</code>. There were some
inconsistent references to <code>orientation_uom</code> in some documentation but that
parameter never worked and is now removed. See examples below.
Examples...
<code>location_info = shape="Sphere", pos="39.0 -105.0 1620", radius="20"
location_info = shape="Point", crs="3d", pos="39.0 -105.0 1620"
location_info = shape="Point", pos="39.0 -105.0"
location_info = shape=Ellipsoid, pos="39.0 -105.0 1620", semiMajorAxis="20"
semiMinorAxis="10", verticalAxis="0", orientation="25 degrees"
pidf_element_id = ${CHANNEL(name)}-${EXTEN}
device_id = mac:001122334455
Set(GEOLOC_PROFILE(pidf_element_id)=${CHANNEL(name)}/${EXTEN})</code></p>
<h4>stasis/control.c: Add destructor to timeout_datastore.</h4>
<p>Author: George Joseph
Date: 2025-12-31</p>
<p>The timeout_datastore was missing a destructor resulting in a leak
of 16 bytes for every outgoing ARI call.</p>
<p>Resolves: #1681</p>
<h4>func_talkdetect.c: Remove reference to non-existent variables.</h4>
<p>Author: Sean Bright
Date: 2025-12-30</p>
<h4>configure.ac: use AC_PATH_TOOL for nm</h4>
<p>Author: Nathaniel Wesley Filardo
Date: 2025-11-27</p>
<p><code>nm</code> might, especially in cross-compilation scenarios, be available but prefixed with the target triple. So: use <code>AC_PATH_TOOL</code> rather than <code>AC_PATH_PROG</code> to find it. (See https://www.gnu.org/software/autoconf/manual/autoconf-2.68/html_node/Generic-Programs.html .)</p>
<p>Found and proposed fix tested by cross-compiling Asterisk using Nixpkgs on x86_64 targeting aarch64. :)</p>
<h4>res_pjsip_mwi: Fix off-nominal endpoint ao2 ref leak in mwi_get_notify_data</h4>
<p>Author: Alexei Gradinari
Date: 2025-12-29</p>
<p>Delay acquisition of the ast_sip_endpoint reference in mwi_get_notify_data()
to avoid an ao2 ref leak on early-return error paths.</p>
<p>Move ast_sip_subscription_get_endpoint() to just before first use so all
acquired references are properly cleaned up.</p>
<p>Fixes: #1675</p>
<h4>res_pjsip_messaging: Add support for following 3xx redirects</h4>
<p>Author: Maximilian Fridrich
Date: 2025-11-07</p>
<p>This commit integrates the redirect module into res_pjsip_messaging
to enable following 3xx redirect responses for outgoing SIP MESSAGEs.</p>
<p>When follow_redirect_methods contains 'message' on an endpoint, Asterisk
will now follow 3xx redirect responses for MESSAGEs, similar to how
it behaves for INVITE responses.</p>
<p>Resolves: #1576</p>
<p>UserNote: A new pjsip endpoint option follow_redirect_methods was added.
This option is a comma-delimited, case-insensitive list of SIP methods
for which SIP 3XX redirect responses are followed. An alembic upgrade
script has been added for adding this new option to the Asterisk
database.</p>
<h4>res_pjsip: Introduce redirect module for handling 3xx responses</h4>
<p>Author: Maximilian Fridrich
Date: 2025-11-07</p>
<p>This commit introduces a new redirect handling module that provides
infrastructure for following SIP 3xx redirect responses. The redirect
functionality respects the endpoint's redirect_method setting and only
follows redirects when set to 'uri_pjsip'. This infrastructure can be
used by any PJSIP module that needs to handle 3xx redirect responses.</p>
<h4>app_mixmonitor.c: Fix crash in mixmonitor_ds_remove_and_free when datastore is NULL</h4>
<p>Author: Tinet-mucw
Date: 2025-12-25</p>
<p>The datastore may be NULL, so a null pointer check needs to be added.</p>
<p>Resolves: #1673</p>
<h4>res_pjsip_refer: don't defer session termination for ari transfer</h4>
<p>Author: Sven Kube
Date: 2025-10-23</p>
<p>Allow session termination during an in progress ari handled transfer.</p>
<h4>chan_dahdi.conf.sample: Avoid warnings with default configs.</h4>
<p>Author: Naveen Albert
Date: 2025-10-23</p>
<p>callgroup and pickupgroup may only be specified for FXO-signaled channels;
however, the chan_dahdi sample config had these options uncommented in
the [channels] section, thus applying these settings to all channels,
resulting in warnings. Comment these out so there are no warnings with
an unmodified sample config.</p>
<p>Resolves: #1552</p>
<h4>main/dial.c: Set channel hangup cause on timeout in handle_timeout_trip</h4>
<p>Author: sarangr7
Date: 2025-12-18</p>
<p>When dial attempts timeout in the core dialing API, the channel's hangup
cause was not being set before hanging up. Only the ast_dial_channel
structure's internal cause field was updated, but the actual ast_channel
hangup cause remained unset.</p>
<p>This resulted in incorrect or missing hangup cause information being
reported through CDRs, AMI events, and other mechanisms that read the
channel's hangup cause when dial timeouts occurred via applications
using the dialing API (FollowMe, Page, etc.).</p>
<p>The fix adds proper channel locking and sets AST_CAUSE_NO_ANSWER on
the channel before calling ast_hangup(), ensuring consistent hangup
cause reporting across all interfaces.</p>
<p>Resolves: #1660</p>
<h4>cel: Add missing manager documentation.</h4>
<p>Author: Sean Bright
Date: 2025-12-12</p>
<p>The LOCAL_OPTIMIZE_BEGIN, STREAM_BEGIN, STREAM_END, and DTMF CEL
events were not all documented in the CEL configuration file or the
manager documentation for the CEL event.</p>
<h4>res_odbc: Use SQL_SUCCEEDED() macro where applicable.</h4>
<p>Author: Sean Bright
Date: 2025-12-17</p>
<p>This is just a cleanup of some repetitive code.</p>
<h4>rtp/rtcp: Configure dual-stack behavior via IPV6_V6ONLY</h4>
<p>Author: Justin T. Gibbs
Date: 2025-12-21</p>
<p>Dual-stack behavior (simultaneous listening for IPV4 and IPV6
connections on a single socket) is required by Asterisk's ICE
implementation. On systems with the IPV6_V6ONLY sockopt, set
the option to 0 (dual-stack enabled) when binding to the IPV6
any address. This ensures correct behavior regardless of the
system's default dual-stack configuration.</p>
<h4>http.c: Include remote address in URI handler message.</h4>
<p>Author: Sean Bright
Date: 2025-12-22</p>
<p>Resolves: #1662</p>
<h4>pjsip: Move from threadpool to taskpool</h4>
<p>Author: Joshua C. Colp
Date: 2025-12-04</p>
<p>This change moves the PJSIP module from the threadpool API
to the taskpool API. PJSIP-specific implementations for
task usage have been removed and replaced with calls to
the optimized taskpool implementations instead. The need
for a pool of serializers has also been removed as
taskpool inherently provides this. The default settings
have also been changed to be more realistic for common
usage.</p>
<p>UpgradeNote: The threadpool_* options in pjsip.conf have now
been deprecated though they continue to be read and used.
They have been replaced with taskpool options that give greater
control over the underlying taskpool used for PJSIP. An alembic
upgrade script has been added to add these options to realtime
as well.</p>
<h4>Disable device state caching for ephemeral channels</h4>
<p>Author: phoneben
Date: 2025-12-09</p>
<p>chan_audiosocket/chan_rtp/res_stasis_snoop: Disable device state caching for ephemeral channels</p>
<p>Resolves: #1638</p>
<h4>chan_websocket: Add locking in send_event and check for NULL websocket handle.</h4>
<p>Author: George Joseph
Date: 2025-12-10</p>
<p>On an outbound websocket connection, when the triggering caller hangs up,
webchan_hangup() closes the outbound websocket session and sets the websocket
session handle to NULL. If the hangup happened in the tiny window between
opening the outbound websocket connection and before read_thread_handler()
was able to send the MEDIA_START message, it could segfault because the
websocket session handle was NULL. If it didn't actually segfault, there was
also the possibility that the websocket instance wouldn't get cleaned up which
could also cause the channel snapshot to not get cleaned up. That could
cause memory leaks and <code>core show channels</code> to list phantom WebSocket
channels.</p>
<p>To prevent the race, the send_event() macro now locks the websocket_pvt
instance and checks the websocket session handle before attempting to send
the MEDIA_START message.</p>
<p>Resolves: #1643
Resolves: #1645</p>
<h4>Fix false null-deref warning in channel_state</h4>
<p>Author: phoneben
Date: 2025-12-08</p>
<p>Resolve analyzer warning in channel_state by checking AST_FLAG_DEAD on snapshot, which is guaranteed non-NULL.</p>
<p>Resolves: #1430</p>
<h4>endpoint.c: Plug a memory leak in ast_endpoint_shutdown().</h4>
<p>Author: George Joseph
Date: 2025-12-08</p>
<p>Commit 26795be introduced a memory leak of ast_endpoint when
ast_endpoint_shutdown() was called. The leak occurs only if a configuration
change removes an endpoint and isn't related to call volume or the length of
time asterisk has been running. An ao2_ref(-1) has been added to
ast_endpoint_shutdown() to plug the leak.</p>
<p>Resolves: #1635</p>
<h4>Revert "func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()"</h4>
<p>Author: Sean Bright
Date: 2025-12-03</p>
<p>This reverts commit 517766299093d7a9798af68b39951ed8b2469836.</p>
<p>For rationale, see #1621 and #1606</p>
<h4>cel_manager.c: Correct manager event mask for CEL events.</h4>
<p>Author: Sean Bright
Date: 2025-12-05</p>
<p>There is no EVENT_FLAG_CEL and these events are raised with as
EVENT_FLAG_CALL.</p>
<h4>app_queue.c: Update docs to correct QueueMemberPause event name.</h4>
<p>Author: Sean Bright
Date: 2025-12-04</p>
<h4>taskprocessors: Improve logging and add new cli options</h4>
<p>Author: Mike Bradeen
Date: 2025-10-28</p>
<p>This change makes some small changes to improve log readability in
addition to the following changes:</p>
<p>Modified 'core show taskprocessors' to now show Low time and High time
for task execution.</p>
<p>New command 'core show taskprocessor name <taskprocessor-name>' to dump
taskprocessor info and current queue.</p>
<p>Addionally, a new test was added to demonstrate the 'show taskprocessor
name' functionality:
test execute category /main/taskprocessor/ name taskprocessor_cli_show</p>
<p>Setting 'core set debug 3 taskprocessor.c' will now log pushed tasks.
(Warning this is will cause extremely high levels of logging at even
low traffic levels.)</p>
<p>Resolves: #1566</p>
<p>UserNote: New CLI command has been added -
core show taskprocessor name <taskprocessor-name></p>
<h4>manager: fix double free of criteria variable when adding filter</h4>
<p>Author: Michal Hajek
Date: 2025-10-13</p>
<p>Signed-off-by: Michal Hajek <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#105;&#99;&#104;&#97;&#108;&#46;&#104;&#97;&#106;&#101;&#107;&#64;&#100;&#97;&#107;&#116;&#101;&#108;&#97;&#46;&#99;&#111;&#109;">&#109;&#105;&#99;&#104;&#97;&#108;&#46;&#104;&#97;&#106;&#101;&#107;&#64;&#100;&#97;&#107;&#116;&#101;&#108;&#97;&#46;&#99;&#111;&#109;</a></p>
<p>Fixes: #1531</p>
<h4>app_stream_echo.c: Check that stream is non-NULL before dereferencing.</h4>
<p>Author: Sean Bright
Date: 2025-12-01</p>
<p>Also re-order and rename the arguments of <code>stream_echo_write_error</code> to
match those of <code>ast_write_stream</code> for consistency.</p>
<p>Resolves: #1427</p>
<h4>abstract_jb.c: Remove redundant timer check per static analysis.</h4>
<p>Author: Sean Bright
Date: 2025-12-01</p>
<p>While this check is technically unnecessary, it also was not harmful.</p>
<p>The 2 other items mentioned in the linked issue are false positives
and require no action.</p>
<p>Resolves: #1417</p>
<h4>channelstorage_cpp: Fix fallback return value in channelstorage callback</h4>
<p>Author: phoneben
Date: 2025-11-26</p>
<p>callback returned the last iterated channel when no match existed, causing invalid channel references and potential double frees. Updated to correctly return NULL when there is no match.</p>
<p>Resolves: #1609</p>
<h4>ccss: Add option to ccss.conf to globally disable it.</h4>
<p>Author: George Joseph
Date: 2025-11-19</p>
<p>The Call Completion Supplementary Service feature is rarely used but many of
it's functions are called by app_dial and channel.c "just in case". These
functions lock and unlock the channel just to see if CCSS is enabled on it,
which it isn't 99.99% of the time.</p>
<p>UserNote: A new "enabled" parameter has been added to ccss.conf. It defaults
to "yes" to preserve backwards compatibility but CCSS is rarely used so
setting "enabled = no" in the "general" section can save some unneeded channel
locking operations and log message spam. Disabling ccss will also prevent
the func_callcompletion and chan_dahdi modules from loading.</p>
<p>DeveloperNote: A new API ast_is_cc_enabled() has been added. It should be
used to ensure that CCSS is enabled before making any other ast_cc_* calls.</p>
<h4>app_directed_pickup.c: Change some log messages from NOTICE to VERBOSE.</h4>
<p>Author: George Joseph
Date: 2025-11-20</p>
<p>UpgradeNote: In an effort to reduce log spam, two normal progress
"pickup attempted" log messages from app_directed_pickup have been changed
from NOTICE to VERBOSE(3). This puts them on par with other normal
dialplan progress messages.</p>
<h4>chan_websocket: Fix crash on DTMF_END event.</h4>
<p>Author: Sean Bright
Date: 2025-11-20</p>
<p>Resolves: #1604</p>
<h4>chan_websocket.c: Tolerate other frame types</h4>
<p>Author: Joe Garlick
Date: 2025-11-12</p>
<p>Currently, if chan_websocket receives an un supported frame like comfort noise it will exit the websocket. The proposed change is to tolerate the other frames by not sending them down the websocket but instead just ignoring them.</p>
<p>Resolves: #1587</p>
<h4>app_reload: Fix Reload() without arguments.</h4>
<p>Author: Naveen Albert
Date: 2025-11-17</p>
<p>Calling Reload() without any arguments is supposed to reload
everything (equivalent to a 'core reload'), but actually does
nothing. This is because it was calling ast_module_reload with
an empty string, and the argument needs to explicitly be NULL.</p>
<p>Resolves: #1597</p>
<h4>pbx.c: Print new context count when reloading dialplan.</h4>
<p>Author: Naveen Albert
Date: 2025-11-17</p>
<p>When running "dialplan reload", the number of contexts reported
is initially wrong, as it is the old context count. Running
"dialplan reload" a second time returns the correct number of
contexts that are loaded. This can confuse users into thinking
that the reload didn't work successfully the first time.</p>
<p>This counter is currently only incremented when iterating the
old contexts prior to the context merge; at the very end, get
the current number of elements in the context hash table and
report that instead. This way, the count is correct immediately
whenever a reload occurs.</p>
<p>Resolves: #1599</p>
<h4>Makefile: Add module-list-* targets.</h4>
<p>Author: C. Maj
Date: 2025-11-17</p>
<p>Convenience wrappers for showing modules at various support levels.</p>
<ul>
<li>module-list-core</li>
<li>module-list-extended</li>
<li>module-list-deprecated</li>
</ul>
<p>Resolves: #1572</p>
<p>UserNote: Try "make module-list-deprecated" to see what modules
are on their way out the door.</p>
<h4>core_unreal.c: Use ast instead of p-&gt;chan to get the DIALSTATUS variable</h4>
<p>Author: Tinet-mucw
Date: 2025-11-13</p>
<p>After p-&gt;chan = NULL, ast still points to the valid channel object,
using ast safely accesses the channel's DIALSTATUS variable before it's fully destroyed</p>
<p>Resolves: #1590</p>
<h4>ast_coredumper: Fix multiple issues</h4>
<p>Author: George Joseph
Date: 2025-11-07</p>
<ul>
<li>
<p>Fixed an issue with tarball-coredumps when asterisk was invoked without an
absolute path.</p>
</li>
<li>
<p>Fixed an issue with gdb itself segfaulting when trying to get symbols from
separate debuginfo files. The command line arguments needed to be altered
such that the gdbinit files is loaded before anything else but the
<code>dump-asterisk</code> command is run after full initialization.</p>
</li>
</ul>
<p>In the embedded gdbinit script:</p>
<ul>
<li>
<p>The extract_string_symbol function needed a <code>char *</code> cast to work properly.</p>
</li>
<li>
<p>The s_strip function needed to be updated to continue to work with the
cpp_map_name_id channel storage backend.</p>
</li>
<li>
<p>A new function was added to dump the channels when cpp_map_name_id was
used.</p>
</li>
<li>
<p>The Channel object was updated to account for the new channel storage
backends</p>
</li>
<li>
<p>The show_locks function was refactored to work correctly.</p>
</li>
</ul>
<h4>app_mixmonitor: Add 's' (skip) option to delay recording.</h4>
<p>Author: Daouda Taha
Date: 2025-10-28</p>
<p>The 's' (skip) option delays MixMonitor recording until the specified number of seconds
(can be fractional) have elapsed since MixMonitor was invoked.</p>
<p>No audio is written to the recording file during this time. If the call ends before this
period, no audio will be saved. This is useful for avoiding early audio such as
announcements, ringback tones, or other non-essential sounds.</p>
<p>UserNote: This change introduces a new 's(<seconds>)' (skip) option to the MixMonitor
application. Example:
MixMonitor(${UNIQUEID}.wav,s(3))</p>
<p>This skips recording for the first 3 seconds before writing audio to the file.
Existing MixMonitor behavior remains unchanged when the 's' option is not used.</p>
<h4>stasis: switch stasis show topics temporary container from list - RBtree</h4>
<p>Author: phoneben
Date: 2025-11-11</p>
<p>switch stasis show topics temporary container from list to RB-tree
minimizing lock time</p>
<p>Resolves: #1585</p>
<h4>app_dtmfstore: Avoid a potential buffer overflow.</h4>
<p>Author: Sean Bright
Date: 2025-11-07</p>
<p>Prefer snprintf() so we can readily detect if our output was
truncated.</p>
<p>Resolves: #1421</p>
<h4>main: Explicitly mark case statement fallthrough as such.</h4>
<p>Author: Sean Bright
Date: 2025-11-07</p>
<p>Resolves: #1442</p>
<h4>bridge_softmix: Return early on topology allocation failure.</h4>
<p>Author: Sean Bright
Date: 2025-11-07</p>
<p>Resolves: #1446</p>
<h4>bridge_simple: Increase code verbosity for clarity.</h4>
<p>Author: Sean Bright
Date: 2025-11-07</p>
<p>There's no actual problem here, but I can see how it might by
confusing.</p>
<p>Resolves: #1444</p>
<h4>app_queue.c: Only announce to head caller if announce_to_first_user</h4>
<p>Author: Kristian F. Høgh
Date: 2025-10-30</p>
<p>Only make announcements to head caller if announce_to_first_user is true</p>
<p>Fixes: #1568</p>
<p>UserNote: When announce_to_first_user is false, no announcements are played to the head caller</p>
<h4>chan_websocket: Add ability to place a MARK in the media stream.</h4>
<p>Author: George Joseph
Date: 2025-11-05</p>
<p>Also cleaned up a few unused #if blocks, and started sending a few ERROR
events back to the apps.</p>
<p>Resolves: #1574</p>
<p>DeveloperNote: Apps can now send a <code>MARK_MEDIA</code> command with an optional
<code>correlation_id</code> parameter to chan_websocket which will be placed in the
media frame queue. When that frame is dequeued after all intervening media
has been played to the core, chan_websocket will send a
<code>MEDIA_MARK_PROCESSED</code> event to the app with the same correlation_id
(if any).</p>
<h4>chan_websocket: Add capability for JSON control messages and events.</h4>
<p>Author: George Joseph
Date: 2025-10-22</p>
<p>With recent enhancements to chan_websocket, the original plain-text
implementation of control messages and events is now too limiting. We
probably should have used JSON initially but better late than never. Going
forward, enhancements that require control message or event changes will
only be done to the JSON variants and the plain-text variants are now
deprecated but not yet removed.</p>
<ul>
<li>
<p>Added the chan_websocket.conf config file that allows setting which control
message format to use globally: "json" or "plain-text". "plain-text" is the
default for now to preserve existing behavior.</p>
</li>
<li>
<p>Added a dialstring option <code>f(json|plain-text)</code> to allow the format to be
overridden on a call-by-call basis. Again, 'plain-text' is the default for
now to preserve existing behavior.</p>
</li>
</ul>
<p>The JSON for commands sent by the app to Asterisk must be...
<code>{ "command": "&lt;command&gt;" ... }</code> where <code>&lt;command&gt;</code> is one of <code>ANSWER</code>, <code>HANGUP</code>,
<code>START_MEDIA_BUFFERING</code>, etc. The <code>STOP_MEDIA_BUFFERING</code> command takes an
additional, optional parameter to be returned in the corresponding
<code>MEDIA_BUFFERING_COMPLETED</code> event:
<code>{ "command": "STOP_MEDIA_BUFFERING", "correlation_id": "&lt;correlation id&gt;" }</code>.</p>
<p>The JSON for events sent from Asterisk to the app will be...
<code>{ "event": "&lt;event&gt;", "channel_id": "&lt;channel_id&gt;" ... }</code>.
The <code>MEDIA_START</code> event will now look like...</p>
<p><code>{
"event": "MEDIA_START",
"connection_id": "media_connection1",
"channel": "WebSocket/media_connection1/0x5140001a0040",
"channel_id": "1761245643.1",
"format": "ulaw",
"optimal_frame_size": 160,
"ptime": 20,
"channel_variables": {
"DIALEDPEERNUMBER": "media_connection1/c(ulaw)",
"MEDIA_WEBSOCKET_CONNECTION_ID": "media_connection1",
"MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE": "160"
}
}</code></p>
<p>Note the addition of the channel variables which can't be supported
with the plain-text formatting.</p>
<p>The documentation will be updated with the exact formats for all commands
and events.</p>
<p>Resolves: #1546
Resolves: #1563</p>
<p>DeveloperNote: The chan_websocket plain-text control and event messages are now
deprecated (but remain the default) in favor of JSON formatted messages.
See https://docs.asterisk.org/Configuration/Channel-Drivers/WebSocket for
more information.</p>
<p>DeveloperNote: A "transport_data" parameter has been added to the
channels/externalMedia ARI endpoint which, for websocket, allows the caller
to specify parameters to be added to the dialstring for the channel. For
instance, <code>"transport_data": "f(json)"</code>.</p>
<h4>build: Add menuselect options to facilitate code tracing and coverage</h4>
<p>Author: George Joseph
Date: 2025-10-30</p>
<p>The following options have been added to the menuselect "Compiler Flags"
section...</p>
<p>CODE_COVERAGE: The ability to enable code coverage via the <code>--enable-coverage</code>
configure flag has existed for many years but changing it requires
re-running ./configure which is painfully slow. With this commit, you can
now enable and disable it via menuselect. Setting this option adds the
<code>-ftest-coverage</code> and <code>-fprofile-arcs</code> flags on the gcc and ld command lines.
It also sets DONT_OPTIMIZE. Note: If you use the <code>--enable-coverage</code> configure
flag, you can't turn it off via menuselect so choose one method and stick to
it.</p>
<p>KEEP_FRAME_POINTERS: This option sets <code>-fno-omit-frame-pointers</code> on the gcc
command line which can facilitate debugging with 'gdb' and tracing with 'perf'.
Unlike CODE_COVERAGE, this option doesn't depend on optimization being
disabled. It does however conflict with COMPILE_DOUBLE.</p>
</body></html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,44 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.18.1</title></head><body>
<h2>Change Log for Release asterisk-20.18.1</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.18.1.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.18.0...20.18.1">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.18.1.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 1</li>
<li>Commit Authors: 1</li>
<li>Issues Resolved: 1</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<h3>Upgrade Notes:</h3>
<h3>Developer Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>Sean Bright: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>1739: [bug]: Regression in 23.2.0 with regard to parsing fractional numbers when system locale is non-standard</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Sean Bright (1):</h4>
</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>asterisk.c: Use C.UTF-8 locale instead of relying on user's environment.</li>
</ul>
<h3>Commit Details:</h3>
<h4>asterisk.c: Use C.UTF-8 locale instead of relying on user's environment.</h4>
<p>Author: Sean Bright
Date: 2026-01-23</p>
<p>Resolves: #1739</p>
</body></html>

View File

@@ -1,52 +0,0 @@
## Change Log for Release asterisk-20.18.1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.18.1.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.18.0...20.18.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.18.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 1
- Security Advisories Resolved: 0
### User Notes:
### Upgrade Notes:
### Developer Notes:
### Commit Authors:
- Sean Bright: (1)
## Issue and Commit Detail:
### Closed Issues:
- 1739: [bug]: Regression in 23.2.0 with regard to parsing fractional numbers when system locale is non-standard
### Commits By Author:
- #### Sean Bright (1):
### Commit List:
- asterisk.c: Use C.UTF-8 locale instead of relying on user's environment.
### Commit Details:
#### asterisk.c: Use C.UTF-8 locale instead of relying on user's environment.
Author: Sean Bright
Date: 2026-01-23
Resolves: #1739

View File

@@ -1,103 +0,0 @@
<html><head><title>ChangeLog for asterisk-20.18.2</title></head><body>
<h2>Change Log for Release asterisk-20.18.2</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.18.2.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/20.18.1...20.18.2">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.18.2.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 4</li>
<li>Commit Authors: 2</li>
<li>Issues Resolved: 0</li>
<li>Security Advisories Resolved: 4</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-85x7-54wr-vh42">GHSA-85x7-54wr-vh42</a>: Asterisk xml.c uses unsafe XML_PARSE_NOENT leading to potential XXE Injection</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-rvch-3jmx-3jf3">GHSA-rvch-3jmx-3jf3</a>: ast_coredumper running as root sources ast_debug_tools.conf from /etc/asterisk; potentially leading to privilege escalation</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-v6hp-wh3r-cwxh">GHSA-v6hp-wh3r-cwxh</a>: The Asterisk embedded web server's /httpstatus page echos user supplied values(cookie and query string) without sanitization</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-xpc6-x892-v83c">GHSA-xpc6-x892-v83c</a>: ast_coredumper runs as root, and writes gdb init file to world writeable folder; leading to potential privilege escalation </li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>ast_coredumper: check ast_debug_tools.conf permissions</h4>
ast_debug_tools.conf must be owned by root and not be
writable by other users or groups to be used by ast_coredumper or
by ast_logescalator or ast_loggrabber when run as root.</li>
</ul>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>http.c: Change httpstatus to default disabled and sanitize output.</h4>
To prevent possible security issues, the <code>/httpstatus</code> page
served by the internal web server is now disabled by default. To explicitly
enable it, set <code>enable_status=yes</code> in http.conf.</li>
</ul>
<h3>Developer Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>George Joseph: (2)</li>
<li>Mike Bradeen: (2)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-85x7-54wr-vh42: Asterisk xml.c uses unsafe XML_PARSE_NOENT leading to potential XXE Injection</li>
<li>!GHSA-rvch-3jmx-3jf3: ast_coredumper running as root sources ast_debug_tools.conf from /etc/asterisk; potentially leading to privilege escalation</li>
<li>!GHSA-v6hp-wh3r-cwxh: The Asterisk embedded web server's /httpstatus page echos user supplied values(cookie and query string) without sanitization</li>
<li>!GHSA-xpc6-x892-v83c: ast_coredumper runs as root, and writes gdb init file to world writeable folder; leading to potential privilege escalation </li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>George Joseph (2):</h4>
</li>
<li>
<h4>Mike Bradeen (2):</h4>
</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>xml.c: Replace XML_PARSE_NOENT with XML_PARSE_NONET for xmlReadFile.</li>
<li>ast_coredumper: check ast_debug_tools.conf permissions</li>
<li>http.c: Change httpstatus to default disabled and sanitize output.</li>
<li>ast_coredumper: create gdbinit file with restrictive permissions</li>
</ul>
<h3>Commit Details:</h3>
<h4>xml.c: Replace XML_PARSE_NOENT with XML_PARSE_NONET for xmlReadFile.</h4>
<p>Author: George Joseph
Date: 2026-01-15</p>
<p>The xmlReadFile XML_PARSE_NOENT flag, which allows parsing of external
entities, could allow a potential XXE injection attack. Replacing it with
XML_PARSE_NONET, which prevents network access, is safer.</p>
<p>Resolves: #GHSA-85x7-54wr-vh42</p>
<h4>ast_coredumper: check ast_debug_tools.conf permissions</h4>
<p>Author: Mike Bradeen
Date: 2026-01-15</p>
<p>Prevent ast_coredumper from using ast_debug_tools.conf files that are
not owned by root or are writable by other users or groups.</p>
<p>Prevent ast_logescalator and ast_loggrabber from doing the same if
they are run as root.</p>
<p>Resolves: #GHSA-rvch-3jmx-3jf3</p>
<p>UserNote: ast_debug_tools.conf must be owned by root and not be
writable by other users or groups to be used by ast_coredumper or
by ast_logescalator or ast_loggrabber when run as root.</p>
<h4>http.c: Change httpstatus to default disabled and sanitize output.</h4>
<p>Author: George Joseph
Date: 2026-01-15</p>
<p>To address potential security issues, the httpstatus page is now disabled
by default and the echoed query string and cookie output is html-escaped.</p>
<p>Resolves: #GHSA-v6hp-wh3r-cwxh</p>
<p>UpgradeNote: To prevent possible security issues, the <code>/httpstatus</code> page
served by the internal web server is now disabled by default. To explicitly
enable it, set <code>enable_status=yes</code> in http.conf.</p>
<h4>ast_coredumper: create gdbinit file with restrictive permissions</h4>
<p>Author: Mike Bradeen
Date: 2026-01-15</p>
<p>Modify gdbinit to use the install command with explicit permissions (-m 600)
when creating the .ast_coredumper.gdbinit file. This ensures the file is
created with restricted permissions (readable/writable only by the owner)
to avoid potential privilege escalation.</p>
<p>Resolves: #GHSA-xpc6-x892-v83c</p>
</body></html>

View File

@@ -1,119 +0,0 @@
## Change Log for Release asterisk-20.18.2
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.18.2.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.18.1...20.18.2)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.18.2.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 4
- Commit Authors: 2
- Issues Resolved: 0
- Security Advisories Resolved: 4
- [GHSA-85x7-54wr-vh42](https://github.com/asterisk/asterisk/security/advisories/GHSA-85x7-54wr-vh42): Asterisk xml.c uses unsafe XML_PARSE_NOENT leading to potential XXE Injection
- [GHSA-rvch-3jmx-3jf3](https://github.com/asterisk/asterisk/security/advisories/GHSA-rvch-3jmx-3jf3): ast_coredumper running as root sources ast_debug_tools.conf from /etc/asterisk; potentially leading to privilege escalation
- [GHSA-v6hp-wh3r-cwxh](https://github.com/asterisk/asterisk/security/advisories/GHSA-v6hp-wh3r-cwxh): The Asterisk embedded web server's /httpstatus page echos user supplied values(cookie and query string) without sanitization
- [GHSA-xpc6-x892-v83c](https://github.com/asterisk/asterisk/security/advisories/GHSA-xpc6-x892-v83c): ast_coredumper runs as root, and writes gdb init file to world writeable folder; leading to potential privilege escalation
### User Notes:
- #### ast_coredumper: check ast_debug_tools.conf permissions
ast_debug_tools.conf must be owned by root and not be
writable by other users or groups to be used by ast_coredumper or
by ast_logescalator or ast_loggrabber when run as root.
### Upgrade Notes:
- #### http.c: Change httpstatus to default disabled and sanitize output.
To prevent possible security issues, the `/httpstatus` page
served by the internal web server is now disabled by default. To explicitly
enable it, set `enable_status=yes` in http.conf.
### Developer Notes:
### Commit Authors:
- George Joseph: (2)
- Mike Bradeen: (2)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-85x7-54wr-vh42: Asterisk xml.c uses unsafe XML_PARSE_NOENT leading to potential XXE Injection
- !GHSA-rvch-3jmx-3jf3: ast_coredumper running as root sources ast_debug_tools.conf from /etc/asterisk; potentially leading to privilege escalation
- !GHSA-v6hp-wh3r-cwxh: The Asterisk embedded web server's /httpstatus page echos user supplied values(cookie and query string) without sanitization
- !GHSA-xpc6-x892-v83c: ast_coredumper runs as root, and writes gdb init file to world writeable folder; leading to potential privilege escalation
### Commits By Author:
- #### George Joseph (2):
- #### Mike Bradeen (2):
### Commit List:
- xml.c: Replace XML_PARSE_NOENT with XML_PARSE_NONET for xmlReadFile.
- ast_coredumper: check ast_debug_tools.conf permissions
- http.c: Change httpstatus to default disabled and sanitize output.
- ast_coredumper: create gdbinit file with restrictive permissions
### Commit Details:
#### xml.c: Replace XML_PARSE_NOENT with XML_PARSE_NONET for xmlReadFile.
Author: George Joseph
Date: 2026-01-15
The xmlReadFile XML_PARSE_NOENT flag, which allows parsing of external
entities, could allow a potential XXE injection attack. Replacing it with
XML_PARSE_NONET, which prevents network access, is safer.
Resolves: #GHSA-85x7-54wr-vh42
#### ast_coredumper: check ast_debug_tools.conf permissions
Author: Mike Bradeen
Date: 2026-01-15
Prevent ast_coredumper from using ast_debug_tools.conf files that are
not owned by root or are writable by other users or groups.
Prevent ast_logescalator and ast_loggrabber from doing the same if
they are run as root.
Resolves: #GHSA-rvch-3jmx-3jf3
UserNote: ast_debug_tools.conf must be owned by root and not be
writable by other users or groups to be used by ast_coredumper or
by ast_logescalator or ast_loggrabber when run as root.
#### http.c: Change httpstatus to default disabled and sanitize output.
Author: George Joseph
Date: 2026-01-15
To address potential security issues, the httpstatus page is now disabled
by default and the echoed query string and cookie output is html-escaped.
Resolves: #GHSA-v6hp-wh3r-cwxh
UpgradeNote: To prevent possible security issues, the `/httpstatus` page
served by the internal web server is now disabled by default. To explicitly
enable it, set `enable_status=yes` in http.conf.
#### ast_coredumper: create gdbinit file with restrictive permissions
Author: Mike Bradeen
Date: 2026-01-15
Modify gdbinit to use the install command with explicit permissions (-m 600)
when creating the .ast_coredumper.gdbinit file. This ensures the file is
created with restricted permissions (readable/writable only by the owner)
to avoid potential privilege escalation.
Resolves: #GHSA-xpc6-x892-v83c

View File

@@ -1,741 +0,0 @@
Change Log for Release 20.3.0
========================================
Summary:
----------------------------------------
- Set up new ChangeLogs directory
- .github: Add AsteriskReleaser
- chan_pjsip: also return all codecs on empty re-INVITE for late offers
- cel: add local optimization begin event
- core: Cleanup gerrit and JIRA references. (#57)
- .github: Fix CherryPickTest to only run when it should
- .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
- .github: Remove separate set labels step from new PR
- .github: Refactor CP progress and add new PR test progress
- res_pjsip: mediasec: Add Security-Client headers after 401
- .github: Add cherry-pick test progress labels
- LICENSE: Update link to trademark policy.
- chan_dahdi: Add dialmode option for FXS lines.
- .github: Update issue templates
- .github: Remove unnecessary parameter in CherryPickTest
- Initial GitHub PRs
- Initial GitHub Issue Templates
- pbx_dundi: Fix PJSIP endpoint configuration check.
- Revert "app_queue: periodic announcement configurable start time."
- res_pjsip_stir_shaken: Fix JSON field ordering and disallowed TN characters.
- pbx_dundi: Add PJSIP support.
- install_prereq: Add Linux Mint support.
- chan_pjsip: fix music on hold continues after INVITE with replaces
- voicemail.conf: Fix incorrect comment about #include.
- app_queue: Fix minor xmldoc duplication and vagueness.
- test.c: Fix counting of tests and add 2 new tests
- res_calendar: output busy state as part of show calendar.
- loader.c: Minor module key check simplification.
- ael: Regenerate lexers and parsers.
- bridge_builtin_features: add beep via touch variable
- res_mixmonitor: MixMonitorMute by MixMonitor ID
- format_sln: add .slin as supported file extension
- res_agi: RECORD FILE plays 2 beeps.
- func_json: Fix JSON parsing issues.
- app_senddtmf: Add SendFlash AMI action.
- app_dial: Fix DTMF not relayed to caller on unanswered calls.
- configure: fix detection of re-entrant resolver functions
- cli: increase channel column width
- app_queue: periodic announcement configurable start time.
- make_version: Strip svn stuff and suppress ref HEAD errors
- res_http_media_cache: Introduce options and customize
- main/iostream.c: fix build with libressl
- contrib: rc.archlinux.asterisk uses invalid redirect.
User Notes:
----------------------------------------
- ### cel: add local optimization begin event
The new AST_CEL_LOCAL_OPTIMIZE_BEGIN can be used
by itself or in conert with the existing
AST_CEL_LOCAL_OPTIMIZE to book-end local channel optimizaion.
- ### chan_dahdi: Add dialmode option for FXS lines.
A "dialmode" option has been added which allows
specifying, on a per-channel basis, what methods of
subscriber dialing (pulse and/or tone) are permitted.
Additionally, this can be changed on a channel
at any point during a call using the CHANNEL
function.
- ### pbx_dundi: Add PJSIP support.
DUNDi now supports chan_pjsip. Outgoing calls using
PJSIP require the pjsip_outgoing_endpoint option
to be set in dundi.conf.
- ### cli: increase channel column width
This change increases the display width on 'core show channels'
amd 'core show channels verbose'
For 'core show channels', the Channel name field is increased to
64 characters and the Location name field is increased to 32
characters.
For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.
- ### app_senddtmf: Add SendFlash AMI action.
The SendFlash AMI action now allows sending
a hook flash event on a channel.
- ### res_http_media_cache: Introduce options and customize
The res_http_media_cache module now attempts to load
configuration from the res_http_media_cache.conf file.
The following options were added:
* timeout_secs
* user_agent
* follow_location
* max_redirects
* protocols
* redirect_protocols
* dns_cache_timeout_secs
- ### test.c: Fix counting of tests and add 2 new tests
The "tests" attribute of the "testsuite" element in the
output XML now reflects only the tests actually requested
to be executed instead of all the tests registered.
The "failures" attribute was added to the "testsuite"
element.
Also added two new unit tests that just pass and fail
to be used for testing CI itself.
- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
It is now possible to specify the MixMonitorID when calling
the manager action: MixMonitorMute. This will allow an
individual MixMonitor instance to be muted via ID.
The MixMonitorID can be stored as a channel variable using
the 'i' MixMonitor option and is returned upon creation if
this option is used.
As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor audiohooks on the channel. Previous
behavior would set the flag on the first MixMonitor audiohook
found.
- ### bridge_builtin_features: add beep via touch variable
Add optional touch variable : TOUCH_MIXMONITOR_BEEP(interval)
Setting TOUCH_MIXMONITOR_BEEP/TOUCH_MONITOR_BEEP to a valid
interval in seconds will result in a periodic beep being
played to the monitored channel upon MixMontior/Monitor
feature start.
If an interval less than 5 seconds is specified, the interval
will default to 5 seconds. If the value is set to an invalid
interval, the default of 15 seconds will be used.
- ### format_sln: add .slin as supported file extension
format_sln now recognizes '.slin' as a valid
file extension in addition to the existing
'.sln' and '.raw'.
Upgrade Notes:
----------------------------------------
- ### cel: add local optimization begin event
The existing AST_CEL_LOCAL_OPTIMIZE can continue
to be used as-is and the AST_CEL_LOCAL_OPTIMIZE_BEGIN event
can be ignored if desired.
Closed Issues:
----------------------------------------
- #35: [New Feature]: chan_dahdi: Allow disabling pulse or tone dialing
- #39: [Bug]: Remove .gitreview from repository.
- #43: [Bug]: Link to trademark policy is no longer correct
- #48: [bug]: res_pjsip: Mediasec requires different headers on 401 response
- #52: [improvement]: Add local optimization begin cel event
Commits By Author:
----------------------------------------
- ### Asterisk Development Team (1):
- Update for 20.3.0-rc1
- ### Fabrice Fontaine (2):
- main/iostream.c: fix build with libressl
- configure: fix detection of re-entrant resolver functions
- ### George Joseph (13):
- make_version: Strip svn stuff and suppress ref HEAD errors
- test.c: Fix counting of tests and add 2 new tests
- Initial GitHub Issue Templates
- Initial GitHub PRs
- .github: Remove unnecessary parameter in CherryPickTest
- .github: Update issue templates
- .github: Add cherry-pick test progress labels
- .github: Refactor CP progress and add new PR test progress
- .github: Remove separate set labels step from new PR
- .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
- .github: Fix CherryPickTest to only run when it should
- .github: Add AsteriskReleaser
- Set up new ChangeLogs directory
- ### Henning Westerholt (2):
- chan_pjsip: fix music on hold continues after INVITE with replaces
- chan_pjsip: also return all codecs on empty re-INVITE for late offers
- ### Holger Hans Peter Freyther (1):
- res_http_media_cache: Introduce options and customize
- ### Jaco Kroon (2):
- app_queue: periodic announcement configurable start time.
- res_calendar: output busy state as part of show calendar.
- ### Joshua C. Colp (2):
- pbx_dundi: Fix PJSIP endpoint configuration check.
- LICENSE: Update link to trademark policy.
- ### Joshua Colp (1):
- Revert "app_queue: periodic announcement configurable start time."
- ### Maximilian Fridrich (1):
- res_pjsip: mediasec: Add Security-Client headers after 401
- ### Mike Bradeen (5):
- cli: increase channel column width
- format_sln: add .slin as supported file extension
- res_mixmonitor: MixMonitorMute by MixMonitor ID
- bridge_builtin_features: add beep via touch variable
- cel: add local optimization begin event
- ### Naveen Albert (8):
- app_dial: Fix DTMF not relayed to caller on unanswered calls.
- app_senddtmf: Add SendFlash AMI action.
- func_json: Fix JSON parsing issues.
- app_queue: Fix minor xmldoc duplication and vagueness.
- voicemail.conf: Fix incorrect comment about #include.
- pbx_dundi: Add PJSIP support.
- res_pjsip_stir_shaken: Fix JSON field ordering and disallowed TN characters.
- chan_dahdi: Add dialmode option for FXS lines.
- ### Sean Bright (5):
- contrib: rc.archlinux.asterisk uses invalid redirect.
- res_agi: RECORD FILE plays 2 beeps.
- ael: Regenerate lexers and parsers.
- loader.c: Minor module key check simplification.
- core: Cleanup gerrit and JIRA references. (#57)
- ### The_Blode (1):
- install_prereq: Add Linux Mint support.
Detail:
----------------------------------------
- ### Set up new ChangeLogs directory
Author: George Joseph
Date: 2023-05-09
- ### .github: Add AsteriskReleaser
Author: George Joseph
Date: 2023-05-05
- ### chan_pjsip: also return all codecs on empty re-INVITE for late offers
Author: Henning Westerholt
Date: 2023-05-03
We should also return all codecs on an re-INVITE without SDP for a
call that used late offer (e.g. no SDP in the initial INVITE, SDP
in the ACK). Bugfix for feature introduced in ASTERISK-30193
(https://issues.asterisk.org/jira/browse/ASTERISK-30193)
Migration from previous gerrit change that was not merged.
- ### cel: add local optimization begin event
Author: Mike Bradeen
Date: 2023-05-02
The current AST_CEL_LOCAL_OPTIMIZE event is and has been
triggered on a local optimization end to serve as a flag
indicating the event occurred. This change adds a second
AST_CEL_LOCAL_OPTIMIZE_BEGIN event for further detail.
Resolves: #52
UpgradeNote: The existing AST_CEL_LOCAL_OPTIMIZE can continue
to be used as-is and the AST_CEL_LOCAL_OPTIMIZE_BEGIN event
can be ignored if desired.
UserNote: The new AST_CEL_LOCAL_OPTIMIZE_BEGIN can be used
by itself or in conert with the existing
AST_CEL_LOCAL_OPTIMIZE to book-end local channel optimizaion.
- ### core: Cleanup gerrit and JIRA references. (#57)
Author: Sean Bright
Date: 2023-05-03
* Remove .gitreview and switch to pulling the main asterisk branch
version from configure.ac instead.
* Replace references to JIRA with GitHub.
* Other minor cleanup found along the way.
Resolves: #39
- ### .github: Fix CherryPickTest to only run when it should
Author: George Joseph
Date: 2023-05-03
Fixed CherryPickTest so it triggers only on the
"cherry-pick-test" label instead of all labels.
- ### .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
Author: George Joseph
Date: 2023-05-02
- ### .github: Remove separate set labels step from new PR
Author: George Joseph
Date: 2023-05-02
- ### .github: Refactor CP progress and add new PR test progress
Author: George Joseph
Date: 2023-05-02
- ### res_pjsip: mediasec: Add Security-Client headers after 401
Author: Maximilian Fridrich
Date: 2023-05-02
When using mediasec, requests sent after a 401 must still contain the
Security-Client header according to
draft-dawes-sipcore-mediasec-parameter.
Resolves: #48
- ### .github: Add cherry-pick test progress labels
Author: George Joseph
Date: 2023-05-02
- ### LICENSE: Update link to trademark policy.
Author: Joshua C. Colp
Date: 2023-05-01
Resolves: #43
- ### chan_dahdi: Add dialmode option for FXS lines.
Author: Naveen Albert
Date: 2023-04-28
Currently, both pulse and tone dialing are always enabled
on all FXS lines, with no way of disabling one or the other.
In some circumstances, it is desirable or necessary to
disable one of these, and this behavior can be problematic.
A new "dialmode" option is added which allows setting the
methods to support on a per channel basis for FXS (FXO
signalled lines). The four options are "both", "pulse",
"dtmf"/"tone", and "none".
Additionally, integration with the CHANNEL function is
added so that this setting can be updated for a channel
during a call.
Resolves: #35
ASTERISK-29992
UserNote: A "dialmode" option has been added which allows
specifying, on a per-channel basis, what methods of
subscriber dialing (pulse and/or tone) are permitted.
Additionally, this can be changed on a channel
at any point during a call using the CHANNEL
function.
- ### .github: Update issue templates
Author: George Joseph
Date: 2023-05-01
- ### .github: Remove unnecessary parameter in CherryPickTest
Author: George Joseph
Date: 2023-05-01
- ### Initial GitHub PRs
Author: George Joseph
Date: 2023-04-28
- ### Initial GitHub Issue Templates
Author: George Joseph
Date: 2023-04-28
- ### pbx_dundi: Fix PJSIP endpoint configuration check.
Author: Joshua C. Colp
Date: 2023-04-13
ASTERISK-28233
- ### Revert "app_queue: periodic announcement configurable start time."
Author: Joshua Colp
Date: 2023-04-11
This reverts commit 3fd0b65bae4b1b14434737ffcf0da4aa9ff717f6.
Reason for revert: Causes segmentation fault.
- ### res_pjsip_stir_shaken: Fix JSON field ordering and disallowed TN characters.
Author: Naveen Albert
Date: 2023-02-17
The current STIR/SHAKEN signing process is inconsistent with the
RFCs in a couple ways that can cause interoperability issues.
RFC8225 specifies that the keys must be ordered lexicographically, but
currently the fields are simply ordered according to the order
in which they were added to the JSON object, which is not
compliant with the RFC and can cause issues with some carriers.
To fix this, we now leverage libjansson's ability to dump a JSON
object sorted by key value, yielding the correct field ordering.
Additionally, telephone numbers must have any leading + prefix removed
and must not contain characters outside of 0-9, *, and # in order
to comply with the RFCs. Numbers are now properly formatted as such.
ASTERISK-30407 #close
- ### pbx_dundi: Add PJSIP support.
Author: Naveen Albert
Date: 2022-12-09
Adds PJSIP as a supported technology to DUNDi.
To facilitate this, we now allow an endpoint to be specified
for outgoing PJSIP calls. We also allow users to force a specific
channel technology for outgoing SIP-protocol calls.
ASTERISK-28109 #close
ASTERISK-28233 #close
- ### install_prereq: Add Linux Mint support.
Author: The_Blode
Date: 2023-03-17
ASTERISK-30359 #close
- ### chan_pjsip: fix music on hold continues after INVITE with replaces
Author: Henning Westerholt
Date: 2023-03-21
In a three party scenario with INVITE with replaces, we need to
unhold the call, otherwise one party continues to get music on
hold, and the call is not properly bridged between them.
ASTERISK-30428
- ### voicemail.conf: Fix incorrect comment about #include.
Author: Naveen Albert
Date: 2023-03-28
A comment at the top of voicemail.conf says that #include
cannot be used in voicemail.conf because this breaks
the ability for app_voicemail to auto-update passwords.
This is factually incorrect, since Asterisk has no problem
updating files that are #include'd in the main configuration
file, and this does work in voicemail.conf as well.
ASTERISK-30479 #close
- ### app_queue: Fix minor xmldoc duplication and vagueness.
Author: Naveen Albert
Date: 2023-04-03
The F option in the xmldocs for the Queue application
was erroneously duplicated, causing it to display
twice on the wiki. The two sections are now merged into one.
Additionally, the description for the d option was quite
vague. Some more details are added to provide context
as to what this actually does.
ASTERISK-30486 #close
- ### test.c: Fix counting of tests and add 2 new tests
Author: George Joseph
Date: 2023-03-28
The unit test XML output was counting all registered tests as "run"
even when only a subset were actually requested to be run and
the "failures" attribute was missing.
* The "tests" attribute of the "testsuite" element in the
output XML now reflects only the tests actually requested
to be executed instead of all the tests registered.
* The "failures" attribute was added to the "testsuite"
element.
Also added 2 new unit tests that just pass and fail to be
used for CI testing.
- ### res_calendar: output busy state as part of show calendar.
Author: Jaco Kroon
Date: 2023-03-23
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
- ### loader.c: Minor module key check simplification.
Author: Sean Bright
Date: 2023-03-23
- ### ael: Regenerate lexers and parsers.
Author: Sean Bright
Date: 2023-03-21
Various changes to ensure that the lexers and parsers can be correctly
generated when REBUILD_PARSERS is enabled.
Some notes:
* Because of the version of flex we are using to generate the lexers
(2.5.35) some post-processing in the Makefile is still required.
* The generated lexers do not contain the problematic C99 check that
was being replaced by the call to sed in the respective Makefiles so
it was removed.
* Since these files are generated, they will include trailing
whitespace in some places. This does not need to be corrected.
- ### bridge_builtin_features: add beep via touch variable
Author: Mike Bradeen
Date: 2023-03-01
Add periodic beep option to one-touch recording by setting
the touch variable TOUCH_MONITOR_BEEP or
TOUCH_MIXMONITOR_BEEP to the desired interval in seconds.
If the interval is less than 5 seconds, a minimum of 5
seconds will be imposed. If the interval is set to an
invalid value, it will default to 15 seconds.
A new test event PERIODIC_HOOK_ENABLED was added to the
func_periodic_hook hook_on function to indicate when
a hook is started. This is so we can test that the touch
variable starts the hook as expected.
ASTERISK-30446
- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
Author: Mike Bradeen
Date: 2023-03-13
While it is possible to create multiple mixmonitor instances
on a channel, it was not previously possible to mute individual
instances.
This change includes the ability to specify the MixMonitorID
when calling the manager action: MixMonitorMute. This will
allow an individual MixMonitor instance to be muted via id.
This id can be stored as a channel variable using the 'i'
MixMonitor option.
As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor spy-type audiohooks on the channel.
This is done via the new audiohook function:
ast_audiohook_set_mute_all.
ASTERISK-30464
- ### format_sln: add .slin as supported file extension
Author: Mike Bradeen
Date: 2023-03-14
Adds '.slin' to existing supported file extensions:
.sln and .raw
ASTERISK-30465
- ### res_agi: RECORD FILE plays 2 beeps.
Author: Sean Bright
Date: 2023-03-08
Sending the "RECORD FILE" command without the optional
`offset_samples` argument can result in two beeps playing on the
channel.
This bug has been present since Asterisk 0.3.0 (2003-02-06).
ASTERISK-30457 #close
- ### func_json: Fix JSON parsing issues.
Author: Naveen Albert
Date: 2023-02-26
Fix issue with returning empty instead of dumping
the JSON string when recursing.
Also adds a unit test to capture this fix.
ASTERISK-30441 #close
- ### app_senddtmf: Add SendFlash AMI action.
Author: Naveen Albert
Date: 2023-02-26
Adds an AMI action to send a flash event
on a channel.
ASTERISK-30440 #close
- ### app_dial: Fix DTMF not relayed to caller on unanswered calls.
Author: Naveen Albert
Date: 2023-03-04
DTMF frames are not handled in app_dial when sent towards the
caller. This means that if DTMF is sent to the calling party
and the call has not yet been answered, the DTMF is not audible.
This is now fixed by relaying DTMF frames if only a single
destination is being dialed.
ASTERISK-29516 #close
- ### configure: fix detection of re-entrant resolver functions
Author: Fabrice Fontaine
Date: 2023-03-08
uClibc does not provide res_nsearch:
asterisk-16.0.0/main/dns.c:506: undefined reference to `res_nsearch'
Patch coded by Yann E. MORIN:
http://lists.busybox.net/pipermail/buildroot/2018-October/232630.html
ASTERISK-21795 #close
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Retrieved from:
https: //git.buildroot.net/buildroot/tree/package/asterisk/0005-configure-fix-detection-of-re-entrant-resolver-funct.patch]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
- ### cli: increase channel column width
Author: Mike Bradeen
Date: 2023-03-06
For 'core show channels', the Channel name field is increased
to 64 characters and the Location name field is increased to
32 characters.
For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.
ASTERISK-30455
- ### app_queue: periodic announcement configurable start time.
Author: Jaco Kroon
Date: 2023-02-21
This newly introduced periodic-announce-startdelay makes it possible to
configure the initial start delay of the first periodic announcement
after which periodic-announce-frequency takes over.
ASTERISK-30437 #close
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
- ### make_version: Strip svn stuff and suppress ref HEAD errors
Author: George Joseph
Date: 2023-03-13
* All of the code that used subversion has been removed.
* When Asterisk is checked out from a tag or commit instead
of one of the regular branches, git would emit messages like
"fatal: ref HEAD is not a symbolic ref" which weren't fatal
at all. Those are now suppressed.
- ### res_http_media_cache: Introduce options and customize
Author: Holger Hans Peter Freyther
Date: 2022-10-16
Make the existing CURL parameters configurable and allow
to specify the usable protocols, proxy and DNS timeout.
ASTERISK-30340
- ### main/iostream.c: fix build with libressl
Author: Fabrice Fontaine
Date: 2023-02-25
Fix the following build failure with libressl by using SSL_is_server
which is available since version 2.7.0 and
https://github.com/libressl-portable/openbsd/commit/d7ec516916c5eaac29b02d7a8ac6570f63b458f7:
iostream.c: In function 'ast_iostream_close':
iostream.c:559:41: error: invalid use of incomplete typedef 'SSL' {aka 'struct ssl_st'}
559 | if (!stream->ssl->server) {
| ^~
ASTERISK-30107 #close
Fixes: - http://autobuild.buildroot.org/results/ce4d62d00bb77ba5b303cacf6be7e350581a62f9
- ### contrib: rc.archlinux.asterisk uses invalid redirect.
Author: Sean Bright
Date: 2023-03-02
`rc.archlinux.asterisk`, which explicitly requests bash in its
shebang, uses the following command syntax:
${DAEMON} -rx "core stop now" > /dev/null 2&>1
The intent of which is to execute:
${DAEMON} -rx "core stop now"
While sending both stdout and stderr to `/dev/null`. Unfortunately,
because the `&` is in the wrong place, bash is interpreting the `2` as
just an additional argument to the `$DAEMON` command and not as a file
descriptor and proceeds to use the bashism `&>` to send stderr and
stdout to a file named `1`.
So we clean it up and just use bash's shortcut syntax.
Issue raised and a fix suggested (but not used) by peutch on GitHub¹.
ASTERISK-30449 #close
1. https://github.com/asterisk/asterisk/pull/31

View File

@@ -1,146 +0,0 @@
Change Log for Release 20.3.1
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.3.1.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.3.0...20.3.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.3.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- apply_patches: Use globbing instead of file/sort.
- apply_patches: Sort patch list before applying
- pjsip: Upgrade bundled version to pjproject 2.13.1
User Notes:
----------------------------------------
- ### res_http_media_cache: Introduce options and customize
The res_http_media_cache module now attempts to load
configuration from the res_http_media_cache.conf file.
The following options were added:
* timeout_secs
* user_agent
* follow_location
* max_redirects
* protocols
* redirect_protocols
* dns_cache_timeout_secs
- ### format_sln: add .slin as supported file extension
format_sln now recognizes '.slin' as a valid
file extension in addition to the existing
'.sln' and '.raw'.
- ### bridge_builtin_features: add beep via touch variable
Add optional touch variable : TOUCH_MIXMONITOR_BEEP(interval)
Setting TOUCH_MIXMONITOR_BEEP/TOUCH_MONITOR_BEEP to a valid
interval in seconds will result in a periodic beep being
played to the monitored channel upon MixMontior/Monitor
feature start.
If an interval less than 5 seconds is specified, the interval
will default to 5 seconds. If the value is set to an invalid
interval, the default of 15 seconds will be used.
- ### app_senddtmf: Add SendFlash AMI action.
The SendFlash AMI action now allows sending
a hook flash event on a channel.
- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
It is now possible to specify the MixMonitorID when calling
the manager action: MixMonitorMute. This will allow an
individual MixMonitor instance to be muted via ID.
The MixMonitorID can be stored as a channel variable using
the 'i' MixMonitor option and is returned upon creation if
this option is used.
As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor audiohooks on the channel. Previous
behavior would set the flag on the first MixMonitor audiohook
found.
- ### pbx_dundi: Add PJSIP support.
DUNDi now supports chan_pjsip. Outgoing calls using
PJSIP require the pjsip_outgoing_endpoint option
to be set in dundi.conf.
- ### test.c: Fix counting of tests and add 2 new tests
The "tests" attribute of the "testsuite" element in the
output XML now reflects only the tests actually requested
to be executed instead of all the tests registered.
The "failures" attribute was added to the "testsuite"
element.
Also added two new unit tests that just pass and fail
to be used for testing CI itself.
- ### cli: increase channel column width
This change increases the display width on 'core show channels'
amd 'core show channels verbose'
For 'core show channels', the Channel name field is increased to
64 characters and the Location name field is increased to 32
characters.
For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
- #193: [bug]: third-party/apply-patches doesn't sort the patch file list before applying
Commits By Author:
----------------------------------------
- ### George Joseph (1):
- apply_patches: Sort patch list before applying
- ### Sean Bright (1):
- apply_patches: Use globbing instead of file/sort.
- ### Stanislav Abramenkov (1):
- pjsip: Upgrade bundled version to pjproject 2.13.1
Detail:
----------------------------------------
- ### apply_patches: Use globbing instead of file/sort.
Author: Sean Bright
Date: 2023-07-06
This accomplishes the same thing as a `find ... | sort` but with the
added benefit of clarity and avoiding a call to a subshell.
Additionally drop the -s option from call to patch as it is not POSIX.
- ### apply_patches: Sort patch list before applying
Author: George Joseph
Date: 2023-07-06
The apply_patches script wasn't sorting the list of patches in
the "patches" directory before applying them. This left the list
in an indeterminate order. In most cases, the list is actually
sorted but rarely, they can be out of order and cause dependent
patches to fail to apply.
We now sort the list but the "sort" program wasn't in the
configure scripts so we needed to add that and regenerate
the scripts as well.
Resolves: #193
- ### pjsip: Upgrade bundled version to pjproject 2.13.1
Author: Stanislav Abramenkov
Date: 2023-07-05

View File

@@ -1,854 +0,0 @@
Change Log for Release 20.4.0
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.4.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.3.1...20.4.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.4.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- app.h: Move declaration of ast_getdata_result before its first use
- doc: Remove obsolete CHANGES-staging and UPGRADE-staging
- .github: Updates for AsteriskReleaser
- app_voicemail: fix imap compilation errors
- res_musiconhold: avoid moh state access on unlocked chan
- utils: add lock timestamps for DEBUG_THREADS
- .github: Back out triggering PROpenedOrUpdated by label
- .github: Move publish docs to new file CreateDocs.yml
- rest-api: Updates for new documentation site
- .github: Remove result check from PROpenUpdateGateTests
- .github: Fix use of 'contains'
- .github: Add recheck label test to additional jobs
- .github: Fix recheck label typos
- .github: Fix recheck label manipulation
- .github: Allow PR submit checks to be re-run by label
- app_voicemail_imap: Fix message count when IMAP server is unavailable
- res_pjsip_rfc3326: Prefer Q.850 cause code over SIP.
- res_pjsip_session: Added new function calls to avoid ABI issues.
- app_queue: Add force_longest_waiting_caller option.
- pjsip_transport_events.c: Use %zu printf specifier for size_t.
- res_crypto.c: Gracefully handle potential key filename truncation.
- configure: Remove obsolete and deprecated constructs.
- res_fax_spandsp.c: Clean up a spaces/tabs issue
- ast-db-manage: Synchronize revisions between comments and code.
- test_statis_endpoints: Fix channel_messages test again
- res_crypto.c: Avoid using the non-portable ALLPERMS macro.
- tcptls: when disabling a server port, we should set the accept_fd to -1.
- AMI: Add parking position parameter to Park action
- test_stasis_endpoints.c: Make channel_messages more stable
- build: Fix a few gcc 13 issues
- .github: Rework for merge approval
- ast-db-manage: Fix alembic branching error caused by #122.
- app_followme: fix issue with enable_callee_prompt=no (#88)
- sounds: Update download URL to use HTTPS.
- configure: Makefile downloader enable follow redirects.
- res_musiconhold: Add option to loop last file.
- chan_dahdi: Fix Caller ID presentation for FXO ports.
- AMI: Add CoreShowChannelMap action.
- sig_analog: Add fuller Caller ID support.
- res_stasis.c: Add new type 'sdp_label' for bridge creation.
- app_queue: Preserve reason for realtime queues
- .github: Fix issues with cherry-pick-reminder
- indications: logging changes
- .github Ignore error when adding reviewrs to PR
- .github: Update field descriptions for AsteriskReleaser
- callerid: Allow specifying timezone for date/time.
- logrotate: Fix duplicate log entries.
- chan_pjsip: Allow topology/session refreshes in early media state
- chan_dahdi: Fix broken hidecallerid setting.
- .github: Change title of AsteriskReleaser job
- asterisk.c: Fix option warning for remote console.
- .github: Don't add cherry-pick reminder if it's already present
- .github: Fix quoting in PROpenedOrUpdated
- .github: Add cherry-pick reminder to new PRs
- configure: fix test code to match gethostbyname_r prototype.
- res_pjsip_pubsub.c: Use pjsip version for pending NOTIFY check. (#77)
- res_sorcery_memory_cache.c: Fix memory leak
- xml.c: Process XML Inclusions recursively.
- .github: Tweak improvement issue type language.
- .github: Tweak new feature language, and move feature requests elsewhere.
- .github: Fix staleness check to only run on certain labels.
User Notes:
----------------------------------------
- ### AMI: Add parking position parameter to Park action
New ParkingSpace parameter has been added to AMI action Park.
- ### res_musiconhold: Add option to loop last file.
The loop_last option in musiconhold.conf now
allows the last file in the directory to be looped once reached.
- ### AMI: Add CoreShowChannelMap action.
New AMI action CoreShowChannelMap has been added.
- ### sig_analog: Add fuller Caller ID support.
Additional Caller ID properties are now supported on
incoming calls to FXS stations, namely the
redirecting reason and call qualifier.
- ### res_stasis.c: Add new type 'sdp_label' for bridge creation.
When creating a bridge using the ARI the 'type' argument now
accepts a new value 'sdp_label' which will configure the bridge to add
labels for each stream in the SDP with the corresponding channel id.
- ### app_queue: Preserve reason for realtime queues
Make paused reason in realtime queues persist an
Asterisk restart. This was fixed for non-realtime
queues in ASTERISK_25732.
Upgrade Notes:
----------------------------------------
- ### app_queue: Preserve reason for realtime queues
Add a new column to the queue_member table:
reason_paused VARCHAR(80) so the reason can be preserved.
Closed Issues:
----------------------------------------
- #45: [bug]: Non-bundled PJSIP check for evsub pending NOTIFY check is insufficient/ineffective
- #55: [bug]: res_sorcery_memory_cache: Memory leak when calling sorcery_memory_cache_open
- #64: [bug]: app_voicemail_imap wrong behavior when losing IMAP connection
- #65: [bug]: heap overflow by default at startup
- #66: [improvement]: Fix preserve reason of pause when Asterisk is restared for realtime queues
- #73: [new-feature]: pjsip: Allow topology/session refreshes in early media state
- #87: [bug]: app_followme: Setting enable_callee_prompt=no breaks timeout
- #89: [improvement]: indications: logging changes
- #91: [improvement]: Add parameter on ARI bridge create to allow it to send SDP labels
- #94: [new-feature]: sig_analog: Add full Caller ID support for incoming calls
- #96: [bug]: make install-logrotate causes logrotate to fail on service restart
- #98: [new-feature]: callerid: Allow timezone to be specified at runtime
- #100: [bug]: sig_analog: hidecallerid setting is broken
- #102: [bug]: Strange warning - 'T' option is not compatible with remote console mode and has no effect.
- #104: [improvement]: Add AMI action to get a list of connected channels
- #108: [new-feature]: fair handling of calls in multi-queue scenarios
- #110: [improvement]: utils - add lock timing information with DEBUG_THREADS
- #116: [bug]: SIP Reason: "Call completed elsewhere" no longer propagating
- #120: [bug]: chan_dahdi: Fix broken presentation for FXO caller ID
- #122: [new-feature]: res_musiconhold: Add looplast option
- #133: [bug]: unlock channel after moh state access
- #136: [bug]: Makefile downloader does not follow redirects.
- #145: [bug]: ABI issue with pjproject and pjsip_inv_session
- #155: [bug]: GCC 13 is catching a few new trivial issues
- #158: [bug]: test_stasis_endpoints.c: Unit test channel_messages is unstable
- #174: [bug]: app_voicemail imap compile errors
- #200: [bug]: Regression: In app.h an enum is used before its declaration.
Commits By Author:
----------------------------------------
- ### Asterisk Development Team (2):
- Update for 20.4.0-rc1
- Update for 20.4.0-rc2
- ### Ben Ford (2):
- AMI: Add CoreShowChannelMap action.
- res_pjsip_session: Added new function calls to avoid ABI issues.
- ### George Joseph (23):
- .github: Add cherry-pick reminder to new PRs
- .github: Fix quoting in PROpenedOrUpdated
- .github: Don't add cherry-pick reminder if it's already present
- .github: Change title of AsteriskReleaser job
- .github: Update field descriptions for AsteriskReleaser
- .github Ignore error when adding reviewrs to PR
- .github: Fix issues with cherry-pick-reminder
- .github: Rework for merge approval
- build: Fix a few gcc 13 issues
- test_stasis_endpoints.c: Make channel_messages more stable
- test_statis_endpoints: Fix channel_messages test again
- .github: Allow PR submit checks to be re-run by label
- .github: Fix recheck label manipulation
- .github: Fix recheck label typos
- .github: Add recheck label test to additional jobs
- .github: Fix use of 'contains'
- .github: Remove result check from PROpenUpdateGateTests
- rest-api: Updates for new documentation site
- .github: Move publish docs to new file CreateDocs.yml
- .github: Back out triggering PROpenedOrUpdated by label
- .github: Updates for AsteriskReleaser
- doc: Remove obsolete CHANGES-staging and UPGRADE-staging
- app.h: Move declaration of ast_getdata_result before its first use
- ### Gitea (1):
- .github: Tweak new feature language, and move feature requests elsewhere.
- ### Jaco Kroon (2):
- configure: fix test code to match gethostbyname_r prototype.
- tcptls: when disabling a server port, we should set the accept_fd to -1.
- ### Jiajian Zhou (1):
- AMI: Add parking position parameter to Park action
- ### Joe Searle (1):
- res_stasis.c: Add new type 'sdp_label' for bridge creation.
- ### Joshua C. Colp (2):
- .github: Fix staleness check to only run on certain labels.
- .github: Tweak improvement issue type language.
- ### Maximilian Fridrich (1):
- chan_pjsip: Allow topology/session refreshes in early media state
- ### Miguel Angel Nubla (1):
- configure: Makefile downloader enable follow redirects.
- ### Mike Bradeen (4):
- indications: logging changes
- utils: add lock timestamps for DEBUG_THREADS
- res_musiconhold: avoid moh state access on unlocked chan
- app_voicemail: fix imap compilation errors
- ### Nathan Bruning (1):
- app_queue: Add force_longest_waiting_caller option.
- ### Naveen Albert (7):
- asterisk.c: Fix option warning for remote console.
- chan_dahdi: Fix broken hidecallerid setting.
- logrotate: Fix duplicate log entries.
- callerid: Allow specifying timezone for date/time.
- sig_analog: Add fuller Caller ID support.
- chan_dahdi: Fix Caller ID presentation for FXO ports.
- res_musiconhold: Add option to loop last file.
- ### Niklas Larsson (1):
- app_queue: Preserve reason for realtime queues
- ### Olaf Titz (1):
- app_voicemail_imap: Fix message count when IMAP server is unavailable
- ### Sean Bright (10):
- xml.c: Process XML Inclusions recursively.
- res_pjsip_pubsub.c: Use pjsip version for pending NOTIFY check. (#77)
- sounds: Update download URL to use HTTPS.
- ast-db-manage: Fix alembic branching error caused by #122.
- res_crypto.c: Avoid using the non-portable ALLPERMS macro.
- ast-db-manage: Synchronize revisions between comments and code.
- configure: Remove obsolete and deprecated constructs.
- res_crypto.c: Gracefully handle potential key filename truncation.
- pjsip_transport_events.c: Use %zu printf specifier for size_t.
- res_pjsip_rfc3326: Prefer Q.850 cause code over SIP.
- ### alex2grad (1):
- app_followme: fix issue with enable_callee_prompt=no (#88)
- ### zhengsh (1):
- res_sorcery_memory_cache.c: Fix memory leak
- ### zhou_jiajian (1):
- res_fax_spandsp.c: Clean up a spaces/tabs issue
Detail:
----------------------------------------
- ### app.h: Move declaration of ast_getdata_result before its first use
Author: George Joseph
Date: 2023-07-10
The ast_app_getdata() and ast_app_getdata_terminator() declarations
in app.h were changed recently to return enum ast_getdata_result
(which is how they were defined in app.c). The existing
declaration of ast_getdata_result in app.h was about 1000 lines
after those functions however so under certain circumstances,
a "use before declaration" error was thrown by the compiler.
The declaration of the enum was therefore moved to before those
functions.
Resolves: #200
- ### doc: Remove obsolete CHANGES-staging and UPGRADE-staging
Author: George Joseph
Date: 2023-07-10
- ### .github: Updates for AsteriskReleaser
Author: George Joseph
Date: 2023-06-30
- ### app_voicemail: fix imap compilation errors
Author: Mike Bradeen
Date: 2023-06-26
Fixes two compilation errors in app_voicemail_imap, one due to an unsed
variable and one due to a new variable added in the incorrect location
in _163.
Resolves: #174
- ### res_musiconhold: avoid moh state access on unlocked chan
Author: Mike Bradeen
Date: 2023-05-31
Move channel unlock to after moh state access to avoid
potential unlocked access to state.
Resolves: #133
- ### utils: add lock timestamps for DEBUG_THREADS
Author: Mike Bradeen
Date: 2023-05-23
Adds last locked and unlocked timestamps as well as a
counter for the number of times the lock has been
attempted (vs locked/unlocked) to debug output printed
using the DEBUG_THREADS option.
Resolves: #110
- ### .github: Back out triggering PROpenedOrUpdated by label
Author: George Joseph
Date: 2023-06-29
- ### .github: Move publish docs to new file CreateDocs.yml
Author: George Joseph
Date: 2023-06-27
- ### rest-api: Updates for new documentation site
Author: George Joseph
Date: 2023-06-26
The new documentation site uses traditional markdown instead
of the Confluence flavored version. This required changes in
the mustache templates and the python that generates the files.
- ### .github: Remove result check from PROpenUpdateGateTests
Author: George Joseph
Date: 2023-06-27
- ### .github: Fix use of 'contains'
Author: George Joseph
Date: 2023-06-26
- ### .github: Add recheck label test to additional jobs
Author: George Joseph
Date: 2023-06-26
- ### .github: Fix recheck label typos
Author: George Joseph
Date: 2023-06-26
- ### .github: Fix recheck label manipulation
Author: George Joseph
Date: 2023-06-26
- ### .github: Allow PR submit checks to be re-run by label
Author: George Joseph
Date: 2023-06-26
- ### app_voicemail_imap: Fix message count when IMAP server is unavailable
Author: Olaf Titz
Date: 2023-06-15
Some callers of __messagecount did not correctly handle error return,
instead returning a -1 message count.
This caused a notification with "Messages-Waiting: yes" and
"Voice-Message: -1/0 (0/0)" if the IMAP server was unavailable.
Fixes: #64
- ### res_pjsip_rfc3326: Prefer Q.850 cause code over SIP.
Author: Sean Bright
Date: 2023-06-12
Resolves: #116
- ### res_pjsip_session: Added new function calls to avoid ABI issues.
Author: Ben Ford
Date: 2023-06-05
Added two new functions (ast_sip_session_get_dialog and
ast_sip_session_get_pjsip_inv_state) that retrieve the dialog and the
pjsip_inv_state respectively from the pjsip_inv_session on the
ast_sip_session struct. This is due to pjproject adding a new field to
the pjsip_inv_session struct that caused crashes when trying to access
fields that were no longer where they were expected to be if a module
was compiled against a different version of pjproject.
Resolves: #145
- ### app_queue: Add force_longest_waiting_caller option.
Author: Nathan Bruning
Date: 2023-01-24
This adds an option 'force_longest_waiting_caller' which changes the
global behavior of the queue engine to prevent queue callers from
'jumping ahead' when an agent is in multiple queues.
Resolves: #108
Also closes old asterisk issues:
- ASTERISK-17732
- ASTERISK-17570
- ### pjsip_transport_events.c: Use %zu printf specifier for size_t.
Author: Sean Bright
Date: 2023-06-05
Partially resolves #143.
- ### res_crypto.c: Gracefully handle potential key filename truncation.
Author: Sean Bright
Date: 2023-06-05
Partially resolves #143.
- ### configure: Remove obsolete and deprecated constructs.
Author: Sean Bright
Date: 2023-06-01
These were uncovered when trying to run `bootstrap.sh` with Autoconf
2.71:
* AC_CONFIG_HEADER() is deprecated in favor of AC_CONFIG_HEADERS().
* AC_HEADER_TIME is obsolete.
* $as_echo is deprecated in favor of AS_ECHO() which requires an update
to ax_pthread.m4.
Note that the generated artifacts in this commit are from Autoconf 2.69.
Resolves #139
- ### res_fax_spandsp.c: Clean up a spaces/tabs issue
Author: zhou_jiajian
Date: 2023-05-26
- ### ast-db-manage: Synchronize revisions between comments and code.
Author: Sean Bright
Date: 2023-06-06
In a handful of migrations, the comment header that indicates the
current and previous revisions has drifted from the identifiers
revision and down_revision variables. This updates the comment headers
to match the code.
- ### test_statis_endpoints: Fix channel_messages test again
Author: George Joseph
Date: 2023-06-12
- ### res_crypto.c: Avoid using the non-portable ALLPERMS macro.
Author: Sean Bright
Date: 2023-06-05
ALLPERMS is not POSIX and it's trivial enough to not jump through
autoconf hoops to check for it.
Fixes #149.
- ### tcptls: when disabling a server port, we should set the accept_fd to -1.
Author: Jaco Kroon
Date: 2023-06-02
If we don't set this to -1 if the structure can be potentially re-used
later then it's possible that we'll issue a close() on an unrelated file
descriptor, breaking asterisk in other interesting ways.
I believe this to be an unlikely scenario, but it costs nothing to be
safe.
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
- ### AMI: Add parking position parameter to Park action
Author: Jiajian Zhou
Date: 2023-05-19
Add a parking space extension parameter (ParkingSpace) to the Park action.
Park action will attempt to park the call to that extension.
If the extension is already in use, then execution will continue at the next priority.
UserNote: New ParkingSpace parameter has been added to AMI action Park.
- ### test_stasis_endpoints.c: Make channel_messages more stable
Author: George Joseph
Date: 2023-06-09
The channel_messages test was assuming that stasis would return
messages in a specific order. This is an incorrect assumption as
message ordering was never guaranteed. This was causing the test
to fail occasionally. We now test all the messages for the
required message types instead of testing one by one.
Resolves: #158
- ### build: Fix a few gcc 13 issues
Author: George Joseph
Date: 2023-06-09
* gcc 13 is now catching when a function is declared as returning
an enum but defined as returning an int or vice versa. Fixed
a few in app.h, loader.c, stasis_message.c.
* gcc 13 is also now (incorrectly) complaining of dangling pointers
when assigning a pointer to a local char array to a char *. Had
to change that to an ast_alloca.
Resolves: #155
- ### .github: Rework for merge approval
Author: George Joseph
Date: 2023-06-06
- ### ast-db-manage: Fix alembic branching error caused by #122.
Author: Sean Bright
Date: 2023-06-05
Fixes #147.
- ### app_followme: fix issue with enable_callee_prompt=no (#88)
Author: alex2grad
Date: 2023-06-05
* app_followme: fix issue with enable_callee_prompt=no
If the FollowMe option 'enable_callee_prompt' is set to 'no' then Asterisk
incorrectly sets a winner channel to the channel from which any control frame was read.
This fix sets the winner channel only to the answered channel.
Resolves: #87
ASTERISK-30326
- ### sounds: Update download URL to use HTTPS.
Author: Sean Bright
Date: 2023-06-01
Related to #136
- ### configure: Makefile downloader enable follow redirects.
Author: Miguel Angel Nubla
Date: 2023-06-01
If curl is used for building, any download such as a sounds package
will fail to follow HTTP redirects and will download wrong data.
Resolves: #136
- ### res_musiconhold: Add option to loop last file.
Author: Naveen Albert
Date: 2023-05-25
Adds the loop_last option to res_musiconhold,
which allows the last audio file in the directory
to be looped perpetually once reached, rather than
circling back to the beginning again.
Resolves: #122
ASTERISK-30462
UserNote: The loop_last option in musiconhold.conf now
allows the last file in the directory to be looped once reached.
- ### chan_dahdi: Fix Caller ID presentation for FXO ports.
Author: Naveen Albert
Date: 2023-05-25
Currently, the presentation for incoming channels is
always available, because it is never actually set,
meaning the channel presentation can be nonsensical.
If the presentation from the incoming Caller ID spill
is private or unavailable, we now update the channel
presentation to reflect this.
Resolves: #120
ASTERISK-30333
ASTERISK-21741
- ### AMI: Add CoreShowChannelMap action.
Author: Ben Ford
Date: 2023-05-18
Adds a new AMI action (CoreShowChannelMap) that takes in a channel name
and provides a list of all channels that are connected to that channel,
following local channel connections as well.
Resolves: #104
UserNote: New AMI action CoreShowChannelMap has been added.
- ### sig_analog: Add fuller Caller ID support.
Author: Naveen Albert
Date: 2023-05-18
A previous change, ASTERISK_29991, made it possible
to send additional Caller ID parameters that were
not previously supported.
This change adds support for analog DAHDI channels
to now be able to receive these parameters for
on-hook Caller ID, in order to enhance the usability
of CPE that support these parameters.
Resolves: #94
ASTERISK-30331
UserNote: Additional Caller ID properties are now supported on
incoming calls to FXS stations, namely the
redirecting reason and call qualifier.
- ### res_stasis.c: Add new type 'sdp_label' for bridge creation.
Author: Joe Searle
Date: 2023-05-25
Add new type 'sdp_label' when creating a bridge using the ARI. This will
add labels to the SDP for each stream, the label is set to the
corresponding channel id.
Resolves: #91
UserNote: When creating a bridge using the ARI the 'type' argument now
accepts a new value 'sdp_label' which will configure the bridge to add
labels for each stream in the SDP with the corresponding channel id.
- ### app_queue: Preserve reason for realtime queues
Author: Niklas Larsson
Date: 2023-05-05
When Asterisk is restarted it does not preserve paused reason for
members of realtime queues. This was fixed for non-realtime queues in
ASTERISK_25732
Resolves: #66
UpgradeNote: Add a new column to the queue_member table:
reason_paused VARCHAR(80) so the reason can be preserved.
UserNote: Make paused reason in realtime queues persist an
Asterisk restart. This was fixed for non-realtime
queues in ASTERISK_25732.
- ### .github: Fix issues with cherry-pick-reminder
Author: George Joseph
Date: 2023-06-05
- ### indications: logging changes
Author: Mike Bradeen
Date: 2023-05-16
Increase verbosity to indicate failure due to missing country
and to specify default on CLI dump
Resolves: #89
- ### .github Ignore error when adding reviewrs to PR
Author: George Joseph
Date: 2023-06-05
- ### .github: Update field descriptions for AsteriskReleaser
Author: George Joseph
Date: 2023-05-26
- ### callerid: Allow specifying timezone for date/time.
Author: Naveen Albert
Date: 2023-05-18
The Caller ID generation routine currently is hardcoded
to always use the system time zone. This makes it possible
to optionally specify any TZ-format time zone.
Resolves: #98
ASTERISK-30330
- ### logrotate: Fix duplicate log entries.
Author: Naveen Albert
Date: 2023-05-18
The Asterisk logrotate script contains explicit
references to files with the .log extension,
which are also included when *log is expanded.
This causes issues with newer versions of logrotate.
This fixes this by ensuring that a log file cannot
be referenced multiple times after expansion occurs.
Resolves: #96
ASTERISK-30442
Reported by: EN Barnett
Tested by: EN Barnett
- ### chan_pjsip: Allow topology/session refreshes in early media state
Author: Maximilian Fridrich
Date: 2023-05-10
With this change, session modifications in the early media state are
possible if the SDP was sent reliably and confirmed by a PRACK. For
details, see RFC 6337, escpecially section 3.2.
Resolves: #73
- ### chan_dahdi: Fix broken hidecallerid setting.
Author: Naveen Albert
Date: 2023-05-18
The hidecallerid setting in chan_dahdi.conf currently
is broken for a couple reasons.
First, the actual code in sig_analog to "allow" or "block"
Caller ID depending on this setting improperly used
ast_set_callerid instead of updating the presentation.
This issue was mostly fixed in ASTERISK_29991, and that
fix is carried forward to this code as well.
Secondly, the hidecallerid setting is set on the DAHDI
pvt but not carried forward to the analog pvt properly.
This is because the chan_dahdi config loading code improperly
set permhidecallerid to permhidecallerid from the config file,
even though hidecallerid is what is actually set from the config
file. (This is done correctly for call waiting, a few lines above.)
This is fixed to read the proper value.
Thirdly, in sig_analog, hidecallerid is set to permhidecallerid
only on hangup. This can lead to potential security vulnerabilities
as an allowed Caller ID from an initial call can "leak" into subsequent
calls if no hangup occurs between them. This is fixed by setting
hidecallerid to permcallerid when calls begin, rather than when they end.
This also means we don't need to also set hidecallerid in chan_dahdi.c
when copying from the config, as we would have to otherwise.
Fourthly, sig_analog currently only allows dialing *67 or *82 if
that would actually toggle the presentation. A comment is added
clarifying that this behavior is okay.
Finally, a couple log messages are updated to be more accurate.
Resolves: #100
ASTERISK-30349 #close
- ### .github: Change title of AsteriskReleaser job
Author: George Joseph
Date: 2023-05-23
- ### asterisk.c: Fix option warning for remote console.
Author: Naveen Albert
Date: 2023-05-18
Commit 09e989f972e2583df4e9bf585c246c37322d8d2f
categorized the T option as not being compatible
with remote consoles, but they do affect verbose
messages with remote console. This fixes this.
Resolves: #102
- ### .github: Don't add cherry-pick reminder if it's already present
Author: George Joseph
Date: 2023-05-22
- ### .github: Fix quoting in PROpenedOrUpdated
Author: George Joseph
Date: 2023-05-16
- ### .github: Add cherry-pick reminder to new PRs
Author: George Joseph
Date: 2023-05-15
- ### configure: fix test code to match gethostbyname_r prototype.
Author: Jaco Kroon
Date: 2023-05-10
This enables the test to work with CC=clang.
Without this the test for 6 args would fail with:
utils.c:99:12: error: static declaration of 'gethostbyname_r' follows non-static declaration
static int gethostbyname_r (const char *name, struct hostent *ret, char *buf,
^
/usr/include/netdb.h:177:12: note: previous declaration is here
extern int gethostbyname_r (const char *__restrict __name,
^
Fixing the expected return type to int sorts this out.
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
- ### res_pjsip_pubsub.c: Use pjsip version for pending NOTIFY check. (#77)
Author: Sean Bright
Date: 2023-05-11
The functionality we are interested in is present only in pjsip 2.13
and newer.
Resolves: #45
- ### res_sorcery_memory_cache.c: Fix memory leak
Author: zhengsh
Date: 2023-05-03
Replace the original call to ast_strdup with a call to ast_strdupa to fix the leak issue.
Resolves: #55
ASTERISK-30429
- ### xml.c: Process XML Inclusions recursively.
Author: Sean Bright
Date: 2023-05-09
If processing an XInclude results in new <xi:include> elements, we
need to run XInclude processing again. This continues until no
replacement occurs or an error is encountered.
There is a separate issue with dynamic strings (ast_str) that will be
addressed separately.
Resolves: #65
- ### .github: Tweak improvement issue type language.
Author: Joshua C. Colp
Date: 2023-05-09
- ### .github: Tweak new feature language, and move feature requests elsewhere.
Author: Gitea
Date: 2023-05-09
- ### .github: Fix staleness check to only run on certain labels.
Author: Joshua C. Colp
Date: 2023-05-09

View File

@@ -1,748 +0,0 @@
Change Log for Release asterisk-20.5.0
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.5.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.4.0...20.5.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.5.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix broken documentation anchors
- res_pjsip_session: Send Session Interval too small response
- .github: Update workflow-application-token-action to v2
- app_dial: Fix infinite loop when sending digits.
- app_voicemail: Fix for loop declarations
- alembic: Fix quoting of the 100rel column
- pbx.c: Fix gcc 12 compiler warning.
- app_audiosocket: Fixed timeout with -1 to avoid busy loop.
- download_externals: Fix a few version related issues
- main/refer.c: Fix double free in refer_data_destructor + potential leak
- sig_analog: Add Called Subscriber Held capability.
- app_macro: Fix locking around datastore access
- Revert "app_stack: Print proper exit location for PBXless channels."
- .github: Use generic releaser
- install_prereq: Fix dependency install on aarch64.
- res_pjsip.c: Set contact_user on incoming call local Contact header
- extconfig: Allow explicit DB result set ordering to be disabled.
- rest-api: Run make ari-stubs
- res_pjsip_header_funcs: Make prefix argument optional.
- pjproject_bundled: Increase PJSIP_MAX_MODULE to 38
- manager: Tolerate stasis messages with no channel snapshot.
- core/ari/pjsip: Add refer mechanism
- chan_dahdi: Allow autoreoriginating after hangup.
- audiohook: Unlock channel in mute if no audiohooks present.
- sig_analog: Allow three-way flash to time out to silence.
- res_prometheus: Do not generate broken metrics
- res_pjsip: Enable TLS v1.3 if present.
- func_cut: Add example to documentation.
- extensions.conf.sample: Remove reference to missing context.
- func_export: Use correct function argument as variable name.
- app_queue: Add support for applying caller priority change immediately.
- .github: Fix cherry-pick reminder issues
- chan_iax2.c: Avoid crash with IAX2 switch support.
- res_geolocation: Ensure required 'location_info' is present.
- Adds manager actions to allow move/remove/forward individual messages in a particular mailbox folder. The forward command can be used to copy a message within a mailbox or to another mailbox. Also adds a VoicemailBoxSummarry, required to retrieve message ID's.
- app_voicemail: add CLI commands for message manipulation
- res_rtp_asterisk: Move ast_rtp_rtcp_report_alloc using `rtp->themssrc_valid` into the scope of the rtp_instance lock.
- .github: Minor tweak to Asterisk Releaser
- .github: Suppress cherry-pick reminder for some situations
- sig_analog: Allow immediate fake ring to be suppressed.
User Notes:
----------------------------------------
- ### sig_analog: Add Called Subscriber Held capability.
Called Subscriber Held is now supported for analog
FXS channels, using the calledsubscriberheld option. This allows
a station user to go on hook when receiving an incoming call
and resume from another phone on the same line by going on hook,
without disconnecting the call.
- ### res_pjsip_header_funcs: Make prefix argument optional.
The prefix argument to PJSIP_HEADERS is now
optional. If not specified, all header names will be
returned.
- ### core/ari/pjsip: Add refer mechanism
There is a new ARI endpoint `/endpoints/refer` for referring
an endpoint to some URI or endpoint.
- ### chan_dahdi: Allow autoreoriginating after hangup.
The autoreoriginate setting now allows for kewlstart FXS
channels to automatically reoriginate and provide dial tone to the
user again after all calls on the line have cleared. This saves users
from having to manually hang up and pick up the receiver again before
making another call.
- ### sig_analog: Allow three-way flash to time out to silence.
The threewaysilenthold option now allows the three-way
dial tone to time out to silence, rather than continuing forever.
- ### res_pjsip: Enable TLS v1.3 if present.
res_pjsip now allows TLS v1.3 to be enabled if supported by
the underlying PJSIP library. The bundled version of PJSIP supports
TLS v1.3.
- ### app_queue: Add support for applying caller priority change immediately.
The 'queue priority caller' CLI command and
'QueueChangePriorityCaller' AMI action now have an 'immediate'
argument which allows the caller priority change to be reflected
immediately, causing the position of a caller to move within the
queue depending on the priorities of the other callers.
- ### Adds manager actions to allow move/remove/forward individual messages in a particular mailbox folder. The forward command can be used to copy a message within a mailbox or to another mailbox. Also adds a VoicemailBoxSummarry, required to retrieve message ID's.
The following manager actions have been added
VoicemailBoxSummary - Generate message list for a given mailbox
VoicemailRemove - Remove a message from a mailbox folder
VoicemailMove - Move a message from one folder to another within a mailbox
VoicemailForward - Copy a message from one folder in one mailbox
to another folder in another or the same mailbox.
- ### app_voicemail: add CLI commands for message manipulation
The following CLI commands have been added to app_voicemail
voicemail show mailbox <mailbox> <context>
Show contents of mailbox <mailbox>@<context>
voicemail remove <mailbox> <context> <from_folder> <messageid>
Remove message <messageid> from <from_folder> in mailbox <mailbox>@<context>
voicemail move <mailbox> <context> <from_folder> <messageid> <to_folder>
Move message <messageid> in mailbox <mailbox>&<context> from <from_folder> to <to_folder>
voicemail forward <from_mailbox> <from_context> <from_folder> <messageid> <to_mailbox> <to_context> <to_folder>
Forward message <messageid> in mailbox <mailbox>@<context> <from_folder> to
mailbox <mailbox>@<context> <to_folder>
- ### sig_analog: Allow immediate fake ring to be suppressed.
The immediatering option can now be set to no to suppress
the fake audible ringback provided when immediate=yes on FXS channels.
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
- #37: [Bug]: contrib/scripts/install_prereq tries to install armhf packages on aarch64 Debian platforms
- #71: [new-feature]: core/ari/pjsip: Add refer mechanism to refer endpoints to some resource
- #118: [new-feature]: chan_dahdi: Allow fake ringing to be inhibited when immediate=yes
- #170: [improvement]: app_voicemail - add CLI commands to manipulate messages
- #179: [bug]: Queue strategy “Linear” with Asterisk 20 on Realtime
- #181: [improvement]: app_voicemail - add manager actions to display and manipulate messages
- #202: [improvement]: app_queue: Add support for immediately applying queue caller priority change
- #205: [new-feature]: sig_analog: Allow flash to time out to silent hold
- #224: [new-feature]: chan_dahdi: Allow automatic reorigination on hangup
- #226: [improvement]: Apply contact_user to incoming calls
- #230: [bug]: PJSIP_RESPONSE_HEADERS function documentation is misleading
- #233: [bug]: Deadlock with MixMonitorMute AMI action
- #240: [new-feature]: sig_analog: Add Called Subscriber Held capability
- #253: app_gosub patch appear to have broken predial handlers that utilize macros that call gosubs
- #255: [bug]: pjsip_endpt_register_module: Assertion "Too many modules registered"
- #263: [bug]: download_externals doesn't always handle versions correctly
- #265: [bug]: app_macro isn't locking around channel datastore access
- #267: [bug]: ari: refer with display_name key in request body leads to crash
- #274: [bug]: Syntax Error in SQL Code
- #275: [bug]:Asterisk make now requires ASTCFLAGS='-std=gnu99 -Wdeclaration-after-statement'
- #277: [bug]: pbx.c: Compiler error with gcc 12.2
- #281: [bug]: app_dial: Infinite loop if called channel hangs up while receiving digits
Commits By Author:
----------------------------------------
- ### Asterisk Development Team (1):
- Update for 20.5.0-rc1
- ### Bastian Triller (1):
- res_pjsip_session: Send Session Interval too small response
- ### George Joseph (12):
- .github: Suppress cherry-pick reminder for some situations
- .github: Minor tweak to Asterisk Releaser
- .github: Fix cherry-pick reminder issues
- pjproject_bundled: Increase PJSIP_MAX_MODULE to 38
- rest-api: Run make ari-stubs
- .github: Use generic releaser
- download_externals: Fix a few version related issues
- alembic: Fix quoting of the 100rel column
- .github: Update workflow-application-token-action to v2
- ari-stubs: Fix broken documentation anchors
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix more local anchor references
- ### Holger Hans Peter Freyther (1):
- res_prometheus: Do not generate broken metrics
- ### Jason D. McCormick (1):
- install_prereq: Fix dependency install on aarch64.
- ### Joshua C. Colp (3):
- app_queue: Add support for applying caller priority change immediately.
- audiohook: Unlock channel in mute if no audiohooks present.
- manager: Tolerate stasis messages with no channel snapshot.
- ### Matthew Fredrickson (2):
- Revert "app_stack: Print proper exit location for PBXless channels."
- app_macro: Fix locking around datastore access
- ### Maximilian Fridrich (2):
- core/ari/pjsip: Add refer mechanism
- main/refer.c: Fix double free in refer_data_destructor + potential leak
- ### Mike Bradeen (3):
- app_voicemail: add CLI commands for message manipulation
- Adds manager actions to allow move/remove/forward individual messages in a particular mailbox folder. The forward command can be used to copy a message within a mailbox or to another mailbox. Also adds a VoicemailBoxSummarry, required to retrieve message ID's.
- app_voicemail: Fix for loop declarations
- ### MikeNaso (1):
- res_pjsip.c: Set contact_user on incoming call local Contact header
- ### Naveen Albert (7):
- sig_analog: Allow immediate fake ring to be suppressed.
- sig_analog: Allow three-way flash to time out to silence.
- chan_dahdi: Allow autoreoriginating after hangup.
- res_pjsip_header_funcs: Make prefix argument optional.
- sig_analog: Add Called Subscriber Held capability.
- pbx.c: Fix gcc 12 compiler warning.
- app_dial: Fix infinite loop when sending digits.
- ### Sean Bright (6):
- res_geolocation: Ensure required 'location_info' is present.
- chan_iax2.c: Avoid crash with IAX2 switch support.
- func_export: Use correct function argument as variable name.
- extensions.conf.sample: Remove reference to missing context.
- res_pjsip: Enable TLS v1.3 if present.
- extconfig: Allow explicit DB result set ordering to be disabled.
- ### phoneben (1):
- func_cut: Add example to documentation.
- ### zhengsh (2):
- res_rtp_asterisk: Move ast_rtp_rtcp_report_alloc using `rtp->themssrc_valid` into the scope of the rtp_instance lock.
- app_audiosocket: Fixed timeout with -1 to avoid busy loop.
Detail:
----------------------------------------
- ### ari-stubs: Fix more local anchor references
Author: George Joseph
Date: 2023-09-05
Also allow CreateDocs job to be run manually with default branches.
- ### ari-stubs: Fix more local anchor references
Author: George Joseph
Date: 2023-09-05
Also allow CreateDocs job to be run manually with default branches.
- ### ari-stubs: Fix broken documentation anchors
Author: George Joseph
Date: 2023-09-05
All of the links that reference page anchors with capital letters in
the ids (#Something) have been changed to lower case to match the
anchors that are generated by mkdocs.
- ### res_pjsip_session: Send Session Interval too small response
Author: Bastian Triller
Date: 2023-08-28
Handle session interval lower than endpoint's configured minimum timer
when sending first answer. Timer setting is checked during this step and
needs to handled appropriately.
Before this change, no response was sent at all. After this change a
response with 422 Session Interval too small is sent to UAC.
- ### .github: Update workflow-application-token-action to v2
Author: George Joseph
Date: 2023-08-31
- ### app_dial: Fix infinite loop when sending digits.
Author: Naveen Albert
Date: 2023-08-28
If the called party hangs up while digits are being
sent, -1 is returned to indicate so, but app_dial
was not checking the return value, resulting in
the hangup being lost and looping forever until
the caller manually hangs up the channel. We now
abort if digit sending fails.
ASTERISK-29428 #close
Resolves: #281
- ### app_voicemail: Fix for loop declarations
Author: Mike Bradeen
Date: 2023-08-29
Resolve for loop initial declarations added in cli changes.
Resolves: #275
- ### alembic: Fix quoting of the 100rel column
Author: George Joseph
Date: 2023-08-28
Add quoting around the ps_endpoints 100rel column in the ALTER
statements. Although alembic doesn't complain when generating
sql statements, postgresql does (rightly so).
Resolves: #274
- ### pbx.c: Fix gcc 12 compiler warning.
Author: Naveen Albert
Date: 2023-08-27
Resolves: #277
- ### app_audiosocket: Fixed timeout with -1 to avoid busy loop.
Author: zhengsh
Date: 2023-08-24
Resolves: asterisk#234
- ### download_externals: Fix a few version related issues
Author: George Joseph
Date: 2023-08-18
* Fixed issue with the script not parsing the new tag format for
certified releases. The format changed from certified/18.9-cert5
to certified-18.9-cert5.
* Fixed issue where the asterisk version wasn't being considered
when looking for cached versions.
Resolves: #263
- ### main/refer.c: Fix double free in refer_data_destructor + potential leak
Author: Maximilian Fridrich
Date: 2023-08-21
Resolves: #267
- ### sig_analog: Add Called Subscriber Held capability.
Author: Naveen Albert
Date: 2023-08-09
This adds support for Called Subscriber Held for FXS
lines, which allows users to go on hook when receiving
a call and resume the call later from another phone on
the same line, without disconnecting the call. This is
a convenience mechanism that most real PSTN telephone
switches support.
ASTERISK-30372 #close
Resolves: #240
UserNote: Called Subscriber Held is now supported for analog
FXS channels, using the calledsubscriberheld option. This allows
a station user to go on hook when receiving an incoming call
and resume from another phone on the same line by going on hook,
without disconnecting the call.
- ### app_macro: Fix locking around datastore access
Author: Matthew Fredrickson
Date: 2023-08-21
app_macro sometimes would crash due to datastore list corruption on the
channel because of lack of locking around find and create process for
the macro datastore. This patch locks the channel lock prior to protect
against this problem.
Resolves: #265
- ### Revert "app_stack: Print proper exit location for PBXless channels."
Author: Matthew Fredrickson
Date: 2023-08-10
This reverts commit 617dad4cba1513dddce87b8e95a61415fb587cf1.
apps/app_stack.c: Revert buggy gosub patch
This seems to break the case when a predial macro calls a gosub.
When the gosub calls return, the Return function outputs:
app_stack.c:423 return_exec: Return without Gosub: stack is empty
This returns -1 to the calling macro, which returns to app_dial
and causes the call to hangup instead of proceeding with the macro
that invoked the gosub.
Resolves: #253
- ### .github: Use generic releaser
Author: George Joseph
Date: 2023-08-15
- ### install_prereq: Fix dependency install on aarch64.
Author: Jason D. McCormick
Date: 2023-04-28
Fixes dependency solutions in install_prereq for Debian aarch64
platforms. install_prereq was attempting to forcibly install 32-bit
armhf packages due to the aptitude search for dependencies.
Resolves: #37
- ### res_pjsip.c: Set contact_user on incoming call local Contact header
Author: MikeNaso
Date: 2023-08-08
If the contact_user is configured on the endpoint it will now be set on the local Contact header URI for incoming calls. The contact_user has already been set on the local Contact header URI for outgoing calls.
Resolves: #226
- ### extconfig: Allow explicit DB result set ordering to be disabled.
Author: Sean Bright
Date: 2023-07-12
Added a new boolean configuration flag -
`order_multi_row_results_by_initial_column` - to both res_pgsql.conf
and res_config_odbc.conf that allows the administrator to disable the
explicit `ORDER BY` that was previously being added to all generated
SQL statements that returned multiple rows.
Fixes: #179
- ### rest-api: Run make ari-stubs
Author: George Joseph
Date: 2023-08-09
An earlier cherry-pick that involved rest-api somehow didn't include
a comment change in res/ari/resource_endpoints.h. This commit
corrects that. No changes other than the comment.
- ### res_pjsip_header_funcs: Make prefix argument optional.
Author: Naveen Albert
Date: 2023-08-09
The documentation for PJSIP_HEADERS claims that
prefix is optional, but in the code it is actually not.
However, there is no inherent reason for this, as users
may want to retrieve all header names, not just those
beginning with a certain prefix.
This makes the prefix optional for this function,
simply fetching all header names if not specified.
As a result, the documentation is now correct.
Resolves: #230
UserNote: The prefix argument to PJSIP_HEADERS is now
optional. If not specified, all header names will be
returned.
- ### pjproject_bundled: Increase PJSIP_MAX_MODULE to 38
Author: George Joseph
Date: 2023-08-11
The default is 32 with 8 being used by pjproject itself. Recent
commits have put us over the limit resulting in assertions in
pjproject. Since this value is used in invites, dialogs,
transports and subscriptions as well as the global pjproject
endpoint, we don't want to increase it too much.
Resolves: #255
- ### manager: Tolerate stasis messages with no channel snapshot.
Author: Joshua C. Colp
Date: 2023-08-09
In some cases I have yet to determine some stasis messages may
be created without a channel snapshot. This change adds some
tolerance to this scenario, preventing a crash from occurring.
- ### core/ari/pjsip: Add refer mechanism
Author: Maximilian Fridrich
Date: 2023-05-10
This change adds support for refers that are not session based. It
includes a refer implementation for the PJSIP technology which results
in out-of-dialog REFERs being sent to a PJSIP endpoint. These can be
triggered using the new ARI endpoint `/endpoints/refer`.
Resolves: #71
UserNote: There is a new ARI endpoint `/endpoints/refer` for referring
an endpoint to some URI or endpoint.
- ### chan_dahdi: Allow autoreoriginating after hangup.
Author: Naveen Albert
Date: 2023-08-04
Currently, if an FXS channel is still off hook when
all calls on the line have hung up, the user is provided
reorder tone until going back on hook again.
In addition to not reflecting what most commercial switches
actually do, it's very common for switches to automatically
reoriginate for the user so that dial tone is provided without
the user having to depress and release the hookswitch manually.
This can increase convenience for users.
This behavior is now supported for kewlstart FXS channels.
It's supported only for kewlstart (FXOKS) mainly because the
behavior doesn't make any sense for ground start channels,
and loop start signalling doesn't provide the necessary DAHDI
event that makes this easy to implement. Likely almost everyone
is using FXOKS over FXOLS anyways since FXOLS is pretty useless
these days.
ASTERISK-30357 #close
Resolves: #224
UserNote: The autoreoriginate setting now allows for kewlstart FXS
channels to automatically reoriginate and provide dial tone to the
user again after all calls on the line have cleared. This saves users
from having to manually hang up and pick up the receiver again before
making another call.
- ### audiohook: Unlock channel in mute if no audiohooks present.
Author: Joshua C. Colp
Date: 2023-08-09
In the case where mute was called on a channel that had no
audiohooks the code was not unlocking the channel, resulting
in a deadlock.
Resolves: #233
- ### sig_analog: Allow three-way flash to time out to silence.
Author: Naveen Albert
Date: 2023-07-10
sig_analog allows users to flash and use the three-way dial
tone as a primitive hold function, simply by never timing
it out.
Some systems allow this dial tone to time out to silence,
so the user is not annoyed by a persistent dial tone.
This option allows the dial tone to time out normally to
silence.
ASTERISK-30004 #close
Resolves: #205
UserNote: The threewaysilenthold option now allows the three-way
dial tone to time out to silence, rather than continuing forever.
- ### res_prometheus: Do not generate broken metrics
Author: Holger Hans Peter Freyther
Date: 2023-04-07
In 8d6fdf9c3adede201f0ef026dab201b3a37b26b6 invisible bridges were
skipped but that lead to producing metrics with no name and no help.
Keep track of the number of metrics configured and then only emit these.
Add a basic testcase that verifies that there is no '(NULL)' in the
output.
ASTERISK-30474
- ### res_pjsip: Enable TLS v1.3 if present.
Author: Sean Bright
Date: 2023-08-02
Fixes #221
UserNote: res_pjsip now allows TLS v1.3 to be enabled if supported by
the underlying PJSIP library. The bundled version of PJSIP supports
TLS v1.3.
- ### func_cut: Add example to documentation.
Author: phoneben
Date: 2023-07-19
This adds an example to the XML documentation clarifying usage
of the CUT function to address a common misusage.
- ### extensions.conf.sample: Remove reference to missing context.
Author: Sean Bright
Date: 2023-07-16
c3ff4648 removed the [iaxtel700] context but neglected to remove
references to it.
This commit addresses that and also removes iaxtel and freeworlddialup
references from other config files.
- ### func_export: Use correct function argument as variable name.
Author: Sean Bright
Date: 2023-07-12
Fixes #208
- ### app_queue: Add support for applying caller priority change immediately.
Author: Joshua C. Colp
Date: 2023-07-07
The app_queue module provides both an AMI action and a CLI command
to change the priority of a caller in a queue. Up to now this change
of priority has only been reflected to new callers into the queue.
This change adds an "immediate" option to both the AMI action and
CLI command which immediately applies the priority change respective
to the other callers already in the queue. This can allow, for example,
a caller to be placed at the head of the queue immediately if their
priority is sufficient.
Resolves: #202
UserNote: The 'queue priority caller' CLI command and
'QueueChangePriorityCaller' AMI action now have an 'immediate'
argument which allows the caller priority change to be reflected
immediately, causing the position of a caller to move within the
queue depending on the priorities of the other callers.
- ### .github: Fix cherry-pick reminder issues
Author: George Joseph
Date: 2023-07-17
- ### chan_iax2.c: Avoid crash with IAX2 switch support.
Author: Sean Bright
Date: 2023-07-07
A change made in 82cebaa0 did not properly handle the case when a
channel was not provided, triggering a crash. ast_check_hangup(...)
does not protect against NULL pointers.
Fixes #180
- ### res_geolocation: Ensure required 'location_info' is present.
Author: Sean Bright
Date: 2023-07-07
Fixes #189
- ### Adds manager actions to allow move/remove/forward individual messages in a particular mailbox folder. The forward command can be used to copy a message within a mailbox or to another mailbox. Also adds a VoicemailBoxSummarry, required to retrieve message ID's.
Author: Mike Bradeen
Date: 2023-06-29
Resolves: #181
UserNote: The following manager actions have been added
VoicemailBoxSummary - Generate message list for a given mailbox
VoicemailRemove - Remove a message from a mailbox folder
VoicemailMove - Move a message from one folder to another within a mailbox
VoicemailForward - Copy a message from one folder in one mailbox
to another folder in another or the same mailbox.
- ### app_voicemail: add CLI commands for message manipulation
Author: Mike Bradeen
Date: 2023-06-20
Adds CLI commands to allow move/remove/forward individual messages
from a particular mailbox folder. The forward command can be used
to copy a message within a mailbox or to another mailbox. Also adds
a show mailbox, required to retrieve message ID's.
Resolves: #170
UserNote: The following CLI commands have been added to app_voicemail
voicemail show mailbox <mailbox> <context>
Show contents of mailbox <mailbox>@<context>
voicemail remove <mailbox> <context> <from_folder> <messageid>
Remove message <messageid> from <from_folder> in mailbox <mailbox>@<context>
voicemail move <mailbox> <context> <from_folder> <messageid> <to_folder>
Move message <messageid> in mailbox <mailbox>&<context> from <from_folder> to <to_folder>
voicemail forward <from_mailbox> <from_context> <from_folder> <messageid> <to_mailbox> <to_context> <to_folder>
Forward message <messageid> in mailbox <mailbox>@<context> <from_folder> to
mailbox <mailbox>@<context> <to_folder>
- ### res_rtp_asterisk: Move ast_rtp_rtcp_report_alloc using `rtp->themssrc_valid` into the scope of the rtp_instance lock.
Author: zhengsh
Date: 2023-06-30
From the gdb information, it was found that when calling __ast_free, the size of the
allocated space pointed to by the pointer matches the size created when rtp->themssrc_valid
is equal to 0. However, in reality, when reading the value of rtp->themssrc_valid in gdb,
it is found to be 1.
Within ast_rtcp_write(), the call to ast_rtp_rtcp_report_alloc() uses rtp->themssrc_valid,
which is outside the protection of the rtp_instance lock. However,
ast_rtcp_generate_report(), which is called by ast_rtcp_generate_compound_prefix(), uses
rtp->themssrc_valid within the protection of the rtp_instance lock.
This can lead to the possibility that the value of rtp->themssrc_valid used in the call to
ast_rtp_rtcp_report_alloc() may be different from the value of rtp->themssrc_valid used
within ast_rtcp_generate_report().
Resolves: asterisk#63
- ### .github: Minor tweak to Asterisk Releaser
Author: George Joseph
Date: 2023-07-12
- ### .github: Suppress cherry-pick reminder for some situations
Author: George Joseph
Date: 2023-07-11
In PROpenedOrUpdated, the cherry-pick reminder will now be
suppressed if there are already valid 'cherry-pick-to' comments
in the PR or the PR contained a 'cherry-pick-to: none' comment.
- ### sig_analog: Allow immediate fake ring to be suppressed.
Author: Naveen Albert
Date: 2023-06-08
When immediate=yes on an FXS channel, sig_analog will
start fake audible ringback that continues until the
channel is answered. Even if it answers immediately,
the ringback is still audible for a brief moment.
This can be disruptive and unwanted behavior.
This adds an option to disable this behavior, though
the default behavior remains unchanged.
ASTERISK-30003 #close
Resolves: #118
UserNote: The immediatering option can now be set to no to suppress
the fake audible ringback provided when immediate=yes on FXS channels.

View File

@@ -1,95 +0,0 @@
Change Log for Release asterisk-20.5.1
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.5.1.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.5.0...20.5.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.5.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- res_pjsip_header_funcs: Duplicate new header value, don't copy.
- res_pjsip: disable raw bad packet logging
- res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
- manager.c: Prevent path traversal with GetConfig.
User Notes:
----------------------------------------
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
None
Commits By Author:
----------------------------------------
- ### Ben Ford (1):
- manager.c: Prevent path traversal with GetConfig.
- ### George Joseph (1):
- res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
- ### Gitea (1):
- res_pjsip_header_funcs: Duplicate new header value, don't copy.
- ### Mike Bradeen (1):
- res_pjsip: disable raw bad packet logging
Detail:
----------------------------------------
- ### res_pjsip_header_funcs: Duplicate new header value, don't copy.
Author: Gitea
Date: 2023-07-10
When updating an existing header the 'update' code incorrectly
just copied the new value into the existing buffer. If the
new value exceeded the available buffer size memory outside
of the buffer would be written into, potentially causing
a crash.
This change makes it so that the 'update' now duplicates
the new header value instead of copying it into the existing
buffer.
- ### res_pjsip: disable raw bad packet logging
Author: Mike Bradeen
Date: 2023-07-25
Add patch to split the log level for invalid packets received on the
signaling port. The warning regarding the packet will move to level 2
so that it can still be displayed, while the raw packet will be at level
4.
- ### res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
Author: George Joseph
Date: 2023-11-09
When ICE is in use, we can prevent a possible DOS attack by allowing
DTLS protocol messages (client hello, etc) only from sources that
are in the active remote candidates list.
Resolves: GHSA-hxj9-xwr8-w8pq
- ### manager.c: Prevent path traversal with GetConfig.
Author: Ben Ford
Date: 2023-11-13
When using AMI GetConfig, it was possible to access files outside of the
Asterisk configuration directory by using filenames with ".." and "./"
even while live_dangerously was not enabled. This change resolves the
full path and ensures we are still in the configuration directory before
attempting to access the file.

View File

@@ -1,68 +0,0 @@
Change Log for Release asterisk-20.5.2
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.5.2.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.5.1...20.5.2)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.5.2.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- res_rtp_asterisk: Fix regression issues with DTLS client check
User Notes:
----------------------------------------
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
- #500: [bug regression]: res_rtp_asterisk doesn't build if pjproject isn't used
- #503: [bug]: The res_rtp_asterisk DTLS check against ICE candidates fails when it shouldn't
- #505: [bug]: res_pjproject: ast_sockaddr_cmp() always fails on sockaddrs created by ast_sockaddr_from_pj_sockaddr()
Commits By Author:
----------------------------------------
- ### George Joseph (1):
- res_rtp_asterisk: Fix regression issues with DTLS client check
Detail:
----------------------------------------
- ### res_rtp_asterisk: Fix regression issues with DTLS client check
Author: George Joseph
Date: 2023-12-15
* Since ICE candidates are used for the check and pjproject is
required to use ICE, res_rtp_asterisk was failing to compile
when pjproject wasn't available. The check is now wrapped
with an #ifdef HAVE_PJPROJECT.
* The rtp->ice_active_remote_candidates container was being
used to check the address on incoming packets but that
container doesn't contain peer reflexive candidates discovered
during negotiation. This was causing the check to fail
where it shouldn't. We now check against pjproject's
real_ice->rcand array which will contain those candidates.
* Also fixed a bug in ast_sockaddr_from_pj_sockaddr() where
we weren't zeroing out sin->sin_zero before returning. This
was causing ast_sockaddr_cmp() to always return false when
one of the inputs was converted from a pj_sockaddr, even
if both inputs had the same address and port.
Resolves: #500
Resolves: #503
Resolves: #505

File diff suppressed because it is too large Load Diff

View File

@@ -1,736 +0,0 @@
Change Log for Release asterisk-20.7.0
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.7.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.6.0...20.7.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.7.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- res_pjsip_stir_shaken.c: Add checks for missing parameters
- app_dial: Add dial time for progress/ringing.
- app_voicemail: Properly reinitialize config after unit tests.
- app_queue.c : fix "queue add member" usage string
- app_voicemail: Allow preventing mark messages as urgent.
- res_pjsip: Use consistent type for boolean columns.
- attestation_config.c: Use ast_free instead of ast_std_free
- Makefile: Add stir_shaken/cache to directories created on install
- Stir/Shaken Refactor
- alembic: Synchronize alembic heads between supported branches.
- translate.c: implement new direct comp table mode
- README.md: Removed outdated link
- strings.h: Ensure ast_str_buffer(…) returns a 0 terminated string.
- res_rtp_asterisk.c: Correct coefficient in MOS calculation.
- dsp.c: Fix and improve potentially inaccurate log message.
- pjsip show channelstats: Prevent possible segfault when faxing
- Reduce startup/shutdown verbose logging
- configure: Rerun bootstrap on modern platform.
- Upgrade bundled pjproject to 2.14.
- app_speech_utils.c: Allow partial speech results.
- utils: Make behavior of ast_strsep* match strsep.
- app_chanspy: Add 'D' option for dual-channel audio
- app_if: Fix next priority calculation.
- res_pjsip_t38.c: Permit IPv6 SDP connection addresses.
- BuildSystem: Bump autotools versions on OpenBSD.
- main/utils: Simplify the FreeBSD ast_get_tid() handling
- res_pjsip_session.c: Correctly format SDP connection addresses.
- rtp_engine.c: Correct sample rate typo for L16/44100.
- manager.c: Fix erroneous reloads in UpdateConfig.
- res_calendar_icalendar: Print iCalendar error on parsing failure.
- app_confbridge: Don't emit warnings on valid configurations.
- app_voicemail: add NoOp alembic script to maintain sync
- chan_dahdi: Allow MWI to be manually toggled on channels.
- chan_rtp.c: MulticastRTP missing refcount without codec option
- chan_rtp.c: Change MulticastRTP nameing to avoid memory leak
- func_frame_trace: Add CLI command to dump frame queue.
User Notes:
----------------------------------------
- ### app_dial: Add dial time for progress/ringing.
The timeout argument to Dial now allows
specifying the maximum amount of time to dial if
early media is not received.
- ### app_voicemail: Allow preventing mark messages as urgent.
The leaveurgent mailbox option can now be used to
control whether callers may leave messages marked as 'Urgent'.
- ### Stir/Shaken Refactor
Asterisk's stir-shaken feature has been refactored to
correct interoperability, RFC compliance, and performance issues.
See https://docs.asterisk.org/Deployment/STIR-SHAKEN for more
information.
- ### Upgrade bundled pjproject to 2.14.
Bundled pjproject has been upgraded to 2.14. For more
information on what all is included in this change, check out the
pjproject Github page: https://github.com/pjsip/pjproject/releases
- ### app_speech_utils.c: Allow partial speech results.
The SpeechBackground dialplan application now supports a 'p'
option that will return partial results from speech engines that
provide them when a timeout occurs.
- ### app_chanspy: Add 'D' option for dual-channel audio
The ChanSpy application now accepts the 'D' option which
will interleave the spied audio within the outgoing frames. The
purpose of this is to allow the audio to be read as a Dual channel
stream with separate incoming and outgoing audio. Setting both the
'o' option and the 'D' option and results in the 'D' option being
ignored.
- ### chan_dahdi: Allow MWI to be manually toggled on channels.
The 'dahdi set mwi' now allows MWI on channels
to be manually toggled if needed for troubleshooting.
Resolves: #440
Upgrade Notes:
----------------------------------------
- ### Stir/Shaken Refactor
The stir-shaken refactor is a breaking change but since
it's not working now we don't think it matters. The
stir_shaken.conf file has changed significantly which means that
existing ones WILL need to be changed. The stir_shaken.conf.sample
file in configs/samples/ has quite a bit more information. This is
also an ABI breaking change since some of the existing objects
needed to be changed or removed, and new ones added. Additionally,
if res_stir_shaken is enabled in menuselect, you'll need to either
have the development package for libjwt v1.15.3 installed or use
the --with-libjwt-bundled option with ./configure.
Closed Issues:
----------------------------------------
- #46: [bug]: Stir/Shaken: Wrong CID used when looking up certificates
- #351: [improvement]: Refactor res_stir_shaken to use libjwt
- #406: [improvement]: pjsip: Upgrade bundled version to pjproject 2.14
- #440: [new-feature]: chan_dahdi: Allow manually toggling MWI on channels
- #492: [improvement]: res_calendar_icalendar: Print icalendar error if available on parsing failure
- #527: [bug]: app_voicemail_odbc no longer working after removal of macrocontext.
- #529: [bug]: MulticastRTP without selected codec leeds to "FRACK!, Failed assertion bad magic number 0x0 for object" after ~30 calls
- #533: [improvement]: channel.c, func_frame_trace.c: Improve debuggability of channel frame queue
- #551: [bug]: manager: UpdateConfig triggers reload with "Reload: no"
- #560: [bug]: EndIf() causes next priority to be skipped
- #565: [bug]: Application Read() returns immediately
- #569: [improvement]: Add option to interleave input and output frames on spied channel
- #572: [improvement]: Copy partial speech results when Asterisk is ready to move on but the speech backend is not
- #582: [improvement]: Reduce unneeded logging during startup and shutdown
- #586: [bug]: The "restrict" keyword used in chan_iax2.c isn't supported in older gcc versions
- #588: [new-feature]: app_dial: Allow Dial to be aborted if early media is not received
- #592: [bug]: In certain circumstances, "pjsip show channelstats" can segfault when a fax session is active
- #595: [improvement]: dsp.c: Fix and improve confusing warning message.
- #597: [bug]: wrong MOS calculation
- #601: [new-feature]: translate.c: implement new direct comp table mode (PR #585)
- #619: [new-feature]: app_voicemail: Allow preventing callers from marking messages as urgent
- #629: [bug]: app_voicemail: Multiple executions of unit tests cause segfault
- #634: [bug]: make install doesn't create the stir_shaken cache directory
- #636: [bug]: Possible SEGV in res_stir_shaken due to wrong free function
- #645: [bug]: Occasional SEGV in res_pjsip_stir_shaken.c
Commits By Author:
----------------------------------------
- ### Ben Ford (1):
- Upgrade bundled pjproject to 2.14.
- ### Brad Smith (2):
- main/utils: Simplify the FreeBSD ast_get_tid() handling
- BuildSystem: Bump autotools versions on OpenBSD.
- ### George Joseph (6):
- Reduce startup/shutdown verbose logging
- pjsip show channelstats: Prevent possible segfault when faxing
- Stir/Shaken Refactor
- Makefile: Add stir_shaken/cache to directories created on install
- attestation_config.c: Use ast_free instead of ast_std_free
- res_pjsip_stir_shaken.c: Add checks for missing parameters
- ### Joshua C. Colp (1):
- utils: Make behavior of ast_strsep* match strsep.
- ### Mike Bradeen (2):
- app_voicemail: add NoOp alembic script to maintain sync
- app_chanspy: Add 'D' option for dual-channel audio
- ### Naveen Albert (10):
- func_frame_trace: Add CLI command to dump frame queue.
- chan_dahdi: Allow MWI to be manually toggled on channels.
- res_calendar_icalendar: Print iCalendar error on parsing failure.
- manager.c: Fix erroneous reloads in UpdateConfig.
- app_if: Fix next priority calculation.
- configure: Rerun bootstrap on modern platform.
- dsp.c: Fix and improve potentially inaccurate log message.
- app_voicemail: Allow preventing mark messages as urgent.
- app_voicemail: Properly reinitialize config after unit tests.
- app_dial: Add dial time for progress/ringing.
- ### PeterHolik (2):
- chan_rtp.c: Change MulticastRTP nameing to avoid memory leak
- chan_rtp.c: MulticastRTP missing refcount without codec option
- ### Sean Bright (7):
- app_confbridge: Don't emit warnings on valid configurations.
- rtp_engine.c: Correct sample rate typo for L16/44100.
- res_pjsip_session.c: Correctly format SDP connection addresses.
- res_pjsip_t38.c: Permit IPv6 SDP connection addresses.
- strings.h: Ensure ast_str_buffer(…) returns a 0 terminated string.
- alembic: Synchronize alembic heads between supported branches.
- res_pjsip: Use consistent type for boolean columns.
- ### Sebastian Jennen (1):
- translate.c: implement new direct comp table mode
- ### Shaaah (1):
- app_queue.c : fix "queue add member" usage string
- ### Shyju Kanaprath (1):
- README.md: Removed outdated link
- ### cmaj (1):
- app_speech_utils.c: Allow partial speech results.
- ### romryz (1):
- res_rtp_asterisk.c: Correct coefficient in MOS calculation.
Detail:
----------------------------------------
- ### res_pjsip_stir_shaken.c: Add checks for missing parameters
Author: George Joseph
Date: 2024-03-11
* Added checks for missing session, session->channel and rdata
in stir_shaken_incoming_request.
* Added checks for missing session, session->channel and tdata
in stir_shaken_outgoing_request.
Resolves: #645
- ### app_dial: Add dial time for progress/ringing.
Author: Naveen Albert
Date: 2024-02-08
Add a timeout option to control the amount of time
to wait if no early media is received before giving
up. This allows aborting early if the destination
is not being responsive.
Resolves: #588
UserNote: The timeout argument to Dial now allows
specifying the maximum amount of time to dial if
early media is not received.
- ### app_voicemail: Properly reinitialize config after unit tests.
Author: Naveen Albert
Date: 2024-02-29
Most app_voicemail unit tests were not properly cleaning up
after themselves after running. This led to test mailboxes
lingering around in the system. It also meant that if any
unit tests in app_voicemail that create mailboxes were executed
and the module was not unloaded/loaded again prior to running
the test_voicemail_vm_info unit test, Asterisk would segfault
due to an attempt to copy a NULL string.
The load_config test did actually have logic to reinitialize
the config after the test. However, this did not work in practice
since load_config() would not reload the config since voicemail.conf
had not changed during the test; thus, additional logic has been
added to ensure that voicemail.conf is truly reloaded, after any
unit tests which modify the users list.
This prevents the SEGV due to invalid mailboxes lingering around,
and also ensures that the system state is restored to what it was
prior to the tests running.
Resolves: #629
- ### app_queue.c : fix "queue add member" usage string
Author: Shaaah
Date: 2024-01-23
Fixing bracket placement in the "queue add member" cli usage string.
- ### app_voicemail: Allow preventing mark messages as urgent.
Author: Naveen Albert
Date: 2024-02-24
This adds an option to allow preventing callers from leaving
messages marked as 'urgent'.
Resolves: #619
UserNote: The leaveurgent mailbox option can now be used to
control whether callers may leave messages marked as 'Urgent'.
- ### res_pjsip: Use consistent type for boolean columns.
Author: Sean Bright
Date: 2024-02-27
This migrates the relevant schema objects from the `('yes', 'no')`
definition to the `('0', '1', 'off', 'on', 'false', 'true', 'yes', 'no')`
one.
Fixes #617
- ### attestation_config.c: Use ast_free instead of ast_std_free
Author: George Joseph
Date: 2024-03-05
In as_check_common_config, we were calling ast_std_free on
raw_key but raw_key was allocated with ast_malloc so it
should be freed with ast_free.
Resolves: #636
- ### Makefile: Add stir_shaken/cache to directories created on install
Author: George Joseph
Date: 2024-03-04
The default location for the stir_shaken cache is
/var/lib/asterisk/keys/stir_shaken/cache but we were only creating
/var/lib/asterisk/keys/stir_shaken on istall. We now create
the cache sub-directory.
Resolves: #634
- ### Stir/Shaken Refactor
Author: George Joseph
Date: 2023-10-26
Why do we need a refactor?
The original stir/shaken implementation was started over 3 years ago
when little was understood about practical implementation. The
result was an implementation that wouldn't actually interoperate
with any other stir-shaken implementations.
There were also a number of stir-shaken features and RFC
requirements that were never implemented such as TNAuthList
certificate validation, sending Reason headers in SIP responses
when verification failed but we wished to continue the call, and
the ability to send Media Key(mky) grants in the Identity header
when the call involved DTLS.
Finally, there were some performance concerns around outgoing
calls and selection of the correct certificate and private key.
The configuration was keyed by an arbitrary name which meant that
for every outgoing call, we had to scan the entire list of
configured TNs to find the correct cert to use. With only a few
TNs configured, this wasn't an issue but if you have a thousand,
it could be.
What's changed?
* Configuration objects have been refactored to be clearer about
their uses and to fix issues.
* The "general" object was renamed to "verification" since it
contains parameters specific to the incoming verification
process. It also never handled ca_path and crl_path
correctly.
* A new "attestation" object was added that controls the
outgoing attestation process. It sets default certificates,
keys, etc.
* The "certificate" object was renamed to "tn" and had it's key
change to telephone number since outgoing call attestation
needs to look up certificates by telephone number.
* The "profile" object had more parameters added to it that can
override default parameters specified in the "attestation"
and "verification" objects.
* The "store" object was removed altogther as it was never
implemented.
* We now use libjwt to create outgoing Identity headers and to
parse and validate signatures on incoming Identiy headers. Our
previous custom implementation was much of the source of the
interoperability issues.
* General code cleanup and refactor.
* Moved things to better places.
* Separated some of the complex functions to smaller ones.
* Using context objects rather than passing tons of parameters
in function calls.
* Removed some complexity and unneeded encapsuation from the
config objects.
Resolves: #351
Resolves: #46
UserNote: Asterisk's stir-shaken feature has been refactored to
correct interoperability, RFC compliance, and performance issues.
See https://docs.asterisk.org/Deployment/STIR-SHAKEN for more
information.
UpgradeNote: The stir-shaken refactor is a breaking change but since
it's not working now we don't think it matters. The
stir_shaken.conf file has changed significantly which means that
existing ones WILL need to be changed. The stir_shaken.conf.sample
file in configs/samples/ has quite a bit more information. This is
also an ABI breaking change since some of the existing objects
needed to be changed or removed, and new ones added. Additionally,
if res_stir_shaken is enabled in menuselect, you'll need to either
have the development package for libjwt v1.15.3 installed or use
the --with-libjwt-bundled option with ./configure.
- ### alembic: Synchronize alembic heads between supported branches.
Author: Sean Bright
Date: 2024-02-28
This adds a dummy migration to 18 and 20 so that our alembic heads are
synchronized across all supported branches.
In this case the migration we are stubbing (24c12d8e9014) is:
https://github.com/asterisk/asterisk/commit/775352ee6c2a5bcd4f0e3df51aee5d1b0abf4cbe
- ### translate.c: implement new direct comp table mode
Author: Sebastian Jennen
Date: 2024-02-25
The new mode lists for each codec translation the actual real cost in cpu microseconds per second translated audio.
This allows to compare the real cpu usage of translations and helps in evaluation of codec implementation changes regarding performance (regression testing).
- add new table mode
- hide the 999999 comp values, as these only indicate an issue with transcoding
- hide the 0 values, as these also do not contain any information (only indicate a multistep transcoding)
Resolves: #601
- ### README.md: Removed outdated link
Author: Shyju Kanaprath
Date: 2024-02-23
Removed outdated link http://www.quicknet.net from README.md
cherry-pick-to: 18
cherry-pick-to: 20
cherry-pick-to: 21
- ### strings.h: Ensure ast_str_buffer(…) returns a 0 terminated string.
Author: Sean Bright
Date: 2024-02-17
If a dynamic string is created with an initial length of 0,
`ast_str_buffer(…)` will return an invalid pointer.
This was a secondary discovery when fixing #65.
- ### res_rtp_asterisk.c: Correct coefficient in MOS calculation.
Author: romryz
Date: 2024-02-06
Media Experience Score relies on incorrect pseudo_mos variable
calculation. According to forming an opinion section of the
documentation, calculation relies on ITU-T G.107 standard:
https://docs.asterisk.org/Deployment/Media-Experience-Score/#forming-an-opinion
ITU-T G.107 Annex B suggests to calculate MOS with a coefficient
"seven times ten to the power of negative six", 7 * 10^(-6). which
would mean 6 digits after the decimal point. Current implementation
has 7 digits after the decimal point, which downrates the calls.
Fixes: #597
- ### dsp.c: Fix and improve potentially inaccurate log message.
Author: Naveen Albert
Date: 2024-02-09
If ast_dsp_process is called with a codec besides slin, ulaw,
or alaw, a warning is logged that in-band DTMF is not supported,
but this message is not always appropriate or correct, because
ast_dsp_process is much more generic than just DTMF detection.
This logs a more generic message in those cases, and also improves
codec-mismatch logging throughout dsp.c by ensuring incompatible
codecs are printed out.
Resolves: #595
- ### pjsip show channelstats: Prevent possible segfault when faxing
Author: George Joseph
Date: 2024-02-09
Under rare circumstances, it's possible for the original audio
session in the active_media_state default_session to be corrupted
instead of removed when switching to the t38/image media session
during fax negotiation. This can cause a segfault when a "pjsip
show channelstats" attempts to print that audio media session's
rtp statistics. In these cases, the active_media_state
topology is correctly showing only a single t38/image stream
so we now check that there's an audio stream in the topology
before attempting to use the audio media session to get the rtp
statistics.
Resolves: #592
- ### Reduce startup/shutdown verbose logging
Author: George Joseph
Date: 2024-01-31
When started with a verbose level of 3, asterisk can emit over 1500
verbose message that serve no real purpose other than to fill up
logs. When asterisk shuts down, it emits another 1100 that are of
even less use. Since the testsuite runs asterisk with a verbose
level of 3, and asterisk starts and stops for every one of the 700+
tests, the number of log messages is staggering. Besides taking up
resources, it also makes it hard to debug failing tests.
This commit changes the log level for those verbose messages to 5
instead of 3 which reduces the number of log messages to only a
handful. Of course, NOTICE, WARNING and ERROR message are
unaffected.
There's also one other minor change...
ast_context_remove_extension_callerid2() logs a DEBUG message
instead of an ERROR if the extension you're deleting doesn't exist.
The pjsip_config_wizard calls that function to clean up the config
and has been triggering that annoying error message for years.
Resolves: #582
- ### configure: Rerun bootstrap on modern platform.
Author: Naveen Albert
Date: 2024-02-12
The last time configure was run, it was run on a system that
did not enable -std=gnu11 by default, which meant that the
restrict qualifier would not be recognized on certain platforms.
This regenerates the configure files from running bootstrap.sh,
so that these should be recognized on all supported platforms.
Resolves: #586
- ### Upgrade bundled pjproject to 2.14.
Author: Ben Ford
Date: 2024-02-05
Fixes: #406
UserNote: Bundled pjproject has been upgraded to 2.14. For more
information on what all is included in this change, check out the
pjproject Github page: https://github.com/pjsip/pjproject/releases
- ### app_speech_utils.c: Allow partial speech results.
Author: cmaj
Date: 2024-02-02
Adds 'p' option to SpeechBackground() application.
With this option, when the app timeout is reached,
whatever the backend speech engine collected will
be returned as if it were the final, full result.
(This works for engines that make partial results.)
Resolves: #572
UserNote: The SpeechBackground dialplan application now supports a 'p'
option that will return partial results from speech engines that
provide them when a timeout occurs.
- ### utils: Make behavior of ast_strsep* match strsep.
Author: Joshua C. Colp
Date: 2024-01-31
Given the scenario of passing an empty string to the
ast_strsep functions the functions would return NULL
instead of an empty string. This is counter to how
strsep itself works.
This change alters the behavior of the functions to
match that of strsep.
Fixes: #565
- ### app_chanspy: Add 'D' option for dual-channel audio
Author: Mike Bradeen
Date: 2024-01-31
Adds the 'D' option to app chanspy that causes the input and output
frames of the spied channel to be interleaved in the spy output frame.
This allows the input and output of the spied channel to be decoded
separately by the receiver.
If the 'o' option is also set, the 'D' option is ignored as the
audio being spied is inherently one direction.
Fixes: #569
UserNote: The ChanSpy application now accepts the 'D' option which
will interleave the spied audio within the outgoing frames. The
purpose of this is to allow the audio to be read as a Dual channel
stream with separate incoming and outgoing audio. Setting both the
'o' option and the 'D' option and results in the 'D' option being
ignored.
- ### app_if: Fix next priority calculation.
Author: Naveen Albert
Date: 2024-01-28
Commit fa3922a4d28860d415614347d9f06c233d2beb07 fixed
a branching issue but "overshoots" when calculating
the next priority. This fixes that; accompanying
test suite tests have also been extended.
Resolves: #560
- ### res_pjsip_t38.c: Permit IPv6 SDP connection addresses.
Author: Sean Bright
Date: 2024-01-29
The existing code prevented IPv6 addresses from being properly parsed.
Fixes #558
- ### BuildSystem: Bump autotools versions on OpenBSD.
Author: Brad Smith
Date: 2024-01-27
Bump up to the more commonly used and modern versions of
autoconf and automake.
- ### main/utils: Simplify the FreeBSD ast_get_tid() handling
Author: Brad Smith
Date: 2024-01-27
FreeBSD has had kernel threads for 20+ years.
- ### res_pjsip_session.c: Correctly format SDP connection addresses.
Author: Sean Bright
Date: 2024-01-27
Resolves a regression identified by @justinludwig involving the
rendering of IPv6 addresses in outgoing SDP.
Also updates `media_address` on PJSIP endpoints so that if we are able
to parse the configured value as an IP we store it in a format that we
can directly use later. Based on my reading of the code it appeared
that one could configure `media_address` as:
```
[foo]
type = endpoint
...
media_address = [2001:db8::]
```
And that value would be blindly copied into the outgoing SDP without
regard to its format.
Fixes #541
- ### rtp_engine.c: Correct sample rate typo for L16/44100.
Author: Sean Bright
Date: 2024-01-28
Fixes #555
- ### manager.c: Fix erroneous reloads in UpdateConfig.
Author: Naveen Albert
Date: 2024-01-25
Currently, a reload will always occur if the
Reload header is provided for the UpdateConfig
action. However, we should not be doing a reload
if the header value has a falsy value, per the
documentation, so this makes the reload behavior
consistent with the existing documentation.
Resolves: #551
- ### res_calendar_icalendar: Print iCalendar error on parsing failure.
Author: Naveen Albert
Date: 2023-12-14
If libical fails to parse a calendar, print the error message it provdes.
Resolves: #492
- ### app_confbridge: Don't emit warnings on valid configurations.
Author: Sean Bright
Date: 2024-01-21
The numeric bridge profile options `internal_sample_rate` and
`maximum_sample_rate` are documented to accept the special values
`auto` and `none`, respectively. While these values currently work,
they also emit warnings when used which could be confusing for users.
In passing, also ensure that we only accept the documented range of
sample rate values between 8000 and 192000.
Fixes #546
- ### app_voicemail: add NoOp alembic script to maintain sync
Author: Mike Bradeen
Date: 2024-01-17
Adding a NoOp alembic script for the voicemail database to maintain
version sync with other branches.
Fixes: #527
- ### chan_dahdi: Allow MWI to be manually toggled on channels.
Author: Naveen Albert
Date: 2023-11-10
This adds a CLI command to manually toggle the MWI status
of a channel, useful for troubleshooting or resetting
MWI devices, similar to the capabilities offered with
SIP messaging to manually control MWI status.
UserNote: The 'dahdi set mwi' now allows MWI on channels
to be manually toggled if needed for troubleshooting.
Resolves: #440
- ### chan_rtp.c: MulticastRTP missing refcount without codec option
Author: PeterHolik
Date: 2024-01-15
Fixes: #529
- ### chan_rtp.c: Change MulticastRTP nameing to avoid memory leak
Author: PeterHolik
Date: 2024-01-16
Fixes: asterisk#536
- ### func_frame_trace: Add CLI command to dump frame queue.
Author: Naveen Albert
Date: 2024-01-12
This adds a simple CLI command that can be used for
analyzing all frames currently queued to a channel.
A couple log messages are also adjusted to be more
useful in tracing bridging problems.
Resolves: #533

View File

@@ -1,845 +0,0 @@
## Change Log for Release asterisk-20.8.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.8.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.7.0...20.8.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.8.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 44
- Commit Authors: 15
- Issues Resolved: 26
- Security Advisories Resolved: 0
### User Notes:
- #### res_pjsip_logger: Preserve logging state on reloads.
Issuing "pjsip reload" will no longer disable
logging if it was previously enabled from the CLI.
- #### loader.c: Allow dependent modules to be unloaded recursively.
In certain circumstances, modules with dependency relations
can have their dependents automatically recursively unloaded and loaded
again using the "module refresh" CLI command or the ModuleLoad AMI command.
- #### tcptls/iostream: Add support for setting SNI on client TLS connections
Secure websocket client connections now send SNI in
the TLS client hello.
- #### res_pjsip_endpoint_identifier_ip: Add endpoint identifier transport address.
set identify_by=transport for the pjsip endpoint. Then
use the existing 'match' option and the new 'transport' option of
the identify.
Fixes: #672
- #### res_pjsip_endpoint_identifier_ip: Endpoint identifier request URI
this new feature let users match endpoints based on the
indound SIP requests' URI. To do so, add 'request_uri' to the
endpoint's 'identify_by' option. The 'match_request_uri' option of
the identify can be an exact match for the entire request uri, or a
regular expression (between slashes). It's quite similar to the
header identifer.
Fixes: #599
- #### res_pjsip_refer.c: Allow GET_TRANSFERRER_DATA
the GET_TRANSFERRER_DATA dialplan variable can now be used also in pjsip.
- #### manager.c: Add new parameter 'PreDialGoSub' to Originate AMI action
When using the Originate AMI Action, we now can pass the PreDialGoSub parameter, instructing the asterisk to perform an subrouting at channel before call start. With this parameter an call initiated by AMI can request the channel to start the call automaticaly, adding a SIP header to using GoSUB, instructing to autoanswer the channel, and proceeding the outbuound extension executing. Exemple of an context to perform the previus indication:
[addautoanswer]
exten => _s,1,Set(PJSIP_HEADER(add,Call-Info)=answer-after=0)
exten => _s,n,Set(PJSIP_HEADER(add,Alert-Info)=answer-after=0)
exten => _s,n,Return()
- #### manager.c: Add CLI command to kick AMI sessions.
The "manager kick session" CLI command now
allows kicking a specified AMI session.
- #### chan_dahdi: Allow specifying waitfordialtone per call.
"waitfordialtone" may now be specified for DAHDI
trunk channels on a per-call basis using the CHANNEL function.
- #### Upgrade bundled pjproject to 2.14.1
Bundled pjproject has been upgraded to 2.14.1. For more
information visit pjproject Github page: https://github.com/pjsip/pjproject/releases/tag/2.14.1
### Upgrade Notes:
- #### pbx_variables.c: Prevent SEGV due to stack overflow.
The maximum amount of dialplan recursion
using variable substitution (such as by using EVAL_EXTEN)
is capped at 15.
### Commit Authors:
- Fabrice Fontaine: (1)
- George Joseph: (8)
- Henrik Liljedahl: (1)
- Holger Hans Peter Freyther: (1)
- Ivan Poddubny: (2)
- Jonatascalebe: (1)
- Joshua Elson: (1)
- Martin Nystroem: (1)
- Martin Tomec: (1)
- Maximilian Fridrich: (1)
- Naveen Albert: (14)
- Sean Bright: (8)
- Sperl Viktor: (2)
- Spiridonov Dmitry: (1)
- Stanislav Abramenkov: (1)
## Issue and Commit Detail:
### Closed Issues:
- 246: [bug]: res_pjsip_logger: Reload disables logging
- 472: [new-feature]: chan_dahdi: Allow waitfordialtone to be specified per call
- 474: [new-feature]: loader.c: Allow dependent modules to be unloaded automatically
- 480: [improvement]: pbx_variables.c: Prevent infinite recursion and stack overflow with variable expansion
- 485: [new-feature]: manager.c: Allow kicking specific manager sessions
- 525: [bug]: say.c: Money announcements off by one cent due to floating point rounding
- 579: [improvement]: Allow GET_TRANSFERRER_DATA for pjsip
- 599: [improvement]: Endpoint identifier request line
- 611: [bug]: res_pjsip_session: Polling on non-existing file descriptors when stream is removed
- 624: [bug]: Park() application does not continue execution if lot is full
- 642: [bug]: Prometheus bridge metrics contains duplicate entries and help
- 666: [improvement]: ARI debug should contain endpoint and method
- 669: [bug]: chan_dahdi: Tens or hundreds of thousands of channel opens attempted during restart
- 672: [improvement]: Endpoint identifier transport
- 673: [new-feature]: chan_dahdi: Add AMI action to show spans
- 676: [bug]: res_stir_shaken implicit declaration of function errors/warnings
- 681: [new-feature]: callerid.c: Parse all received parameters
- 683: [improvement]: func_callerid: Warn if invalid redirecting reason is set
- 689: [bug] Document the `Events` argument of the `Login` AMI action
- 696: [bug]: Unexpected control subclass '14'
- 713: [bug]: SNI isn't being set on websocket client connections
- 716: [bug]: Memory leak in res_stir_shaken tn_config, plus a few other issues
- 719: [bug]: segfault on start if compiled with DETECT_DEADLOCKS
- 721: [improvement]: logger: Add unique verbose prefixes for higher verbose levels
- 729: [bug]: Build failure with uclibc-ng
- ASTERISK-29912: res_pjsip: module reload disables logging
### Commits By Author:
- ### Fabrice Fontaine (1):
- res/stasis/control.c: include signal.h
- ### George Joseph (8):
- Fix incorrect application and function documentation references
- res_stir_shaken: Fix compilation for CentOS7 (openssl 1.0.2)
- manager.c: Add missing parameters to Login documentation
- rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
- logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
- make_buildopts_h: Always include DETECT_DEADLOCKS
- stir_shaken: Fix memory leak, typo in config, tn canonicalization
- tcptls/iostream: Add support for setting SNI on client TLS connections
- ### Henrik Liljedahl (1):
- res_pjsip_sdp_rtp.c: Initial RTP inactivity check must consider the rtp_timeou..
- ### Holger Hans Peter Freyther (1):
- res_prometheus: Fix duplicate output of metric and help text
- ### Ivan Poddubny (2):
- asterisk.c: Fix sending incorrect messages to systemd notify
- configs: Fix a misleading IPv6 ACL example in Named ACLs
- ### Joshua Elson (1):
- Implement Configurable TCP Keepalive Settings in PJSIP Transports
- ### Martin Nystroem (1):
- res_ari.c: Add additional output to ARI requests when debug is enabled
- ### Martin Tomec (1):
- res_pjsip_refer.c: Allow GET_TRANSFERRER_DATA
- ### Maximilian Fridrich (1):
- res_pjsip_session: Reset pending_media_state->read_callbacks
- ### Naveen Albert (14):
- res_parking: Fail gracefully if parking lot is full.
- chan_dahdi: Allow specifying waitfordialtone per call.
- manager.c: Add CLI command to kick AMI sessions.
- pbx_variables.c: Prevent SEGV due to stack overflow.
- menuselect: Minor cosmetic fixes.
- chan_dahdi: Don't retry opening nonexistent channels on restart.
- chan_dahdi: Add DAHDIShowStatus AMI action.
- func_callerid: Emit warning if invalid redirecting reason set.
- file.c, channel.c: Don't emit warnings if progress received.
- callerid.c: Parse previously ignored Caller ID parameters.
- loader.c: Allow dependent modules to be unloaded recursively.
- say.c: Fix cents off-by-one due to floating point rounding.
- logger: Add unique verbose prefixes for levels 5-10.
- res_pjsip_logger: Preserve logging state on reloads.
- ### Sean Bright (8):
- res_monitor.c: Don't emit a warning about 'X' being unrecognized.
- alembic: Quote new MySQL keyword 'qualify.'
- res_pjsip: Fix alembic downgrade for boolean columns.
- res_config_mysql.c: Support hostnames up to 255 bytes.
- alembic: Fix compatibility with SQLAlchemy 2.0+.
- cli.c: `core show channels concise` is not really deprecated.
- alembic: Correct NULLability of PJSIP id columns.
- app_queue.c: Properly handle invalid strategies from realtime.
- ### Sperl Viktor (2):
- res_pjsip_endpoint_identifier_ip: Endpoint identifier request URI
- res_pjsip_endpoint_identifier_ip: Add endpoint identifier transport address.
- ### Spiridonov Dmitry (1):
- sorcery.c: Fixed crash error when executing "module reload"
- ### Stanislav Abramenkov (1):
- Upgrade bundled pjproject to 2.14.1
- ### jonatascalebe (1):
- manager.c: Add new parameter 'PreDialGoSub' to Originate AMI action
### Commit List:
- configs: Fix a misleading IPv6 ACL example in Named ACLs
- asterisk.c: Fix sending incorrect messages to systemd notify
- res/stasis/control.c: include signal.h
- res_pjsip_logger: Preserve logging state on reloads.
- logger: Add unique verbose prefixes for levels 5-10.
- say.c: Fix cents off-by-one due to floating point rounding.
- loader.c: Allow dependent modules to be unloaded recursively.
- tcptls/iostream: Add support for setting SNI on client TLS connections
- stir_shaken: Fix memory leak, typo in config, tn canonicalization
- make_buildopts_h: Always include DETECT_DEADLOCKS
- sorcery.c: Fixed crash error when executing "module reload"
- callerid.c: Parse previously ignored Caller ID parameters.
- logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
- app_queue.c: Properly handle invalid strategies from realtime.
- file.c, channel.c: Don't emit warnings if progress received.
- alembic: Correct NULLability of PJSIP id columns.
- rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
- manager.c: Add missing parameters to Login documentation
- func_callerid: Emit warning if invalid redirecting reason set.
- chan_dahdi: Add DAHDIShowStatus AMI action.
- res_pjsip_endpoint_identifier_ip: Add endpoint identifier transport address.
- res_stir_shaken: Fix compilation for CentOS7 (openssl 1.0.2)
- Fix incorrect application and function documentation references
- cli.c: `core show channels concise` is not really deprecated.
- res_pjsip_endpoint_identifier_ip: Endpoint identifier request URI
- chan_dahdi: Don't retry opening nonexistent channels on restart.
- Implement Configurable TCP Keepalive Settings in PJSIP Transports
- res_pjsip_refer.c: Allow GET_TRANSFERRER_DATA
- res_ari.c: Add additional output to ARI requests when debug is enabled
- alembic: Fix compatibility with SQLAlchemy 2.0+.
- manager.c: Add new parameter 'PreDialGoSub' to Originate AMI action
- menuselect: Minor cosmetic fixes.
- pbx_variables.c: Prevent SEGV due to stack overflow.
- res_prometheus: Fix duplicate output of metric and help text
- manager.c: Add CLI command to kick AMI sessions.
- chan_dahdi: Allow specifying waitfordialtone per call.
- res_parking: Fail gracefully if parking lot is full.
- res_config_mysql.c: Support hostnames up to 255 bytes.
- res_pjsip: Fix alembic downgrade for boolean columns.
- Upgrade bundled pjproject to 2.14.1
- alembic: Quote new MySQL keyword 'qualify.'
- res_pjsip_session: Reset pending_media_state->read_callbacks
- res_monitor.c: Don't emit a warning about 'X' being unrecognized.
### Commit Details:
#### configs: Fix a misleading IPv6 ACL example in Named ACLs
Author: Ivan Poddubny
Date: 2024-05-05
"deny=::" is equivalent to "::/128".
In order to mean "deny everything by default" it must be "::/0".
#### asterisk.c: Fix sending incorrect messages to systemd notify
Author: Ivan Poddubny
Date: 2024-05-05
Send "RELOADING=1" instead of "RELOAD=1" to follow the format
expected by systemd (see sd_notify(3) man page).
Do not send STOPPING=1 in remote console mode:
attempting to execute "asterisk -rx" by the main process leads to
a warning if NotifyAccess=main (the default) or to a forced termination
if NotifyAccess=all.
#### res/stasis/control.c: include signal.h
Author: Fabrice Fontaine
Date: 2024-05-01
Include signal.h to avoid the following build failure with uclibc-ng
raised since
https://github.com/asterisk/asterisk/commit/2694792e13c7f3ab1911c4a69fba0df32c544177:
stasis/control.c: In function 'exec_command_on_condition':
stasis/control.c:313:3: warning: implicit declaration of function 'pthread_kill'; did you mean 'pthread_yield'? [-Wimplicit-function-declaration]
313 | pthread_kill(control->control_thread, SIGURG);
| ^~~~~~~~~~~~
| pthread_yield
stasis/control.c:313:41: error: 'SIGURG' undeclared (first use in this function)
313 | pthread_kill(control->control_thread, SIGURG);
| ^~~~~~
cherry-pick-to: 18
cherry-pick-to: 20
cherry-pick-to: 21
Fixes: #729
#### res_pjsip_logger: Preserve logging state on reloads.
Author: Naveen Albert
Date: 2023-08-09
Currently, reloading res_pjsip will cause logging
to be disabled. This is because logging can also
be controlled via the debug option in pjsip.conf
and this defaults to "no".
To improve this, logging is no longer disabled on
reloads if logging had not been previously
enabled using the debug option from the config.
This ensures that logging enabled from the CLI
will persist through a reload.
ASTERISK-29912 #close
Resolves: #246
UserNote: Issuing "pjsip reload" will no longer disable
logging if it was previously enabled from the CLI.
#### logger: Add unique verbose prefixes for levels 5-10.
Author: Naveen Albert
Date: 2024-04-27
Add unique verbose prefixes for levels higher than 4, so
that these can be visually differentiated from each other.
Resolves: #721
#### say.c: Fix cents off-by-one due to floating point rounding.
Author: Naveen Albert
Date: 2024-01-10
Some of the money announcements can be off by one cent,
due to the use of floating point in the money calculations,
which is bad for obvious reasons.
This replaces floating point with simple string parsing
to ensure the cents value is converted accurately.
Resolves: #525
#### loader.c: Allow dependent modules to be unloaded recursively.
Author: Naveen Albert
Date: 2023-12-02
Because of the (often recursive) nature of module dependencies in
Asterisk, hot swapping a module on the fly is cumbersome if a module
is depended on by other modules. Currently, dependencies must be
popped manually by unloading dependents, unloading the module of
interest, and then loading modules again in reverse order.
To make this easier, the ability to do this recursively in certain
circumstances has been added, as an optional extension to the
"module refresh" command. If requested, Asterisk will check if a module
that has a positive usecount could be unloaded safely if anything
recursively dependent on it were unloaded. If so, it will go ahead
and unload all these modules and load them back again. This makes
hot swapping modules that provide dependencies much easier.
Resolves: #474
UserNote: In certain circumstances, modules with dependency relations
can have their dependents automatically recursively unloaded and loaded
again using the "module refresh" CLI command or the ModuleLoad AMI command.
#### res_pjsip_sdp_rtp.c: Initial RTP inactivity check must consider the rtp_timeou..
Author: Henrik Liljedahl
Date: 2024-04-11
First rtp activity check was performed after 500ms regardless of the rtp_timeout setting. Having a call in ringing state for more than rtp_timeout and the first rtp package is received more than 500ms after sdp negotiation and before the rtp_timeout, erronously caused the call to be hungup. Changed to perform the first rtp inactivity check after the timeout setting preventing calls to be disconnected before the rtp_timeout has elapsed since sdp negotiation.
Fixes #710
#### tcptls/iostream: Add support for setting SNI on client TLS connections
Author: George Joseph
Date: 2024-04-23
If the hostname field of the ast_tcptls_session_args structure is
set (which it is for websocket client connections), that hostname
will now automatically be used in an SNI TLS extension in the client
hello.
Resolves: #713
UserNote: Secure websocket client connections now send SNI in
the TLS client hello.
#### stir_shaken: Fix memory leak, typo in config, tn canonicalization
Author: George Joseph
Date: 2024-04-25
* Fixed possible memory leak in tn_config:tn_get_etn() where we
weren't releasing etn if tn or eprofile were null.
* We now canonicalize TNs before using them for lookups or adding
them to Identity headers.
* Fixed a typo in stir_shaken.conf.sample.
Resolves: #716
#### make_buildopts_h: Always include DETECT_DEADLOCKS
Author: George Joseph
Date: 2024-04-27
Since DETECT_DEADLOCKS is now split from DEBUG_THREADS, it must
always be included in buildopts.h instead of only when
ADD_CFLAGS_TO_BUILDOPTS_H is defined. A SEGV will result otherwise.
Resolves: #719
#### sorcery.c: Fixed crash error when executing "module reload"
Author: Spiridonov Dmitry
Date: 2024-04-14
Fixed crash error when cli "module reload". The error appears when
compiling with res_prometheus and using the sorcery memory cache for
registrations
#### callerid.c: Parse previously ignored Caller ID parameters.
Author: Naveen Albert
Date: 2024-04-01
Commit f2f397c1a8cc48913434ebb297f0ff50d96993db previously
made it possible to send Caller ID parameters to FXS stations
which, prior to that, could not be sent.
This change is complementary in that we now handle receiving
all these parameters on FXO lines and provide these up to
the dialplan, via chan_dahdi. In particular:
* If a redirecting reason is provided, the channel's redirecting
reason is set. No redirecting number is set, since there is
no parameter for this in the Caller ID protocol, but the reason
can be checked to determine if and why a call was forwarded.
* If the Call Qualifier parameter is received, the Call Qualifier
variable is set.
* Some comments have been added to explain why some of the code
is the way it is, to assist other people looking at it.
With this change, Asterisk's Caller ID implementation is now
reasonably complete for both FXS and FXO operation.
Resolves: #681
#### logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
Author: George Joseph
Date: 2024-04-09
If you're tracing a large function that may call another function
multiple times in different circumstances, it can be difficult to
see from the trace output exactly which location that function
was called from. There's no good way to automatically determine
the calling location. SCOPE_CALL and SCOPE_CALL_WITH_RESULT
simply print out a trace line before and after the call.
The difference between SCOPE_CALL and SCOPE_CALL_WITH_RESULT is
that SCOPE_CALL ignores the function's return value (if any) where
SCOPE_CALL_WITH_RESULT allows you to specify the type of the
function's return value so it can be assigned to a variable.
SCOPE_CALL_WITH_INT_RESULT is just a wrapper for SCOPE_CALL_WITH_RESULT
and the "int" return type.
#### app_queue.c: Properly handle invalid strategies from realtime.
Author: Sean Bright
Date: 2024-04-13
The existing code sets the queue strategy to `ringall` but it is then
immediately overwritten with an invalid one.
Fixes #707
#### file.c, channel.c: Don't emit warnings if progress received.
Author: Naveen Albert
Date: 2024-04-09
Silently ignore AST_CONTROL_PROGRESS where appropriate,
as most control frames already are.
Resolves: #696
#### alembic: Correct NULLability of PJSIP id columns.
Author: Sean Bright
Date: 2024-04-06
Fixes #695
#### rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
Author: George Joseph
Date: 2024-04-02
rtp_engine.c and stun.c were calling ast_register_cleanup which
is skipped if any loadable module can't be cleanly unloaded
when asterisk shuts down. Since this will always be the case,
their cleanup functions never get run. In a practical sense
this makes no difference since asterisk is shutting down but if
you're in development mode and trying to use the leak sanitizer,
the leaks from both of those modules clutter up the output.
#### manager.c: Add missing parameters to Login documentation
Author: George Joseph
Date: 2024-04-03
* Added the AuthType and Key parameters for MD5 authentication.
* Added the Events parameter.
Resolves: #689
#### func_callerid: Emit warning if invalid redirecting reason set.
Author: Naveen Albert
Date: 2024-04-01
Emit a warning if REDIRECTING(reason) is set to an invalid
reason, consistent with what happens when
REDIRECTING(orig-reason) is set to an invalid reason.
Resolves: #683
#### chan_dahdi: Add DAHDIShowStatus AMI action.
Author: Naveen Albert
Date: 2024-03-29
* Add an AMI action to correspond to the "dahdi show status"
command, allowing span information to be retrieved via AMI.
* Show span number and sig type in "dahdi show channels".
Resolves: #673
#### res_pjsip_endpoint_identifier_ip: Add endpoint identifier transport address.
Author: Sperl Viktor
Date: 2024-03-28
Add a new identify_by option to res_pjsip_endpoint_identifier_ip
called 'transport' this matches endpoints based on the bound
ip address (local) instead of the 'ip' option, which matches on
the source ip address (remote).
UserNote: set identify_by=transport for the pjsip endpoint. Then
use the existing 'match' option and the new 'transport' option of
the identify.
Fixes: #672
#### res_stir_shaken: Fix compilation for CentOS7 (openssl 1.0.2)
Author: George Joseph
Date: 2024-04-01
* OpenSSL 1.0.2 doesn't support X509_get0_pubkey so we now use
X509_get_pubkey. The difference is that X509_get_pubkey requires
the caller to free the EVP_PKEY themselves so we now let
RAII_VAR do that.
* OpenSSL 1.0.2 doesn't support upreffing an X509_STORE so we now
wrap it in an ao2 object.
* OpenSSL 1.0.2 doesn't support X509_STORE_get0_objects to get all
the certs from an X509_STORE and there's no easy way to polyfill
it so the CLI commands that list profiles will show a "not
supported" message instead of listing the certs in a store.
Resolves: #676
#### Fix incorrect application and function documentation references
Author: George Joseph
Date: 2024-04-01
There were a few references in the embedded documentation XML
where the case didn't match or where the referenced app or function
simply didn't exist any more. These were causing 404 responses
in docs.asterisk.org.
#### cli.c: `core show channels concise` is not really deprecated.
Author: Sean Bright
Date: 2024-04-01
Fixes #675
#### res_pjsip_endpoint_identifier_ip: Endpoint identifier request URI
Author: Sperl Viktor
Date: 2024-03-28
Add ability to match against PJSIP request URI.
UserNote: this new feature let users match endpoints based on the
indound SIP requests' URI. To do so, add 'request_uri' to the
endpoint's 'identify_by' option. The 'match_request_uri' option of
the identify can be an exact match for the entire request uri, or a
regular expression (between slashes). It's quite similar to the
header identifer.
Fixes: #599
#### chan_dahdi: Don't retry opening nonexistent channels on restart.
Author: Naveen Albert
Date: 2024-03-26
Commit 729cb1d390b136ccc696430aa5c68d60ea4028be added logic to retry
opening DAHDI channels on "dahdi restart" if they failed initially,
up to 1,000 times in a loop, to address cases where the channel was
still in use. However, this retry loop does not use the actual error,
which means chan_dahdi will also retry opening nonexistent channels
1,000 times per channel, causing a flood of unnecessary warning logs
for an operation that will never succeed, with tens or hundreds of
thousands of open attempts being made.
The original patch would have been more targeted if it only retried
on the specific relevant error (likely EBUSY, although it's hard to
say since the original issue is no longer available).
To avoid the problem above while avoiding the possibility of breakage,
this skips the retry logic if the error is ENXIO (No such device or
address), since this will never succeed.
Resolves: #669
#### Implement Configurable TCP Keepalive Settings in PJSIP Transports
Author: Joshua Elson
Date: 2024-03-18
This commit introduces configurable TCP keepalive settings for both TCP and TLS transports. The changes allow for finer control over TCP connection keepalives, enhancing stability and reliability in environments prone to connection timeouts or where intermediate devices may prematurely close idle connections. This has proven necessary and has already been tested in production in several specialized environments where access to the underlying transport is unreliable in ways invisible to the operating system directly, so these keepalive and timeout mechanisms are necessary.
Fixes #657
#### res_pjsip_refer.c: Allow GET_TRANSFERRER_DATA
Author: Martin Tomec
Date: 2024-02-06
There was functionality in chan_sip to get REFER headers, with GET_TRANSFERRER_DATA variable. This commit implements the same functionality in pjsip, to ease transfer from chan_sip to pjsip.
Fixes: #579
UserNote: the GET_TRANSFERRER_DATA dialplan variable can now be used also in pjsip.
#### res_ari.c: Add additional output to ARI requests when debug is enabled
Author: Martin Nystroem
Date: 2024-03-22
When ARI debug is enabled the logs will now output http method and the uri.
Fixes: #666
#### alembic: Fix compatibility with SQLAlchemy 2.0+.
Author: Sean Bright
Date: 2024-03-20
SQLAlchemy 2.0 changed the way that commits/rollbacks are handled
causing the final `UPDATE` to our `alembic_version_<whatever>` tables
to be rolled back instead of committed.
We now use one connection to determine which
`alembic_version_<whatever>` table to use and another to run the
actual migrations. This prevents the erroneous rollback.
This change is compatible with both SQLAlchemy 1.4 and 2.0.
#### manager.c: Add new parameter 'PreDialGoSub' to Originate AMI action
Author: jonatascalebe
Date: 2024-03-14
manager.c: Add new parameter 'PreDialGoSub' to Originate AMI action
The action originate does not has the ability to run an subroutine at initial channel, like the Aplication Originate. This update give this ability for de action originate too.
For example, we can run a routine via Gosub on the channel to request an automatic answer, so the caller does not need to accept the call when using the originate command via manager, making the operation more efficient.
UserNote: When using the Originate AMI Action, we now can pass the PreDialGoSub parameter, instructing the asterisk to perform an subrouting at channel before call start. With this parameter an call initiated by AMI can request the channel to start the call automaticaly, adding a SIP header to using GoSUB, instructing to autoanswer the channel, and proceeding the outbuound extension executing. Exemple of an context to perform the previus indication:
[addautoanswer]
exten => _s,1,Set(PJSIP_HEADER(add,Call-Info)=answer-after=0)
exten => _s,n,Set(PJSIP_HEADER(add,Alert-Info)=answer-after=0)
exten => _s,n,Return()
#### menuselect: Minor cosmetic fixes.
Author: Naveen Albert
Date: 2024-03-21
Improve some of the formatting from
dd3f17c699e320d6d30c94298d8db49573ba28da
(#521).
#### pbx_variables.c: Prevent SEGV due to stack overflow.
Author: Naveen Albert
Date: 2023-12-04
It is possible for dialplan to result in an infinite
recursion of variable substitution, which eventually
leads to stack overflow. If we detect this, abort
substitution and log an error for the user to fix
the broken dialplan.
Resolves: #480
UpgradeNote: The maximum amount of dialplan recursion
using variable substitution (such as by using EVAL_EXTEN)
is capped at 15.
#### res_prometheus: Fix duplicate output of metric and help text
Author: Holger Hans Peter Freyther
Date: 2024-02-24
The prometheus exposition format requires each line to be unique[1].
This is handled by struct prometheus_metric having a list of children
that is managed when registering a metric. In case the scrape callback
is used, it is the responsibility of the implementation to handle this
correctly.
Originally the bridge callback didn't handle NULL snapshots, the crash
fix lead to NULL metrics, and fixing that lead to duplicates.
The original code assumed that snapshots are not NULL and then relied on
"if (i > 0)" to establish the parent/children relationship between
metrics of the same class. This is not workerable as the first bridge
might be invisible/lacks a snapshot.
Fix this by keeping a separate array of the first metric by class.
Instead of relying on the index of the bridge, check whether the array
has an entry. Use that array for the output.
Add a test case that verifies that the help text is not duplicated.
Resolves: #642
[1] https://prometheus.io/docs/instrumenting/exposition_formats/#grouping-and-sorting
#### manager.c: Add CLI command to kick AMI sessions.
Author: Naveen Albert
Date: 2023-12-06
This adds a CLI command that can be used to manually
kick specific AMI sessions.
Resolves: #485
UserNote: The "manager kick session" CLI command now
allows kicking a specified AMI session.
#### chan_dahdi: Allow specifying waitfordialtone per call.
Author: Naveen Albert
Date: 2023-12-02
The existing "waitfordialtone" setting in chan_dahdi.conf
applies permanently to a specific channel, regardless of
how it is being used. This rather restrictively prevents
a system from simultaneously being able to pick free lines
for outgoing calls while also allowing barge-in to a trunk
by some other arrangement.
This allows specifying "waitfordialtone" using the CHANNEL
function for only the next call that will be placed, allowing
significantly more flexibility in the use of trunk interfaces.
Resolves: #472
UserNote: "waitfordialtone" may now be specified for DAHDI
trunk channels on a per-call basis using the CHANNEL function.
#### res_parking: Fail gracefully if parking lot is full.
Author: Naveen Albert
Date: 2024-03-03
Currently, if a parking lot is full, bridge setup returns -1,
causing dialplan execution to terminate without TryExec.
However, such failures should be handled more gracefully,
the same way they are on other paths, as indicated by the
module's author, here:
http://lists.digium.com/pipermail/asterisk-dev/2018-December/077144.html
Now, callers will hear the parking failure announcement, and dialplan
will continue, which is consistent with existing failure modes.
Resolves: #624
#### res_config_mysql.c: Support hostnames up to 255 bytes.
Author: Sean Bright
Date: 2024-03-18
Fixes #654
#### res_pjsip: Fix alembic downgrade for boolean columns.
Author: Sean Bright
Date: 2024-03-18
When downgrading, ensure that we don't touch columns that didn't
actually change during upgrade.
#### Upgrade bundled pjproject to 2.14.1
Author: Stanislav Abramenkov
Date: 2024-03-12
Fixes: asterisk#648
UserNote: Bundled pjproject has been upgraded to 2.14.1. For more
information visit pjproject Github page: https://github.com/pjsip/pjproject/releases/tag/2.14.1
#### alembic: Quote new MySQL keyword 'qualify.'
Author: Sean Bright
Date: 2024-03-15
Fixes #651
#### res_pjsip_session: Reset pending_media_state->read_callbacks
Author: Maximilian Fridrich
Date: 2024-02-15
In handle_negotiated_sdp the pending_media_state->read_callbacks must be
reset before they are added in the SDP handlers in
handle_negotiated_sdp_session_media. Otherwise, old callbacks for
removed streams and file descriptors could be added to the channel and
Asterisk would poll on non-existing file descriptors.
Resolves: #611
#### res_monitor.c: Don't emit a warning about 'X' being unrecognized.
Author: Sean Bright
Date: 2024-03-07
Code was added in 030f7d41 to warn if an unrecognized option was
passed to an application, but code in Monitor was taking advantage of
the fact that the application would silently accept an invalid option.
We now recognize the invalid option but we don't do anything if it's
set.
Fixes #639

View File

@@ -1,53 +0,0 @@
## Change Log for Release asterisk-20.8.1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.8.1.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.8.0...20.8.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.8.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-qqxj-v78h-hrf9](https://github.com/asterisk/asterisk/security/advisories/GHSA-qqxj-v78h-hrf9): res_pjsip_endpoint_identifier_ip: wrongly matches ALL unauthorized SIP requests
### User Notes:
### Upgrade Notes:
### Commit Authors:
- George Joseph: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-qqxj-v78h-hrf9: res_pjsip_endpoint_identifier_ip: wrongly matches ALL unauthorized SIP requests
### Commits By Author:
- ### George Joseph (1):
- Revert "res_pjsip_endpoint_identifier_ip: Add endpoint identifier transport ad..
### Commit List:
### Commit Details:
#### Revert "res_pjsip_endpoint_identifier_ip: Add endpoint identifier transport ad..
Author: George Joseph
Date: 2024-05-17
This reverts PR #602
Resolves: #GHSA-qqxj-v78h-hrf9

View File

@@ -1,461 +0,0 @@
## Change Log for Release asterisk-20.9.0
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.9.0.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.8.1...20.9.0)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.9.0.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 20
- Commit Authors: 9
- Issues Resolved: 8
- Security Advisories Resolved: 0
### User Notes:
- #### app_voicemail_odbc: Allow audio to be kept on disk
This commit adds a new voicemail.conf option
'odbc_audio_on_disk' which when set causes the ODBC variant of
app_voicemail_odbc to leave the message and greeting audio files
on disk and only store the message metadata in the database.
Much more information can be found in the voicemail.conf.sample
file.
- #### app_queue: Add option to not log Restricted Caller ID to queue_log
Add a Queue option log-restricted-caller-id to control whether the Restricted Caller ID
will be stored in the queue log.
If log-restricted-caller-id=no then the Caller ID will be stripped if the Caller ID is restricted.
- #### pbx.c: expand fields width of "core show hints"
The fields width of "core show hints" were increased.
The width of "extension" field to 30 characters and
the width of the "device state id" field to 60 characters.
- #### rtp_engine: add support for multirate RFC2833 digits
No change in configuration is required in order to enable this
feature. Endpoints configured to use RFC2833 will automatically have this
enabled. If the endpoint does not support this, it should not include it in
the SDP offer/response.
Resolves: #699
### Upgrade Notes:
- #### app_queue: Add option to not log Restricted Caller ID to queue_log
Add a new column to the queues table:
queue_log_option_log_restricted ENUM('0','1','off','on','false','true','no','yes')
to control whether the Restricted Caller ID will be stored in the queue log.
### Commit Authors:
- Alexei Gradinari: (2)
- Bastian Triller: (1)
- Chrsmj: (1)
- George Joseph: (4)
- Igor Goncharovsky: (1)
- Mike Bradeen: (2)
- Sean Bright: (7)
- Tinet-Mucw: (1)
- Walter Doekes: (1)
## Issue and Commit Detail:
### Closed Issues:
- 699: [improvement]: Add support for multi-rate DTMF
- 736: [bug]: Seg fault on CLI after PostgreSQL CDR module fails to load for a second time
- 765: [improvement]: Add option to not log Restricted Caller ID to queue_log
- 770: [improvement]: pbx.c: expand fields width of "core show hints"
- 776: [bug] DTMF broken after rtp_engine: add support for multirate RFC2833 digits commit
- 783: [bug]: Under certain circumstances a channel snapshot can get orphaned in the cache
- 789: [bug]: Mediasec headers aren't sent on outgoing INVITEs
- 797: [bug]:
### Commits By Author:
- ### Alexei Gradinari (2):
- pbx.c: expand fields width of "core show hints"
- app_queue: Add option to not log Restricted Caller ID to queue_log
- ### Bastian Triller (1):
- cli: Show configured cache dir
- ### George Joseph (4):
- app_voicemail_odbc: Allow audio to be kept on disk
- stasis_channels: Use uniqueid and name to delete old snapshots
- security_agreement.c: Always add the Require and Proxy-Require headers
- ast-db-manage: Remove duplicate enum creation
- ### Igor Goncharovsky (1):
- res_pjsip_path.c: Fix path when dialing using PJSIP_DIAL_CONTACTS()
- ### Mike Bradeen (2):
- rtp_engine: add support for multirate RFC2833 digits
- res_pjsip_sdp_rtp: Add support for default/mismatched 8K RFC 4733/2833 digits
- ### Sean Bright (7):
- file.h: Rename function argument to avoid C++ keyword clash.
- bundled_pjproject: Disable UPnP support.
- asterisk.c: Don't log an error if .asterisk_history does not exist.
- xml.c: Update deprecated libxml2 API usage.
- manager.c: Properly terminate `CoreShowChannelMap` event.
- pjsip: Add PJSIP_PARSE_URI_FROM dialplan function.
- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
- ### Tinet-mucw (1):
- bridge_basic.c: Make sure that ast_bridge_channel is not destroyed while itera..
- ### Walter Doekes (1):
- chan_ooh323: Fix R/0 typo in docs
- ### chrsmj (1):
- cdr_pgsql: Fix crash when the module fails to load multiple times.
### Commit List:
- res_pjsip_path.c: Fix path when dialing using PJSIP_DIAL_CONTACTS()
- res_pjsip_sdp_rtp: Add support for default/mismatched 8K RFC 4733/2833 digits
- ast-db-manage: Remove duplicate enum creation
- security_agreement.c: Always add the Require and Proxy-Require headers
- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
- stasis_channels: Use uniqueid and name to delete old snapshots
- app_voicemail_odbc: Allow audio to be kept on disk
- app_queue: Add option to not log Restricted Caller ID to queue_log
- pbx.c: expand fields width of "core show hints"
- pjsip: Add PJSIP_PARSE_URI_FROM dialplan function.
- manager.c: Properly terminate `CoreShowChannelMap` event.
- cli: Show configured cache dir
- xml.c: Update deprecated libxml2 API usage.
- cdr_pgsql: Fix crash when the module fails to load multiple times.
- asterisk.c: Don't log an error if .asterisk_history does not exist.
- chan_ooh323: Fix R/0 typo in docs
- bundled_pjproject: Disable UPnP support.
- file.h: Rename function argument to avoid C++ keyword clash.
- rtp_engine: add support for multirate RFC2833 digits
### Commit Details:
#### res_pjsip_path.c: Fix path when dialing using PJSIP_DIAL_CONTACTS()
Author: Igor Goncharovsky
Date: 2024-05-12
When using the PJSIP_DIAL_CONTACTS() function for use in the Dial()
command, the contacts are returned in text form, so the input to
the path_outgoing_request() function is a contact value of NULL.
The issue was reported in ASTERISK-28211, but was not actually fixed
in ASTERISK-30100. This fix brings back the code that was previously
removed and adds code to search for a contact to extract the path
value from it.
#### res_pjsip_sdp_rtp: Add support for default/mismatched 8K RFC 4733/2833 digits
Author: Mike Bradeen
Date: 2024-06-21
After change made in 624f509 to add support for non 8K RFC 4733/2833 digits,
Asterisk would only accept RFC 4733/2833 offers that matched the sample rate of
the negotiated codec(s).
This change allows Asterisk to accept 8K RFC 4733/2833 offers if the UAC
offfers 8K RFC 4733/2833 but negotiates for a non 8K bitrate codec.
A number of corresponding tests in tests/channels/pjsip/dtmf_sdp also needed to
be re-written to allow for these scenarios.
Fixes: #776
#### ast-db-manage: Remove duplicate enum creation
Author: George Joseph
Date: 2024-07-08
Remove duplicate creation of ast_bool_values from
2b7c507d7d12_add_queue_log_option_log_restricted_.py. This was
causing alembic upgrades to fail since the enum was already created
in fe6592859b85_fix_mwi_subscribe_replaces_.py back in 2018.
Resolves: #797
#### security_agreement.c: Always add the Require and Proxy-Require headers
Author: George Joseph
Date: 2024-07-03
The `Require: mediasec` and `Proxy-Require: mediasec` headers need
to be sent whenever we send `Security-Client` or `Security-Verify`
headers but the logic to do that was only in add_security_headers()
in res_pjsip_outbound_register. So while we were sending them on
REGISTER requests, we weren't sending them on INVITE requests.
This commit moves the logic to send the two headers out of
res_pjsip_outbound_register:add_security_headers() and into
security_agreement:ast_sip_add_security_headers(). This way
they're always sent when we send `Security-Client` or
`Security-Verify`.
Resolves: #789
#### logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
Author: Sean Bright
Date: 2024-06-29
Fixes #785
#### stasis_channels: Use uniqueid and name to delete old snapshots
Author: George Joseph
Date: 2024-05-08
Whenver a new channel snapshot is created or when a channel is
destroyed, we need to delete any existing channel snapshot from
the snapshot cache. Historically, we used the channel->snapshot
pointer to delete any existing snapshots but this has two issues.
First, if something (possibly ast_channel_internal_swap_snapshots)
sets channel->snapshot to NULL while there's still a snapshot in
the cache, we wouldn't be able to delete it and it would be orphaned
when the channel is destroyed. Since we use the cache to list
channels from the CLI, AMI and ARI, it would appear as though the
channel was still there when it wasn't.
Second, since there are actually two caches, one indexed by the
channel's uniqueid, and another indexed by the channel's name,
deleting from the caches by pointer requires a sequential search of
all of the hash table buckets in BOTH caches to find the matching
snapshots. Not very efficient.
So, we now delete from the caches using the channel's uniqueid
and name. This solves both issues.
This doesn't address how channel->snapshot might have been set
to NULL in the first place because although we have concrete
evidence that it's happening, we haven't been able to reproduce it.
Resolves: #783
#### app_voicemail_odbc: Allow audio to be kept on disk
Author: George Joseph
Date: 2024-04-09
This commit adds a new voicemail.conf option 'odbc_audio_on_disk'
which when set causes the ODBC variant of app_voicemail to leave
the message and greeting audio files on disk and only store the
message metadata in the database. This option came from a concern
that the database could grow to large and cause remote access
and/or replication to become slow. In a clustering situation
with this option, all asterisk instances would share the same
database for the metadata and either use a shared filesystem
or other filesystem replication service much more suitable
for synchronizing files.
The changes to app_voicemail to implement this feature were actually
quite small but due to the complexity of the module, the actual
source code changes were greater. They fall into the following
categories:
* Tracing. The module is so complex that it was impossible to
figure out the path taken for various scenarios without the addition
of many SCOPE_ENTER, SCOPE_EXIT and ast_trace statements, even in
code that's not related to the functional change. Making this worse
was the fact that many "if" statements in this module didn't use
braces. Since the tracing macros add multiple statements, many "if"
statements had to be converted to use braces.
* Excessive use of PATH_MAX. Previous maintainers of this module
used PATH_MAX to allocate character arrays for filesystem paths
and SQL statements as though they cost nothing. In fact, PATH_MAX
is defined as 4096 bytes! Some functions had (and still have)
multiples of these. One function has 7. Given that the vast
majority of installations use the default spool directory path
`/var/spool/asterisk/voicemail`, the actual path length is usually
less than 80 bytes. That's over 4000 bytes wasted. It was the
same for SQL statement buffers. A 4K buffer for statement that
only needed 60 bytes. All of these PATH_MAX allocations in the
ODBC related code were changed to dynamically allocated buffers.
The rest will have to be addressed separately.
* Bug fixes. During the development of this feature, several
pre-existing ODBC related bugs were discovered and fixed. They
had to do with leaving orphaned files on disk, not preserving
original message ids when moving messages between folders,
not honoring the "formats" config parameter in certain circumstances,
etc.
UserNote: This commit adds a new voicemail.conf option
'odbc_audio_on_disk' which when set causes the ODBC variant of
app_voicemail_odbc to leave the message and greeting audio files
on disk and only store the message metadata in the database.
Much more information can be found in the voicemail.conf.sample
file.
#### bridge_basic.c: Make sure that ast_bridge_channel is not destroyed while itera..
Author: Tinet-mucw
Date: 2024-06-13
Resolves: https://github.com/asterisk/asterisk/issues/768
#### app_queue: Add option to not log Restricted Caller ID to queue_log
Author: Alexei Gradinari
Date: 2024-06-12
Add a queue option log-restricted-caller-id to strip the Caller ID when storing the ENTERQUEUE event
in the queue log if the Caller ID is restricted.
Resolves: #765
UpgradeNote: Add a new column to the queues table:
queue_log_option_log_restricted ENUM('0','1','off','on','false','true','no','yes')
to control whether the Restricted Caller ID will be stored in the queue log.
UserNote: Add a Queue option log-restricted-caller-id to control whether the Restricted Caller ID
will be stored in the queue log.
If log-restricted-caller-id=no then the Caller ID will be stripped if the Caller ID is restricted.
#### pbx.c: expand fields width of "core show hints"
Author: Alexei Gradinari
Date: 2024-06-13
The current width for "extension" is 20 and "device state id" is 20, which is too small.
The "extension" field contains "ext"@"context", so 20 characters is not enough.
The "device state id" field, for example for Queue pause state contains Queue:"queue_name"_pause_PSJIP/"endpoint", so the 20 characters is not enough.
Increase the width of "extension" field to 30 characters and the width of the "device state id" field to 60 characters.
Resolves: #770
UserNote: The fields width of "core show hints" were increased.
The width of "extension" field to 30 characters and
the width of the "device state id" field to 60 characters.
#### pjsip: Add PJSIP_PARSE_URI_FROM dialplan function.
Author: Sean Bright
Date: 2024-06-02
Various SIP headers permit a URI to be prefaced with a `display-name`
production that can include characters (like commas and parentheses)
that are problematic for Asterisk's dialplan parser and, specifically
in the case of this patch, the PJSIP_PARSE_URI function.
This patch introduces a new function - `PJSIP_PARSE_URI_FROM` - that
behaves identically to `PJSIP_PARSE_URI` except that the first
argument is now a variable name and not a literal URI.
Fixes #756
#### manager.c: Properly terminate `CoreShowChannelMap` event.
Author: Sean Bright
Date: 2024-06-10
Fixes #761
#### cli: Show configured cache dir
Author: Bastian Triller
Date: 2024-06-07
Since Asterisk 19 it is possible to cache recorded files into another
directory [1] [2].
Show configured location of cache dir in CLI's core show settings.
[1] ASTERISK-29143
[2] b08427134fd51bb549f198e9f60685f2680c68d7
#### xml.c: Update deprecated libxml2 API usage.
Author: Sean Bright
Date: 2024-05-23
Two functions are deprecated as of libxml2 2.12:
* xmlSubstituteEntitiesDefault
* xmlParseMemory
So we update those with supported API.
Additionally, `res_calendar_caldav` has been updated to use libxml2's
xmlreader API instead of the SAX2 API which has always felt a little
hacky (see deleted comment block in `res_calendar_caldav.c`).
The xmlreader API has been around since libxml2 2.5.0 which was
released in 2003.
Fixes #725
#### cdr_pgsql: Fix crash when the module fails to load multiple times.
Author: chrsmj
Date: 2024-05-16
Missing or corrupt cdr_pgsql.conf configuration file can cause the
second attempt to load the PostgreSQL CDR module to crash Asterisk via
the Command Line Interface because a null CLI command is registered on
the first failed attempt to load the module.
Resolves: #736
#### asterisk.c: Don't log an error if .asterisk_history does not exist.
Author: Sean Bright
Date: 2024-05-27
Fixes #751
#### chan_ooh323: Fix R/0 typo in docs
Author: Walter Doekes
Date: 2024-05-27
#### bundled_pjproject: Disable UPnP support.
Author: Sean Bright
Date: 2024-05-24
Fixes #747
#### file.h: Rename function argument to avoid C++ keyword clash.
Author: Sean Bright
Date: 2024-05-24
Fixes #744
#### rtp_engine: add support for multirate RFC2833 digits
Author: Mike Bradeen
Date: 2024-04-08
Add RFC2833 DTMF support for 16K, 24K, and 32K bitrate codecs.
Asterisk currently treats RFC2833 Digits as a single rtp payload type
with a fixed bitrate of 8K. This change would expand that to 8, 16,
24 and 32K.
This requires checking the offered rtp types for any of these bitrates
and then adding an offer for each (if configured for RFC2833.) DTMF
generation must also be changed in order to look at the current outbound
codec in order to generate appropriately timed rtp.
For cases where no outgoing audio has yet been sent prior to digit
generation, Asterisk now has a concept of a 'preferred' codec based on
offer order.
On inbound calls Asterisk will mimic the payload types of the RFC2833
digits.
On outbound calls Asterisk will choose the next free payload types starting
with 101.
UserNote: No change in configuration is required in order to enable this
feature. Endpoints configured to use RFC2833 will automatically have this
enabled. If the endpoint does not support this, it should not include it in
the SDP offer/response.
Resolves: #699

View File

@@ -1,69 +0,0 @@
## Change Log for Release asterisk-20.9.1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.9.1.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.9.0...20.9.1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.9.1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 2
- Commit Authors: 1
- Issues Resolved: 2
- Security Advisories Resolved: 0
### User Notes:
### Upgrade Notes:
### Commit Authors:
- George Joseph: (2)
## Issue and Commit Detail:
### Closed Issues:
- 819: [bug]: Typo in voicemail.conf.sample that stops it from loading when using "make samples"
- 822: [bug]: segfault in main/rtp_engine.c:1489 after updating 20.8.1 -> 20.9.0
### Commits By Author:
- #### George Joseph (2):
- voicemail.conf.sample: Fix ':' comment typo
- rtp_engine.c: Prevent segfault in ast_rtp_codecs_payloads_unset()
### Commit List:
- rtp_engine.c: Prevent segfault in ast_rtp_codecs_payloads_unset()
- voicemail.conf.sample: Fix ':' comment typo
### Commit Details:
#### rtp_engine.c: Prevent segfault in ast_rtp_codecs_payloads_unset()
Author: George Joseph
Date: 2024-07-25
There can be empty slots in payload_mapping_tx corresponding to
dynamic payload types that haven't been seen before so we now
check for NULL before attempting to use 'type' in the call to
ast_format_cmp.
Note: Currently only chan_sip calls ast_rtp_codecs_payloads_unset()
Resolves: #822
#### voicemail.conf.sample: Fix ':' comment typo
Author: George Joseph
Date: 2024-07-24
...and removed an errant trailing space.
Resolves: #819

View File

@@ -1,65 +0,0 @@
## Change Log for Release asterisk-20.9.2
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.9.2.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.9.1...20.9.2)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.9.2.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-c4cg-9275-6w44](https://github.com/asterisk/asterisk/security/advisories/GHSA-c4cg-9275-6w44): Write=originate, is sufficient permissions for code execution / System() dialplan
### User Notes:
### Upgrade Notes:
### Commit Authors:
- George Joseph: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-c4cg-9275-6w44: Write=originate, is sufficient permissions for code execution / System() dialplan
### Commits By Author:
- #### George Joseph (1):
- manager.c: Add entries to Originate blacklist
### Commit List:
- manager.c: Add entries to Originate blacklist
### Commit Details:
#### manager.c: Add entries to Originate blacklist
Author: George Joseph
Date: 2024-07-22
Added Reload and DBdeltree to the list of dialplan application that
can't be executed via the Originate manager action without also
having write SYSTEM permissions.
Added CURL, DB*, FILE, ODBC and REALTIME* to the list of dialplan
functions that can't be executed via the Originate manager action
without also having write SYSTEM permissions.
If the Queue application is attempted to be run by the Originate
manager action and an AGI parameter is specified in the app data,
it'll be rejected unless the manager user has either the AGI or
SYSTEM permissions.
Resolves: #GHSA-c4cg-9275-6w44

View File

@@ -1,63 +0,0 @@
## Change Log for Release asterisk-20.9.3
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.9.3.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.9.2...20.9.3)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.9.3.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-v428-g3cw-7hv9](https://github.com/asterisk/asterisk/security/advisories/GHSA-v428-g3cw-7hv9): A malformed Contact or Record-Route URI in an incoming SIP request can cause Asterisk to crash when res_resolver_unbound is used
### User Notes:
### Upgrade Notes:
### Commit Authors:
- George Joseph: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-v428-g3cw-7hv9: A malformed Contact or Record-Route URI in an incoming SIP request can cause Asterisk to crash when res_resolver_unbound is used
### Commits By Author:
- #### George Joseph (1):
- res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
### Commit List:
- res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
### Commit Details:
#### res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
Author: George Joseph
Date: 2024-08-12
The ub_result pointer passed to unbound_resolver_callback by
libunbound can be NULL if the query was for something malformed
like `.1` or `[.1]`. If it is, we now set a 'ns_r_formerr' result
and return instead of crashing with a SEGV. This causes pjproject
to simply cancel the transaction with a "No answer record in the DNS
response" error. The existing "off nominal" unit test was also
updated to check this condition.
Although not necessary for this fix, we also made
ast_dns_resolver_completed() tolerant of a NULL result.
Resolves: GHSA-v428-g3cw-7hv9

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

70
HARDWARE Normal file
View File

@@ -0,0 +1,70 @@
A PBX is only really useful if you can get calls into it. Of course, you
can use Asterisk with VoIP calls (SIP, H.323, IAX), but you can also talk
to the real PSTN through various cards.
Supported Hardware is divided into two general groups: Zaptel devices and
non-zaptel devices. The Zaptel compatible hardware supports pseudo-TDM
conferencing and all call features through chan_zap, whereas non-zaptel
compatible hardware may have different features.
Zaptel compatible hardware
==========================
-- Digium (Primary author of Asterisk)
http://www.digium.com, http://store.yahoo.com/asteriskpbx
* Wildcard X100P - Single FXO interface connects to Loopstart phone
line
* Wildcard T400P (obsolete) - Quad T1 interface connects to four T1/PRI
interfaces. Supports RBS and PRI voice and PPP, FR, and HDLC data.
* Wildcard E400P (obsolete)- Quad E1 interface connects to four E1/PRI
(or PRA) interfaces. Supports PRA/PRI, EuroISDN voice and data.
* Wildcard T100P - Single T1 interface connects to a single T1/PRI
interface. Supports RBS and PRI voice and PPP, FR, and HDLC data.
* Wildcard E100P - Single E1 interface connects to a single E1/PRI (or PRA)
interface. Supports PRA/PRI, EuroISDN voice and PPP, FR, HDLC data.
* Wildcard S100U - Single FXS interface connects to a standard analog
telephone.
* Wildcard TDM400P - Quad Modular FXS interface connects to standard
analog telephones.
* Wildcard TE410P - Quad T1/E1 switchable interface. Supports PRI and
RBS signalling, as well as PPP, FR, and HDLC data modes.
Non-zaptel compatible hardware
==============================
-- QuickNet, Inc.
http://www.quicknet.net
* Internet PhoneJack - Single FXS interface. Supports Linux telephony
interface. DSP compression built-in.
* Internet LineJack - Single FXS or FXO interface. Supports Linux
telephony interface.
Miscellaneous other interfaces
==============================
-- ISDN4Linux
http://www.isdn4linux.de/
* Any ISDN terminal adapter supported by isdn4linux should provide
connectivity.
-- ALSA
http://www.alsa-project.org
* Any ALSA compatible full-duplex sound card
-- OSS
http://www.opensound.com
* Any OSS compatible full-duplex sound card

64
LICENSE
View File

@@ -1,60 +1,56 @@
Asterisk is distributed under the GNU General Public License version 2
and is also available under alternative licenses negotiated directly
with Sangoma US Inc. If you obtained Asterisk under the GPL, then the GPL
with Digium, Inc. If you obtained Asterisk under the GPL, then the GPL
applies to all loadable Asterisk modules used on your system as well,
except as defined below. The GPL (version 2) is included in this
source tree in the file COPYING.
This package also includes various components that are not part of
Asterisk itself; these components are in the 'contrib' directory
and its subdirectories. These components are also distributed under the
GPL version 2 as well.
Sangoma US Inc. holds copyright and/or sufficient licenses to all
components of the Asterisk package, and therefore can grant, at its
sole discretion, the ability for companies, individuals, or
organizations to create proprietary or Open Source (even if not GPL)
modules which may be dynamically linked at runtime with the portions
of Asterisk which fall under our copyright/license umbrella, or are
distributed under more flexible licenses than GPL.
Digium, Inc. (formerly Linux Support Services) holds copyright
and/or sufficient licenses to all components of the Asterisk
package, and therefore can grant, at its sole discretion, the ability
for companies, individuals, or organizations to create proprietary or
Open Source (even if not GPL) modules which may be dynamically linked at
runtime with the portions of Asterisk which fall under our
copyright/license umbrella, or are distributed under more flexible
licenses than GPL.
If you wish to use our code in other GPL programs, don't worry --
there is no requirement that you provide the same exception in your
GPL'd products (although if you've written a module for Asterisk we
would strongly encourage you to make the same exception that we do).
Specific permission is also granted to link Asterisk with OpenSSL, OpenH323
UniMRCP, and/or the UW IMAP Toolkit and distribute the resulting binary files.
Specific permission is also granted to link Asterisk with OpenSSL and
OpenH323.
In addition, Asterisk implements several management/control protocols.
This includes the Asterisk Manager Interface (AMI), the Asterisk Gateway
Interface (AGI), and the Asterisk REST Interface (ARI). It is our belief
that applications using these protocols to manage or control an Asterisk
instance do not have to be licensed under the GPL or a compatible license,
as we believe these protocols do not create a 'derivative work' as referred
to in the GPL. However, should any court or other judiciary body find that
these protocols do fall under the terms of the GPL, then we hereby grant you a
license to use these protocols in combination with Asterisk in external
In addition, Asterisk implements two management/control protocols: the
Asterisk Manager Interface (AMI) and the Asterisk Gateway Interface
(AGI). It is our belief that applications using these protocols to
manage or control an Asterisk instance do not have to be licensed
under the GPL or a compatible license, as we believe these protocols
do not create a 'derivative work' as referred to in the GPL. However,
should any court or other judiciary body find that these protocols do
fall under the terms of the GPL, then we hereby grant you a license to
use these protocols in combination with Asterisk in external
applications licensed under any license you wish.
The 'Asterisk' name and logos are trademarks owned by Sangoma US Inc,
The 'Asterisk' name and logos are trademarks owned by Digium, Inc.,
and use of them is subject to our trademark licensing policies. If you
wish to use these trademarks for purposes other than simple
redistribution of Asterisk source code obtained from Sangoma, you
redistribution of Asterisk source code obtained from Digium, you
should contact our licensing department to determine the necessary
steps you must take. For more information on this policy, please read:
https://www.sangoma.com/wp-content/uploads/Sangoma-Trademark-Policy-1.pdf
steps you must take.
If you have any questions regarding our licensing policy, please
contact us:
+1.877.344.4861 (via telephone in the USA)
+1.877.546.8963 (via telephone in the USA)
+1.256.428.6000 (via telephone outside the USA)
+1.256.864.0464 (via FAX inside or outside the USA)
legal@sangoma.com (via email)
IAX2/misery.digium.com/6000 (via IAX2)
licensing@digium.com (via email)
Sangoma US Inc.
301 N. Cattlemen Road, Suite 300
Sarasota, FL 34232
Digium, Inc.
150 West Park Loop
Suite 100
Huntsville, AL 35806
USA

1718
Makefile

File diff suppressed because it is too large Load Diff

View File

@@ -1,162 +0,0 @@
#
# Asterisk -- An open source telephony toolkit.
#
# Makefile rules for subdirectories containing modules
#
# Copyright (C) 2006, Digium, Inc.
#
# Kevin P. Fleming <kpfleming@digium.com>
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#
# Makefile rules for building modules.
# In most cases, we set target-specific variables for certain targets
# (remember that they apply recursively to prerequisites).
# Also note that we can only set one variable per rule, so we have to
# repeat the left hand side to set multiple variables.
include $(ASTTOPDIR)/Makefile.rules
# If MODULE_PREFIX is defined, use it to run the standard functions to set
# C_MODS, CC_MODS and LOADABLE_MODS
# Each word of MODULE_PREFIX is a prefix for filenames that we consider
# valid C or CC modules (eg. app, func ...). Note that the underscore
# is added here, and does not need to be in MODULE_PREFIX
#
# Use MODULE_EXCLUDE to specify additional modules to exclude.
ifneq ($(MODULE_PREFIX),)
ALL_C_MODS:=
ALL_CC_MODS:=
ALL_C_MODS+=$(foreach p,$(MODULE_PREFIX),$(patsubst %.c,%,$(wildcard $(p)_*.c)))
ALL_CC_MODS+=$(foreach p,$(MODULE_PREFIX),$(patsubst %.cc,%,$(wildcard $(p)_*.cc)))
endif
C_MODS:=$(filter-out $(MENUSELECT_$(MENUSELECT_CATEGORY)),$(ALL_C_MODS))
CC_MODS:=$(filter-out $(MENUSELECT_$(MENUSELECT_CATEGORY)),$(ALL_CC_MODS))
LOADABLE_MODS:=$(C_MODS) $(CC_MODS)
# Both C++ and C++ sources need their module name in AST_MODULE
# We also pass whatever _INCLUDE list is generated by menuselect
# (they are stored in file 'makeopts'). This is also necessary
# for components used to build modules, which can't be determined
# by the rules in this file, so the MOD_ASTCFLAGS definition
# is used to collect the required flags for a module... which can
# then be used any place they are required.
MOD_ASTCFLAGS=\
-DAST_MODULE=\"$(1)\" \
-DAST_MODULE_SELF_SYM=__internal_$(1)_self \
$(MENUSELECT_OPTS_$(1):%=-D%) \
$(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$(value $(dep)_INCLUDE))
define MOD_ADD_SOURCE
$(1).so: $$(subst $(3),$(5),$(2))
$$(subst $(3),$(5),$(2)): _ASTCFLAGS+=$$(call MOD_ASTCFLAGS,$(1))
.$(1).moduleinfo: MODULEINFO_EXTRA_OUTPUT=" $$(addprefix $$(SUBDIR)/,$$(subst $(3),$(5),$(2)) $$(subst $(3),$(4),$(2)))"
# The use of wildcard ensures that 'make menuselect' will not fail for modules that
# require additional source downloads.
.$(1).moduleinfo: $(wildcard $(2))
clean:: clean-$(1)$(3)
clean-$(1)$(3):
rm -f $$(subst $(3),$(4),$(2)) $$(subst $(3),$(5),$(2)) $$(subst $(3),$(6),$(2)) $$(subst $(3),$(7),$(2))
endef
MOD_ADD_C=$(eval $(call MOD_ADD_SOURCE,$(1),$(2),.c,.i,.o,.gcda,.gcno))
MOD_ADD_CC=$(eval $(call MOD_ADD_SOURCE,$(1),$(2),.cc,.ii,.oo,.gcda,.gcno))
$(addsuffix .oo,$(CC_MODS)) $(addsuffix .o,$(C_MODS)): \
_ASTCFLAGS+=$(call MOD_ASTCFLAGS,$*)
ifeq ($(findstring $(OSARCH), mingw32 cygwin ),)
# don't define -fPIC on mingw32 and cygwin, it is the default
$(LOADABLE_MODS:%=%.so): _ASTCFLAGS+=-fPIC
endif
# For loadable modules, pass _LIB and _LDFLAGS from menuselect.
$(LOADABLE_MODS:%=%.so): LIBS+=$(foreach dep,$(MENUSELECT_DEPENDS_$*),$(value $(dep)_LIB))
$(LOADABLE_MODS:%=%.so): _ASTLDFLAGS+=$(foreach dep,$(MENUSELECT_DEPENDS_$*),$(value $(dep)_LDFLAGS))
$(addsuffix .so,$(filter $(LOADABLE_MODS),$(C_MODS))): %.so: %.o
$(addsuffix .so,$(filter $(LOADABLE_MODS),$(CC_MODS))): %.so: %.oo
.PHONY: clean uninstall _all moduleinfo makeopts
_all: $(LOADABLE_MODS:%=%.so)
ifneq ($(findstring $(OSARCH), mingw32 cygwin ),)
# linker options and extra libraries for cygwin
SOLINK=-Wl,--out-implib=lib$@.a -shared
LIBS+=-L$(ASTTOPDIR)/main -lasterisk -L$(ASTTOPDIR)/res $($@_LIBS)
# additional libraries in res/
endif
clean::
rm -f *.so *.o *.oo *.eo *.i *.ii
rm -f .*.d
rm -f *.s *.i
rm -f *.gcda *.gcno
rm -f modules.link
install:: all
@echo "Installing modules from `basename $(CURDIR)`..."
@for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done
ifneq ($(findstring :,$(XMLSTARLET)$(BASH)),:)
@if [ -f .moduleinfo ] ; then \
declare -A DISABLED_MODS ;\
for x in $(MENUSELECT_$(MENUSELECT_CATEGORY)) ; do DISABLED_MODS[$${x}]=1 ; done ;\
EXTERNAL_MODS=$$($(XMLSTARLET) sel -t -m "/category/member[support_level = 'external']" -v "@name" -n .moduleinfo) ;\
for x in $${EXTERNAL_MODS} ; do \
if [ -z "$${DISABLED_MODS[$${x}]}" ] ; then \
PJPROJECT_BUNDLED=${PJPROJECT_BUNDLED} $(ASTTOPDIR)/build_tools/download_externals $${x} ;\
fi ;\
done ;\
fi
endif
uninstall::
dist-clean::
rm -f .*.moduleinfo .moduleinfo
rm -f .*.makeopts .makeopts
rm -f *.exports
.%.moduleinfo: %.c
@echo "<member name=\"$*\" displayname=\"$(shell $(GREP) -e AST_MODULE_INFO $< | head -n 1 | cut -d '"' -f 2)\" remove_on_change=\"$(SUBDIR)/$*.o $(SUBDIR)/$*.i $(SUBDIR)/$*.so$(MODULEINFO_EXTRA_OUTPUT)\">" > $@
$(AWK) -f $(ASTTOPDIR)/build_tools/get_moduleinfo $^ >> $@
echo "</member>" >> $@
.%.moduleinfo: %.cc
@echo "<member name=\"$*\" displayname=\"$(shell $(GREP) -e AST_MODULE_INFO $< | head -n 1 | cut -d '"' -f 2)\" remove_on_change=\"$(SUBDIR)/$*.oo $(SUBDIR)/$*.ii $(SUBDIR)/$*.so$(MODULEINFO_EXTRA_OUTPUT)\">" > $@
$(AWK) -f $(ASTTOPDIR)/build_tools/get_moduleinfo $^ >> $@
echo "</member>" >> $@
.moduleinfo:: $(addsuffix .moduleinfo,$(addprefix .,$(sort $(ALL_C_MODS) $(ALL_CC_MODS)))) $(wildcard $(call tolower,$(MENUSELECT_CATEGORY)).xml)
@echo "<category name=\"MENUSELECT_$(MENUSELECT_CATEGORY)\" displayname=\"$(MENUSELECT_DESCRIPTION)\">" > $@
@cat $^ >> $@
@echo "</category>" >> $@
moduleinfo: .moduleinfo
@cat $<
.%.makeopts: %.c
@$(AWK) -f $(ASTTOPDIR)/build_tools/get_makeopts $< > $@
.%.makeopts: %.cc
@$(AWK) -f $(ASTTOPDIR)/build_tools/get_makeopts $< > $@
.makeopts:: $(addsuffix .makeopts,$(addprefix .,$(ALL_C_MODS) $(ALL_CC_MODS)))
@cat $^ > $@
makeopts: .makeopts
@cat $<
ifneq ($(wildcard .*.d),)
include .*.d
endif

View File

@@ -1,226 +0,0 @@
#
# Asterisk -- An open source telephony toolkit.
#
# Makefile rules
#
# Copyright (C) 2006-2010, Digium, Inc.
#
# Kevin P. Fleming <kpfleming@digium.com>
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#
# Each command is preceded by a short comment on what to do.
# Prefixing one or the other with @\# or @ or nothing makes the desired
# behaviour. ECHO_PREFIX prefixes the comment, CMD_PREFIX prefixes the command.
-include $(ASTTOPDIR)/makeopts
# Helpful functions
# call with $(call function,...)
tolower = $(shell echo $(1) | tr '[:upper:]' '[:lower:]')
# Takes a list of MENUSELECT_CFLAG Id and returns CFLAGS to declare
# the ones which are enabled.
get_menuselect_cflags=$(patsubst %,-D%,$(filter $1,$(MENUSELECT_CFLAGS)))
.PHONY: dist-clean
# If 'make' decides to create intermediate files to satisfy a build requirement
# (like producing a .i from a .c), we want to keep them, so tell make to keep
# all intermediate files
.SECONDARY:
# extra cflags to build dependencies. Recursively expanded.
MAKE_DEPS=-MD -MT $@ -MF .$(subst /,_,$@).d -MP
ifeq ($(findstring ADDRESS_SANITIZER,$(MENUSELECT_CFLAGS)),ADDRESS_SANITIZER)
_ASTLDFLAGS+=-fsanitize=address
_ASTCFLAGS+=-fno-omit-frame-pointer -fsanitize=address
endif
ifeq ($(findstring THREAD_SANITIZER,$(MENUSELECT_CFLAGS)),THREAD_SANITIZER)
_ASTLDFLAGS+=-fsanitize=thread -pie -fPIE
_ASTCFLAGS+=-fno-omit-frame-pointer -pie -fPIE -fsanitize=thread
endif
ifeq ($(findstring LEAK_SANITIZER,$(MENUSELECT_CFLAGS)),LEAK_SANITIZER)
_ASTLDFLAGS+=-fsanitize=leak
_ASTCFLAGS+=-fno-omit-frame-pointer -fsanitize=leak
endif
ifeq ($(findstring UNDEFINED_SANITIZER,$(MENUSELECT_CFLAGS)),UNDEFINED_SANITIZER)
_ASTLDFLAGS+=-fsanitize=undefined
_ASTCFLAGS+=-fno-omit-frame-pointer -fsanitize=undefined
endif
ifeq ($(NOISY_BUILD),)
ECHO_PREFIX=@
CMD_PREFIX=@
else
ECHO_PREFIX=@\#
CMD_PREFIX=
endif
OPTIMIZE?=-O3
ifneq ($(findstring darwin,$(OSARCH)),)
ifeq ($(shell if test `/usr/bin/sw_vers -productVersion | cut -c4` -gt 5; then echo 6; else echo 0; fi),6)
# Snow Leopard/Lion has an issue with this optimization flag on large files (like chan_sip)
OPTIMIZE+=-fno-inline-functions
endif
endif
ifeq ($(CC),gcc)
# gcc version 8.2.1 and above must have partial-inlining disabled in order
# to avoid a documented bug. Sort to make the lowest version number come
# first. If it's the specified version then the current gcc version is equal
# to or greater, so add the custom optimization rule.
gcc_versions=$(shell printf "%s\n" $$(gcc -dumpversion) 8.2.1 | sort -n)
ifeq ($(firstword $(gcc_versions)),8.2.1)
OPTIMIZE+=-fno-partial-inlining
endif
endif
ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS))$(findstring CODE_COVERAGE,$(MENUSELECT_CFLAGS))$(findstring CODE_PROFILE,$(MENUSELECT_CFLAGS))$(AST_CODE_COVERAGE),no)
_ASTCFLAGS+=$(OPTIMIZE)
else
_ASTCFLAGS+=-O0
endif
ifeq ($(findstring CODE_COVERAGE,$(MENUSELECT_CFLAGS))$(AST_CODE_COVERAGE),no)
_ASTCFLAGS_COVERAGE=
else
_ASTCFLAGS_COVERAGE=-ftest-coverage -fprofile-arcs
_ASTLDFLAGS+=-ftest-coverage -fprofile-arcs
endif
ifneq ($(findstring KEEP_FRAME_POINTERS,$(MENUSELECT_CFLAGS)),)
_ASTCFLAGS+=-fno-omit-frame-pointer
endif
ifeq ($(findstring $(CONFIG_CFLAGS),$(_ASTCFLAGS)),)
_ASTCFLAGS+=$(CONFIG_CFLAGS)
endif
# shortcuts for common combinations of flags; these must be recursively expanded so that
# per-target settings will be applied
CC_CFLAGS=$(PTHREAD_CFLAGS) $(_ASTCFLAGS) $(ASTCFLAGS)
CXX_CFLAGS=$(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(AST_DECLARATION_AFTER_STATEMENT),$(_ASTCFLAGS) $(ASTCFLAGS))
# Clang -Werror warning suppressions
ifeq ($(C_COMPILER_FAMILY),clang)
CC_CFLAGS+=-Wno-unused-value -Wno-parentheses-equality
endif
ifeq ($(GNU_LD),1)
SO_SUPPRESS_SYMBOLS=-Wl,--version-script,$(subst .so,.exports,$@),--warn-common
ifneq ($(wildcard $(subst .so,.dynamics,$@)),)
SO_SUPPRESS_SYMBOLS+=-Wl,--dynamic-list,$(subst .so,.dynamics,$@)
endif
endif
CC_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(_ASTLDFLAGS) $(SOLINK) $(SO_SUPPRESS_SYMBOLS) $(ASTLDFLAGS)
CXX_LDFLAGS_SO=$(PTHREAD_CFLAGS) $(_ASTLDFLAGS) $(SOLINK) $(SO_SUPPRESS_SYMBOLS) $(ASTLDFLAGS)
CC_LIBS=$(PTHREAD_LIBS) $(LIBS)
CXX_LIBS=$(PTHREAD_LIBS) $(LIBS)
# determine whether to double-compile so that the optimizer can report code path problems
# In this case, we run the preprocessor to produce a .i or .ii file from the source
# code, then compile once with optimizer enabled (and the output to /dev/null),
# and if that doesn't fail then compile again with optimizer disabled
ifeq ($(findstring COMPILE_DOUBLE,$(MENUSELECT_CFLAGS)),COMPILE_DOUBLE)
COMPILE_DOUBLE=yes
endif
ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS))$(AST_DEVMODE),)
_ASTCFLAGS+=$(AST_FORTIFY_SOURCE)
endif
ifeq ($(findstring BUILD_NATIVE,$(MENUSELECT_CFLAGS)),BUILD_NATIVE)
_ASTCFLAGS+=-march=native
endif
%.o: %.s
$(ECHO_PREFIX) echo " [AS] $< -> $@"
ifeq ($(COMPILE_DOUBLE),yes)
$(CMD_PREFIX) $(CC) -o /dev/null -c $< $(CC_CFLAGS) $(OPTIMIZE)
endif
$(CMD_PREFIX) $(CC) -o $@ -c $< $(CC_CFLAGS) $(_ASTCFLAGS_COVERAGE)
%.o: %.i
$(ECHO_PREFIX) echo " [CCi] $< -> $@"
ifneq ($(AST_CLANG_BLOCKS),)
ifeq ($(COMPILE_DOUBLE),yes)
$(CMD_PREFIX) $(CC) -o /dev/null -c $< $(CC_CFLAGS) $(OPTIMIZE) -Wno-unused-command-line-argument
endif
$(CMD_PREFIX) $(CC) -o $@ -c $< $(CC_CFLAGS) $(_ASTCFLAGS_COVERAGE) -Wno-unused-command-line-argument
else
ifeq ($(COMPILE_DOUBLE),yes)
$(CMD_PREFIX) $(CC) -o /dev/null -c $< $(CC_CFLAGS) $(OPTIMIZE)
endif
$(CMD_PREFIX) $(CC) -o $@ -c $< $(CC_CFLAGS) $(_ASTCFLAGS_COVERAGE)
endif
ifneq ($(COMPILE_DOUBLE),yes)
%.o: %.c
$(ECHO_PREFIX) echo " [CC] $< -> $@"
$(CMD_PREFIX) $(CC) -o $@ -c $< $(MAKE_DEPS) $(CC_CFLAGS) $(_ASTCFLAGS_COVERAGE)
endif
%.i: %.c
$(ECHO_PREFIX) echo " [CPP] $< -> $@"
$(CMD_PREFIX) $(CC) -o $@ -E $< $(MAKE_DEPS) $(CC_CFLAGS) $(_ASTCFLAGS_COVERAGE)
%.oo: %.ii
$(ECHO_PREFIX) echo " [CXXi] $< -> $@"
ifeq ($(COMPILE_DOUBLE),yes)
$(CMD_PREFIX) $(CXX) -o /dev/null -c $< $(CXX_CFLAGS) $(OPTIMIZE)
endif
$(CMD_PREFIX) $(CXX) -o $@ -c $< $(CXX_CFLAGS) $(_ASTCFLAGS_COVERAGE)
ifneq ($(COMPILE_DOUBLE),yes)
%.oo: %.cc
$(ECHO_PREFIX) echo " [CXX] $< -> $@"
$(CMD_PREFIX) $(CXX) -o $@ -c $< $(MAKE_DEPS) $(CXX_CFLAGS) $(_ASTCFLAGS_COVERAGE)
endif
%.ii: %.cc
$(ECHO_PREFIX) echo " [CPP] $< -> $@"
$(CMD_PREFIX) $(CXX) -o $@ -E $< $(MAKE_DEPS) $(CXX_CFLAGS) $(_ASTCFLAGS_COVERAGE)
%.so: %.o
ifeq ($(GNU_LD),1)
$(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_version_script $* "$(LINKER_SYMBOL_PREFIX)" "$(ASTTOPDIR)"
endif
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
$(CMD_PREFIX) $(CC) -o $@ $(CC_LDFLAGS_SO) $^ $(CC_LIBS)
%.so: %.oo
ifeq ($(GNU_LD),1)
$(CMD_PREFIX) $(ASTTOPDIR)/build_tools/make_linker_version_script $* "$(LINKER_SYMBOL_PREFIX)" "$(ASTTOPDIR)"
endif
$(ECHO_PREFIX) echo " [LDXX] $^ -> $@"
$(CMD_PREFIX) $(CXX) -o $@ $(CXX_LDFLAGS_SO) $^ $(CXX_LIBS)
%: %.o
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
$(CMD_PREFIX) $(CXX) -o $@ $(PTHREAD_CFLAGS) $(_ASTLDFLAGS) $^ $(CXX_LIBS) $(ASTLDFLAGS)
# These CC commands just create an object file with the input file embedded in it.
# It can be access from code as follows:
# If your input file is named abc_def.xml...
#
# extern const uint8_t _binary_abc_def_xml_start[];
# extern const uint8_t _binary_abc_def_xml_end[];
# extern const size_t _binary_abc_def_xml_size;
%.o: %.xml
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
$(CMD_PREFIX) $(CC) -g -Wl,-znoexecstack -nostartfiles -nodefaultlibs -nostdlib -r -Wl,-b,binary -o $@ $^
%.o: %.xslt
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
$(CMD_PREFIX) $(CC) -g -Wl,-znoexecstack -nostartfiles -nodefaultlibs -nostdlib -r -Wl,-b,binary -o $@ $^
dist-clean:: clean

248
README Normal file
View File

@@ -0,0 +1,248 @@
The Asterisk Open Source PBX
by Mark Spencer <markster@digium.com>
and the Asterisk.org developer community
Copyright (C) 2001-2005 Digium, Inc.
and other copyright holders.
================================================================
* SECURITY
It is imperative that you read and fully understand the contents of
the SECURITY file before you attempt to configure and run an Asterisk
server.
* WHAT IS ASTERISK ?
Asterisk is an Open Source PBX and telephony toolkit. It is, in a
sense, middleware between Internet and telephony channels on the bottom,
and Internet and telephony applications at the top. For more information
on the project itself, please visit the Asterisk home page at:
http://www.asterisk.org
In addition you'll find lots of information compiled by the Asterisk
community on this Wiki:
http://www.voip-info.org/wiki-Asterisk
There is a book on Asterisk published by O'Reilly under the
Creative Commons License. It is available in book stores as well
as in a downloadable version on the http://www.asteriskdocs.org
web site.
* SUPPORTED OPERATING SYSTEMS
== Linux ==
The Asterisk Open Source PBX is developed and tested primarily on the
GNU/Linux operating system, and is supported on every major GNU/Linux
distribution.
== Others ==
Asterisk has also been 'ported' and reportedly runs properly on other
operating systems as well, including Sun Solaris, Apple's Mac OS X, and
the BSD variants.
* GETTING STARTED
First, be sure you've got supported hardware (but note that you don't need
ANY special hardware, not even a soundcard) to install and run Asterisk.
Supported telephony hardware includes:
* All Wildcard (tm) products from Digium (www.digium.com)
* QuickNet Internet PhoneJack and LineJack (http://www.quicknet.net)
* any full duplex sound card supported by ALSA or OSS
* VoiceTronix OpenLine products
The are several drivers for ISDN BRI cards available from third party sources.
Check the voip-info.org wiki for more information on chan_capi, chan_misdn and
zaphfc.
* UPGRADING FROM VERSION 1.0
If you are updating from a previous version of Asterisk, make sure you
read the UPGRADE.txt file in the source directory. There are some files
and configuration options that you will have to change, even though we
made every effort possible to maintain backwards compatibility.
In order to discover new features to use, please check the configuration
examples in the /configs directory of the source code distribution.
To discover the major new features of Asterisk 1.2, please visit
http://edvina.net/asterisk1-2/
* NEW INSTALLATIONS
Ensure that your system contains a compatible compiler and development
libraries. Asterisk requires either the GNU Compiler Collection (GCC) version
3.0 or higher, or a compiler that supports the C99 specification and some of
the gcc language extensions. In addition, your system needs to have the C
library headers available, and the headers and libraries for OpenSSL,
ncurses and zlib.
On many distributions, these files are installed by packages with names like
'glibc-devel', 'ncurses-devel', 'openssl-devel' and 'zlib-devel' or similar.
So let's proceed:
1) Run "make"
Assuming the build completes successfully:
2) Run "make install"
Each time you update or checkout from CVS, you are strongly encouraged
to ensure all previous object files are removed to avoid internal
inconsistency in Asterisk. Normally, this is automatically done with
the presence of the file .cleancount, which increments each time a 'make clean'
is required, and the file .lastclean, which contains the last .cleancount used.
If this is your first time working with Asterisk, you may wish to install
the sample PBX, with demonstration extensions, etc. If so, run:
3) "make samples"
Doing so will overwrite any existing config files you have.
Finally, you can launch Asterisk in the foreground mode (not a daemon)
with:
# asterisk -vvvc
You'll see a bunch of verbose messages fly by your screen as Asterisk
initializes (that's the "very very verbose" mode). When it's ready, if
you specified the "c" then you'll get a command line console, that looks
like this:
*CLI>
You can type "help" at any time to get help with the system. For help
with a specific command, type "help <command>". To start the PBX using
your sound card, you can type "dial" to dial the PBX. Then you can use
"answer", "hangup", and "dial" to simulate the actions of a telephone.
Remember that if you don't have a full duplex sound card (and Asterisk
will tell you somewhere in its verbose messages if you do/don't) then it
won't work right (not yet).
"man asterisk" at the Unix/Linux command prompt will give you detailed
information on how to start and stop Asterisk, as well as all the command
line options for starting Asterisk.
Feel free to look over the configuration files in /etc/asterisk, where
you'll find a lot of information about what you can do with Asterisk.
* ABOUT CONFIGURATION FILES
All Asterisk configuration files share a common format. Comments are
delimited by ';' (since '#' of course, being a DTMF digit, may occur in
many places). A configuration file is divided into sections whose names
appear in []'s. Each section typically contains two types of statements,
those of the form 'variable = value', and those of the form 'object =>
parameters'. Internally the use of '=' and '=>' is exactly the same, so
they're used only to help make the configuration file easier to
understand, and do not affect how it is actually parsed.
Entries of the form 'variable=value' set the value of some parameter in
asterisk. For example, in zapata.conf, one might specify:
switchtype=national
in order to indicate to Asterisk that the switch they are connecting to is
of the type "national". In general, the parameter will apply to
instantiations which occur below its specification. For example, if the
configuration file read:
switchtype = national
channel => 1-4
channel => 10-12
switchtype = dms100
channel => 25-47
the "national" switchtype would be applied to channels one through
four and channels 10 through 12, whereas the "dms100" switchtype would
apply to channels 25 through 47.
The "object => parameters" instantiates an object with the given
parameters. For example, the line "channel => 25-47" creates objects for
the channels 25 through 47 of the card, obtaining the settings
from the variables specified above.
* NETWORK SECURITY DEVICES
This release of Asterisk contains support for network security devices
manufactured by Ranch Networks, Inc., using their MIDCOM interface
library. You will need the companion libmidcom-0.1.0.tar.gz file to
build the library. Contact Ranch Networks' support department for assistance
in building and configuring MIDCOM support.
* SPECIAL NOTE ON TIME
Those using SIP phones should be aware that Asterisk is sensitive to
large jumps in time. Manually changing the system time using date(1)
(or other similar commands) may cause SIP registrations and other
internal processes to fail. If your system cannot keep accurate time
by itself use NTP (http://www.ntp.org/) to keep the system clock
synchronized to "real time". NTP is designed to keep the system clock
synchronized by speeding up or slowing down the system clock until it
is synchronized to "real time" rather than by jumping the time and
causing discontinuities. Most Linux distributions include precompiled
versions of NTP. Beware of some time synchronization methods that get
the correct real time periodically and then manually set the system
clock.
Apparent time changes due to daylight savings time are just that,
apparent. The use of daylight savings time in a Linux system is
purely a user interface issue and does not affect the operation of the
Linux kernel or Asterisk. The system clock on Linux kernels operates
on UTC. UTC does not use daylight savings time.
Also note that this issue is separate from the clocking of TDM
channels, and is known to at least affect SIP registrations.
* FILE DESCRIPTORS
Depending on the size of your system and your configuration,
Asterisk can consume a large number of file descriptors. In UNIX,
file descriptors are used for more than just files on disk. File
descriptors are also used for handling network communication
(e.g. SIP, IAX2, or H.323 calls) and hardware access (e.g. analog and
digital trunk hardware). Asterisk accesses many on-disk files for
everything from configuration information to voicemail storage.
Most systems limit the number of file descriptors that Asterisk can
have open at one time. This can limit the number of simultaneous
calls that your system can handle. For example, if the limit is set
at 1024 (a common default value) Asterisk can handle approxiately 150
SIP calls simultaneously. To change the number of file descriptors
follow the instructions for your system below:
== PAM-based Linux System ==
If your system uses PAM (Pluggable Authentication Modules) edit
/etc/security/limits.conf. Add these lines to the bottom of the file:
root soft nofile 4096
root hard nofile 8196
asterisk soft nofile 4096
asterisk hard nofile 8196
(adjust the numbers to taste). You may need to reboot the system for
these changes to take effect.
== Generic UNIX System ==
If there are no instructions specifically adapted to your system
above you can try adding the command "ulimit -n 8192" to the script
that starts Asterisk.
* MORE INFORMATION
See the doc directory for more documentation on various features. Again,
please read all the configuration samples that include documentation on
the configuration options.
Finally, you may wish to visit the web site and join the mailing list if
you're interested in getting more information.
http://www.asterisk.org/support
Welcome to the growing worldwide community of Asterisk users!
Mark Spencer

View File

@@ -1,389 +0,0 @@
# Best Practices
The purpose of this document is to define best practices when working with
Asterisk in order to minimize possible security breaches and to provide tried
examples in field deployments. This is a living document and is subject to
change over time as best practices are defined.
* [Filtering Data]:
How to protect yourself from redial attacks
* [Proper Device Naming]:
Why to not use numbered extensions for devices
* [Secure Passwords]:
Secure passwords limit your risk to brute force attacks
* [Reducing Pattern Match Typos]:
Using the 'same' prefix, or using Goto()
* [Manager Class Authorizations]:
Recognizing potential issues with certain classes of authorization
* [Avoid Privilege Escalations]:
Disable the ability to execute functions that may escalate privileges
* [Important Security Considerations]:
More information on the Asterisk Wiki
## Additional Links
Additional links that contain useful information about best practices or
security are listed below.
* [Seven Steps to Better SIP Security][blog-sip-security]
* [Asterisk VoIP Security (webinar)][voip-security-webinar]
## Filtering Data
In the Asterisk dialplan, several channel variables contain data potentially
supplied by outside sources. This could lead to a potential security concern
where those outside sources may send cleverly crafted strings of data which
could be utilized, e.g. to place calls to unexpected locations.
An example of this can be found in the use of pattern matching and the ${EXTEN}
channel variable. Note that ${EXTEN} is not the only system created channel
variable, so it is important to be aware of where the data you're using is
coming from.
For example, this common dialplan takes 2 or more characters of data, starting
with a number 0-9, and then accepts any additional information supplied by the
request.
**NOTE**:
> We use SIP in this example, but is not limited to SIP only; protocols such as
> Jabber/XMPP or IAX2 are also susceptible to the same sort of injection problem.
```INI
[incoming]
exten => _X.,1,Verbose(2,Incoming call to extension ${EXTEN})
exten => _X.,n,Dial(SIP/${EXTEN})
exten => _X.,n,Hangup()
```
This dialplan may be utilized to accept calls to extensions, which then dial a
numbered device name configured in one of the channel configuration files (such
as sip.conf, iax.conf, etc...) (see [Proper Device Naming] for more information
on why this approach is flawed).
The example we've given above looks harmless enough until you take into
consideration that several channel technologies accept characters that could
be utilized in a clever attack. For example, instead of just sending a request
to dial extension 500 (which in our example above would create the string
SIP/500 and is then used by the Dial() application to place a call), someone
could potentially send a string like "500&SIP/itsp/14165551212".
The string "500&SIP/itsp/14165551212" would then be contained within the
${EXTEN} channel variable, which is then utilized by the Dial() application in
our example, thereby giving you the dialplan line of:
```INI
exten => _X.,n,Dial(SIP/500&SIP/itsp/14165551212)
```
Our example above has now provided someone with a method to place calls out of
your ITSP in a place where you didn't expect to allow it. There are a couple of
ways in which you can mitigate this impact: stricter pattern matching, or using
the FILTER() dialplan function.
The CALLERID(num) and CALLERID(name) values are other commonly used values that
are sources of data potentially supplied by outside sources. If you use these
values as parameters to the System(), MixMonitor(), or Monitor() applications
or the SHELL() dialplan function, you can allow injection of arbitrary operating
system command execution. The FILTER() dialplan function is available to remove
dangerous characters from untrusted strings to block the command injection.
### Strict Pattern Matching
The simple way to mitigate this problem is with a strict pattern match that does
not utilize the period (.) or bang (!) characters to match on one-or-more
characters or zero-or-more characters (respectively). To fine tune our example
to only accept three digit extensions, we could change our pattern match to
be:
```INI
exten => _XXX,n,Dial(SIP/${EXTEN})
```
In this way, we have minimized our impact because we're not allowing anything
other than the numbers zero through nine. But in some cases we really do need to
handle variable pattern matches, such as when dialing international numbers
or when we want to handle something like a SIP URI. In this case, we'll need to
utilize the FILTER() dialplan function.
### Using FILTER()
The FILTER() dialplan function is used to filter strings by only allowing
characters that you have specified. This is a perfect candidate for controlling
which characters you want to pass to the Dial() application, or any other
application which will contain dynamic information passed to Asterisk from an
external source. Lets take a look at how we can use FILTER() to control what
data we allow.
Using our previous example to accept any string length of 2 or more characters,
starting with a number of zero through nine, we can use FILTER() to limit what
we will accept to just numbers. Our example would then change to something like:
```INI
[incoming]
exten => _X.,1,Verbose(2,Incoming call to extension ${EXTEN})
exten => _X.,n,Dial(SIP/${FILTER(0-9,${EXTEN})})
exten => _X.,n,Hangup()
```
Note how we've wrapped the ${EXTEN} channel variable with the FILTER() function
which will then only pass back characters that fit into the numerical range that
we've defined.
Alternatively, if we didn't want to utilize the FILTER() function within the
Dial() application directly, we could save the value to a channel variable,
which has a side effect of being usable in other locations of your dialplan if
necessary, and to handle error checking in a separate location.
```INI
[incoming]
exten => _X.,1,Verbose(2,Incoming call to extension ${EXTEN})
exten => _X.,n,Set(SAFE_EXTEN=${FILTER(0-9,${EXTEN})})
exten => _X.,n,Dial(SIP/${SAFE_EXTEN})
exten => _X.,n,Hangup()
```
Now we can use the ${SAFE_EXTEN} channel variable anywhere throughout the rest
of our dialplan, knowing we've already filtered it. We could also perform an
error check to verify that what we've received in ${EXTEN} also matches the data
passed back by FILTER(), and to fail the call if things do not match.
```INI
[incoming]
exten => _X.,1,Verbose(2,Incoming call to extension ${EXTEN})
exten => _X.,n,Set(SAFE_EXTEN=${FILTER(0-9,${EXTEN})})
exten => _X.,n,GotoIf($[${EXTEN} != ${SAFE_EXTEN}]?error,1)
exten => _X.,n,Dial(SIP/${SAFE_EXTEN})
exten => _X.,n,Hangup()
exten => error,1,Verbose(2,Values of EXTEN and SAFE_EXTEN did not match.)
exten => error,n,Verbose(2,EXTEN: "${EXTEN}" -- SAFE_EXTEN: "${SAFE_EXTEN}")
exten => error,n,Playback(silence/1&invalid)
exten => error,n,Hangup()
```
Another example would be using FILTER() to control the characters we accept when
we're expecting to get a SIP URI for dialing.
```INI
[incoming]
exten => _[0-9a-zA-Z].,1,Verbose(2,Incoming call to extension ${EXTEN})
exten => _[0-9a-zA-Z].,n,Dial(SIP/${FILTER(.@0-9a-zA-Z,${EXTEN})
exten => _[0-9a-zA-Z].,n,Hangup()
```
Of course the FILTER() function doesn't check the formatting of the incoming
request. There is also the REGEX() dialplan function which can be used to
determine if the string passed to it matches the regular expression you've
created, and to take proper action on whether it matches or not. The creation of
regular expressions is left as an exercise for the reader.
More information about the FILTER() and REGEX() dialplan functions can be found
by typing "core show function FILTER" and "core show function REGEX" from your
Asterisk console.
## Proper Device Naming
In Asterisk, the concept of an extension number being tied to a specific device
does not exist. Asterisk is aware of devices it can call or receive calls from,
and how you define in your dialplan how to reach those devices is up to you.
Because it has become common practice to think of a specific device as having an
extension number associated with it, it only becomes natural to think about
naming your devices the same as the extension number you're providing it. But
by doing this, you're limiting the powerful concept of separating user from
extensions, and extensions from devices.
It can also be a security hazard to name your devices with a number, as this can
open you up to brute force attacks. Many of the current exploits deal with
device configurations which utilize a number, and even worse, a password that
matches the devices name. For example, take a look at this poorly created device
in sip.conf:
```INI
[1000]
type=friend
context=international_dialing
secret=1000
```
As implied by the context, we've permitted a device named 1000 with a password
of 1000 to place calls internationally. If your PBX system is accessible via
the internet, then your system will be vulnerable to expensive international
calls. Even if your system is not accessible via the internet, people within
your organization could get access to dialing rules you'd prefer to reserve only
for certain people.
A more secure example for the device would be to use something like the MAC
address of the device, along with a strong password (see the section Secure
Passwords). The following example would be more secure:
```INI
[0004f2040001]
type=friend
context=international_dialing
secret=aE3%B8*$jk^G
```
Then in your dialplan, you would reference the device via the MAC address of the
device (or if using the softphone, a MAC address of a network interface on the
computer).
Also note that you should NOT use this password, as it will likely be one of the
first ones added to the dictionary for brute force attacks.
## Secure Passwords
Secure passwords are necessary in many (if not all) environments, and Asterisk
is certainly no exception, especially when it comes to expensive long distance
calls that could potentially cost your company hundreds or thousands of dollars
on an expensive monthly phone bill, with little to no recourse to fight the
charges.
Whenever you are positioned to add a password to your system, whether that is
for a device configuration, a database connection, or any other secure
connection, be sure to use a secure password. A good example of a secure
password would be something like:
```
aE3%B8*$jk^G
```
Our password also contains 12 characters with a mixture of upper and
lower case characters, numbers, and symbols. Because these passwords are likely
to only be entered once, or loaded via a configuration file, there is
no need to create simple passwords, even in testing. Some of the holes found in
production systems used for exploitations involve finding the one test extension
that contains a weak password that was forgotten prior to putting a system into
production.
Using a web search you can find several online password generators such as
[Strong Password Generator] or there are several scripts that can be
used to generate a strong password.
## Reducing Pattern Match Typos
As of Asterisk 1.6.2, a new method for reducing the number of complex pattern
matches you need to enter, which can reduce typos in your dialplan, has been
implemented. Traditionally, a dialplan with a complex pattern match would look
something like:
```INI
exten => _[3-5]XXX,1,Verbose(Incoming call to ${EXTEN})
exten => _[3-5]XXX,n,Set(DEVICE=${DB(device/mac_address/${EXTEN})})
exten => _[3-5]XXX,n,Set(TECHNOLOGY=${DB(device/technology/${EXTEN})})
exten => _[3-5]XXX,n,GotoIf($[${ISNULL(${TECHNOLOGY})} | ${ISNULL(${DEVICE})}]?error,1)
exten => _[3-5]XXX,n,Dial(${TECHNOLOGY}/${DEVICE},${GLOBAL(TIMEOUT)})
exten => _[3-5]XXX,n,Set(vmFlag=${IF($[${DIALSTATUS} = BUSY]?b:u)})
exten => _[3-5]XXX,n,Voicemail(${EXTEN}@${GLOBAL(VOICEMAIL_CONTEXT)},${vmFlag})
exten => _[3-5]XXX,n,Hangup()
exten => error,1,Verbose(2,Unable to lookup technology or device for extension)
exten => error,n,Playback(silence/1&num-not-in-db)
exten => error,n,Hangup()
```
Of course there exists the possibility for a typo when retyping the pattern
match _\[3-5\]XXX which will match on extensions 3000 through 5999. We can
minimize this error by utilizing the same => prefix on all lines beyond the
first one. Our same dialplan with using same => would look like the following:
```INI
exten => _[3-5]XXX,1,Verbose(Incoming call to ${EXTEN})
same => n,Set(DEVICE=${DB(device/mac_address/${EXTEN})})
same => n,Set(TECHNOLOGY=${DB(device/technology/${EXTEN})})
same => n,GotoIf($[${ISNULL(${TECHNOLOGY})} | ${ISNULL(${DEVICE})}]?error,1)
same => n,Dial(${TECHNOLOGY}/${DEVICE},${GLOBAL(TIMEOUT)})
same => n,Set(vmFlag=${IF($[${DIALSTATUS} = BUSY]?b:u)})
same => n,Voicemail(${EXTEN}@${GLOBAL(VOICEMAIL_CONTEXT)},${vmFlag})
same => n,Hangup()
exten => error,1,Verbose(2,Unable to lookup technology or device for extension)
same => n,Playback(silence/1&num-not-in-db)
same => n,Hangup()
```
## Manager Class Authorizations
Manager accounts have associated class authorizations that define what actions
and events that account can execute/receive. In order to run Asterisk commands
or dialplan applications that affect the system Asterisk executes on, the
"system" class authorization should be set on the account.
However, Manager commands that originate new calls into the Asterisk dialplan
have the potential to alter or affect the system as well, even though the
class authorization for origination commands is "originate". Take, for example,
the Originate manager command:
```
Action: Originate
Channel: SIP/foo
Exten: s
Context: default
Priority: 1
Application: System
Data: echo hello world!
```
This manager command will attempt to execute an Asterisk application, System,
which is normally associated with the "system" class authorization. While some
checks have been put into Asterisk to take this into account, certain dialplan
configurations and/or clever manipulation of the Originate manager action can
circumvent these checks. For example, take the following dialplan:
```INI
exten => s,1,Verbose(Incoming call)
same => n,MixMonitor(foo.wav,,${EXEC_COMMAND})
same => n,Dial(SIP/bar)
same => n,Hangup()
```
Whatever has been defined in the variable EXEC_COMMAND will be executed after
MixMonitor has finished recording the call. The dialplan writer may have
intended that this variable to be set by some other location in the dialplan;
however, the Manager action Originate allows for channel variables to be set by
the account initiating the new call. This could allow the Originate action to
execute some command on the system by setting the EXEC_COMMAND dialplan variable
in the Variable: header.
In general, you should treat the Manager class authorization "originate" the
same as the class authorization "system". Good system configuration, such as
not running Asterisk as root, can prevent serious problems from arising when
allowing external connections to originate calls into Asterisk.
## Avoid Privilege Escalations
External control protocols, such as Manager, often have the ability to get and
set channel variables; which allows the execution of dialplan functions.
Dialplan functions within Asterisk are incredibly powerful, which is wonderful
for building applications using Asterisk. But during the read or write
execution, certain dialplan functions do much more. For example, reading the
SHELL() function can execute arbitrary commands on the system Asterisk is
running on. Writing to the FILE() function can change any file that Asterisk has
write access to.
When these functions are executed from an external protocol, that execution
could result in a privilege escalation. Asterisk can inhibit the execution of
these functions, if live_dangerously in the \[options\] section of asterisk.conf
is set to no.
In Asterisk 12 and later, live_dangerously defaults to no.
[voip-security-webinar]: https://docs.asterisk.org/Deployment/Important-Security-Considerations/Asterisk-Security-Webinars/
[blog-sip-security]: https://web.archive.org/web/20171030134647/http://blogs.digium.com/2009/03/28/sip-security/
[Strong Password Generator]: https://www.strongpasswordgenerator.com
[Filtering Data]: #filtering-data
[Proper Device Naming]: #proper-device-naming
[Secure Passwords]: #secure-passwords
[Reducing Pattern Match Typos]: #reducing-pattern-match-typos
[Manager Class Authorizations]: #manager-class-authorizations
[Avoid Privilege Escalations]: #avoid-privilege-escalations
[Important Security Considerations]: https://docs.asterisk.org/Deployment/Important-Security-Considerations/

View File

@@ -1,27 +0,0 @@
===============================================================================
=== Asterisk Add-on Modules ===
===============================================================================
This document pertains to the modules that reside in the addons/
subdirectory of the source tree. By default, these modules are not compiled
and installed. If you choose to enable them, you must be aware of what
potential licensing and/or patent implications that has on your usage and
distribution of Asterisk.
Even though Asterisk is released as open source under the terms of the
GPLv2 (see LICENSE for details), no core functionality in Asterisk has any
dependencies on libraries that are licensed under the GPL. One reason a module
may be in the add-ons category is that it may have a GPL dependency. Since
these dependencies are not compatible with dual licensing of Asterisk, the
dependant modules are set aside to make it clear that they may not be used
with commercial versions of Asterisk, unless other licensing arrangements are
made with the copyright holders of those dependencies.
Another reason that modules may be set aside is that there may be
additional restrictions on the usage of the code imposed by the license or
related patents. The MySQL and MP3 modules are examples of this.
If you have any questions, contact your lawyer.
===============================================================================
===============================================================================

View File

@@ -1,174 +0,0 @@
<html><head><title>Readme for asterisk-20.18.2</title></head><body>
<h1>The Asterisk(R) Open Source PBX</h1>
<pre><code>By Mark Spencer &lt;markster@digium.com&gt; and the Asterisk.org developer community.
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
</code></pre>
<h2>SECURITY</h2>
<p>It is imperative that you read and fully understand the contents of
the security information document before you attempt to configure and run
an Asterisk server.</p>
<p>See <a href="https://docs.asterisk.org/Deployment/Important-Security-Considerations">Important Security Considerations</a> for more information.</p>
<h2>WHAT IS ASTERISK ?</h2>
<p>Asterisk is an Open Source PBX and telephony toolkit. It is, in a
sense, middleware between Internet and telephony channels on the bottom,
and Internet and telephony applications at the top. However, Asterisk supports
more telephony interfaces than just Internet telephony. Asterisk also has a
vast amount of support for traditional PSTN telephony, as well.</p>
<p>For more information on the project itself, please visit the <a href="https://www.asterisk.org">Asterisk
Home Page</a> and the official
<a href="https://docs.asterisk.org">Asterisk Documentation</a>.</p>
<h2>SUPPORTED OPERATING SYSTEMS</h2>
<h3>Linux</h3>
<p>The Asterisk Open Source PBX is developed and tested primarily on the
GNU/Linux operating system, and is supported on every major GNU/Linux
distribution.</p>
<h3>Others</h3>
<p>Asterisk has also been 'ported' and reportedly runs properly on other
operating systems as well, Apple's Mac OS X, and the BSD variants.</p>
<h2>GETTING STARTED</h2>
<p>Most users are using VoIP/SIP exclusively these days but if you need to
interface to TDM or analog services or devices, be sure you've got supported
hardware.</p>
<p>Supported telephony hardware includes:
* All Analog and Digital Interface cards from Sangoma
* Any full duplex sound card supported by PortAudio
* The Xorcom Astribank channel bank</p>
<h3>UPGRADING FROM AN EARLIER VERSION</h3>
<p>If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.</p>
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
<p><a href="ChangeLogs/ChangeLog-20.18.2.html">Change Logs</a></p>
<!-- END-CHANGELOGS -->
<h3>NEW INSTALLATIONS</h3>
<p>Ensure that your system contains a compatible compiler and development
libraries. Asterisk requires either the GNU Compiler Collection (GCC) version
4.1 or higher, or a compiler that supports the C99 specification and some of
the gcc language extensions. In addition, your system needs to have the C
library headers available, and the headers and libraries for ncurses.</p>
<p>There are many modules that have additional dependencies. To see what
libraries are being looked for, see <code>./configure --help</code>, or run
<code>make menuselect</code> to view the dependencies for specific modules.</p>
<p>On many distributions, these dependencies are installed by packages with names
like 'glibc-devel', 'ncurses-devel', 'openssl-devel' and 'zlib-devel'
or similar. The <code>contrib/scripts/install_prereq</code> script can be used to install
the dependencies for most Debian and Redhat based Linux distributions.
The script also handles SUSE, Arch, Gentoo, FreeBSD, NetBSD and OpenBSD but
those distributions mightnoit have complete support or they might be out of date.</p>
<p>So, let's proceed:</p>
<ol>
<li>
<p>Read the documentation.<br>
The <a href="https://docs.asterisk.org">Asterisk Documentation</a> website has full
information for building, installing, configuring and running Asterisk.</p>
</li>
<li>
<p>Run <code>./configure</code><br>
Execute the configure script to guess values for system-dependent
variables used during compilation. If the script indicates that some required
components are missing, you can run <code>./contrib/scripts/install_prereq install</code>
to install the necessary components. Note that this will install all dependencies
for every functionality of Asterisk. After running the script, you will need
to rerun <code>./configure</code>.</p>
</li>
<li>
<p>Run <code>make menuselect</code><br>
This is needed if you want to select the modules that will be compiled and to
check dependencies for various optional modules.</p>
</li>
<li>
<p>Run <code>make</code><br>
Assuming the build completes successfully:</p>
</li>
<li>
<p>Run <code>make install</code><br>
If this is your first time working with Asterisk, you may wish to install
the sample PBX, with demonstration extensions, etc. If so, run:</p>
</li>
<li>
<p>Run <code>make samples</code><br>
Doing so will overwrite any existing configuration files you have installed.</p>
</li>
<li>
<p>Finally, you can launch Asterisk in the foreground mode (not a daemon) with
<code>asterisk -vvvc</code><br>
You'll see a bunch of verbose messages fly by your screen as Asterisk
initializes (that's the "very very verbose" mode). When it's ready, if
you specified the "c" then you'll get a command line console, that looks
like this:<br>
<code>*CLI&gt;</code><br>
You can type <code>core show help</code> at any time to get help with the system. For help
with a specific command, type <code>core show help &lt;command&gt;</code>.</p>
</li>
</ol>
<p><code>man asterisk</code> at the Unix/Linux command prompt will give you detailed
information on how to start and stop Asterisk, as well as all the command
line options for starting Asterisk.</p>
<h3>ABOUT CONFIGURATION FILES</h3>
<p>All Asterisk configuration files share a common format. Comments are
delimited by <code>;</code> (since <code>#</code> of course, being a DTMF digit, may occur in
many places). A configuration file is divided into sections whose names
appear in <code>[]</code>'s. Each section typically contains statements in the form
<code>variable = value</code> although you may see <code>variable =&gt; value</code> in older samples.</p>
<h3>SPECIAL NOTE ON TIME</h3>
<p>Those using SIP phones should be aware that Asterisk is sensitive to
large jumps in time. Manually changing the system time using date(1)
(or other similar commands) may cause SIP registrations and other
internal processes to fail. For this reason, you should always use
a time synchronization package to keep your system time accurate.
All OS/distributions make one or more of the following packages
available:</p>
<ul>
<li>ntpd/ntpsec</li>
<li>chronyd</li>
<li>systemd-timesyncd</li>
</ul>
<p>Be sure to install and configure one (and only one) of them.</p>
<h3>FILE DESCRIPTORS</h3>
<p>Depending on the size of your system and your configuration,
Asterisk can consume a large number of file descriptors. In UNIX,
file descriptors are used for more than just files on disk. File
descriptors are also used for handling network communication
(e.g. SIP, IAX2, or H.323 calls) and hardware access (e.g. analog and
digital trunk hardware). Asterisk accesses many on-disk files for
everything from configuration information to voicemail storage.</p>
<p>Most systems limit the number of file descriptors that Asterisk can
have open at one time. This can limit the number of simultaneous
calls that your system can handle. For example, if the limit is set
at 1024 (a common default value) Asterisk can handle approximately 150
SIP calls simultaneously. To change the number of file descriptors
follow the instructions for your system below:</p>
<h4>PAM-BASED LINUX SYSTEM</h4>
<p>If your system uses PAM (Pluggable Authentication Modules) edit
<code>/etc/security/limits.conf</code>. Add these lines to the bottom of the file:</p>
<pre><code class="language-text">root soft nofile 4096
root hard nofile 8196
asterisk soft nofile 4096
asterisk hard nofile 8196
</code></pre>
<p>(adjust the numbers to taste). You may need to reboot the system for
these changes to take effect.</p>
<h4>GENERIC UNIX SYSTEM</h4>
<p>If there are no instructions specifically adapted to your system
above you can try adding the command <code>ulimit -n 8192</code> to the script
that starts Asterisk.</p>
<h2>MORE INFORMATION</h2>
<p>Visit the <a href="https://docs.asterisk.org">Asterisk Documentation</a> website
for more documentation on various features and please read all the
configuration samples that include documentation on the configuration options.</p>
<p>Finally, you may wish to join the
<a href="https://community.asterisk.org">Asterisk Community Forums</a></p>
<p>Welcome to the growing worldwide community of Asterisk users!</p>
<pre><code> Mark Spencer, and the Asterisk.org development community
</code></pre>
<hr>
<p>Asterisk is a trademark of Sangoma Technologies Corporation</p>
<p>[<a href="https://www.sangoma.com/">Sangoma</a>]
[<a href="https://www.asterisk.org">Home Page</a>]
[<a href="https://www.asterisk.org/support">Support</a>]
[<a href="https://docs.asterisk.org">Documentation</a>]
[<a href="https://community.asterisk.org">Community Forums</a>]
[<a href="https://github.com/asterisk/asterisk/releases">Release Notes</a>]
[<a href="https://docs.asterisk.org/Deployment/Important-Security-Considerations/">Security</a>]
[<a href="https://lists.digium.com">Mailing List Archive</a>] </p>
</body></html>

212
README.md
View File

@@ -1,212 +0,0 @@
# The Asterisk(R) Open Source PBX
```
By Mark Spencer <markster@digium.com> and the Asterisk.org developer community.
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
```
## SECURITY
It is imperative that you read and fully understand the contents of
the security information document before you attempt to configure and run
an Asterisk server.
See [Important Security Considerations](https://docs.asterisk.org/Deployment/Important-Security-Considerations) for more information.
## WHAT IS ASTERISK ?
Asterisk is an Open Source PBX and telephony toolkit. It is, in a
sense, middleware between Internet and telephony channels on the bottom,
and Internet and telephony applications at the top. However, Asterisk supports
more telephony interfaces than just Internet telephony. Asterisk also has a
vast amount of support for traditional PSTN telephony, as well.
For more information on the project itself, please visit the [Asterisk
Home Page](https://www.asterisk.org) and the official
[Asterisk Documentation](https://docs.asterisk.org).
## SUPPORTED OPERATING SYSTEMS
### Linux
The Asterisk Open Source PBX is developed and tested primarily on the
GNU/Linux operating system, and is supported on every major GNU/Linux
distribution.
### Others
Asterisk has also been 'ported' and reportedly runs properly on other
operating systems as well, Apple's Mac OS X, and the BSD variants.
## GETTING STARTED
Most users are using VoIP/SIP exclusively these days but if you need to
interface to TDM or analog services or devices, be sure you've got supported
hardware.
Supported telephony hardware includes:
* All Analog and Digital Interface cards from Sangoma
* Any full duplex sound card supported by PortAudio
* The Xorcom Astribank channel bank
### UPGRADING FROM AN EARLIER VERSION
If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
[Change Logs](ChangeLogs/ChangeLog-20.18.2.html)
<!-- END-CHANGELOGS -->
### NEW INSTALLATIONS
Ensure that your system contains a compatible compiler and development
libraries. Asterisk requires either the GNU Compiler Collection (GCC) version
4.1 or higher, or a compiler that supports the C99 specification and some of
the gcc language extensions. In addition, your system needs to have the C
library headers available, and the headers and libraries for ncurses.
There are many modules that have additional dependencies. To see what
libraries are being looked for, see `./configure --help`, or run
`make menuselect` to view the dependencies for specific modules.
On many distributions, these dependencies are installed by packages with names
like 'glibc-devel', 'ncurses-devel', 'openssl-devel' and 'zlib-devel'
or similar. The `contrib/scripts/install_prereq` script can be used to install
the dependencies for most Debian and Redhat based Linux distributions.
The script also handles SUSE, Arch, Gentoo, FreeBSD, NetBSD and OpenBSD but
those distributions mightnoit have complete support or they might be out of date.
So, let's proceed:
1. Read the documentation.<br>
The [Asterisk Documentation](https://docs.asterisk.org) website has full
information for building, installing, configuring and running Asterisk.
2. Run `./configure`<br>
Execute the configure script to guess values for system-dependent
variables used during compilation. If the script indicates that some required
components are missing, you can run `./contrib/scripts/install_prereq install`
to install the necessary components. Note that this will install all dependencies
for every functionality of Asterisk. After running the script, you will need
to rerun `./configure`.
3. Run `make menuselect`<br>
This is needed if you want to select the modules that will be compiled and to
check dependencies for various optional modules.
4. Run `make`<br>
Assuming the build completes successfully:
5. Run `make install`<br>
If this is your first time working with Asterisk, you may wish to install
the sample PBX, with demonstration extensions, etc. If so, run:
6. Run `make samples`<br>
Doing so will overwrite any existing configuration files you have installed.
7. Finally, you can launch Asterisk in the foreground mode (not a daemon) with
`asterisk -vvvc`<br>
You'll see a bunch of verbose messages fly by your screen as Asterisk
initializes (that's the "very very verbose" mode). When it's ready, if
you specified the "c" then you'll get a command line console, that looks
like this:<br>
`*CLI>`<br>
You can type `core show help` at any time to get help with the system. For help
with a specific command, type `core show help <command>`.
`man asterisk` at the Unix/Linux command prompt will give you detailed
information on how to start and stop Asterisk, as well as all the command
line options for starting Asterisk.
### ABOUT CONFIGURATION FILES
All Asterisk configuration files share a common format. Comments are
delimited by `;` (since `#` of course, being a DTMF digit, may occur in
many places). A configuration file is divided into sections whose names
appear in `[]`'s. Each section typically contains statements in the form
`variable = value` although you may see `variable => value` in older samples.
### SPECIAL NOTE ON TIME
Those using SIP phones should be aware that Asterisk is sensitive to
large jumps in time. Manually changing the system time using date(1)
(or other similar commands) may cause SIP registrations and other
internal processes to fail. For this reason, you should always use
a time synchronization package to keep your system time accurate.
All OS/distributions make one or more of the following packages
available:
* ntpd/ntpsec
* chronyd
* systemd-timesyncd
Be sure to install and configure one (and only one) of them.
### FILE DESCRIPTORS
Depending on the size of your system and your configuration,
Asterisk can consume a large number of file descriptors. In UNIX,
file descriptors are used for more than just files on disk. File
descriptors are also used for handling network communication
(e.g. SIP, IAX2, or H.323 calls) and hardware access (e.g. analog and
digital trunk hardware). Asterisk accesses many on-disk files for
everything from configuration information to voicemail storage.
Most systems limit the number of file descriptors that Asterisk can
have open at one time. This can limit the number of simultaneous
calls that your system can handle. For example, if the limit is set
at 1024 (a common default value) Asterisk can handle approximately 150
SIP calls simultaneously. To change the number of file descriptors
follow the instructions for your system below:
#### PAM-BASED LINUX SYSTEM
If your system uses PAM (Pluggable Authentication Modules) edit
`/etc/security/limits.conf`. Add these lines to the bottom of the file:
```text
root soft nofile 4096
root hard nofile 8196
asterisk soft nofile 4096
asterisk hard nofile 8196
```
(adjust the numbers to taste). You may need to reboot the system for
these changes to take effect.
#### GENERIC UNIX SYSTEM
If there are no instructions specifically adapted to your system
above you can try adding the command `ulimit -n 8192` to the script
that starts Asterisk.
## MORE INFORMATION
Visit the [Asterisk Documentation](https://docs.asterisk.org) website
for more documentation on various features and please read all the
configuration samples that include documentation on the configuration options.
Finally, you may wish to join the
[Asterisk Community Forums](https://community.asterisk.org)
Welcome to the growing worldwide community of Asterisk users!
```
Mark Spencer, and the Asterisk.org development community
```
---
Asterisk is a trademark of Sangoma Technologies Corporation
\[[Sangoma](https://www.sangoma.com/)\]
\[[Home Page](https://www.asterisk.org)\]
\[[Support](https://www.asterisk.org/support)\]
\[[Documentation](https://docs.asterisk.org)\]
\[[Community Forums](https://community.asterisk.org)\]
\[[Release Notes](https://github.com/asterisk/asterisk/releases)\]
\[[Security](https://docs.asterisk.org/Deployment/Important-Security-Considerations/)\]
\[[Mailing List Archive](https://lists.digium.com)\]

22
README.opsound Normal file
View File

@@ -0,0 +1,22 @@
About Hold Music
================
These files were obtained from http://opsound.org, where the authors placed them
under the Creative Commons Attribution-Share Alike 2.5 license, a copy of which
may be found at http://creativecommons.org.
Credits
================
macroform-cold_day - Paul Shuler (Macroform)
paulshuler@gmail.com - http://macroform.bandcamp.com/
macroform-robot_dity - Paul Shuler (Macroform)
paulshuler@gmail.com - http://macroform.bandcamp.com/
macroform-the_simplicity - Paul Shuler (Macroform)
paulshuler@gmail.com - http://macroform.bandcamp.com/
manolo_camp-morning_coffee - Manolo Camp
beatbastard@gmx.net - http://ccmixter.org/people/ManoloCamp
reno_project-system - Reno Project
renoproject@hotmail.com - http://www.jamendo.com/en/album/23661

67
SECURITY Normal file
View File

@@ -0,0 +1,67 @@
==== Security Notes with Asterisk ====
PLEASE READ THE FOLLOWING IMPORTANT SECURITY RELATED INFORMATION.
IMPROPER CONFIGURATION OF ASTERISK COULD ALLOW UNAUTHORIZED USE OF YOUR
FACILITIES, POTENTIALLY INCURRING SUBSTANTIAL CHARGES.
Asterisk security involves both network security (encryption, authentication)
as well as dialplan security (authorization - who can access services in
your pbx). If you are setting up Asterisk in production use, please make
sure you understand the issues involved.
* NETWORK SECURITY
If you install Asterisk and use the "make samples" command to install
a demonstration configuration, Asterisk will open a few ports for accepting
VoIP calls. Check the channel configuration files for the ports and IP addresses.
If you enable the manager interface in manager.conf, please make sure that
you access manager in a safe environment or protect it with SSH or other
VPN solutions.
For all TCP/IP connections in Asterisk, you can set ACL lists that
will permit or deny network access to Asterisk services. Please check
the "permit" and "deny" configuration options in manager.conf and
the VoIP channel configurations - i.e. sip.conf and iax.conf.
The IAX2 protocol supports strong RSA key authentication as well as
AES encryption of voice and signalling. The SIP channel does not
support encryption in this version of Asterisk.
* DIALPLAN SECURITY
First and foremost remember this:
USE THE EXTENSION CONTEXTS TO ISOLATE OUTGOING OR TOLL SERVICES FROM ANY
INCOMING CONNECTIONS.
You should consider that if any channel, incoming line, etc can enter an
extension context that it has the capability of accessing any extension
within that context.
Therefore, you should NOT allow access to outgoing or toll services in
contexts that are accessible (especially without a password) from incoming
channels, be they IAX channels, FX or other trunks, or even untrusted
stations within you network. In particular, never ever put outgoing toll
services in the "default" context. To make things easier, you can include
the "default" context within other private contexts by using:
include => default
in the appropriate section. A well designed PBX might look like this:
[longdistance]
exten => _91NXXNXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
include => local
[local]
exten => _9NXXNXXX,1,Dial(Zap/g2/${EXTEN:1})
include => default
[default]
exten => 6123,Dial(Zap/1)
DON'T FORGET TO TAKE THE DEMO CONTEXT OUT OF YOUR DEFAULT CONTEXT. There
isn't really a security reason, it just will keep people from wanting to
play with your Asterisk setup remotely.

View File

@@ -1,9 +0,0 @@
# Security Policy
## Supported Versions
The Asterisk project maintains a [documentation page](https://docs.asterisk.org/About-the-Project/Asterisk-Versions/) of releases. Each version is listed with its release date, security fix only date, and end of life date. Consult this wiki page to see if the version of Asterisk you are reporting a security vulnerability against is still supported.
## Reporting a Vulnerability
To report a vulnerability use the "Report a vulnerability" button under the "Security" tab of this project.

205
UPGRADE.txt Normal file
View File

@@ -0,0 +1,205 @@
Information for Upgrading From Previous Asterisk Releases
=========================================================
Compiling:
* The Asterisk 1.2 source code now uses C language features
supported only by 'modern' C compilers. Generally, this means GCC
version 3.0 or higher, although some GCC 2.96 releases will also
work. Some non-GCC compilers that support C99 and the common GCC
extensions (including anonymous structures and unions) will also
work. All releases of GCC 2.95 do _not_ have the requisite feature
support; systems using that compiler will need to be upgraded to
a more recent compiler release.
Dialplan Expressions:
* The dialplan expression parser (which handles $[ ... ] constructs)
has gone through a major upgrade, but has one incompatible change:
spaces are no longer required around expression operators, including
string comparisons. However, you can now use quoting to keep strings
together for comparison. For more details, please read the
doc/README.variables file, and check over your dialplan for possible
problems.
Agents:
* The default for ackcall has been changed to "no" instead of "yes"
because of a bug which caused the "yes" behavior to generally act like
"no". You may need to adjust the value if your agents behave
differently than you expect with respect to acknowledgement.
* The AgentCallBackLogin application now requires a second '|' before
specifying an extension@context. This is to distinguish the options
string from the extension, so that they do not conflict. See
'show application AgentCallbackLogin' for more details.
Parking:
* Parking behavior has changed slightly; when a parked call times out,
Asterisk will attempt to deliver the call back to the extension that
parked it, rather than the 's' extension. If that extension is busy
or unavailable, the parked call will be lost.
Dialing:
* The Caller*ID of the outbound leg is now the extension that was
called, rather than the Caller*ID of the inbound leg of the call. The
"o" flag for Dial can be used to restore the original behavior if
desired. Note that if you are looking for the originating callerid
from the manager event, there is a new manager event "Dial" which
provides the source and destination channels and callerid.
IAX:
* The naming convention for IAX channels has changed in two ways:
1. The call number follows a "-" rather than a "/" character.
2. The name of the channel has been simplified to IAX2/peer-callno,
rather than IAX2/peer@peer-callno or even IAX2/peer@peer/callno.
SIP:
* The global option "port" in 1.0.X that is used to set which port to
bind to has been changed to "bindport" to be more consistent with
the other channel drivers and to avoid confusion with the "port"
option for users/peers.
* The "Registry" event now uses "Username" rather than "User" for
consistency with IAX.
Applications:
* With the addition of dialplan functions (which operate similarly
to variables), the SetVar application has been renamed to Set.
* The CallerPres application has been removed. Use SetCallerPres
instead. It accepts both numeric and symbolic names.
* The applications GetGroupCount, GetGroupMatchCount, SetGroup, and
CheckGroup have been deprecated in favor of functions. Here is a
table of their replacements:
GetGroupCount([groupname][@category] GROUP_COUNT([groupname][@category]) Set(GROUPCOUNT=${GROUP_COUNT()})
GroupMatchCount(groupmatch[@category]) GROUP_MATCH_COUNT(groupmatch[@category]) Set(GROUPCOUNT=${GROUP_MATCH_COUNT(SIP/.*)})
SetGroup(groupname[@category]) GROUP([category])=groupname Set(GROUP()=test)
CheckGroup(max[@category]) N/A GotoIf($[ ${GROUP_COUNT()} > 5 ]?103)
Note that CheckGroup does not have a direct replacement. There is
also a new function called GROUP_LIST() which will return a space
separated list of all of the groups set on a channel. The GROUP()
function can also return the name of the group set on a channel when
used in a read environment.
* The applications DBGet and DBPut have been deprecated in favor of
functions. Here is a table of their replacements:
DBGet(foo=family/key) Set(foo=${DB(family/key)})
DBPut(family/key=${foo}) Set(DB(family/key)=${foo})
* The application SetLanguage has been deprecated in favor of the
function LANGUAGE().
SetLanguage(fr) Set(LANGUAGE()=fr)
The LANGUAGE function can also return the currently set language:
Set(MYLANG=${LANGUAGE()})
* The applications AbsoluteTimeout, DigitTimeout, and ResponseTimeout
have been deprecated in favor of the function TIMEOUT(timeouttype):
AbsoluteTimeout(300) Set(TIMEOUT(absolute)=300)
DigitTimeout(15) Set(TIMEOUT(digit)=15)
ResponseTimeout(15) Set(TIMEOUT(response)=15)
The TIMEOUT() function can also return the currently set timeouts:
Set(DTIMEOUT=${TIMEOUT(digit)})
* The applications SetCIDName, SetCIDNum, and SetRDNIS have been
deprecated in favor of the CALLERID(datatype) function:
SetCIDName(Joe Cool) Set(CALLERID(name)=Joe Cool)
SetCIDNum(2025551212) Set(CALLERID(number)=2025551212)
SetRDNIS(2024561414) Set(CALLERID(RDNIS)=2024561414)
* The application Record now uses the period to separate the filename
from the format, rather than the colon.
* The application VoiceMail now supports a 'temporary' greeting for each
mailbox. This greeting can be recorded by using option 4 in the
'mailbox options' menu, and 'change your password' option has been
moved to option 5.
* The application VoiceMailMain now only matches the 'default' context if
none is specified in the arguments. (This was the previously
documented behavior, however, we didn't follow that behavior.) The old
behavior can be restored by setting searchcontexts=yes in voicemail.conf.
Queues:
* A queue is now considered empty not only if there are no members but if
none of the members are available (e.g. agents not logged on). To
restore the original behavior, use "leavewhenempty=strict" or
"joinwhenempty=strict" instead of "=yes" for those options.
* It is now possible to use multi-digit extensions in the exit context
for a queue (although you should not have overlapping extensions,
as there is no digit timeout). This means that the EXITWITHKEY event
in queue_log can now contain a key field with more than a single
character in it.
Extensions:
* By default, there is a new option called "autofallthrough" in
extensions.conf that is set to yes. Asterisk 1.0 (and earlier)
behavior was to wait for an extension to be dialed after there were no
more extensions to execute. "autofallthrough" changes this behavior
so that the call will immediately be terminated with BUSY,
CONGESTION, or HANGUP based on Asterisk's best guess. If you are
writing an extension for IVR, you must use the WaitExten application
if "autofallthrough" is set to yes.
AGI:
* AGI scripts did not always get SIGHUP at the end, previously. That
behavior has been fixed. If you do not want your script to terminate
at the end of AGI being called (e.g. on a hangup) then set SIGHUP to
be ignored within your application.
* CallerID is reported with agi_callerid and agi_calleridname instead
of a single parameter holding both.
Music On Hold:
* The preferred format for musiconhold.conf has changed; please see the
sample configuration file for the new format. The existing format
is still supported but will generate warnings when the module is loaded.
chan_modem:
* All the chan_modem channel drivers (aopen, bestdata and i4l) are deprecated
in this release, and will be removed in the next major Asterisk release.
Please migrate to chan_misdn for ISDN interfaces; there is no upgrade
path for aopen and bestdata modem users.
MeetMe:
* The conference application now allows users to increase/decrease their
speaking volume and listening volume (independently of each other and
other users); the 'admin' and 'user' menus have changed, and new sound
files are included with this release. However, if a user calling in
over a Zaptel channel that does NOT have hardware DTMF detection
increases their speaking volume, it is likely they will no longer be
able to enter/exit the menu or make any further adjustments, as the
software DTMF detector will not be able to recognize the DTMF coming
from their device.
GetVar Manager Action:
* Previously, the behavior of the GetVar manager action reported the value
of a variable in the following manner:
> name: value
This has been changed to a manner similar to the SetVar action and is now
> Variable: name
> Value: value

View File

@@ -1,56 +0,0 @@
=========================================================
=== Information for upgrading from Zaptel to DAHDI ===
=========================================================
As announced in early 2008, Digium is renaming the Zaptel telephony
interface project to DAHDI (Digium Asterisk Hardware Device Interface)
to accommodate the desires of the owner of the Zaptel trademark for
telephony purposes.
This version of Asterisk can only be built using DAHDI, and as a
result there are number of changes that will be visible to previous
users of Asterisk with Zaptel.
First, the modules that directly use services from DAHDI have been
renamed; the new names are:
chan_zap.so -> chan_dahdi.so
app_zapbarge.so -> app_dahdibarge.so
app_zapscan.so -> app_dahdiscan.so
codec_zap.so -> codec_dahdi.so
The following modules have been removed:
app_zapras.so -> app_dahdiras.so
Second, the behavior of many modules has changed due to the switch to
DAHDI; the changes are listed below.
chan_dahdi.so:
Incoming and outgoing channels managed by this module will be
'DAHDI' channels instead of 'Zap' channels.
All CLI commands that began with 'zap' have been renamed to 'dahdi'
commands.
All Asterisk Manager Interface (AMI) actions that began with 'Zap'
have changed to 'DAHDI' prefixes.
The ZapSendKeypadFacility dialplan application has been renamed to
DAHDISendKeypadFacility.
The configuration for the channel driver will be read from
/etc/asterisk/chan_dahdi.conf instead of /etc/asterisk/zapata.conf.
app_dahdibarge.so:
The ZapBarge application has been renamed to DAHDIBarge.
app_dahdiras.so:
The ZapRAS application was renamed to DAHDIRAS. This application has
since been removed.
app_dahdiscan.so:
The ZapScan application has been renamed to DAHDIScan.

355
acl.c Normal file
View File

@@ -0,0 +1,355 @@
/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 1999 - 2005, Digium, Inc.
*
* Mark Spencer <markster@digium.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*! \file
*
* \brief Various sorts of access control
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <signal.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netdb.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <sys/ioctl.h>
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)
#include <fcntl.h>
#include <net/route.h>
#endif
#if defined(SOLARIS)
#include <sys/sockio.h>
#endif
/* netinet/ip.h may not define the following (See RFCs 791 and 1349) */
#if !defined(IPTOS_LOWCOST)
#define IPTOS_LOWCOST 0x02
#endif
#if !defined(IPTOS_MINCOST)
#define IPTOS_MINCOST IPTOS_LOWCOST
#endif
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/acl.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/options.h"
#include "asterisk/utils.h"
#include "asterisk/lock.h"
#include "asterisk/srv.h"
#include "asterisk/compat.h"
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)
AST_MUTEX_DEFINE_STATIC(routeseq_lock);
#endif
struct ast_ha {
/* Host access rule */
struct in_addr netaddr;
struct in_addr netmask;
int sense;
struct ast_ha *next;
};
/* Default IP - if not otherwise set, don't breathe garbage */
static struct in_addr __ourip = { 0x00000000 };
struct my_ifreq {
char ifrn_name[IFNAMSIZ]; /* Interface name, e.g. "eth0", "ppp0", etc. */
struct sockaddr_in ifru_addr;
};
/* Free HA structure */
void ast_free_ha(struct ast_ha *ha)
{
struct ast_ha *hal;
while(ha) {
hal = ha;
ha = ha->next;
free(hal);
}
}
/* Copy HA structure */
static void ast_copy_ha(struct ast_ha *from, struct ast_ha *to)
{
memcpy(&to->netaddr, &from->netaddr, sizeof(from->netaddr));
memcpy(&to->netmask, &from->netmask, sizeof(from->netmask));
to->sense = from->sense;
}
/* Create duplicate of ha structure */
static struct ast_ha *ast_duplicate_ha(struct ast_ha *original)
{
struct ast_ha *new_ha = malloc(sizeof(struct ast_ha));
/* Copy from original to new object */
ast_copy_ha(original, new_ha);
return new_ha;
}
/* Create duplicate HA link list */
/* Used in chan_sip2 templates */
struct ast_ha *ast_duplicate_ha_list(struct ast_ha *original)
{
struct ast_ha *start=original;
struct ast_ha *ret = NULL;
struct ast_ha *link,*prev=NULL;
while (start) {
link = ast_duplicate_ha(start); /* Create copy of this object */
if (prev)
prev->next = link; /* Link previous to this object */
if (!ret)
ret = link; /* Save starting point */
start = start->next; /* Go to next object */
prev = link; /* Save pointer to this object */
}
return ret; /* Return start of list */
}
struct ast_ha *ast_append_ha(char *sense, char *stuff, struct ast_ha *path)
{
struct ast_ha *ha = malloc(sizeof(struct ast_ha));
char *nm = "255.255.255.255";
char tmp[256];
struct ast_ha *prev = NULL;
struct ast_ha *ret;
int x, z;
unsigned int y;
ret = path;
while (path) {
prev = path;
path = path->next;
}
if (ha) {
ast_copy_string(tmp, stuff, sizeof(tmp));
nm = strchr(tmp, '/');
if (!nm) {
nm = "255.255.255.255";
} else {
*nm = '\0';
nm++;
}
if (!strchr(nm, '.')) {
if ((sscanf(nm, "%d", &x) == 1) && (x >= 0) && (x <= 32)) {
y = 0;
for (z=0;z<x;z++) {
y >>= 1;
y |= 0x80000000;
}
ha->netmask.s_addr = htonl(y);
}
} else if (!inet_aton(nm, &ha->netmask)) {
ast_log(LOG_WARNING, "%s is not a valid netmask\n", nm);
free(ha);
return path;
}
if (!inet_aton(tmp, &ha->netaddr)) {
ast_log(LOG_WARNING, "%s is not a valid IP\n", tmp);
free(ha);
return path;
}
ha->netaddr.s_addr &= ha->netmask.s_addr;
if (!strncasecmp(sense, "p", 1)) {
ha->sense = AST_SENSE_ALLOW;
} else {
ha->sense = AST_SENSE_DENY;
}
ha->next = NULL;
if (prev) {
prev->next = ha;
} else {
ret = ha;
}
}
ast_log(LOG_DEBUG, "%s/%s appended to acl for peer\n", stuff, nm);
return ret;
}
int ast_apply_ha(struct ast_ha *ha, struct sockaddr_in *sin)
{
/* Start optimistic */
int res = AST_SENSE_ALLOW;
while (ha) {
char iabuf[INET_ADDRSTRLEN];
char iabuf2[INET_ADDRSTRLEN];
/* DEBUG */
ast_log(LOG_DEBUG,
"##### Testing %s with %s\n",
ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr),
ast_inet_ntoa(iabuf2, sizeof(iabuf2), ha->netaddr));
/* For each rule, if this address and the netmask = the net address
apply the current rule */
if ((sin->sin_addr.s_addr & ha->netmask.s_addr) == ha->netaddr.s_addr)
res = ha->sense;
ha = ha->next;
}
return res;
}
int ast_get_ip_or_srv(struct sockaddr_in *sin, const char *value, const char *service)
{
struct hostent *hp;
struct ast_hostent ahp;
char srv[256];
char host[256];
int tportno = ntohs(sin->sin_port);
if (inet_aton(value, &sin->sin_addr))
return 0;
if (service) {
snprintf(srv, sizeof(srv), "%s.%s", service, value);
if (ast_get_srv(NULL, host, sizeof(host), &tportno, srv) > 0) {
sin->sin_port = htons(tportno);
value = host;
}
}
hp = ast_gethostbyname(value, &ahp);
if (hp) {
memcpy(&sin->sin_addr, hp->h_addr, sizeof(sin->sin_addr));
} else {
ast_log(LOG_WARNING, "Unable to lookup '%s'\n", value);
return -1;
}
return 0;
}
int ast_str2tos(const char *value, int *tos)
{
int fval;
if (sscanf(value, "%i", &fval) == 1)
*tos = fval & 0xff;
else if (!strcasecmp(value, "lowdelay"))
*tos = IPTOS_LOWDELAY;
else if (!strcasecmp(value, "throughput"))
*tos = IPTOS_THROUGHPUT;
else if (!strcasecmp(value, "reliability"))
*tos = IPTOS_RELIABILITY;
else if (!strcasecmp(value, "mincost"))
*tos = IPTOS_MINCOST;
else if (!strcasecmp(value, "none"))
*tos = 0;
else
return -1;
return 0;
}
int ast_get_ip(struct sockaddr_in *sin, const char *value)
{
return ast_get_ip_or_srv(sin, value, NULL);
}
/* iface is the interface (e.g. eth0); address is the return value */
int ast_lookup_iface(char *iface, struct in_addr *address)
{
int mysock, res = 0;
struct my_ifreq ifreq;
memset(&ifreq, 0, sizeof(ifreq));
ast_copy_string(ifreq.ifrn_name, iface, sizeof(ifreq.ifrn_name));
mysock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
res = ioctl(mysock, SIOCGIFADDR, &ifreq);
close(mysock);
if (res < 0) {
ast_log(LOG_WARNING, "Unable to get IP of %s: %s\n", iface, strerror(errno));
memcpy((char *)address, (char *)&__ourip, sizeof(__ourip));
return -1;
} else {
memcpy((char *)address, (char *)&ifreq.ifru_addr.sin_addr, sizeof(ifreq.ifru_addr.sin_addr));
return 0;
}
}
int ast_ouraddrfor(struct in_addr *them, struct in_addr *us)
{
int s;
struct sockaddr_in sin;
socklen_t slen;
s = socket(PF_INET, SOCK_DGRAM, 0);
if (s < 0) {
ast_log(LOG_WARNING, "Cannot create socket\n");
return -1;
}
sin.sin_family = AF_INET;
sin.sin_port = 5060;
sin.sin_addr = *them;
if (connect(s, (struct sockaddr *)&sin, sizeof(sin))) {
ast_log(LOG_WARNING, "Cannot connect\n");
close(s);
return -1;
}
slen = sizeof(sin);
if (getsockname(s, (struct sockaddr *)&sin, &slen)) {
ast_log(LOG_WARNING, "Cannot get socket name\n");
close(s);
return -1;
}
close(s);
*us = sin.sin_addr;
return 0;
}
int ast_find_ourip(struct in_addr *ourip, struct sockaddr_in bindaddr)
{
char ourhost[MAXHOSTNAMELEN] = "";
struct ast_hostent ahp;
struct hostent *hp;
struct in_addr saddr;
/* just use the bind address if it is nonzero */
if (ntohl(bindaddr.sin_addr.s_addr)) {
memcpy(ourip, &bindaddr.sin_addr, sizeof(*ourip));
return 0;
}
/* try to use our hostname */
if (gethostname(ourhost, sizeof(ourhost) - 1)) {
ast_log(LOG_WARNING, "Unable to get hostname\n");
} else {
hp = ast_gethostbyname(ourhost, &ahp);
if (hp) {
memcpy(ourip, hp->h_addr, sizeof(*ourip));
return 0;
}
}
/* A.ROOT-SERVERS.NET. */
if (inet_aton("198.41.0.4", &saddr) && !ast_ouraddrfor(&saddr, ourip))
return 0;
return -1;
}

1
addons/.gitignore vendored
View File

@@ -1 +0,0 @@
mp3

View File

@@ -1,74 +0,0 @@
#
# Asterisk -- An open source telephony toolkit.
#
# Makefile for Add-on Modules
#
# Copyright (C) 2009, Digium, Inc.
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#
-include $(ASTTOPDIR)/menuselect.makeopts $(ASTTOPDIR)/menuselect.makedeps
MENUSELECT_CATEGORY=ADDONS
MENUSELECT_DESCRIPTION=Add-ons (See README-addons.txt)
OOH323C:=ooCmdChannel.c ooLogChan.c ooUtils.c ooGkClient.c context.c \
ooDateTime.c decode.c dlist.c encode.c errmgmt.c \
memheap.c ootrace.c oochannels.c ooh245.c ooports.c \
ooq931.c ooCapability.c ooSocket.c perutil.c eventHandler.c \
ooCalls.c ooStackCmds.c ooh323.c ooh323ep.c printHandler.c \
rtctype.c ooTimer.c h323/H235-SECURITY-MESSAGESDec.c \
h323/H235-SECURITY-MESSAGESEnc.c h323/H323-MESSAGES.c h323/H323-MESSAGESDec.c \
h323/H323-MESSAGESEnc.c h323/MULTIMEDIA-SYSTEM-CONTROL.c \
h323/MULTIMEDIA-SYSTEM-CONTROLDec.c h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
H323SOURCE:=$(addprefix ooh323c/src/,$(OOH323C)) ooh323cDriver.c
H323CFLAGS:=-Iooh323c/src -Iooh323c/src/h323
ALL_C_MODS:=chan_mobile \
chan_ooh323 \
format_mp3 \
res_config_mysql
all: check_mp3 _all
check_mp3:
ifeq ($(filter format_mp3,$(MENUSELECT_ADDONS)),)
@if [ ! -f mp3/Makefile ] ; then \
echo ; \
echo "**************************************************************" ; \
echo "*** ***" ; \
echo "*** ---> IMPORTANT INFORMATION ABOUT format_mp3 <--- ***" ; \
echo "*** ***" ; \
echo "*** format_mp3 has been selected to be installed, but the ***" ; \
echo "*** MP3 decoder library has not yet been downloaded into ***" ; \
echo "*** the source tree. To do so, please run the following ***" ; \
echo "*** command: ***" ; \
echo "*** ***" ; \
echo "*** $$ contrib/scripts/get_mp3_source.sh ***" ; \
echo "*** ***" ; \
echo "**************************************************************" ; \
echo ; \
fi
endif
include $(ASTTOPDIR)/Makefile.moddir_rules
chan_mobile.o: _ASTCFLAGS+=$(AST_NO_FORMAT_TRUNCATION)
chan_ooh323.so: _ASTCFLAGS+=$(H323CFLAGS)
$(call MOD_ADD_C,chan_ooh323,$(H323SOURCE))
ifneq ($(wildcard mp3/Makefile),)
# At the current time, the fate of mp3 is in flux so it didn't make sense to
# add configure/makeopts processing for array-bounds since this is the only
# source file that needs that warning suppressed.
mp3/layer3.o: _ASTCFLAGS+=-Wno-array-bounds
$(call MOD_ADD_C,format_mp3,mp3/common.c mp3/dct64_i386.c mp3/decode_ntom.c mp3/layer3.c mp3/tabinit.c mp3/interface.c)
.PHONY: check_mp3
else
.PHONY: check_mp3 format_mp3.o format_mp3.so
endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,123 +0,0 @@
/*
* Copyright (C) 2004-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
#ifndef _OO_CHAN_H323_H_
#define _OO_CHAN_H323_H_
#include "asterisk.h"
#undef PACKAGE_NAME
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
#undef PACKAGE_STRING
#undef PACKAGE_BUGREPORT
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/param.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <unistd.h>
#include <netdb.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include "asterisk/lock.h"
#include "asterisk/channel.h"
#include "asterisk/config.h"
#include "asterisk/logger.h"
#include "asterisk/module.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/options.h"
#include "asterisk/sched.h"
#include "asterisk/io.h"
#include "asterisk/causes.h"
#include "asterisk/rtp_engine.h"
#include "asterisk/acl.h"
#include "asterisk/callerid.h"
#include "asterisk/file.h"
#include "asterisk/cli.h"
#include "asterisk/app.h"
#include "asterisk/musiconhold.h"
#include "asterisk/manager.h"
#include "asterisk/dsp.h"
#include "asterisk/stringfields.h"
#include "asterisk/format.h"
#include "asterisk/format_cap.h"
#include "asterisk/udptl.h"
#include "asterisk/stasis_channels.h"
#include "asterisk/format_cache.h"
#include "asterisk/paths.h"
#include "ootypes.h"
#include "ooUtils.h"
#include "ooCapability.h"
#include "oochannels.h"
#include "ooh323ep.h"
#include "ooh323cDriver.h"
#include "ooCalls.h"
#include "ooq931.h"
#include "ooStackCmds.h"
#include "ooCapability.h"
#include "ooGkClient.h"
struct ooh323_pvt;
struct ooh323_user;
struct ooh323_peer;
/* Helper functions */
struct ooh323_user *find_user(const char * name, const char *ip);
struct ooh323_peer *find_peer(const char * name, int port);
void ooh323_delete_peer(struct ooh323_peer *peer);
int delete_users(void);
int delete_peers(void);
int ooh323_destroy(struct ooh323_pvt *p);
int reload_config(int reload);
int restart_monitor(void);
int configure_local_rtp(struct ooh323_pvt *p, ooCallData* call);
void setup_rtp_connection(ooCallData *call, const char *remoteIp,
int remotePort);
void close_rtp_connection(ooCallData *call);
struct ast_frame *ooh323_rtp_read
(struct ast_channel *ast, struct ooh323_pvt *p);
void ooh323_set_write_format(ooCallData *call, struct ast_format *fmt, int txframes);
void ooh323_set_read_format(ooCallData *call, struct ast_format *fmt);
int ooh323_convertAsteriskCapToH323Cap(struct ast_format *format);
int ooh323_convert_hangupcause_asteriskToH323(int cause);
int ooh323_convert_hangupcause_h323ToAsterisk(int cause);
int update_our_aliases(ooCallData *call, struct ooh323_pvt *p);
/* h323 msg callbacks */
int ooh323_onReceivedSetup(ooCallData *call, Q931Message *pmsg);
int ooh323_onReceivedDigit(OOH323CallData *call, const char* digit);
void setup_udptl_connection(ooCallData *call, const char *remoteIp, int remotePort);
void close_udptl_connection(ooCallData *call);
EXTERN char *handle_cli_ooh323_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
#endif

View File

@@ -1,329 +0,0 @@
/*
* Asterisk -- An open source telephony toolkit.
*
* Anthony Minessale <anthmct@yahoo.com>
*
* Derived from other asterisk sound formats by
* Mark Spencer <markster@linux-support.net>
*
* Thanks to mpglib from http://www.mpg123.org/
* and Chris Stenton [jacs@gnome.co.uk]
* for coding the ability to play stereo and non-8khz files
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*!
* \file
* \brief MP3 Format Handler
* \ingroup formats
*/
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
#include "asterisk.h"
#include "mp3/mpg123.h"
#include "mp3/mpglib.h"
#include "asterisk/module.h"
#include "asterisk/mod_format.h"
#include "asterisk/logger.h"
#include "asterisk/format_cache.h"
#define MP3_BUFLEN 320
#define MP3_SCACHE 16384
#define MP3_DCACHE 8192
struct mp3_private {
/*! state for the mp3 decoder */
struct mpstr mp;
/*! buffer to hold mp3 data after read from disk */
char sbuf[MP3_SCACHE];
/*! buffer for slinear audio after being decoded out of sbuf */
char dbuf[MP3_DCACHE];
/*! how much data has been written to the output buffer in the ast_filestream */
int buflen;
/*! how much data has been written to sbuf */
int sbuflen;
/*! how much data is left to be read out of dbuf, starting at dbufoffset */
int dbuflen;
/*! current offset for reading data out of dbuf */
int dbufoffset;
int offset;
long seek;
};
static const char name[] = "mp3";
#define BLOCKSIZE 160
#define OUTSCALE 4096
#define GAIN -4 /* 2^GAIN is the multiple to increase the volume by */
#if __BYTE_ORDER == __LITTLE_ENDIAN
#define htoll(b) (b)
#define htols(b) (b)
#define ltohl(b) (b)
#define ltohs(b) (b)
#else
#if __BYTE_ORDER == __BIG_ENDIAN
#define htoll(b) \
(((((b) ) & 0xFF) << 24) | \
((((b) >> 8) & 0xFF) << 16) | \
((((b) >> 16) & 0xFF) << 8) | \
((((b) >> 24) & 0xFF) ))
#define htols(b) \
(((((b) ) & 0xFF) << 8) | \
((((b) >> 8) & 0xFF) ))
#define ltohl(b) htoll(b)
#define ltohs(b) htols(b)
#else
#error "Endianess not defined"
#endif
#endif
static int mp3_open(struct ast_filestream *s)
{
struct mp3_private *p = s->_private;
InitMP3(&p->mp, OUTSCALE);
return 0;
}
static void mp3_close(struct ast_filestream *s)
{
struct mp3_private *p = s->_private;
ExitMP3(&p->mp);
return;
}
static int mp3_squeue(struct ast_filestream *s)
{
struct mp3_private *p = s->_private;
int res=0;
res = ftell(s->f);
p->sbuflen = fread(p->sbuf, 1, MP3_SCACHE, s->f);
if (p->sbuflen < MP3_SCACHE) {
if (ferror(s->f)) {
ast_log(LOG_WARNING, "Error while reading MP3 file: %s\n", strerror(errno));
return -1;
}
}
res = decodeMP3(&p->mp,p->sbuf,p->sbuflen,p->dbuf,MP3_DCACHE,&p->dbuflen);
if(res != MP3_OK)
return -1;
p->sbuflen -= p->dbuflen;
p->dbufoffset = 0;
return 0;
}
static int mp3_dqueue(struct ast_filestream *s)
{
struct mp3_private *p = s->_private;
int res=0;
if((res = decodeMP3(&p->mp,NULL,0,p->dbuf,MP3_DCACHE,&p->dbuflen)) == MP3_OK) {
p->sbuflen -= p->dbuflen;
p->dbufoffset = 0;
}
return res;
}
static int mp3_queue(struct ast_filestream *s)
{
struct mp3_private *p = s->_private;
int res = 0, bytes = 0;
if(p->seek) {
ExitMP3(&p->mp);
InitMP3(&p->mp, OUTSCALE);
fseek(s->f, 0, SEEK_SET);
p->sbuflen = p->dbuflen = p->offset = 0;
while(p->offset < p->seek) {
if(mp3_squeue(s))
return -1;
while(p->offset < p->seek && ((res = mp3_dqueue(s))) == MP3_OK) {
for(bytes = 0 ; bytes < p->dbuflen ; bytes++) {
p->dbufoffset++;
p->offset++;
if(p->offset >= p->seek)
break;
}
}
if(res == MP3_ERR)
return -1;
}
p->seek = 0;
return 0;
}
if(p->dbuflen == 0) {
if(p->sbuflen) {
res = mp3_dqueue(s);
if(res == MP3_ERR)
return -1;
}
if(! p->sbuflen || res != MP3_OK) {
if(mp3_squeue(s))
return -1;
}
}
return 0;
}
static struct ast_frame *mp3_read(struct ast_filestream *s, int *whennext)
{
struct mp3_private *p = s->_private;
int delay =0;
int save=0;
/* Pre-populate the buffer that holds audio to be returned (dbuf) */
if (mp3_queue(s)) {
return NULL;
}
if (p->dbuflen) {
/* Read out what's waiting in dbuf */
for (p->buflen = 0; p->buflen < MP3_BUFLEN && p->buflen < p->dbuflen; p->buflen++) {
s->buf[p->buflen + AST_FRIENDLY_OFFSET] = p->dbuf[p->buflen + p->dbufoffset];
}
p->dbufoffset += p->buflen;
p->dbuflen -= p->buflen;
}
if (p->buflen < MP3_BUFLEN) {
/* dbuf didn't have enough, so reset dbuf, fill it back up and continue */
p->dbuflen = p->dbufoffset = 0;
if (mp3_queue(s)) {
return NULL;
}
/* Make sure dbuf has enough to complete this read attempt */
if (p->dbuflen >= (MP3_BUFLEN - p->buflen)) {
for (save = p->buflen; p->buflen < MP3_BUFLEN; p->buflen++) {
s->buf[p->buflen + AST_FRIENDLY_OFFSET] = p->dbuf[(p->buflen - save) + p->dbufoffset];
}
p->dbufoffset += (MP3_BUFLEN - save);
p->dbuflen -= (MP3_BUFLEN - save);
}
}
p->offset += p->buflen;
delay = p->buflen / 2;
AST_FRAME_SET_BUFFER(&s->fr, s->buf, AST_FRIENDLY_OFFSET, p->buflen);
s->fr.samples = delay;
*whennext = delay;
return &s->fr;
}
static int mp3_write(struct ast_filestream *fs, struct ast_frame *f)
{
ast_log(LOG_ERROR,"I Can't write MP3 only read them.\n");
return -1;
}
static int mp3_seek(struct ast_filestream *s, off_t sample_offset, int whence)
{
struct mp3_private *p = s->_private;
off_t min,max,cur;
long offset=0,samples;
samples = sample_offset * 2;
min = 0;
fseek(s->f, 0, SEEK_END);
max = ftell(s->f) * 100;
cur = p->offset;
if (whence == SEEK_SET)
offset = samples + min;
else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
offset = samples + cur;
else if (whence == SEEK_END)
offset = max - samples;
if (whence != SEEK_FORCECUR) {
offset = (offset > max)?max:offset;
}
p->seek = offset;
return fseek(s->f, offset, SEEK_SET);
}
static int mp3_rewrite(struct ast_filestream *s, const char *comment)
{
ast_log(LOG_ERROR,"I Can't write MP3 only read them.\n");
return -1;
}
static int mp3_trunc(struct ast_filestream *s)
{
ast_log(LOG_ERROR,"I Can't write MP3 only read them.\n");
return -1;
}
static off_t mp3_tell(struct ast_filestream *s)
{
struct mp3_private *p = s->_private;
return p->offset/2;
}
static char *mp3_getcomment(struct ast_filestream *s)
{
return NULL;
}
static struct ast_format_def mp3_f = {
.name = "mp3",
.exts = "mp3",
.open = mp3_open,
.write = mp3_write,
.rewrite = mp3_rewrite,
.seek = mp3_seek,
.trunc = mp3_trunc,
.tell = mp3_tell,
.read = mp3_read,
.close = mp3_close,
.getcomment = mp3_getcomment,
.buf_size = MP3_BUFLEN + AST_FRIENDLY_OFFSET,
.desc_size = sizeof(struct mp3_private),
};
static int load_module(void)
{
mp3_f.format = ast_format_slin;
InitMP3Constants();
return ast_format_def_register(&mp3_f);
}
static int unload_module(void)
{
return ast_format_def_unregister(name);
}
AST_MODULE_INFO_STANDARD_EXTENDED(ASTERISK_GPL_KEY, "MP3 format [Any rate but 8000hz mono is optimal]");

View File

@@ -1,341 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -1,94 +0,0 @@
Copyright (C) 2004-2005 by Objective Systems, Inc.
Objective Open H.323 README
Introduction
Objective Open H.323 stack is a simple H.323 implementation in C. This
package contains the core stack code. For complete H.323 stack package with
examples or for more information visit www.obj-sys.com/open
The ASN.1 messaging code was developed using the Objective Systems ASN1C
compiler to implement the core H.323 specifications (H.225, H.235,
and H.245). Additional code was then developed which makes use of
the compiler generated code for presenting a comparatively high level
stack API.
Features
Features supported in this package include the following:
* H.225/Q.931 - the following message types are supported (including
support for FastStart and H.245 tunneling):
- Setup
- Connect
- Call Proceeding
- Alerting
- Facility
- ReleaseComplete
* H.225/RAS - the following message types are supported
- GateKeeperRequest / Response
- RegistrationRequest / Response
- AdmissionRequest / Response
- DisengageRequest / Response
* H.245 - the following message types are supported
- MasterSlaveDetermination
- MasterSlaveDeterminationAck
- MasterSlaveDeterminationReject
- MasterSlaveDeterminationRelease
- TerminalCapabilitySet
- TerminalCapabilitySetReject
- TerminalCapabilitySetRelease
- TerminalCapabilitySetAck
- OpenLogicalChannel
- OpenLogicalChannelAck
- OpenLogicalChannelReject
- CloseLogicalChannel
- CloseLogicalChannelAck
- RequestChannelClose
- RequestChannelCloseAck
- RequestChannelCloseReject
- RequestChannelCloseRelease
To run the stack test application chansetup
chansetup - This is a sample program developed for testing multiple calls.
This program allows stack testing by placing multiple calls. The number of
calls, duration of each call and interval between successive calls are
configurable.
1. Two instances of this program have to be run. Can be run on same machine or
different machines.
2. First change to chansetup directory.
cd tests/chansetup
2. For running listener instance,
./h323peer [--use-ip ip] [--use-port port]
where local ip address and port can be specified for listening to incoming
calls. By default, application determines ip address and uses default H323
port number 1720.
3. For running calling instance
./h323peer [--use-ip ip] -n <number of calls> -duration <call duration>
-interval <interval between successive calls> destination
where all times are in seconds. Interval of 0 means next call will be placed
after current call finishes. "destination" is the dotted ip address of the
endpoint running listener instance.
NOTE: More sample programs are available in the original ooh323c package
which can be downloaded from www.obj-sys.com/open
Reporting Problems:
Report problems you encounter by sending E-mail to support@obj-sys.com.
If you have any further questions or comments on what you would like to
see in the product or what is difficult to use or understand, please
communicate them to us. Your feedback is important to us. Please let us
know how it works out for you - either good or bad.

View File

@@ -1,564 +0,0 @@
# Makefile.in generated by automake 1.6.3 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
EXEEXT = @EXEEXT@
OBJEXT = @OBJEXT@
PATH_SEPARATOR = @PATH_SEPARATOR@
AMTAR = @AMTAR@
AS = @AS@
AWK = @AWK@
CC = @CC@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
ECHO = @ECHO@
INSTALLPREFIX = @INSTALLPREFIX@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
OBJDUMP = @OBJDUMP@
OOH323CDRIVERDIR = @OOH323CDRIVERDIR@
OOH323CFLAGS = @OOH323CFLAGS@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
STRIP = @STRIP@
VERSION = @VERSION@
am__include = @am__include@
am__quote = @am__quote@
install_sh = @install_sh@
AUTOMAKE_OPTIONS = gnu
CFLAGS = @OOH323CFLAGS@
noinst_LIBRARIES = libooh323c.a
libooh323c_a_SOURCES = ooLogChan.h ooLogChan.c ooUtils.c ooUtils.h ooGkClient.h ooGkClient.c context.c ooCommon.h ooDateTime.h ooDateTime.c decode.c dlist.c encode.c errmgmt.c memheap.c memheap.h ooasn1.h ootrace.h ootrace.c oochannels.c oochannels.h ooh245.c ooh245.h oohdr.h ooper.h ooports.c ooports.h ooq931.c ooq931.h ooCapability.c ooCapability.h ooSocket.c ooSocket.h ootypes.h perutil.c eventHandler.c eventHandler.h ooCalls.c ooCalls.h ooStackCmds.c ooStackCmds.h ooh323.c ooh323.h ooh323ep.c ooh323ep.h printHandler.c printHandler.h rtctype.c rtctype.h ooTimer.c ooTimer.h h323/H235-SECURITY-MESSAGESDec.c h323/H235-SECURITY-MESSAGESEnc.c h323/H235-SECURITY-MESSAGES.h h323/H323-MESSAGES.c h323/H323-MESSAGESDec.c h323/H323-MESSAGESEnc.c h323/H323-MESSAGES.h h323/MULTIMEDIA-SYSTEM-CONTROL.c h323/MULTIMEDIA-SYSTEM-CONTROLDec.c h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c h323/MULTIMEDIA-SYSTEM-CONTROL.h
INCLUDES = -Ih323
#include_HEADERS = ooUtils.h memheap.h ooCommon.h ooDateTime.h ooGkClient.h ooasn1.h oochannels.h ootrace.h ooh245.h ooports.h ooq931.h oohdr.h ooper.h ooSocket.h ooTimer.h ootypes.h eventHandler.h ooCapability.h ooCalls.h ooStackCmds.h ooh323.h ooh323ep.h printHandler.h rtctype.h h323/H235-SECURITY-MESSAGES.h h323/H323-MESSAGES.h h323/MULTIMEDIA-SYSTEM-CONTROL.h
EXTRA_DIST = oostk.dsp
subdir = ooh323c/src
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES)
libooh323c_a_AR = $(AR) cr
libooh323c_a_LIBADD =
am_libooh323c_a_OBJECTS = ooLogChan.$(OBJEXT) ooUtils.$(OBJEXT) \
ooGkClient.$(OBJEXT) context.$(OBJEXT) ooDateTime.$(OBJEXT) \
decode.$(OBJEXT) dlist.$(OBJEXT) encode.$(OBJEXT) \
errmgmt.$(OBJEXT) memheap.$(OBJEXT) ootrace.$(OBJEXT) \
oochannels.$(OBJEXT) ooh245.$(OBJEXT) ooports.$(OBJEXT) \
ooq931.$(OBJEXT) ooCapability.$(OBJEXT) ooSocket.$(OBJEXT) \
perutil.$(OBJEXT) eventHandler.$(OBJEXT) ooCalls.$(OBJEXT) \
ooStackCmds.$(OBJEXT) ooh323.$(OBJEXT) ooh323ep.$(OBJEXT) \
printHandler.$(OBJEXT) rtctype.$(OBJEXT) ooTimer.$(OBJEXT) \
H235-SECURITY-MESSAGESDec.$(OBJEXT) \
H235-SECURITY-MESSAGESEnc.$(OBJEXT) H323-MESSAGES.$(OBJEXT) \
H323-MESSAGESDec.$(OBJEXT) H323-MESSAGESEnc.$(OBJEXT) \
MULTIMEDIA-SYSTEM-CONTROL.$(OBJEXT) \
MULTIMEDIA-SYSTEM-CONTROLDec.$(OBJEXT) \
MULTIMEDIA-SYSTEM-CONTROLEnc.$(OBJEXT)
libooh323c_a_OBJECTS = $(am_libooh323c_a_OBJECTS)
DEFS = @DEFS@
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/H323-MESSAGES.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/H323-MESSAGESDec.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/H323-MESSAGESEnc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/context.Po ./$(DEPDIR)/decode.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/dlist.Po ./$(DEPDIR)/encode.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/errmgmt.Po ./$(DEPDIR)/eventHandler.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/memheap.Po ./$(DEPDIR)/ooCalls.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooCapability.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooDateTime.Po ./$(DEPDIR)/ooGkClient.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooLogChan.Po ./$(DEPDIR)/ooSocket.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooStackCmds.Po ./$(DEPDIR)/ooTimer.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooUtils.Po ./$(DEPDIR)/oochannels.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooh245.Po ./$(DEPDIR)/ooh323.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooh323ep.Po ./$(DEPDIR)/ooports.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/ooq931.Po ./$(DEPDIR)/ootrace.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/perutil.Po ./$(DEPDIR)/printHandler.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/rtctype.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
DIST_SOURCES = $(libooh323c_a_SOURCES)
DIST_COMMON = Makefile.am Makefile.in
SOURCES = $(libooh323c_a_SOURCES)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu ooh323c/src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
AR = ar
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
H235-SECURITY-MESSAGESDec.$(OBJEXT): h323/H235-SECURITY-MESSAGESDec.c
H235-SECURITY-MESSAGESEnc.$(OBJEXT): h323/H235-SECURITY-MESSAGESEnc.c
H323-MESSAGES.$(OBJEXT): h323/H323-MESSAGES.c
H323-MESSAGESDec.$(OBJEXT): h323/H323-MESSAGESDec.c
H323-MESSAGESEnc.$(OBJEXT): h323/H323-MESSAGESEnc.c
MULTIMEDIA-SYSTEM-CONTROL.$(OBJEXT): h323/MULTIMEDIA-SYSTEM-CONTROL.c
MULTIMEDIA-SYSTEM-CONTROLDec.$(OBJEXT): \
h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
MULTIMEDIA-SYSTEM-CONTROLEnc.$(OBJEXT): \
h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
libooh323c.a: $(libooh323c_a_OBJECTS) $(libooh323c_a_DEPENDENCIES)
-rm -f libooh323c.a
$(libooh323c_a_AR) libooh323c.a $(libooh323c_a_OBJECTS) $(libooh323c_a_LIBADD)
$(RANLIB) libooh323c.a
mostlyclean-compile:
-rm -f *.$(OBJEXT) core *.core
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H323-MESSAGES.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H323-MESSAGESDec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H323-MESSAGESEnc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlist.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errmgmt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventHandler.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memheap.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooCalls.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooCapability.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooDateTime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooGkClient.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooLogChan.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooSocket.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooStackCmds.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooTimer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooUtils.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oochannels.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooh245.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooh323.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooh323ep.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooports.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooq931.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ootrace.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perutil.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printHandler.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtctype.Po@am__quote@
distclean-depend:
-rm -rf ./$(DEPDIR)
.c.o:
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
.c.obj:
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(COMPILE) -c `cygpath -w $<`
.c.lo:
@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
H235-SECURITY-MESSAGESDec.o: h323/H235-SECURITY-MESSAGESDec.c
@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESDec.c' object='H235-SECURITY-MESSAGESDec.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESDec.o `test -f 'h323/H235-SECURITY-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESDec.c
H235-SECURITY-MESSAGESDec.obj: h323/H235-SECURITY-MESSAGESDec.c
@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESDec.c' object='H235-SECURITY-MESSAGESDec.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESDec.obj `cygpath -w h323/H235-SECURITY-MESSAGESDec.c`
H235-SECURITY-MESSAGESDec.lo: h323/H235-SECURITY-MESSAGESDec.c
@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESDec.c' object='H235-SECURITY-MESSAGESDec.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.Plo' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESDec.lo `test -f 'h323/H235-SECURITY-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESDec.c
H235-SECURITY-MESSAGESEnc.o: h323/H235-SECURITY-MESSAGESEnc.c
@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESEnc.c' object='H235-SECURITY-MESSAGESEnc.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESEnc.o `test -f 'h323/H235-SECURITY-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESEnc.c
H235-SECURITY-MESSAGESEnc.obj: h323/H235-SECURITY-MESSAGESEnc.c
@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESEnc.c' object='H235-SECURITY-MESSAGESEnc.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESEnc.obj `cygpath -w h323/H235-SECURITY-MESSAGESEnc.c`
H235-SECURITY-MESSAGESEnc.lo: h323/H235-SECURITY-MESSAGESEnc.c
@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESEnc.c' object='H235-SECURITY-MESSAGESEnc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Plo' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESEnc.lo `test -f 'h323/H235-SECURITY-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESEnc.c
H323-MESSAGES.o: h323/H323-MESSAGES.c
@AMDEP_TRUE@ source='h323/H323-MESSAGES.c' object='H323-MESSAGES.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGES.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGES.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGES.o `test -f 'h323/H323-MESSAGES.c' || echo '$(srcdir)/'`h323/H323-MESSAGES.c
H323-MESSAGES.obj: h323/H323-MESSAGES.c
@AMDEP_TRUE@ source='h323/H323-MESSAGES.c' object='H323-MESSAGES.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGES.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGES.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGES.obj `cygpath -w h323/H323-MESSAGES.c`
H323-MESSAGES.lo: h323/H323-MESSAGES.c
@AMDEP_TRUE@ source='h323/H323-MESSAGES.c' object='H323-MESSAGES.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGES.Plo' tmpdepfile='$(DEPDIR)/H323-MESSAGES.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGES.lo `test -f 'h323/H323-MESSAGES.c' || echo '$(srcdir)/'`h323/H323-MESSAGES.c
H323-MESSAGESDec.o: h323/H323-MESSAGESDec.c
@AMDEP_TRUE@ source='h323/H323-MESSAGESDec.c' object='H323-MESSAGESDec.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESDec.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESDec.o `test -f 'h323/H323-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H323-MESSAGESDec.c
H323-MESSAGESDec.obj: h323/H323-MESSAGESDec.c
@AMDEP_TRUE@ source='h323/H323-MESSAGESDec.c' object='H323-MESSAGESDec.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESDec.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESDec.obj `cygpath -w h323/H323-MESSAGESDec.c`
H323-MESSAGESDec.lo: h323/H323-MESSAGESDec.c
@AMDEP_TRUE@ source='h323/H323-MESSAGESDec.c' object='H323-MESSAGESDec.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESDec.Plo' tmpdepfile='$(DEPDIR)/H323-MESSAGESDec.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESDec.lo `test -f 'h323/H323-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H323-MESSAGESDec.c
H323-MESSAGESEnc.o: h323/H323-MESSAGESEnc.c
@AMDEP_TRUE@ source='h323/H323-MESSAGESEnc.c' object='H323-MESSAGESEnc.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESEnc.o `test -f 'h323/H323-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H323-MESSAGESEnc.c
H323-MESSAGESEnc.obj: h323/H323-MESSAGESEnc.c
@AMDEP_TRUE@ source='h323/H323-MESSAGESEnc.c' object='H323-MESSAGESEnc.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESEnc.obj `cygpath -w h323/H323-MESSAGESEnc.c`
H323-MESSAGESEnc.lo: h323/H323-MESSAGESEnc.c
@AMDEP_TRUE@ source='h323/H323-MESSAGESEnc.c' object='H323-MESSAGESEnc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESEnc.Plo' tmpdepfile='$(DEPDIR)/H323-MESSAGESEnc.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESEnc.lo `test -f 'h323/H323-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H323-MESSAGESEnc.c
MULTIMEDIA-SYSTEM-CONTROL.o: h323/MULTIMEDIA-SYSTEM-CONTROL.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROL.c' object='MULTIMEDIA-SYSTEM-CONTROL.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROL.o `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROL.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROL.c
MULTIMEDIA-SYSTEM-CONTROL.obj: h323/MULTIMEDIA-SYSTEM-CONTROL.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROL.c' object='MULTIMEDIA-SYSTEM-CONTROL.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROL.obj `cygpath -w h323/MULTIMEDIA-SYSTEM-CONTROL.c`
MULTIMEDIA-SYSTEM-CONTROL.lo: h323/MULTIMEDIA-SYSTEM-CONTROL.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROL.c' object='MULTIMEDIA-SYSTEM-CONTROL.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Plo' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROL.lo `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROL.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROL.c
MULTIMEDIA-SYSTEM-CONTROLDec.o: h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' object='MULTIMEDIA-SYSTEM-CONTROLDec.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLDec.o `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
MULTIMEDIA-SYSTEM-CONTROLDec.obj: h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' object='MULTIMEDIA-SYSTEM-CONTROLDec.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLDec.obj `cygpath -w h323/MULTIMEDIA-SYSTEM-CONTROLDec.c`
MULTIMEDIA-SYSTEM-CONTROLDec.lo: h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' object='MULTIMEDIA-SYSTEM-CONTROLDec.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Plo' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLDec.lo `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
MULTIMEDIA-SYSTEM-CONTROLEnc.o: h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' object='MULTIMEDIA-SYSTEM-CONTROLEnc.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLEnc.o `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
MULTIMEDIA-SYSTEM-CONTROLEnc.obj: h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' object='MULTIMEDIA-SYSTEM-CONTROLEnc.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.TPo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLEnc.obj `cygpath -w h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c`
MULTIMEDIA-SYSTEM-CONTROLEnc.lo: h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' object='MULTIMEDIA-SYSTEM-CONTROLEnc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Plo' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.TPlo' @AMDEPBACKSLASH@
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLEnc.lo `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
CCDEPMODE = @CCDEPMODE@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ETAGS = etags
ETAGSFLAGS =
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = ../..
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@list='$(DISTFILES)'; for file in $$list; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
mostlyclean-am
distclean: distclean-am
distclean-am: clean-am distclean-compile distclean-depend \
distclean-generic distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
uninstall-am: uninstall-info-am
.PHONY: GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLIBRARIES distclean distclean-compile \
distclean-depend distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am info info-am install \
install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
tags uninstall uninstall-am uninstall-info-am
opt:
$(MAKE) "CFLAGS = -DGNU -D_GNU_SOURCE -D_REENTRANT -O2 -D_COMPACT" all
debug:
$(MAKE) "CFLAGS = -g -DGNU -D_GNU_SOURCE -D_REENTRANT" all
profile:
$(MAKE) "CFLAGS = -g -pg -DGNU -D_GNU_SOURCE -D_REENTRANT" all
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -1,172 +0,0 @@
/*
* Copyright (C) 1997-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
#include "asterisk.h"
#include "asterisk/lock.h"
#include "asterisk/utils.h"
#include "ooasn1.h"
#include <stdlib.h>
#include <pthread.h>
int initContext (OOCTXT* pctxt)
{
memset (pctxt, 0, sizeof(OOCTXT));
memHeapCreate (&pctxt->pTypeMemHeap);
pctxt->pMsgMemHeap = pctxt->pTypeMemHeap;
memHeapAddRef (&pctxt->pMsgMemHeap);
ast_mutex_init(&pctxt->pLock);
return ASN_OK;
}
int initContextBuffer
(OOCTXT* pctxt, const ASN1OCTET* bufaddr, ASN1UINT bufsiz)
{
if (bufaddr == 0) {
/* dynamic buffer */
if (bufsiz == 0) bufsiz = ASN_K_ENCBUFSIZ;
pctxt->buffer.data = (ASN1OCTET*)
memHeapAlloc (&pctxt->pMsgMemHeap, bufsiz);
if (!pctxt->buffer.data) return ASN_E_NOMEM;
pctxt->buffer.size = bufsiz;
pctxt->buffer.dynamic = TRUE;
}
else {
/* static buffer */
pctxt->buffer.data = (ASN1OCTET*) bufaddr;
pctxt->buffer.size = bufsiz;
pctxt->buffer.dynamic = FALSE;
}
pctxt->buffer.byteIndex = 0;
pctxt->buffer.bitOffset = 8;
return ASN_OK;
}
int initSubContext (OOCTXT* pctxt, OOCTXT* psrc)
{
/* ast_mutex_lock(&pctxt->pLock); */
int stat = ASN_OK;
ast_mutex_lock(&psrc->pLock);
memset (pctxt, 0, sizeof(OOCTXT));
pctxt->pTypeMemHeap = psrc->pTypeMemHeap;
memHeapAddRef (&pctxt->pTypeMemHeap);
pctxt->pMsgMemHeap = psrc->pMsgMemHeap;
memHeapAddRef (&pctxt->pMsgMemHeap);
pctxt->flags = psrc->flags;
pctxt->buffer.dynamic = TRUE;
pctxt->buffer.byteIndex = 0;
pctxt->buffer.bitOffset = 8;
ast_mutex_unlock(&psrc->pLock);
/* ast_mutex_unlock(&pctxt->pLock); */
return stat;
}
void freeContext (OOCTXT* pctxt)
{
ASN1BOOL saveBuf;
ast_mutex_lock(&pctxt->pLock);
saveBuf = (pctxt->flags & ASN1SAVEBUF) != 0;
if (pctxt->buffer.dynamic && pctxt->buffer.data) {
if (saveBuf) {
memHeapMarkSaved (&pctxt->pMsgMemHeap, pctxt->buffer.data, TRUE);
}
else {
memHeapFreePtr (&pctxt->pMsgMemHeap, pctxt->buffer.data);
}
}
errFreeParms (&pctxt->errInfo);
memHeapRelease (&pctxt->pTypeMemHeap);
memHeapRelease (&pctxt->pMsgMemHeap);
ast_mutex_unlock(&pctxt->pLock);
ast_mutex_destroy(&pctxt->pLock);
}
void copyContext (OOCTXT* pdest, OOCTXT* psrc)
{
/* ast_mutex_lock(&pdest->pLock); ast_mutex_lock(&psrc->pLock); */
memcpy (&pdest->buffer, &psrc->buffer, sizeof(ASN1BUFFER));
pdest->flags = psrc->flags;
/* ast_mutex_unlock(&psrc->pLock); ast_mutex_unlock(&pdest->pLock); */
}
void setCtxtFlag (OOCTXT* pctxt, ASN1USINT mask)
{
ast_mutex_lock(&pctxt->pLock);
pctxt->flags |= mask;
ast_mutex_unlock(&pctxt->pLock);
}
void clearCtxtFlag (OOCTXT* pctxt, ASN1USINT mask)
{
ast_mutex_lock(&pctxt->pLock);
pctxt->flags &= ~mask;
ast_mutex_unlock(&pctxt->pLock);
}
int setPERBufferUsingCtxt (OOCTXT* pTarget, OOCTXT* pSource)
{
int stat;
ast_mutex_lock(&pTarget->pLock); ast_mutex_lock(&pSource->pLock);
stat = initContextBuffer
(pTarget, pSource->buffer.data, pSource->buffer.size);
if (ASN_OK == stat) {
pTarget->buffer.byteIndex = pSource->buffer.byteIndex;
pTarget->buffer.bitOffset = pSource->buffer.bitOffset;
}
ast_mutex_unlock(&pSource->pLock); ast_mutex_unlock(&pTarget->pLock);
return stat;
}
int setPERBuffer (OOCTXT* pctxt,
ASN1OCTET* bufaddr, ASN1UINT bufsiz, ASN1BOOL aligned)
{
int stat;
ast_mutex_lock(&pctxt->pLock);
stat = initContextBuffer (pctxt, bufaddr, bufsiz);
ast_mutex_unlock(&pctxt->pLock);
if(stat != ASN_OK) return stat;
return ASN_OK;
}
OOCTXT* newContext ()
{
/* OOCTXT* pctxt = (OOCTXT*) ASN1CRTMALLOC0 (sizeof(OOCTXT)); */
OOCTXT* pctxt = ast_malloc(sizeof(OOCTXT));
if (pctxt) {
if (initContext(pctxt) != ASN_OK) {
/* ASN1CRTFREE0 (pctxt); */
ast_free(pctxt);
pctxt = 0;
return (pctxt);
}
pctxt->flags |= ASN1DYNCTXT;
}
return (pctxt);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,260 +0,0 @@
/*
* Copyright (C) 1997-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
#include "asterisk.h"
#include "asterisk/lock.h"
#include "ooasn1.h"
void dListInit (DList* pList)
{
if (pList) {
pList->count = 0;
pList->head = (DListNode*) 0;
pList->tail = (DListNode*) 0;
}
}
DListNode* dListAppend (OOCTXT* pctxt, DList* pList, void* pData)
{
DListNode* pListNode = (DListNode*)
memAlloc (pctxt, sizeof(DListNode));
if (0 != pListNode) {
pListNode->data = pData;
pListNode->next = (DListNode*) 0;
if (0 != pList->tail) {
pList->tail->next = pListNode;
pListNode->prev = pList->tail;
}
if (0 == pList->head) {
pList->head = pListNode;
pListNode->prev = (DListNode*) 0;
}
pList->tail = pListNode;
pList->count++;
}
return pListNode;
}
DListNode* dListAppendNode (OOCTXT* pctxt, DList* pList, void* pData)
{
DListNode* pListNode =
(DListNode*) (((char*)pData) - sizeof(DListNode));
if (0 != pListNode) {
pListNode->data = pData;
pListNode->next = (DListNode*) 0;
if (0 != pList->tail) {
pList->tail->next = pListNode;
pListNode->prev = pList->tail;
}
if (0 == pList->head) {
pList->head = pListNode;
pListNode->prev = (DListNode*) 0;
}
pList->tail = pListNode;
pList->count++;
}
return pListNode;
}
/* Delete the head node from the list and return the data item stored */
/* in that node.. */
void* dListDeleteHead (OOCTXT* pctxt, DList* pList)
{
DListNode* pNode = (0 != pList) ? pList->head : 0;
if (0 != pNode) {
void* pdata = pNode->data;
dListRemove (pList, pNode);
memFreePtr (pctxt, pNode);
return pdata;
}
return 0;
}
/* Free all nodes, but not the data */
void dListFreeNodes (OOCTXT* pctxt, DList* pList)
{
DListNode* pNode, *pNextNode;
for (pNode = pList->head; pNode != 0; pNode = pNextNode) {
pNextNode = pNode->next;
memFreePtr (pctxt, pNode);
}
pList->count = 0;
pList->head = pList->tail = 0;
}
/* Free all nodes and their data */
void dListFreeAll (OOCTXT* pctxt, DList* pList)
{
DListNode* pNode, *pNextNode;
for (pNode = pList->head; pNode != 0; pNode = pNextNode) {
pNextNode = pNode->next;
memFreePtr (pctxt, pNode->data);
memFreePtr (pctxt, pNode);
}
pList->count = 0;
pList->head = pList->tail = 0;
}
/* Remove node from list. Node is not freed */
void dListRemove (DList* pList, DListNode* node)
{
if(node->next != 0) {
node->next->prev = node->prev;
}
else { /* tail */
pList->tail = node->prev;
}
if(node->prev != 0) {
node->prev->next = node->next;
}
else { /* head */
pList->head = node->next;
}
pList->count--;
}
void dListFindAndRemove(struct OOCTXT* pctxt, DList* pList, void *data)
{
DListNode *pNode, *pNextNode;
for(pNode = pList->head; pNode !=0; pNode = pNextNode){
pNextNode = pNode->next;
if(pNode->data == data) /* pointer comparison*/
break;
}
if(pNode) {
dListRemove(pList, pNode);
memFreePtr(pctxt, pNode);
}
}
DListNode* dListFindByIndex (DList* pList, int index)
{
DListNode* curNode;
int i;
if(index >= (int)pList->count) return 0;
for(i = 0, curNode = pList->head; i < index && curNode != 0; i++) {
curNode = curNode->next;
}
return curNode;
}
/* Insert item before given node */
DListNode* dListInsertBefore
(OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData)
{
DListNode* pListNode = (DListNode*) memAlloc (pctxt, sizeof(DListNode));
if (0 != pListNode) {
pListNode->data = (void*)pData;
if (node == 0) { /* insert before end (as last element) */
pListNode->next = (DListNode*) 0;
if (0 != pList->tail) {
pList->tail->next = pListNode;
pListNode->prev = pList->tail;
}
if (0 == pList->head) {
pList->head = pListNode;
pListNode->prev = (DListNode*) 0;
}
pList->tail = pListNode;
}
else if (node == pList->head) { /* insert as head (head case) */
pListNode->next = pList->head;
pListNode->prev = (DListNode*) 0;
if(pList->head != 0) {
pList->head->prev = pListNode;
}
if(pList->tail == 0) {
pList->tail = pListNode;
}
pList->head = pListNode;
}
else { /* other cases */
pListNode->next = node;
pListNode->prev = node->prev;
node->prev = pListNode;
/* here, pListNode->prev always should be non-zero,
* because if pListNode->prev is zero - it is head case (see above).
*/
pListNode->prev->next = pListNode;
}
pList->count++;
}
return pListNode;
}
/* Insert item after given node */
DListNode* dListInsertAfter
(OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData)
{
DListNode* pListNode = (DListNode*) memAlloc (pctxt, sizeof(DListNode));
if (0 != pListNode) {
pListNode->data = (void*)pData;
if (node == 0) { /* insert as head (as first element) */
pListNode->next = pList->head;
pListNode->prev = (DListNode*) 0;
if (pList->head != 0) {
pList->head->prev = pListNode;
}
if (pList->tail == 0) {
pList->tail = pListNode;
}
pList->head = pListNode;
}
else if (node == pList->tail) { /* insert as tail (as last element) */
pListNode->next = (DListNode*) 0;
if (0 != pList->tail) {
pList->tail->next = pListNode;
pListNode->prev = pList->tail;
}
if (0 == pList->head) {
pList->head = pListNode;
pListNode->prev = (DListNode*) 0;
}
pList->tail = pListNode;
}
else { /* other cases */
pListNode->next = node->next;
pListNode->prev = node;
node->next = pListNode;
/* here, pListNode->next always should be non-zero,
* because if pListNode->next is zero - it is tail case (see above).
*/
pListNode->next->prev = pListNode;
}
pList->count++;
}
return pListNode;
}

View File

@@ -1,204 +0,0 @@
/*
* Copyright (C) 1997-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
/**
* @file dlist.h
* Doubly-linked list structures and utility functions.
*/
#ifndef _OODLIST_H_
#define _OODLIST_H_
struct OOCTXT;
/**
* @defgroup llfuns Doubly-linked list structures and utility functions.
* @{
*/
typedef struct _DListNode {
void* data;
struct _DListNode* next;
struct _DListNode* prev;
} DListNode;
typedef struct _DList {
unsigned int count;
DListNode* head;
DListNode* tail;
} DList;
#define ALLOC_ASN1ELEMDNODE(pctxt,type) \
(type*) (((char*)memHeapAllocZ (&(pctxt)->pTypeMemHeap, sizeof(type) + \
sizeof(DListNode))) + sizeof(DListNode))
#ifdef __cplusplus
extern "C" {
#endif
#ifndef EXTERN
#if defined (MAKE_DLL)
#define EXTERN __declspec(dllexport)
#elif defined (USEASN1DLL)
#define EXTERN __declspec(dllimport)
#else
#define EXTERN
#endif /* MAKE_DLL */
#endif /* EXTERN */
/**
* This function appends an item to the linked list structure. The data item is
* passed into the function as a void pointer that can point to any object of
* any type. The memAlloc function is used to allocated the memory for the
* list node structure; therefore, all internal list memory will be released
* whenever memFree is called. The pointer to the data item itself is stored
* in the node structure - a copy is not made.
*
* @param pctxt A pointer to a context structure. This provides a
* storage area for the function to store all working
* variables that must be maintained between function
* calls.
* @param pList A pointer to a linked list structure onto which the data
* item is to be appended. A pointer to an updated linked
* list structure.
* @param pData A pointer to a data item to be appended to the list.
* @return A pointer to an allocated node structure used to link
* the given data value into the list.
*/
EXTERN DListNode* dListAppend
(struct OOCTXT* pctxt, DList* pList, void* pData);
EXTERN DListNode* dListAppendNode
(struct OOCTXT* pctxt, DList* pList, void* pData);
/**
* This function delete the head item from the list and returns a pointer
* the data item stored in that node. The memory for the node structure
* is released.
*
* @param pctxt A pointer to a context structure. This provides a
* storage area for the function to store all working
* variables that must be maintained between function
* calls.
* @param pList A pointer to the linked list structure from which
* the node will be deleted.
* @return A pointer to the data item stored in the deleted node.
*/
EXTERN void* dListDeleteHead (struct OOCTXT* pctxt, DList* pList);
EXTERN DListNode* dListFindByIndex (DList* pList, int index);
/**
* This function initializes a doubly linked list structure. It sets the number
* of elements to zero and sets all internal pointer values to NULL. A doubly
* linked-list structure is described by the DList type. Nodes of the list
* are of type DListNode.
*
* Memory for the structures is allocated using the memAlloc run-time
* function and is maintained within the context structure that is a required
* parameter to all dList functions. This memory is released when memFree
* is called or the Context is released. Unless otherwise noted, all data
* passed into the list functions is simply stored on the list by value (i.e. a
* deep-copy of the data is not done).
*
* @param pList A pointer to a linked list structure to be initialized.
*/
EXTERN void dListInit (DList* pList);
/**
* This function removes all nodes from the linked list and releases the memory
* that was allocated for storing the node structures (DListNode). The data
* will not be released.
*
* @param pctxt A pointer to a context structure. This provides a
* storage area for the function to store all working
* variables that must be maintained between function
* calls.
* @param pList A pointer to a linked list structure onto which the data
* item is to be appended. A pointer to an updated linked
* list structure.
*/
EXTERN void dListFreeNodes (struct OOCTXT* pctxt, DList* pList);
/**
* This function removes all nodes from the linked list structure and releases
* the memory that was allocated for storing the node structures
* (DListNode) and for data. The memory for data in each node must have
* been previously allocated with calls to memAlloc, memAllocZ, or
* memRealloc functions.
*
* @param pctxt Pointer to a context structure. This provides a
* storage area for the function to store all working
* variables that must be maintained between function
* calls.
* @param pList Pointer to a linked list structure.
*/
EXTERN void dListFreeAll (struct OOCTXT* pctxt, DList* pList);
/**
* This function inserts an item into the linked list structure before the
* specified element.
*
* @param pctxt Pointer to a context structure.
* @param pList A pointer to a linked list structure into which the
* data item is to be inserted.
* @param node The position in the list where the item is to be
* inserted. The item will be inserted before this
* node or appended to the list if node is null.
* @param pData A pointer to the data item to be inserted to the list.
* @return A pointer to an allocated node structure used to
* link the given data value into the list.
*/
EXTERN DListNode* dListInsertBefore
(struct OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData);
/**
* This function inserts an item into the linked list structure after the
* specified element.
*
* @param pctxt Pointer to a context structure.
* @param pList A pointer to a linked list structure into which the
* data item is to be inserted.
* @param node The position in the list where the item is to be
* inserted. The item will be inserted after this
* node or added as the head element if node is null.
* @param pData A pointer to the data item to be inserted to the list.
* @return A pointer to an allocated node structure used to
* link the given data value into the list.
*/
EXTERN DListNode* dListInsertAfter
(struct OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData);
/**
* This function removes a node from the linked list structure. The memAlloc
* function was used to allocate the memory for the list node structure,
* therefore, all internal list memory will be released whenever memFree or
* memFreePtr is called.
*
* @param pList A pointer to a linked list structure onto which the data
* item is to be removed. A pointer to an updated linked
* list structure.
* @param node A pointer to the node that is to be removed. It should
* already be in the linked list structure.
*/
EXTERN void dListRemove (DList* pList, DListNode* node);
EXTERN void dListFindAndRemove(struct OOCTXT* pctxt, DList* pList, void* data);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,266 +0,0 @@
/*
* Copyright (C) 1997-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
/* Error management functions */
#include "asterisk.h"
#include "asterisk/lock.h"
#include "asterisk/utils.h"
#include <stdlib.h>
#include "ooasn1.h"
/* Error status text */
static const char* g_status_text[] = {
"Encode buffer overflow",
"Unexpected end of buffer on decode",
"Unexpected tag encountered: expected = %s, parsed = %s",
"Invalid object identifier",
"Invalid field length detected",
"Enumerated value %s not in defined set",
"Duplicate element in SET",
"Missing required element in SET",
"Element with tag %s not part of SET",
"Max elements defined for SEQUENCE field exceeded",
"Element with tag %s is an invalid option in choice",
"No dynamic memory available",
"Invalid string type",
"Invalid hex string",
"Invalid binary string",
"Invalid real value",
"Max items in sized BIT or OCTET STRING field exceeded",
"Invalid value specification",
"No definition found for referenced defined value",
"No definition found for referenced defined type",
"Invalid tag value",
"Nesting level too deep",
"Value constraint violation: field %s, value %s",
"Value range error: lower bound is greater than upper",
"Unexpected end of file detected",
"Invalid UTF-8 character at index %d",
"List error: concurrent modification attempt while iterating",
"List error: illegal state for attempted operation",
"Array index out of bounds",
"Invalid parameter passed to function or method",
"Invalid time string format",
"Context is not initialized",
"ASN.1 value will not fit in target variable",
"Character is not within the defined character set",
"Invalid XML state for attempted operation",
"Error condition returned from XML parser:\n%s",
"SEQUENCE elements not in correct order",
"Invalid index for table constraint identifier",
"Invalid value for relational table constraint fixed type field",
"File not found",
"File read error",
"File write error",
"Invalid Base64 string",
"Socket error",
"XML interface library not found",
"Invalid XML interface library"
} ;
#define ASN1_K_MAX_STAT (sizeof(g_status_text)/sizeof(char *))
/* Add an integer parameter to an error message */
int errAddIntParm (ASN1ErrInfo* pErrInfo, int errParm)
{
char lbuf[16];
sprintf (lbuf, "%d", errParm);
return errAddStrParm (pErrInfo, lbuf);
}
/* Add a character string parameter to an error message */
int errAddStrParm (ASN1ErrInfo* pErrInfo, const char* errprm_p)
{
#if defined(_NO_THREADS) || !defined(_NO_MALLOC)
if (pErrInfo->parmcnt < ASN_K_MAXERRP) {
/* char* tmpstr = (char*) ASN1CRTMALLOC0 (strlen(errprm_p)+1); */
char* tmpstr = ast_malloc(strlen(errprm_p) + 1);
strcpy (tmpstr, errprm_p);
pErrInfo->parms[pErrInfo->parmcnt] = tmpstr;
pErrInfo->parmcnt++;
return TRUE;
}
else
#endif
return FALSE;
}
/* Add an unsigned integer parameter to an error message */
int errAddUIntParm (ASN1ErrInfo* pErrInfo, unsigned int errParm)
{
char lbuf[16];
sprintf (lbuf, "%u", errParm);
return errAddStrParm (pErrInfo, lbuf);
}
/* Free error parameter memory */
void errFreeParms (ASN1ErrInfo* pErrInfo)
{
#if defined(_NO_THREADS) || !defined(_NO_MALLOC)
int i;
for (i = 0; i < pErrInfo->parmcnt; i++)
/* ASN1CRTFREE0 ((char*)pErrInfo->parms[i]); */
ast_free((char*)pErrInfo->parms[i]);
#endif
pErrInfo->parmcnt = 0;
pErrInfo->status = 0;
}
/* Reset error */
int errReset (ASN1ErrInfo* pErrInfo)
{
errFreeParms (pErrInfo);
pErrInfo->stkx = 0;
return ASN_OK;
}
/* Format error message */
char* errFmtMsg (ASN1ErrInfo* pErrInfo, char* bufp)
{
const char* tp;
int i, j, pcnt;
if (pErrInfo->status < 0)
{
i = abs (pErrInfo->status + 1);
if (i >= 0 && i < ASN1_K_MAX_STAT)
{
/* Substitute error parameters into error message */
j = pcnt = 0;
tp = g_status_text[i];
while (*tp)
{
if (*tp == '%' && *(tp+1) == 's')
{
/* Plug in error parameter */
if (pcnt < pErrInfo->parmcnt && pErrInfo->parms[pcnt])
{
strcpy (&bufp[j], pErrInfo->parms[pcnt]);
j += strlen (pErrInfo->parms[pcnt++]);
}
else
bufp[j++] = '?';
tp += 2;
}
else
bufp[j++] = *tp++;
}
bufp[j] = '\0'; /* null terminate string */
}
else
strcpy (bufp, "unrecognized completion status");
}
else strcpy (bufp, "normal completion status");
return (bufp);
}
/* Get error text in a dynamic memory buffer. This allocates memory */
/* using the 'memAlloc' function. This memory is automatically freed */
/* at the time the 'memFree' function is called. */
char* errGetText (OOCTXT* pctxt)
{
char lbuf[500];
char* pBuf = (char*) ASN1MALLOC (pctxt,
(sizeof(lbuf) + 100 * (2 + pctxt->errInfo.stkx)) * sizeof(char));
sprintf (pBuf, "ASN.1 ERROR: Status %d\n", pctxt->errInfo.status);
sprintf (lbuf, "%s\nStack trace:", errFmtMsg (&pctxt->errInfo, lbuf));
strcat(pBuf, lbuf);
while (pctxt->errInfo.stkx > 0) {
pctxt->errInfo.stkx--;
sprintf (lbuf, " Module: %s, Line %d\n",
pctxt->errInfo.stack[pctxt->errInfo.stkx].module,
pctxt->errInfo.stack[pctxt->errInfo.stkx].lineno);
strcat(pBuf, lbuf);
}
errFreeParms (&pctxt->errInfo);
return pBuf;
}
/* Print error information to the standard output */
void errPrint (ASN1ErrInfo* pErrInfo)
{
char lbuf[200];
printf ("ASN.1 ERROR: Status %d\n", pErrInfo->status);
printf ("%s\n", errFmtMsg (pErrInfo, lbuf));
printf ("Stack trace:");
while (pErrInfo->stkx > 0) {
pErrInfo->stkx--;
printf (" Module: %s, Line %d\n",
pErrInfo->stack[pErrInfo->stkx].module,
pErrInfo->stack[pErrInfo->stkx].lineno);
}
errFreeParms (pErrInfo);
}
/* Copy error data from one error structure to another */
int errCopyData (ASN1ErrInfo* pSrcErrInfo, ASN1ErrInfo* pDestErrInfo)
{
int i;
pDestErrInfo->status = pSrcErrInfo->status;
/* copy error parameters */
for (i = 0; i < pSrcErrInfo->parmcnt; i++) {
errAddStrParm (pDestErrInfo, pSrcErrInfo->parms[i]);
}
/* copy stack info */
for (i = 0; i < pSrcErrInfo->stkx; i++) {
if (pDestErrInfo->stkx < ASN_K_MAXERRSTK) {
pDestErrInfo->stack[pDestErrInfo->stkx].module =
pSrcErrInfo->stack[i].module;
pDestErrInfo->stack[pDestErrInfo->stkx++].lineno =
pSrcErrInfo->stack[i].lineno;
}
}
return (pSrcErrInfo->status);
}
int errSetData (ASN1ErrInfo* pErrInfo, int status,
const char* module, int lno)
{
if (pErrInfo->status == 0) {
pErrInfo->status = status;
}
ooLogAsn1Error(status, module, lno);
return status;
}

View File

@@ -1,125 +0,0 @@
/*
* Copyright (C) 2004-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
#include "asterisk.h"
#include "asterisk/lock.h"
#include "eventHandler.h"
void setEventHandler (OOCTXT* pctxt, EventHandler* pHandler)
{
pctxt->pEventHandler = pHandler;
}
void removeEventHandler (OOCTXT* pctxt)
{
pctxt->pEventHandler = 0;
}
void invokeStartElement (OOCTXT* pctxt, const char* name, int index)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->startElement (name, index);
}
}
void invokeEndElement (OOCTXT* pctxt, const char* name, int index)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->endElement (name, index);
}
}
void invokeBoolValue (OOCTXT* pctxt, ASN1BOOL value)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->boolValue (value);
}
}
void invokeIntValue (OOCTXT* pctxt, ASN1INT value)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->intValue (value);
}
}
void invokeUIntValue (OOCTXT* pctxt, ASN1UINT value)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->uIntValue (value);
}
}
void invokeBitStrValue (OOCTXT* pctxt, ASN1UINT numbits,
const ASN1OCTET* data)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->bitStrValue (numbits, data);
}
}
void invokeOctStrValue (OOCTXT* pctxt, ASN1UINT numocts,
const ASN1OCTET* data)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->octStrValue (numocts, data);
}
}
void invokeCharStrValue (OOCTXT* pctxt, const char* value)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->charStrValue (value);
}
}
void invokeCharStr16BitValue (OOCTXT* pctxt, ASN1UINT nchars,
ASN116BITCHAR* data)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->charStr16BitValue (nchars, data);
}
}
void invokeNullValue (OOCTXT* pctxt)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->nullValue ();
}
}
void invokeOidValue (OOCTXT* pctxt, ASN1UINT numSubIds, ASN1UINT* pSubIds)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->oidValue (numSubIds, pSubIds);
}
}
void invokeEnumValue (OOCTXT* pctxt, ASN1UINT value)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->enumValue (value);
}
}
void invokeOpenTypeValue (OOCTXT* pctxt, ASN1UINT numocts,
const ASN1OCTET* data)
{
if (0 != pctxt->pEventHandler) {
pctxt->pEventHandler->openTypeValue (numocts, data);
}
}

View File

@@ -1,284 +0,0 @@
/*
* Copyright (C) 2004-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
/**
* @file eventHandler.h
* C event handler structure. This structure holds event handler function
* callbacks for use by the generated code.
*/
/**
* @defgroup EventHandler event handler
* Event handler structures and callback function definitions.
* @{
*/
#ifndef _EVENTHANDLER_H_
#define _EVENTHANDLER_H_
#include <stdio.h>
#include "ooasn1.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef EXTERN
#if define (MAKE_DLL)
#define EXTERN __declspec(dllexport)
#else
#define EXTERN
#endif /* MAKE_DLL */
#endif /* EXTERN */
/**
* This is a function pointer for a callback function which is invoked
* from within a decode function when an element of a SEQUENCE, SET,
* SEQUENCE OF, SET OF, or CHOICE construct is parsed.
*
* @param name For SEQUENCE, SET, or CHOICE, this is the name of the
* element as defined in the ASN.1 definition. For
* SEQUENCE OF or SET OF, this is set to the name
* "element".
* @param index For SEQUENCE, SET, or CHOICE, this is not used and is
* set to the value
* -1. For SEQUENCE OF or SET OF, this contains the
* zero-based index of the element in the conceptual
* array associated with the construct.
* @return - none
*/
typedef void (*StartElement) (const char* name, int index) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when parsing is complete on an element of a
* SEQUENCE, SET, SEQUENCE OF, SET OF, or CHOICE construct.
*
* @param name For SEQUENCE, SET, or CHOICE, this is the name of the
* element as defined in the ASN.1 definition. For
* SEQUENCE OF or SET OF, this is set to the name
* "element".
* @param index For SEQUENCE, SET, or CHOICE, this is not used and is
* set to the value
* -1. For SEQUENCE OF or SET OF, this contains the
* zero-based index of the element in the conceptual
* array associated with the construct.
* @return - none
*/
typedef void (*EndElement) (const char* name, int index) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of the BOOLEAN ASN.1 type is parsed.
*
* @param value Parsed value.
* @return - none
*/
typedef void (*BoolValue) (ASN1BOOL value);
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of the INTERGER ASN.1 type is parsed.
*
* @param value Parsed value.
* @return - none
*/
typedef void (*IntValue) (ASN1INT value);
/**
* This is a function pointer for a callback function which is invoked
* from within a decode function when a value of the INTEGER ASN.1 type
* is parsed. In this case, constraints on the integer value forced the
* use of unsigned integer C type to represent the value.
*
* @param value Parsed value.
* @return - none
*/
typedef void (*UIntValue) (ASN1UINT value);
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of the BIT STRING ASN.1 type is
* parsed.
*
* @param numbits - Number of bits in the parsed value.
* @param data - Pointer to a byte array that contains the bit
* string data.
* @return - none
*/
typedef void (*BitStrValue) (ASN1UINT numbits, const ASN1OCTET* data);
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of one of the OCTET STRING ASN.1 type
* is parsed.
*
* @param numocts Number of octets in the parsed value.
* @param data Pointer to byte array containing the octet string
* data.
* @return - none
*/
typedef void (*OctStrValue) (ASN1UINT numocts, const ASN1OCTET* data) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of one of the 8-bit ASN.1 character
* string types is parsed.
*
* @param value Null terminated character string value.
* @return - none
*/
typedef void (*CharStrValue) (const char* value) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of one of the 16-bit ASN.1 character
* string types is parsed.
*
* This is used for the ASN.1 BmpString type.
*
* @param nchars Number of characters in the parsed value.
* @param data Pointer to an array containing 16-bit values.
* These are represented using unsigned short integer
* values.
* @return - none
*/
typedef void (*CharStrValue16Bit) (ASN1UINT nchars, ASN116BITCHAR* data) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of the NULL ASN.1 type is parsed.
*
* @param - none
* @return - none
*/
typedef void (*NullValue) (void) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function whn a value the OBJECT IDENTIFIER ASN.1 type is
* parsed.
*
* @param numSubIds Number of subidentifiers in the object identifier.
* @param pSubIds Pointer to array containing the subidentifier values.
* @return -none
*/
typedef void (*OidValue) (ASN1UINT numSubIds, ASN1UINT* pSubIds) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when a value of the ENUMERATED ASN.1 type is
* parsed.
*
* @param value - Parsed enumerated value
* @return - none
*/
typedef void (*EnumValue) (ASN1UINT value) ;
/**
* This is a function pointer for a callback function which is invoked from
* within a decode function when an ASN.1 open type is parsed.
*
* @param numocts Number of octets in the parsed value.
* @param data Pointer to byte array contain in tencoded ASN.1
* value.
* @return - none
*/
typedef void (*OpenTypeValue) (ASN1UINT numocts, const ASN1OCTET* data) ;
/**
* This is a basic C based event handler structure, which can be used
* to define user-defined event handlers.
*/
typedef struct EventHandler {
StartElement startElement;
EndElement endElement;
BoolValue boolValue;
IntValue intValue;
UIntValue uIntValue;
BitStrValue bitStrValue;
OctStrValue octStrValue;
CharStrValue charStrValue;
CharStrValue16Bit charStr16BitValue;
NullValue nullValue;
OidValue oidValue;
EnumValue enumValue;
OpenTypeValue openTypeValue;
} EventHandler;
/**
* This function sets the event handler object within the context. It
* will overwrite the definition of any handler that was set previously.
*
* @param pctxt Context to which event handler has to be added.
* @param pHandler Pointer to the event handler structure.
* @return none
*/
EXTERN void setEventHandler (OOCTXT* pctxt, EventHandler* pHandler);
/**
* This function is called to remove the event handler current defined
* in the context. This is done by setting the event handler object
* pointer to NULL.
*
* @param pctxt Context from which event handler has to be removed.
* @return none
*/
EXTERN void removeEventHandler (OOCTXT* pctxt);
/**
* The following functions are invoked from within the generated
* code to call the various user-defined event handler methods ..
*/
EXTERN void invokeStartElement (OOCTXT* pctxt, const char* name, int index);
EXTERN void invokeEndElement (OOCTXT* pctxt, const char* name, int index);
EXTERN void invokeBoolValue (OOCTXT* pctxt, ASN1BOOL value);
EXTERN void invokeIntValue (OOCTXT* pctxt, ASN1INT value);
EXTERN void invokeUIntValue (OOCTXT* pctxt, ASN1UINT value);
EXTERN void invokeBitStrValue
(OOCTXT* pctxt, ASN1UINT numbits, const ASN1OCTET* data);
EXTERN void invokeOctStrValue
(OOCTXT* pctxt, ASN1UINT numocts, const ASN1OCTET* data);
EXTERN void invokeCharStrValue (OOCTXT* pctxt, const char* value);
EXTERN void invokeCharStr16BitValue
(OOCTXT* pctxt, ASN1UINT nchars, ASN116BITCHAR* data);
EXTERN void invokeNullValue (OOCTXT* pctxt);
EXTERN void invokeOidValue
(OOCTXT* pctxt, ASN1UINT numSubIds, ASN1UINT* pSubIds);
EXTERN void invokeEnumValue (OOCTXT* pctxt, ASN1UINT value);
EXTERN void invokeOpenTypeValue
(OOCTXT* pctxt, ASN1UINT numocts, const ASN1OCTET* data);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,690 +0,0 @@
/*
* Copyright (C) 2004-2005 by Objective Systems, Inc.
*
* This software is furnished under an open source license and may be
* used and copied only in accordance with the terms of this license.
* The text of the license may generally be found in the root
* directory of this installation in the COPYING file. It
* can also be viewed online at the following URL:
*
* http://www.obj-sys.com/open/license.html
*
* Any redistributions of this file including modified versions must
* maintain this copyright notice.
*
*****************************************************************************/
/**
* This file was generated by the Objective Systems ASN1C Compiler
* (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
*/
#ifndef H235_SECURITY_MESSAGES_H
#define H235_SECURITY_MESSAGES_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <stdlib.h>
#include "ooasn1.h"
/**************************************************************/
/* */
/* ChallengeString */
/* */
/**************************************************************/
typedef struct EXTERN H235ChallengeString {
ASN1UINT numocts;
ASN1OCTET data[128];
} H235ChallengeString;
EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue);
EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue);
/**************************************************************/
/* */
/* TimeStamp */
/* */
/**************************************************************/
typedef ASN1UINT H235TimeStamp;
EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value);
EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue);
/**************************************************************/
/* */
/* RandomVal */
/* */
/**************************************************************/
typedef ASN1INT H235RandomVal;
EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value);
EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue);
/**************************************************************/
/* */
/* Password */
/* */
/**************************************************************/
typedef ASN1BMPString H235Password;
EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value);
EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue);
/**************************************************************/
/* */
/* EncodedPwdCertToken */
/* */
/**************************************************************/
typedef ASN1OpenType H235EncodedPwdCertToken;
EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value);
EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue);
/**************************************************************/
/* */
/* NonStandardParameter */
/* */
/**************************************************************/
typedef struct EXTERN H235NonStandardParameter {
ASN1OBJID nonStandardIdentifier;
ASN1DynOctStr data;
} H235NonStandardParameter;
EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue);
EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue);
/**************************************************************/
/* */
/* AuthenticationBES */
/* */
/**************************************************************/
/* Choice tag constants */
#define T_H235AuthenticationBES_default_ 1
#define T_H235AuthenticationBES_radius 2
#define T_H235AuthenticationBES_extElem1 3
typedef struct EXTERN H235AuthenticationBES {
int t;
} H235AuthenticationBES;
EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue);
EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue);
/**************************************************************/
/* */
/* AuthenticationMechanism */
/* */
/**************************************************************/
/* Choice tag constants */
#define T_H235AuthenticationMechanism_dhExch 1
#define T_H235AuthenticationMechanism_pwdSymEnc 2
#define T_H235AuthenticationMechanism_pwdHash 3
#define T_H235AuthenticationMechanism_certSign 4
#define T_H235AuthenticationMechanism_ipsec 5
#define T_H235AuthenticationMechanism_tls 6
#define T_H235AuthenticationMechanism_nonStandard 7
#define T_H235AuthenticationMechanism_authenticationBES 8
#define T_H235AuthenticationMechanism_extElem1 9
typedef struct EXTERN H235AuthenticationMechanism {
int t;
union {
/* t = 1 */
/* t = 2 */
/* t = 3 */
/* t = 4 */
/* t = 5 */
/* t = 6 */
/* t = 7 */
H235NonStandardParameter *nonStandard;
/* t = 8 */
H235AuthenticationBES *authenticationBES;
/* t = 9 */
} u;
} H235AuthenticationMechanism;
EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue);
EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue);
/**************************************************************/
/* */
/* DHset_halfkey */
/* */
/**************************************************************/
typedef struct EXTERN H235DHset_halfkey {
ASN1UINT numbits;
ASN1OCTET data[256];
} H235DHset_halfkey;
EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue);
EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue);
/**************************************************************/
/* */
/* DHset_modSize */
/* */
/**************************************************************/
typedef struct EXTERN H235DHset_modSize {
ASN1UINT numbits;
ASN1OCTET data[256];
} H235DHset_modSize;
EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue);
EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue);
/**************************************************************/
/* */
/* DHset_generator */
/* */
/**************************************************************/
typedef struct EXTERN H235DHset_generator {
ASN1UINT numbits;
ASN1OCTET data[256];
} H235DHset_generator;
EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue);
EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue);
/**************************************************************/
/* */
/* DHset */
/* */
/**************************************************************/
typedef struct EXTERN H235DHset {
H235DHset_halfkey halfkey;
H235DHset_modSize modSize;
H235DHset_generator generator;
} H235DHset;
EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue);
EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue);
/**************************************************************/
/* */
/* TypedCertificate */
/* */
/**************************************************************/
typedef struct EXTERN H235TypedCertificate {
ASN1OBJID type;
ASN1DynOctStr certificate;
} H235TypedCertificate;
EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue);
EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue);
/**************************************************************/
/* */
/* Identifier */
/* */
/**************************************************************/
typedef ASN1BMPString H235Identifier;
EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value);
EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue);
/**************************************************************/
/* */
/* ECpoint_x */
/* */
/**************************************************************/
typedef struct EXTERN H235ECpoint_x {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECpoint_x;
EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue);
EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue);
/**************************************************************/
/* */
/* ECpoint_y */
/* */
/**************************************************************/
typedef struct EXTERN H235ECpoint_y {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECpoint_y;
EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue);
EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue);
/**************************************************************/
/* */
/* ECpoint */
/* */
/**************************************************************/
typedef struct EXTERN H235ECpoint {
struct {
unsigned xPresent : 1;
unsigned yPresent : 1;
} m;
H235ECpoint_x x;
H235ECpoint_y y;
} H235ECpoint;
EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue);
EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdhp_modulus */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdhp_modulus {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECKASDH_eckasdhp_modulus;
EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdhp_weierstrassA */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassA {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECKASDH_eckasdhp_weierstrassA;
EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdhp_weierstrassB */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassB {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECKASDH_eckasdhp_weierstrassB;
EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdhp */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdhp {
H235ECpoint public_key;
H235ECKASDH_eckasdhp_modulus modulus;
H235ECpoint base;
H235ECKASDH_eckasdhp_weierstrassA weierstrassA;
H235ECKASDH_eckasdhp_weierstrassB weierstrassB;
} H235ECKASDH_eckasdhp;
EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdh2_fieldSize */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdh2_fieldSize {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECKASDH_eckasdh2_fieldSize;
EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdh2_weierstrassA */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassA {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECKASDH_eckasdh2_weierstrassA;
EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdh2_weierstrassB */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassB {
ASN1UINT numbits;
ASN1OCTET data[64];
} H235ECKASDH_eckasdh2_weierstrassB;
EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue);
/**************************************************************/
/* */
/* ECKASDH_eckasdh2 */
/* */
/**************************************************************/
typedef struct EXTERN H235ECKASDH_eckasdh2 {
H235ECpoint public_key;
H235ECKASDH_eckasdh2_fieldSize fieldSize;
H235ECpoint base;
H235ECKASDH_eckasdh2_weierstrassA weierstrassA;
H235ECKASDH_eckasdh2_weierstrassB weierstrassB;
} H235ECKASDH_eckasdh2;
EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue);
EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue);
/**************************************************************/
/* */
/* ECKASDH */
/* */
/**************************************************************/
/* Choice tag constants */
#define T_H235ECKASDH_eckasdhp 1
#define T_H235ECKASDH_eckasdh2 2
#define T_H235ECKASDH_extElem1 3
typedef struct EXTERN H235ECKASDH {
int t;
union {
/* t = 1 */
H235ECKASDH_eckasdhp *eckasdhp;
/* t = 2 */
H235ECKASDH_eckasdh2 *eckasdh2;
/* t = 3 */
} u;
} H235ECKASDH;
EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue);
EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue);
/**************************************************************/
/* */
/* ClearToken */
/* */
/**************************************************************/
typedef struct EXTERN H235ClearToken {
struct {
unsigned timeStampPresent : 1;
unsigned passwordPresent : 1;
unsigned dhkeyPresent : 1;
unsigned challengePresent : 1;
unsigned randomPresent : 1;
unsigned certificatePresent : 1;
unsigned generalIDPresent : 1;
unsigned nonStandardPresent : 1;
unsigned eckasdhkeyPresent : 1;
unsigned sendersIDPresent : 1;
} m;
ASN1OBJID tokenOID;
H235TimeStamp timeStamp;
H235Password password;
H235DHset dhkey;
H235ChallengeString challenge;
H235RandomVal random;
H235TypedCertificate certificate;
H235Identifier generalID;
H235NonStandardParameter nonStandard;
H235ECKASDH eckasdhkey;
H235Identifier sendersID;
} H235ClearToken;
EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue);
EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue);
/**************************************************************/
/* */
/* IV8 */
/* */
/**************************************************************/
typedef struct EXTERN H235IV8 {
ASN1UINT numocts;
ASN1OCTET data[8];
} H235IV8;
EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue);
EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue);
/**************************************************************/
/* */
/* IV16 */
/* */
/**************************************************************/
typedef struct EXTERN H235IV16 {
ASN1UINT numocts;
ASN1OCTET data[16];
} H235IV16;
EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue);
EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue);
/**************************************************************/
/* */
/* Params */
/* */
/**************************************************************/
typedef struct EXTERN H235Params {
struct {
unsigned ranIntPresent : 1;
unsigned iv8Present : 1;
unsigned iv16Present : 1;
} m;
ASN1INT ranInt;
H235IV8 iv8;
H235IV16 iv16;
} H235Params;
EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue);
EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue);
/**************************************************************/
/* */
/* ENCRYPTED */
/* */
/**************************************************************/
typedef struct EXTERN H235ENCRYPTED {
ASN1OBJID algorithmOID;
H235Params paramS;
ASN1DynOctStr encryptedData;
} H235ENCRYPTED;
EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue);
EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue);
/**************************************************************/
/* */
/* CryptoToken_cryptoEncryptedToken */
/* */
/**************************************************************/
typedef struct EXTERN H235CryptoToken_cryptoEncryptedToken {
ASN1OBJID tokenOID;
H235ENCRYPTED token;
} H235CryptoToken_cryptoEncryptedToken;
EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue);
EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue);
/**************************************************************/
/* */
/* EncodedGeneralToken */
/* */
/**************************************************************/
typedef ASN1OpenType H235EncodedGeneralToken;
EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value);
EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue);
/**************************************************************/
/* */
/* CryptoToken_cryptoSignedToken_token */
/* */
/**************************************************************/
typedef struct EXTERN H235CryptoToken_cryptoSignedToken_token {
H235EncodedGeneralToken toBeSigned;
ASN1OBJID algorithmOID;
H235Params paramS;
ASN1DynBitStr signature;
} H235CryptoToken_cryptoSignedToken_token;
EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue);
EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue);
/**************************************************************/
/* */
/* CryptoToken_cryptoSignedToken */
/* */
/**************************************************************/
typedef struct EXTERN H235CryptoToken_cryptoSignedToken {
ASN1OBJID tokenOID;
H235CryptoToken_cryptoSignedToken_token token;
} H235CryptoToken_cryptoSignedToken;
EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue);
EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue);
/**************************************************************/
/* */
/* HASHED */
/* */
/**************************************************************/
typedef struct EXTERN H235HASHED {
ASN1OBJID algorithmOID;
H235Params paramS;
ASN1DynBitStr hash;
} H235HASHED;
EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue);
EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue);
/**************************************************************/
/* */
/* CryptoToken_cryptoHashedToken */
/* */
/**************************************************************/
typedef struct EXTERN H235CryptoToken_cryptoHashedToken {
ASN1OBJID tokenOID;
H235ClearToken hashedVals;
H235HASHED token;
} H235CryptoToken_cryptoHashedToken;
EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue);
EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue);
/**************************************************************/
/* */
/* CryptoToken */
/* */
/**************************************************************/
/* Choice tag constants */
#define T_H235CryptoToken_cryptoEncryptedToken 1
#define T_H235CryptoToken_cryptoSignedToken 2
#define T_H235CryptoToken_cryptoHashedToken 3
#define T_H235CryptoToken_cryptoPwdEncr 4
#define T_H235CryptoToken_extElem1 5
typedef struct EXTERN H235CryptoToken {
int t;
union {
/* t = 1 */
H235CryptoToken_cryptoEncryptedToken *cryptoEncryptedToken;
/* t = 2 */
H235CryptoToken_cryptoSignedToken *cryptoSignedToken;
/* t = 3 */
H235CryptoToken_cryptoHashedToken *cryptoHashedToken;
/* t = 4 */
H235ENCRYPTED *cryptoPwdEncr;
/* t = 5 */
} u;
} H235CryptoToken;
EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue);
EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue);
#ifdef __cplusplus
}
#endif
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More