summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Traud <pabstraud@compuserve.com>2015-06-22 16:26:48 +0200
committerAlexander Traud <pabstraud@compuserve.com>2015-06-22 16:47:07 +0200
commit1ad9a6b6b60e841b3cadda31fc786ac42f74133f (patch)
tree0c87cd4a354478fc6e2df4561bb78900d62d4d74
parent5caefc98a1928c2aa21c1e820803a8af23f0a4b3 (diff)
chan_sip: Reload peer without its old capabilities.
On reload, previously allowed codecs were not removed. Therefore, it was not possible to remove codecs while Asterisk was running. Furthermore, newly added codecs got appended behind the previous codecs. Therefore, it was not possible to add a codec with a priority of #1. This change removes the old capabilities before the current ones are added. ASTERISK-25182 #close Reported by: Alexander Traud patches: asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520) Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802
-rw-r--r--channels/chan_sip.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b29bcdc05..96609d218 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -30406,8 +30406,11 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
if (!ast_sockaddr_isnull(&peer->addr)) {
ao2_t_unlink(peers_by_ip, peer, "ao2_unlink peer from peers_by_ip table");
}
- if (!(peer->the_mark))
+ if (!(peer->the_mark)) {
firstpass = 0;
+ } else {
+ ast_format_cap_remove_by_type(peer->caps, AST_MEDIA_TYPE_UNKNOWN);
+ }
} else {
if (!(peer = ao2_t_alloc(sizeof(*peer), sip_destroy_peer_fn, "allocate a peer struct"))) {
return NULL;