mirror of https://github.com/asterisk/asterisk
Currently, when receiving an unauthenticated call, we keep track of the negotiated format in the chosenformat, which allows us to later create the channel using the right format. However, this was not done for authenticated calls. This meant that in certain circumstances, if we had not yet received a voice frame from the peer, only certain other types of frames (e.g. text), there were no variables containing the appropriate frame. This led to problems in the jitterbuffer callback where we unnecessarily bailed out of retrieving a frame from the jitterbuffer. This was logic intentionally added in commitreleases/2173103bdcd5
in response to an earlier regression, and while this prevents crashes, it also backlogs legitimate frames unnecessarily. The abort logic was initially added because at this point in the code, we did not have the negotiated format available to us. However, it should always be available to us as a last resort in chosenformat, so we now pull it from there if needed. This allows us to process frames the jitterbuffer even if voicefmt and peerfmt aren't set and still avoid the crash. The failsafe logic is retained, but now it shouldn't be triggered anymore. Resolves: #1054 (cherry picked from commitea3ac94bbf
)
parent
ad49fffd54
commit
2253fa052d
Loading…
Reference in new issue