diff options
author | Olle Johansson <oej@edvina.net> | 2006-06-20 13:28:33 +0000 |
---|---|---|
committer | Olle Johansson <oej@edvina.net> | 2006-06-20 13:28:33 +0000 |
commit | e04914b44ab84b7c830dc0c5ecf525a8e1cf1df7 (patch) | |
tree | 4d49d0e0f6d8ed41772644ffa6e911fde3e2d9fc /channels/chan_sip.c | |
parent | 3b910323f302d6e75ca174708f2e0f3ec76f0262 (diff) |
parse SDP properly even when we are debugging. (Thanks fenlander!)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@35094 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r-- | channels/chan_sip.c | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index a3c9653ad..e9f6757f8 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4631,23 +4631,19 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req) iterator = req->sdp_start; while ((a = get_sdp_iterate(&iterator, req, "a"))[0] != '\0') { char* mimeSubtype = ast_strdupa(a); /* ensures we have enough space */ - if (!strcasecmp(a, "sendonly")) { - sendonly = 1; - continue; - } else if (!strcasecmp(a, "sendrecv")) { - sendonly = 0; - continue; - } else if (option_debug) { + if (option_debug > 1) { + int breakout = FALSE; + /* If we're debugging, check for unsupported sdp options */ if (!strcasecmp(a, "inactive")) { /* Inactive media streams: Not supported */ if (debug) ast_verbose("Got unsupported a:inactive in SDP offer \n"); - continue; + breakout = TRUE; } else if (!strncasecmp(a, "rtcp:", (size_t) 5)) { if (debug) ast_verbose("Got unsupported a:rtcp in SDP offer \n"); - continue; + breakout = TRUE; } else if (!strncasecmp(a, "fmtp:", (size_t) 5)) { /* Format parameters: Not supported */ /* Note: This is used for codec parameters, like bitrate for @@ -4655,27 +4651,36 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req) See RFC2327 for an example */ if (debug) ast_verbose("Got unsupported a:fmtp in SDP offer \n"); - continue; + breakout = TRUE; } else if (!strncasecmp(a, "framerate:", (size_t) 10)) { /* Video stuff: Not supported */ if (debug) ast_verbose("Got unsupported a:framerate in SDP offer \n"); - continue; + breakout = TRUE; } else if (!strncasecmp(a, "maxprate:", (size_t) 9)) { /* Video stuff: Not supported */ if (debug) ast_verbose("Got unsupported a:maxprate in SDP offer \n"); - continue; + breakout = TRUE; } else if (!strncasecmp(a, "crypto:", (size_t) 7)) { /* SRTP stuff, not yet supported */ if (debug) ast_verbose("Got unsupported a:crypto in SDP offer \n"); - continue; + breakout = TRUE; } else if (!strncasecmp(a, "ptime:", (size_t) 6)) { if (debug) ast_verbose("Got unsupported a:ptime in SDP offer \n"); - continue; + breakout = TRUE; } + if (breakout) /* We have a match, skip to next header */ + continue; + } + if (!strcasecmp(a, "sendonly")) { + sendonly = 1; + continue; + } else if (!strcasecmp(a, "sendrecv")) { + sendonly = 0; + continue; } else if (sscanf(a, "rtpmap: %u %[^/]/", &codec, mimeSubtype) != 2) continue; /* We have a rtpmap to handle */ |