From d0562c2f04efe69bf7f509f57877c2ce989a21c8 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Tue, 16 Aug 2011 20:41:10 +0200 Subject: [PATCH] b/f: correct parsing of media as last line --- core/AmSdp.cpp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/core/AmSdp.cpp b/core/AmSdp.cpp index 90bb64ba..d60d0e42 100644 --- a/core/AmSdp.cpp +++ b/core/AmSdp.cpp @@ -785,7 +785,7 @@ static void parse_sdp_media(AmSdp* sdp_msg, char* s) } case FMT: { - if(contains(media_line, line_end, ' ')){ + if (contains(media_line, line_end, ' ')) { next = parse_until(media_line, ' '); //if(next < line_end){ string value(media_line, int(next-media_line)-1); @@ -795,22 +795,21 @@ static void parse_sdp_media(AmSdp* sdp_msg, char* s) payload.payload_type = payload_type; m.payloads.push_back(payload); state = FMT; - //check if this lines is also the last - }else if (*(line_end-1) == '\0'){ - string last_value(media_line, int(line_end-media_line)-1); - payload.type = m.type; - str2i(last_value, payload_type); - payload.payload_type = payload_type; - m.payloads.push_back(payload); + } else { + string last_value; + if (*line_end == '\0') { + // last line in message + last_value = string(media_line, int(line_end-media_line)); + } else { + last_value = string(media_line, int(line_end-media_line)-1); + } + if (!last_value.empty()) { + payload.type = m.type; + str2i(last_value, payload_type); + payload.payload_type = payload_type; + m.payloads.push_back(payload); + } parsing = 0; - //if not - }else{ - string last_value(media_line, int(line_end-media_line)-1); - payload.type = m.type; - str2i(last_value, payload_type); - payload.payload_type = payload_type; - m.payloads.push_back(payload); - parsing=0; } break; }