forked from asterisk/asterisk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
6813 lines (5736 loc) · 321 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
==============================================================================
===
=== THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE
=== PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO
=== doc/CHANGES-staging/README.md FOR MORE DETAILS.
===
=== This file documents the new and/or enhanced functionality added in
=== the Asterisk versions listed below. This file does NOT include
=== changes in behavior that would not be backwards compatible with
=== previous versions; for that information see the UPGRADE.txt file
=== and the other UPGRADE files for older releases.
===
==============================================================================
------------------------------------------------------------------------------
--- New functionality introduced in Asterisk 17.0.0 --------------------------
------------------------------------------------------------------------------
Bridging
------------------
* The bridging core no longer uses the stasis cache for bridge
snapshots. The latest bridge snapshot is now stored on the
ast_bridge structure itself.
The following APIs are no longer available since the stasis cache
is no longer used:
ast_bridge_topic_cached()
ast_bridge_topic_all_cached()
A topic pool is now used for individual bridge topics.
The ast_bridge_cache() function was removed since there's no
longer a separate container of snapshots.
A new function "ast_bridges()" was created to retrieve the
container of all bridges. Users formerly calling
ast_bridge_cache() can use the new function to iterate over
bridges and retrieve the latest snapshot directly from the
bridge.
The ast_bridge_snapshot_get_latest() function was renamed to
ast_bridge_get_snapshot_by_uniqueid().
A new function "ast_bridge_get_snapshot()" was created to retrieve
the bridge snapshot directly from the bridge structure.
The ast_bridge_topic_all() function now returns a normal topic
not a cached one so you can't use stasis cache functions on it
either.
The ast_bridge_snapshot_type() stasis message now has the
ast_bridge_snapshot_update structure as it's data. It contains
the last snapshot and the new one.
Channels
------------------
* The core no longer uses the stasis cache for channels snapshots.
The following APIs are no longer available:
ast_channel_topic_cached()
ast_channel_topic_all_cached()
The ast_channel_cache_all() and ast_channel_cache_by_name() functions
now returns an ao2_container of ast_channel_snapshots rather than a
container of stasis_messages therefore you can't call stasis_cache
functions on it.
The ast_channel_topic_all() function now returns a normal topic,
not a cached one so you can't use stasis cache functions on it either.
The ast_channel_snapshot_type() stasis message now has the
ast_channel_snapshot_update structure as it's data.
ast_channel_snapshot_get_latest() still returns the latest snapshot.
chan_sip
------------------
* The chan_sip module is now deprecated, users should migrate to the
replacement module chan_pjsip. See guides at the Asterisk Wiki:
https://wiki.asterisk.org/wiki/x/tAHOAQ
https://wiki.asterisk.org/wiki/x/hYCLAQ
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 16.0.0 to Asterisk 17.0.0 ------------
------------------------------------------------------------------------------
AttendedTransfer
------------------
* A new application, this will queue up attended transfer to the given extension.
BlindTransfer
------------------
* A new application, this will redirect all channels currently
bridged to the caller channel to the specified destination.
ConfBridge
------------------
* Add "average_all", "highest_all", and "lowest_all" values for
the remb_behavior option. These values operate on a bridge
level instead of a per-source level. This means that a single
REMB value is calculated and sent to every sender, instead of
a REMB value that is unique for the specific sender..
Dial
------------------
* Add RINGTIME and RINGTIME_MS variables containing respectively seconds and
milliseconds between creation of the dialing channel and receiving the first
RINGING signal
Add PROGRESSTIME and PROGRESSTIME_MS variables analogous to the above with respect to
the PROGRESS signal. Shorter of these two times should be equivalent to
the PDD (Post Dial Delay) value
Add DIALEDTIME_MS and ANSWEREDTIME_MS variables to get millisecond resolution
versions of DIALEDTIME and ANSWEREDTIME
RTP/ICE
------------------
* You can now indicate that you'd like an ice_host_candidate's local address
to be published as well as the mapped address. See the sample rtp.conf
for more information.
ReadExten
------------------
* Add 'p' option to stop reading extension if user presses '#' key.
pbx_dundi
------------------
* The DUNDi PBX module now supports IPv4/IPv6 dual binding.
res_pjsip
------------------
* Added a new PJSIP global setting called norefersub.
Default is true to keep support working as before.
res_pjsip_refer configures PJSIP norefersub capability accordingly.
Checks the PJSIP global setting value.
If it is true (default) it adds the norefersub capability to PJSIP.
If it is false (disabled) it does not add the norefersub capability
to PJSIP.
This is useful for Cisco switches that do not follow RFC4488.
res_rtp_asterisk
------------------
* DTLS packets will now be fragmented according to the MTU as set in rtp.conf. This
allows larger certificates to be used for the DTLS negotiation. By default this value
is 1200.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 16.2.0 to Asterisk 16.3.0 ----------
------------------------------------------------------------------------------
ARI
------------------
* Application event filtering is now supported. An application can now specify
an "allowed" and/or "disallowed" list(s) of event types. Only those types
indicated in the "allowed" list are sent to the application. Conversely, any
types defined in the "disallowed" list are not sent to the application. Note
that if a type is specified in both lists "disallowed" takes precedence.
* A new REST API call has been added: 'move'. It follows the format
'channels/{channelId}/move' and can be used to move channels from one application
to another without needing to exit back into the dialplan. An application must be
specified, but the passing a list of arguments to the new application is optional.
An example call would look like this:
client.channels.move(channelId=chan.id, app='ari-example', appArgs='a,b,c')
If the channel was inside of a bridge when switching applications, it will
remain there. If the application specified cannot be moved to, then the channel
will remain in the current application and an event will be triggered named
"ApplicationMoveFailed", which will provide the destination application's name
and the channel information.
res_pjsip
------------------
* A new configuration parameter "taskprocessor_overload_trigger" has been
added to the pjsip.conf "globals" section. The distributor currently stops
accepting new requests when any taskprocessor overload is triggered. The
new option allows you to completely disable overload detection (NOT
RECOMMENDED), keep the current behavior, or trigger only on pjsip
taskprocessor overloads.
chan_pjsip
------------------
* A new configuration parameter 'ignore_183_without_sdp' has been added
to the pjsip.conf "endpoints" section. If enabled, will make chan_pjsip
discard 183s that do not contain an SDP body, which can resolve no
ringback tone issues as well as making the behavior match chan_sip.
MWI
------------------
* A new module "res_mwi_devstate" has been added that allows subscriptions
to voicemail boxes using "presence" events. This allows common BLF keys
to act as voicemail waiting indicators.
app_queue
------------------
* Added the ability to set the wrapuptime per-member using the AddQueueMember
application.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 16.1.0 to Asterisk 16.2.0 ------------
------------------------------------------------------------------------------
ARI
------------------
* Whenever an ARI application is started, a context will be created for it
automatically as long as one does not already exist, following the format
'stasis-<app_name>'. Two extensions are also added to this context: a match-all
extension, and the 'h' extension. Any phone that registers under this context
will place all calls to the corresponding Stasis application.
res_pjsip
------------------
* Added "send_contact_status_on_update_registration" global configuration option
to enable sending AMI ContactStatus event when a device refreshes its registration.
Core
------------------
* Reworked the media indexer so it doesn't cache the index. Testing revealed
that the cache added no benefit but that it could consume excessive memory.
Two new index related functions were created: ast_sounds_get_index_for_file()
and ast_media_index_update_for_file() which restrict index updating to
specific sound files. The original ast_sounds_get_index() and
ast_media_index_update() calls are still available but since they no longer
cache the results internally, developers should re-use an index they may
already have instead of calling ast_sounds_get_index() repeatedly. If
information for only a single file is needed, ast_sounds_get_index_for_file()
should be called instead of ast_sounds_get_index().
Features
------------------
* Before Asterisk 12, when using the automon or automixmon features defined
in features.conf, a channel variable (TOUCH_MIXMONITOR_OUTPUT) was set on
both channels, indicating the filename of the recording.
When bridging was overhauled in Asterisk 12, the behavior was changed such
that the variable was only set on the peer channel and not on the channel
that initiated the automon or automixmon.
The previous behavior has been restored so both channels receive the
channel variable when one of these features is invoked.
app_voicemail
------------------
* You can now specify a special context with the "aliasescontext" parameter
in voicemail.conf which will allow you to create aliases for physical
mailboxes.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------
------------------------------------------------------------------------------
pbx_config
------------------
* pbx_config will now find and process multiple 'globals' sections from
extensions.conf. Variables are processed in the order they are found
and duplicate variables overwrite the previous value.
chan_pjsip
------------------
* New dialplan function PJSIP_PARSE_URI added to parse an URI and return
a specified part of the URI.
Core
------------------
* ast_bt_get_symbols() now returns a vector of strings instead of an
array of strings. This must be freed with ast_bt_free_symbols.
res_pjsip
------------------
* New options 'trust_connected_line' and 'send_connected_line' have been
added to the endpoint. The option 'trust_connected_line' is to control
if connected line updates are accepted from this endpoint.
The option 'send_connected_line' is to control if connected line updates
can be sent to this endpoint.
The default value is 'yes' for both options.
res_rtp_asterisk
------------------
* The existing strictrtp option in rtp.conf has a new choice availabe, called
'seqno', which behaves the same way as setting strictrtp to 'yes', but will
ignore the time interval during learning so that bursts of packets can still
trigger learning our source.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
------------------------------------------------------------------------------
app_fax
------------------
* The app_fax module is now deprecated, users should migrate to the
replacement module res_fax.
app_originate
------------------
* An 'a' option has been added to the Originate dialplan application which
will execute the originate in an asynchronous fashion. If set then the
application will return immediately without waiting for the originated
channel to answer.
Build System
------------------
* MALLOC_DEBUG no longer has an effect on Asterisk's ABI. Asterisk built
with MALLOC_DEBUG can now successfully load binary modules built without
MALLOC_DEBUG and vice versa. Third-party pre-compiled modules no longer
need to have a special build with it enabled.
* Asterisk now depends on libjansson >= 2.11. If this version is not
available on your distro you can use `./configure --with-jansson-bundled`.
app_macro
------------------
* The app_macro module is now deprecated and by default it is no longer
built. Users should migrate to app_stack (Gosub). A warning is logged
the first time any Macro is used.
app_setcallerid
------------------
* The app_setcallerid module has been removed. The CALLERID dialplan function
should be used instead.
chan_sip
------------------
* New function SIP_HEADERS() enumerates all headers in the incoming INVITE.
* The variable GET_TRANSFERRER_DATA set in the peer channel causes matching
headers be retrieved from the REFER message and made accessible to the
dialplan in the hash TRANSFER_DATA.
chan_dahdi
------------------
* Timeouts for reading digits from analog phones are now configurable in
chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout.
AMI
------------------
* The ContactStatus and Status fields for the manager events ContactStatus
and ContactStatusDetail are now set to "NonQualified" when a contact exists
but has not been qualified.
* The "Newexten" event is now part of the "dialplan" class. The documentation
for Asterisk 15 already specified this, but the implementation was actually
using the "call" class instead.
ARI
------------------
* The ContactInfo event's contact_status field is now set to "NonQualified"
when a contact exists but has not been qualified.
app_queue
------------------
* Added the ability to set the wrapuptime in the configuration of member.
When set the wrapuptime on the member is used instead of the wrapuptime
defined for the queue itself.
* Added predial handler support for caller and callee channels with the
B and b options respectively. This is similar to the predial support
in app_dial.
res_config_sqlite
------------------
* The res_config_sqlite module is now deprecated, users should migrate to the
replacement module res_config_sqlite3.
res_monitor
------------------
* The res_monitor module is now deprecated, users should migrate to the
replacement module app_mixmonitor.
res_pjsip
------------------
* A new AMI action, PJSIPShowAors, has been added which displays information
about all configured PJSIP AORs.
* A new AMI action, PJSIPShowAuths, has been added which displays information
about all configured PJSIP Auths.
* A new AMI action, PJSIPShowContacts, has been added which displays information
about all configured PJSIP Contacts.
res_pjsip_registrar_expire
------------------
* The res_pjsip_registrar_expire module has been removed. The functionality has
been moved into res_pjsip_registrar.
func_audiohookinherit
------------------
* The func_audiohookinherit module has been removed. Due to architectural changes
in Asterisk 12, audiohook inheritance is performed automatically and this
function now lacks function.
cdr_syslog
------------------
* The cdr_syslog module is now deprecated and by default it is no longer
built.
cdr_sqlite
------------------
* The cdr_sqlite module has been removed. Users should move to using the
cdr_sqlite3_custom module instead.
format_jpeg
------------------
* The format_jpeg module has been removed.
pbx_dundi
------------------
* DUNDi now supports IPv6
Core:
------------------
* libedit is no longer available as an embedded library and must be provided
by the system.
* The STATIC_BUILD functionality has been removed as it has not been maintained
and has not worked in quite some time.
* The module loader now enforces inter-module dependencies. This ensures that
a module is not started before another it depends on, even if preload is used.
If a dependency is not available or fails to startup this will block any
dependants from startup.
* Parts of the Asterisk core which can load configuration from realtime are now
built-in modules. It is no longer necessary to preload realtime drivers as
they are always initialized before the built-in modules.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------
------------------------------------------------------------------------------
res_pjsip
------------------
* A new option 'suppress_q850_reason_headers' has been added to the endpoint
object. Some devices can't accept multiple Reason headers and get confused
when both 'SIP' and 'Q.850' Reason headers are received. This option allows
the 'Q.850' Reason header to be suppressed. The default value is 'no'.
res_pjsip_endpoint_identifier_ip
------------------
* Added regex support to the identify section match_header option. You
specify a regex instead of an explicit string by surrounding the header
value with slashes:
match_header = SIPHeader: /regex/
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------
------------------------------------------------------------------------------
Core
------------------
* Core bridging and, more specifically, bridge_softmix have been enhanced to
relay received frames of type TEXT or TEXT_DATA to all participants in a
softmix bridge. res_pjsip_messaging and chan_pjsip have been enhanced to
take advantage of this so when res_pjsip_messaging receives an in-dialog
MESSAGE message from a user in a conference call, it's relayed to all
other participants in the call.
app_sendtext
------------------
* Support Enhanced Messaging. SendText now accepts new channel variables
that can be used to override the To and From display names and set the
Content-Type of a message. Since you can now set Content-Type, other
text/* content types are now valid.
app_confbridge
------------------
* ConfbridgeList now shows talking status. This utilizes the same voice
detection as the ConfbridgeTalking event, so bridges must be configured
with "talk_detection_events=yes" for this flag to have meaning.
* ConfBridge can now send events to participants via in-dialog MESSAGEs.
All current Confbridge events are supported, such as ConfbridgeJoin,
ConfbridgeLeave, etc. In addition to those events, a new event
ConfbridgeWelcome has been added that will send a list of all
current participants to a new participant.
res_pjsip
------------------
* Two new options have been added to the system and endpoint objects to
control whether, on outbound calls, Asterisk will accept updated SDP answers
during the initial INVITE transaction when 100rel is not in effect.
This usually happens when the INVITE is forked to multiple UASs and more
than one sends an SDP answer or when a single UAS needs to change a media
port to switch from custom ringback to the actual media destination.
The 'follow_early_media_forked' option sets whether Asterisk will accept
the updated SDP when the To tag on the subsequent response is different than
that on the the previous response. This usually occurs in the forked INVITE
scenario. The default value is "yes" which is the current behavior.
The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the
updated SDP when the To tag on the subsequent response is the same as that
on the previous response. This can occur when a UAS needs to switch media
ports from custom ringback to the final media path. The default value is
"no" which is the current behavior.
These options have to be enabled system-wide in the system config section
of pjsip.conf as well as on individual endpoints that require the
functionality.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------
------------------------------------------------------------------------------
Core
------------------
* A new configuration option "genericplc_on_equal_codecs" was added to the
"plc" section of codecs.conf to allow generic packet loss concealment even
if no transcoding was originally needed. Transcoding via SLIN is forced
in this case.
res_pjproject
------------------
* Added the "cache_pools" option to pjproject.conf. Disabling the option
helps track down pool content mismanagement when using valgrind or
MALLOC_DEBUG. The cache gets in the way of determining if the pool contents
are used after free and who freed it.
res_pjsip_notify
------------------
* Extend the PJSIPNotify AMI command to send an in-dialog notify on a
channel.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------
------------------------------------------------------------------------------
Core
------------------
* During dialplan reload log messages are produced for each context,
extension and include. These messages are no longer printed by the
verbose loggers, they are now only logged as debug messages.
app_confbridge
------------------
* Added the Muted header to the ConfbridgeJoin AMI event to indicate the
participant's starting mute status.
* Made the AMI ConfbridgeList action's ConfbridgeList events output all
the standard channel snapshot headers instead of a few hand-coded channel
snapshot headers. The benefit is that the CallerIDName gets disruptive
characters like CR, LF, Tab, and a few others escaped. However, an empty
CallerIDName is now output as "<unknown>" instead of "<no name>".
app_followme
------------------
* Added a new prompt, connecting-prompt, which will be played
(if configured) to the "winner" callee before connecting the call.
res_pjsip
------------------
* Users who are matching endpoints by SIP header need to reevaluate their
global "endpoint_identifier_order" option in light of the "ip" endpoint
identifier method split into the "ip" and "header" endpoint identifier
methods.
* The pjsip_transport_event feature introduced in 15.1.0 has been refactored.
Any external modules that may have used that feature (highly unlikey) will
need to be changed as the API has been altered slightly.
res_pjsip_endpoint_identifier_ip
------------------
* The endpoint identifier "ip" method previously recognized endpoints either
by IP address or a matching SIP header. The "ip" endpoint identifier method
is now split into the "ip" and "header" endpoint identifier methods. The
"ip" endpoint identifier method only matches by IP address and the "header"
endpoint identifier method only matches by SIP header. The split allows the
user to control the relative priority of the IP address and the SIP header
identification methods in the global "endpoint_identifier_order" option.
e.g., If you have two type=identify sections where one matches by IP address
for endpoint alice and the other matches by SIP header for endpoint bob then
you can now predict which endpoint is matched when a request comes in that
matches both.
res_pjsip_pubsub
------------------
* In an earlier release, inbound registrations on a reliable transport
were pruned on Asterisk restart since the TCP connection would have
been torn down and become unusable when Asterisk stopped. This same
process is now also applied to inbound subscriptions. Since this
required the addition of a new column to the ps_subscription_persistence
realtime table, users who store their subscriptions in a database will
need to run the "alembic upgrade head" process to add the column to
the schema.
res_pjsip_transport_management
------------------
* Since res_pjsip_transport_management provides several attack
mitigation features, its functionality moved to res_pjsip and
this module has been removed. This way the features will always
be available if res_pjsip is loaded.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------
------------------------------------------------------------------------------
Core
------------------
* Added the "cache_media_frames" option to asterisk.conf. Disabling the option
helps track down media frame mismanagement when using valgrind or
MALLOC_DEBUG. The cache gets in the way of determining if the frame is
used after free and who freed it. NOTE: This option has no effect when
Asterisk is compiled with the LOW_MEMORY compile time option enabled because
the cache code does not exist.
chan_sip
------------------
* Calls to invalid extensions are now reported as an ACL failure security event
"no_extension_match".
res_rtp_asterisk
------------------
* The X.509 certificate used for DTLS negotation can now be automatically
generated. This is supported by res_pjsip by specifying
"dtls_auto_generate_cert = yes" on a PJSIP endpoint. For chan_sip, you
would set "dtlsautogeneratecert = yes" either in the [general] section of
sip.conf or on a specific peer.
res_pjsip
------------------
* The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint
being matched based only on IP address. To ensure no behavior change the
default has been changed to "username,ip".
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.0.0 to Asterisk 15.1.0 ------------
------------------------------------------------------------------------------
res_pjsip
------------------
* The "remove_existing" option now allows a registration to succeed by
displacing any existing contacts that now exceed the "max_contacts" count.
Any removed contacts are the next to expire. The behaviour change is
beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
than one. The removed contact is likely the old contact created by
"rewrite_contact" that the device is refreshing.
AMI
------------------
* Added a new CancelAtxfer action that cancels an attended transfer.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14 to Asterisk 15 --------------------
------------------------------------------------------------------------------
app_queue
------------------
* PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has
been defined.
* A new option, "announce-position-only-up," has been added that, when set to
yes, causes position announcements to only be played when the caller's
queue position has improved since the last time that we annouced their
position. This default is no.
Build System
------------------
* '--with-pjproject-bundled' is now the default when running ./configure
It can be disabled with '--without-pjproject-bundled'.
* A '--with-download-cache' option is now available which is equivalent to
setting '--with-sounds-cache' and '--with-externals-cache' to the same
value. The download cache can also be set via the AST_DOWNLOAD_CACHE
environment variable.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------
------------------------------------------------------------------------------
res_pjsip
------------------
* The "external_media_address" on transports is now resolved using dnsmgr and
when dnsmgr refreshes are enabled will be automatically updated with the new
IP address of a given hostname.
* A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to receive
unsolicited MWI NOTIFY requests and make them available to other modules via
the stasis message bus.
res_musiconhold
------------------
* By default, when res_musiconhold reloads or unloads, it sends a HUP signal
to custom applications (and all descendants), waits 100ms, then sends a
TERM signal, waits 100ms, then finally sends a KILL signal. An application
which is interacting with an external device and/or spawns children of its
own may not be able to exit cleanly in the default times, expecially if sent
a KILL signal, or if it's children are getting signals directly from
res_musiconhoild. To allow extra time, the 'kill_escalation_delay'
class option can be used to set the number of milliseconds res_musiconhold
waits before escalating kill signals, with the default being the current
100ms. To control to whom the signals are sent, the "kill_method"
class option can be set to "process_group" (the default, existing behavior),
which sends signals to the application and its descendants directly, or
"process" which sends signals only to the application itself.
* New dialplan function PJSIP_DTMF_MODE added to get or change the DTMF mode
of a channel on a per-call basis.
res_xmpp
-----------------
* OAuth 2.0 authentication is now supported when contacting Google. Follow the
instructions in xmpp.conf.sample to retrieve and configure the necessary
tokens.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------
------------------------------------------------------------------------------
app_voicemail
------------------
* A new global option "imap_poll_logout" was added to specify whether need to
disconnect from the IMAP server after polling of mailboxes.
Default: no
res_pjsip
------------------
* A new endpoint option "refer_blind_progress" was added to turn off notifying
the progress details on Blind Transfer. If this option is not set then
the chan_pjsip will send NOTIFY "200 OK" immediately after "202 Accepted".
On default is enabled.
Some SIP phones like Mitel/Aastra or Snom keep the line busy until
receive "200 OK".
* A new endpoint option "notify_early_inuse_ringing" was added to control
whether to notify dialog-info state 'early' or 'confirmed' on Ringing
when already INUSE.
* The endpoint option 'dtmf_mode' has a new option 'auto_dtmf' added. This
mode works similar to 'auto' except uses DTMF INFO as fallback instead of
INBAND.
res_agi
------------------
* The EAGI() application will now look for a dialplan variable named
EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that
EAGI provides. If not specified, it will continue to use the default signed
linear (slin).
chan_pjsip
------------------
* When dialing an endpoint directly or using the PJSIP_DIAL_CONTACTS dialplan
function any contact which is considered unreachable due to qualify being
enabled will no longer be called.
* The asymmetric_rtp_codec option now also controls whether chan_pjsip will
send media as-is without transcoding if the codec has been negotiated in the
SDP. If set to "no" then Asterisk will only ever send the preferred codec
from the SDP, unless the remote side sends a different codec and we will
switch to match.
Build System
------------------
* Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used
to pass arbitrary options to the bundled pjproject configure.
* Automatically set the bundled pjproject configure --host and --build
options to match those supplied for the asterisk configure.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------
------------------------------------------------------------------------------
res_rtp_asterisk
------------------
* Added the stun_blacklist option to rtp.conf. Some multihomed servers have
IP interfaces that cannot reach the STUN server specified by stunaddr.
Blacklist those interface subnets from trying to send a STUN packet to find
the external IP address. Attempting to send the STUN packet needlessly
delays processing incoming and outgoing SIP INVITEs because we will wait
for a response that can never come until we give up on the response.
Multiple subnets may be listed.
Logging
-------------------
* Added logger_queue_limit to the configuration options.
All log messages go to a queue serviced by a single thread
which does all the IO. This setting controls how big that
queue can get (and therefore how much memory is allocated)
before new messages are discarded.
The default is 1000.
res_pjsip_config_wizard
------------------
* Two new parameters have been added to the pjsip config wizard.
Setting 'sends_line_with_registrations' to true will cause the wizard
to skip the creation of an identify object to match incoming requests
to the endpoint and instead add the line and endpoint parameters to
the outbound registration object.
Setting 'outbound_proxy' is a shortcut for adding individual
endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy
parameters.
res_hep_rtcp
------------------
* If the 'call-id' value is specified for the uuid_type option and a
chan_sip channel is used the resulting HEP traffic will now contain the
SIP Call-ID instead of the Asterisk channel name.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
------------------------------------------------------------------------------
Build System
------------------
* LOW_MEMORY no longer has an effect on Asterisk ABI. Symbols that were
previously suppressed by LOW_MEMORY are now replaced by stub functions.
Asterisk built with LOW_MEMORY can now successfully load binary modules
built without LOW_MEMORY and vice versa.
* RADIUS backends for CEL and CDR can now also be built using the radcli
client library, in addition to the existing support for building them
using either freeradius or radiusclient-ng.
Core
------------------
* ASTERISK_REGISTER_FILE was no longer useful and has been removed. Sources
which use mtx_prof must now manually declare and initialize the variable.
chan_sip
------------------
* If an offer is received with optional SRTP (a media stream with RTP/AVP but
which contains a crypto line) chan_sip will now accept it and enable SRTP.
If you would like to do optional SRTP on outbound you will need to create
a dialplan that dials with it enabled initially and if it fails fall back to
without.
res_pjsip
------------------
* Added endpoint configuration parameter "preferred_codec_only".
This allow asterisk response to a SIP invite with the single most
preferred codec rather than advertising all joint codec capabilities.
This limits the other side's codec choice to exactly what we prefer.
cdr_radius
------------------
* To fix a memory leak the syslog channel is now empty if it has not been set
and used by a syslog channel in the logger.
cel_radius
------------------
* To fix a memory leak the syslog channel is now empty if it has not been set
and used by a syslog channel in the logger.
RTP
------------------
* New setting "rtp_pt_dynamic = 35" in asterisk.conf:
Normally the Dynamic RTP Payload Type numbers are 96-127, which allow just 32
formats. To avoid the message "No Dynamic RTP mapping available", the range
was changed to 35-63,96-127. This is allowed by RFC 3551 section 3. However,
when you use more than 32 formats and calls are not accepted by a remote
implementation, please report this and go back to rtp_pt_dynamic = 96.
* A new setting, "rtp_use_dynamic", has been added in asterisk.conf". When set
to "yes" RTP dynamic payload types are assigned dynamically per RTP instance.
When set to "no" RTP dynamic payload types are globally initialized to pre-
designated numbers and function similar to static payload types.
app_originate
------------------
* Added support to gosub predial routines on both original channel and on the
created channel using options parameter (like app_dial) B() and b(). This
allows for adding variables to newly created channel or, e.g. setting callerid.
CLI Commands
------------------
* 'dialplan show' output will now show [config_file:line_number] instead of
[registrar] when that information is available. Currently only extensions
registered by pbx_config when loading/reloading will use this format.
app_queue
------------------
* Add 'QueueUpdate' application which can be used to track outbound calls
using app_queue.
pbx_spool
------------------
* Asterisk will now set the AST_OUTGOING_ATTEMPT channel variable so that
attempt-specific behavior is possible. This is a 1-based number that
simply increases by 1 for each attempt.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
------------------------------------------------------------------------------
AMI
------------------
* The 'PJSIPShowEndpoint' command's respone event of 'IdentifyDetail' now
contains a new optional parameter, 'MatchHeader', mapping to the new
configuration option 'match_header' for the corresponding 'identify' object.
It should be noted that since 'match_header' takes in a key: value pair, the
event parameter will contain a ':' as well.
app_record
------------------
* Added new 'u' option to Record() application which prevents Asterisk from
truncating silence from the end of recorded files.
res_pjsip_outbound_registration
------------------
* Outbound registrations are now refreshed when res_stun_monitor detects
a network change event has happened.
The 'pjsip send (un)register' CLI commands were updated to accept '*all'
as an argument to operate on all registrations.
The 'PJSIP(Un)Register' AMI commands were updated to also accept '*all'.
app_voicemail
------------------
* The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and
'vm-newuser' configuration options in voicemail.conf.
* Added 'fromstring' field to the voicemail boxes. If set, it will override
the global 'fromstring' field on a per-mailbox basis.
func_channel
------------------
* Added CHANNEL(callid) to retrieve the call log tag associated with the
channel. e.g., [C-00000000] Dialplan now has access to the call log
search key associated with the channel so it can be saved in case there
is a problem with the call.
res_pjsip
------------------
* A new transport parameter 'symmetric_transport' has been added.
When a request from a dynamic contact comes in on a transport with this
option set to 'yes', the transport name will be saved and used for
subsequent outgoing requests like OPTIONS, NOTIFY and INVITE. It's
saved as a contact uri parameter named 'x-ast-txp' and will display with
the contact uri in CLI, AMI, and ARI output. On the outgoing request,
if a transport wasn't explicitly set on the endpoint AND the request URI
is not a hostname, the saved transport will be used and the 'x-ast-txp'
parameter stripped from the outgoing packet. To facilitate recreation of
subscriptions on asterisk restart, a new column 'contact_uri' needed to be
added to the ps_subcsription_persistence table. Since new columns were
added to both transport and subscription_persistence, an alembic upgrade
should be run to bring the database tables up to date.
* A new option, allow_overlap, has been added to endpoints which allows
overlap dialing functionality to be enabled or disabled. The option defaults
to enabled.
res_pjsip_transport_websocket
------------------
* Removed non-secure websocket support. Firefox and Chrome have not allowed
non-secure websockets for quite some time so this shouldn't be an issue
for people. Attempting to use a non-secure websocket may or may not work
when Asterisk attempts to send SIP requests to do something like initiate
call hangup.
res_pjsip_endpoint_identifier_ip
------------------
* A new option has been added to the 'identify' configuration object,
'match_header'. The 'match_header' attribute should contain a SIP
header: value pair that, When set, will cause inbound requests that contain
the matching SIP header/value pair to be associated with the corresponding
endpoint. This option is cumulative with the 'match' option, so that if
either option matches the request, the request is associated with the
endpoint.
In a future release, this module will be renamed to something more
appropriate, as it now matches inbound requests on more than just IP
address.
res_rtp_asterisk
-----------------
* The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP
Data and Control Packets on a Single Port." So far, the only channel driver
that supports this feature is chan_pjsip. You can set "rtcp_mux = yes" on
a PJSIP endpoint in pjsip.conf to enable the feature.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.2.0 to Asterisk 14.3.0 ------------
------------------------------------------------------------------------------
res_pjproject
------------------
* Added new CLI command "pjproject set log level". The new command allows
the maximum PJPROJECT log levels to be adjusted dynamically and
independently from the set debug logging level like many other similar
module debug logging commands.
* Added new companion CLI command "pjproject show log level" to allow the
user to see the current maximum pjproject logging level.
* Added new pjproject.conf startup section "log_level' option to set the
initial maximum PJPROJECT logging level.
res_pjsip_outbound_registration
------------------
* Statsd no longer logs redundant status PJSIP.registrations.state changes
for internal state transitions that don't change the reported public status
state.
res_pjsip_registrar
------------------
* The PJSIPShowRegistrationInboundContactStatuses AMI command has been added
to return ContactStatusDetail events as opposed to
PJSIPShowRegistrationsInbound which just a dumps every defined AOR.
res_pjsip
------------------
* Six existing contact fields have been added to the end of the
ContactStatusDetail AMI event:
ID, AuthenticateQualify, OutboundProxy, Path, QualifyFrequency and
QualifyTimeout. Existing fields have not been disturbed.