]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix an issue where codec preferences were not set on dialogs that were not authentica...
authorJoshua Colp <jcolp@digium.com>
Tue, 27 May 2008 19:32:38 +0000 (19:32 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 27 May 2008 19:32:38 +0000 (19:32 +0000)
(closes issue #12501)
Reported by: slimey

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@118558 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 28943dfb495df5890c9266c07bbd0fbae766bb78..2bd9f9523604d25332373df9f79de8aacbe3fd47 100644 (file)
@@ -4522,6 +4522,7 @@ static struct sip_pvt *sip_alloc(ast_string_field callid, struct sockaddr_in *si
                        ast_udptl_settos(p->udptl, global_tos_audio);
                p->maxcallbitrate = default_maxcallbitrate;
                p->autoframing = global_autoframing;
+               ast_rtp_codec_setpref(p->rtp, &p->prefs);
        }
 
        if (useglobal_nat && sin) {
@@ -5300,24 +5301,20 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
                                                ast_log(LOG_DEBUG, "Can't read framing from SDP: %s\n", a);
                                }
                        }
-                       if (framing && last_rtpmap_codec) {
-                               if (p->autoframing) {
-                                       struct ast_codec_pref *pref = ast_rtp_codec_getpref(p->rtp);
-                                       int codec_n;
-                                       int format = 0;
-                                       for (codec_n = 0; codec_n < last_rtpmap_codec; codec_n++) {
-                                               format = ast_rtp_codec_getformat(found_rtpmap_codecs[codec_n]);
-                                               if (!format)    /* non-codec or not found */
-                                                       continue;
-                                               if (option_debug)
-                                                       ast_log(LOG_DEBUG, "Setting framing for %d to %ld\n", format, framing);
-                                               ast_codec_pref_setsize(pref, format, framing);
-                                       }
-                                       ast_rtp_codec_setpref(p->rtp, pref);
+                       if (framing && p->autoframing) {
+                               struct ast_codec_pref *pref = ast_rtp_codec_getpref(p->rtp);
+                               int codec_n;
+                               int format = 0;
+                               for (codec_n = 0; codec_n < MAX_RTP_PT; codec_n++) {
+                                       format = ast_rtp_codec_getformat(codec_n);
+                                       if (!format)    /* non-codec or not found */
+                                               continue;
+                                       if (option_debug)
+                                               ast_log(LOG_DEBUG, "Setting framing for %d to %ld\n", format, framing);
+                                       ast_codec_pref_setsize(pref, format, framing);
                                }
+                               ast_rtp_codec_setpref(p->rtp, pref);
                        }
-                       memset(&found_rtpmap_codecs, 0, sizeof(found_rtpmap_codecs));
-                       last_rtpmap_codec = 0;
                        continue;
                } else if (sscanf(a, "rtpmap: %u %[^/]/", &codec, mimeSubtype) == 2) {
                        /* We have a rtpmap to handle */