- Expédié
- 26 avril 2026 à 22:47 UTC
- Auteur
- kamo
- Commite
- 33ab822
Le boîtier auto-appel a laissé une fuite de session: composer votre propre extension crée une session sortante, puis Asterisk boucle le rappel en une seconde session entrante, donc deux sessions existent à la fois. Le seul activeSessionRef n'a suivi que le plus récent (inbound), de sorte que: 1. Rejeter (en maintenant le rebouclage) - inbound rejeté, ref nulled. 2. L'astérisque s'en remet à la messagerie vocale. 3. L'interface utilisateur bascule vers l'appel final parce que l'extérieur part Établi. 4. Cliquez sur End Call et hangup() lit réf, trouve nul, no-op. 5. L'audio de la messagerie vocale continue de jouer; seule une page rafraîchit l'éclaire. Maintenir un ensemble allSessionsRef côté de la première ref: - wireSession ajoute chaque session. - les événements terminés/défauts s'éloignent de l'ensemble, seul l'état d'appel de réinitialisation si THAT a été primaire, et promouvoir un survivant à la primaire. Mut/hold/transfert continue à viser un appel en direct. - le rejet() retire la session rejetée de l'ensemble et encourage une survivant (donc l'utilisateur ne pointe pas brièvement sur rien). - hangup() itère l'ensemble et les appels racup() sur chaque membre, puis nettoie l'ensemble et la première réf. - Les auditeurs de la session (acceptés/tentés/détenteurs/troules/démangeaisons) maintenant court-circuit lorsque la séance de tir n'est pas la primaire actuelle, donc des événements périmés d'une session en formation continue ne peuvent pas retourner l'état de l'UI pour un différents appels actifs.