]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_sip: Reload peer without its old capabilities. 80/680/1
authorAlexander Traud <pabstraud@compuserve.com>
Mon, 22 Jun 2015 14:26:48 +0000 (16:26 +0200)
committerAlexander Traud <pabstraud@compuserve.com>
Mon, 22 Jun 2015 14:47:07 +0000 (16:47 +0200)
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

channels/chan_sip.c

index b29bcdc05af33e6688e3e5ffdc70950aebce9b66..96609d2189835b98dc79ff00647d0b6621fd616b 100644 (file)
@@ -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;