# Asterisk Release Candidate 22.12.0-rc2

**URL:** <https://community.asterisk.org/t/asterisk-release-candidate-22-12-0-rc2/114674>\
**Category:** Development\
**Created:** [October 8, 2026, 12:15pm UTC](https://community.asterisk.org/t/asterisk-release-candidate-22-12-0-rc2/114674 "2026-10-08T12:15:49Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![asteriskteam](https://sea1.discourse-cdn.com/asterisk/user_avatar/community.asterisk.org/asteriskteam/32/1845_2.png) [@asteriskteam](https://community.asterisk.org/u/asteriskteam)\
**Post date:** [October 8, 2026, 12:15pm UTC](https://community.asterisk.org/t/asterisk-release-candidate-22-12-0-rc2/114674/1 "2026-10-08T12:15:49Z")

</div>

The Asterisk Development Team would like to announce  
release candidate 2 of asterisk-22.12.0.

The release artifacts are available for immediate download at

> **[Release Asterisk Release 22.12.0-rc2 · asterisk/asterisk](https://github.com/asterisk/asterisk/releases/tag/22.12.0-rc2)**
>
> The Asterisk Development Team would like to announce
> release candidate 2 of asterisk-22.12.0.
> The release artifacts are available for immediate download at
> https://github.com/asterisk/asterisk/rele...

and

> **[Index of /pub/telephony/asterisk/](https://downloads.asterisk.org/pub/telephony/asterisk/)**

Repository: [GitHub - asterisk/asterisk: The official Asterisk Project repository. · GitHub](https://github.com/asterisk/asterisk)  
Tag: 22.12.0-rc2

This release resolves issues reported by the community  
and would have not been possible without your participation.

Thank You!

## Change Log for Release asterisk-22.12.0-rc2

### Links:

- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-22.12.0-rc2.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/22.12.0-rc1...22.12.0-rc2)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22.12.0-rc2.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)

### Summary:

- Commits: 3
- Commit Authors: 2
- Issues Resolved: 3
- Security Advisories Resolved: 0

### User Notes:

### Upgrade Notes:

### Developer Notes:

- 
#### Audiohooks: Fix whisper framehook timer leak and masquerade handling
ast\_channel\_fd\_add() now returns -1 if it fails to allocate  
space for the descriptor.

### Commit Authors:

- Joshua C. Colp: (2)
- Mike Bradeen: (1)

## Issue and Commit Detail:

### Closed Issues:

- #2134: [bug]: Bridging channels which have been spied on with ChanSpy fails
- #2179: [bug]: No initial NOTIFY for dialog subscriptions when hint references CustomPresence without AstDB entry (regression in 22.11.0)
- #2186: [bug]: dialog-info NOTIFY for ringing extension no longer contains identity (caller ID) since 22.11.0

### Commits By Author:

- **Joshua C. Colp** (2):

- **Mike Bradeen** (1):

### Commit List:

- Audiohooks: Fix whisper framehook timer leak and masquerade handling
- extstate/pjsip: Handle lack of or late loading of presence state.
- extstate: Include causing device channel details in legacy callbacks.

### Commit Details:

**Audiohooks: Fix whisper framehook timer leak and masquerade handling**  
Author: Mike Bradeen  
Date: 2026-09-25

Resolves several issues with the framehook added to allow whispering without  
an underlying stream.

The timer is now owned by the audiohook list rather than the framehook. It is  
retired on both channels during a masquerade and recreated when the audiohook(s)  
are moved.

If the timer cannot be started, whisper audio is still mixed into the outbound  
media as it was previously (requiring an underlying stream.)

An audiohook that cannot be moved to the new channel is now left DONE so that  
its owner does not wait on it forever.

Resolves: #2134

DeveloperNote: ast\_channel\_fd\_add() now returns -1 if it fails to allocate  
space for the descriptor.

**extstate/pjsip: Handle lack of or late loading of presence state.**  
Author: Joshua C. Colp  
Date: 2026-09-25

The extension state implementation is stateful resulting in state  
not being updated if a presence state provider does not publish an  
update after loading. To handle providers which don’t do this we  
query for updated state if we are asked for it and the existing  
state is invalid. This ensures that if the presence state provider  
is loaded later we will get the updated state when asked.

The func\_presencestate module is written to publish the persisted  
custom presence states at load time. This failed for entries with  
a not\_set state as this resulted in querying the presence provider  
that was not yet registered. The provider is now registered before  
this ensuring the update can be published.

This change also fixes an issue in PJSIP where a SUBSCRIBE for a  
hint that had an invalid presence state configuration would not  
send an initial NOTIFY. We now treat an invalid presence state as  
not set instead.

Fixes: #2179

**extstate: Include causing device channel details in legacy callbacks.**  
Author: Joshua C. Colp  
Date: 2026-09-29

When a legacy extension state callback registers it can optionally  
do so in a way that it will receive the channel(s) that have caused  
a device to ring. This is used in PJSIP for the dialog-info+xml  
support so that phones can display who is calling the monitored  
extension.

An issue was introduced in the extension state rewrite where this  
did not occur for the actual device that caused the extension state  
update. It was only being done for additional devices that could be  
involved. This has been fixed so that it is now done for the causing  
device.

Fixes: #2186

---

<div class="post-metadata">

**Author:** ![gjoseph](https://sea1.discourse-cdn.com/asterisk/user_avatar/community.asterisk.org/gjoseph/32/1690_2.png) [@gjoseph](https://community.asterisk.org/u/gjoseph)\
**Post date:** [October 8, 2026, 12:16pm UTC](https://community.asterisk.org/t/asterisk-release-candidate-22-12-0-rc2/114674/2 "2026-10-08T12:16:33Z")

</div>

Closed on October 8, 2026, 12:16pm UTC


