aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2008-05-27 19:35:47 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2008-05-27 19:35:47 +0000
commit97d0e012439366b4c0e3490703b51b5150e4b669 (patch)
tree1756fa22a9ae7b93d56dfa400b75393f3792aaee /channels
parent0d14ad0c7598a7c58b65af632c873e760a2de30d (diff)
Merged revisions 118560 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r118560 | file | 2008-05-27 16:34:14 -0300 (Tue, 27 May 2008) | 12 lines Merged revisions 118558 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r118558 | file | 2008-05-27 16:32:38 -0300 (Tue, 27 May 2008) | 4 lines Fix an issue where codec preferences were not set on dialogs that were not authenticated via a user or peer and allow framing to work without rtpmap in the SDP. (closes issue #12501) Reported by: slimey ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@118561 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index d9140ee7b..a62eeaa35 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5792,6 +5792,7 @@ static struct sip_pvt *sip_alloc(ast_string_field callid, struct sockaddr_in *si
ast_udptl_setqos(p->udptl, global_tos_audio, global_cos_audio);
p->maxcallbitrate = default_maxcallbitrate;
p->autoframing = global_autoframing;
+ ast_rtp_codec_setpref(p->rtp, &p->prefs);
}
if (useglobal_nat && sin) {
@@ -6656,23 +6657,20 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
ast_debug(1, "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;
- ast_debug(1, "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 */