[sr-dev] git:master: parser/sdp: added 'a:remote-candidates' media stream attribute

Juha Heinanen jh at tutpro.com
Mon Dec 31 17:22:36 CET 2012


Module: sip-router
Branch: master
Commit: 88a8eb348359f05a1ff14371f8e323cf086d6497
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=88a8eb348359f05a1ff14371f8e323cf086d6497

Author: Juha Heinanen <jh at tutpro.com>
Committer: Juha Heinanen <jh at tutpro.com>
Date:   Mon Dec 31 18:16:23 2012 +0200

parser/sdp: added 'a:remote-candidates' media stream attribute

---

 parser/sdp/sdp.c |    9 +++++++--
 parser/sdp/sdp.h |    1 +
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/parser/sdp/sdp.c b/parser/sdp/sdp.c
index ab04d60..93440bf 100644
--- a/parser/sdp/sdp.c
+++ b/parser/sdp/sdp.c
@@ -369,6 +369,7 @@ static int parse_sdp_session(str *sdp_body, int session_num, str *cnt_disp, sdp_
 	sdp_payload_attr_t *payload_attr;
 	int parse_payload_attr;
 	str fmtp_string;
+	str remote_candidates = {"a:remote-candidates:", 20};
 
 	/* hook the start and lenght of sdp body inside structure
 	 * - shorcut useful for multi-part bodies and sdp operations
@@ -553,6 +554,9 @@ static int parse_sdp_session(str *sdp_body, int session_num, str *cnt_disp, sdp_
 				set_sdp_payload_fmtp(payload_attr, &fmtp_string);
 			} else if (parse_payload_attr && extract_candidate(&tmpstr1, stream) == 0) {
 			        a1p += 2;
+			} else if (parse_payload_attr && extract_field(&tmpstr1, &stream->remote_candidates,
+								       remote_candidates) == 0) {
+			        a1p += 2;
 			} else if (extract_accept_types(&tmpstr1, &stream->accept_types) == 0) {
 				a1p = stream->accept_types.s + stream->accept_types.len;
 			} else if (extract_accept_wrapped_types(&tmpstr1, &stream->accept_wrapped_types) == 0) {
@@ -822,7 +826,7 @@ void print_sdp_stream(sdp_stream_cell_t *stream, int log_level)
 	sdp_payload_attr_t *payload;
         sdp_ice_attr_t *ice_attr;
 
-	LOG(log_level , "....stream[%d]:%p=>%p {%p} '%.*s' '%.*s:%.*s:%.*s' '%.*s' [%d] '%.*s' '%.*s:%.*s' (%d)=>%p (%d)=>%p '%.*s' '%.*s' '%.*s' '%.*s' '%.*s' '%.*s'\n",
+	LOG(log_level , "....stream[%d]:%p=>%p {%p} '%.*s' '%.*s:%.*s:%.*s' '%.*s' [%d] '%.*s' '%.*s:%.*s' (%d)=>%p (%d)=>%p '%.*s' '%.*s' '%.*s' '%.*s' '%.*s' '%.*s' '%.*s'\n",
 		stream->stream_num, stream, stream->next,
 		stream->p_payload_attr,
 		stream->media.len, stream->media.s,
@@ -838,7 +842,8 @@ void print_sdp_stream(sdp_stream_cell_t *stream, int log_level)
 		stream->path.len, stream->path.s,
 		stream->max_size.len, stream->max_size.s,
 		stream->accept_types.len, stream->accept_types.s,
-		stream->accept_wrapped_types.len, stream->accept_wrapped_types.s);
+	        stream->accept_wrapped_types.len, stream->accept_wrapped_types.s,
+	    	stream->remote_candidates.len, stream->remote_candidates.s);
 	payload = stream->payload_attr;
 	while (payload) {
 		LOG(log_level, "......payload[%d]:%p=>%p p_payload_attr[%d]:%p '%.*s' '%.*s' '%.*s' '%.*s' '%.*s'\n",
diff --git a/parser/sdp/sdp.h b/parser/sdp/sdp.h
index dc0dede..550a2d3 100644
--- a/parser/sdp/sdp.h
+++ b/parser/sdp/sdp.h
@@ -86,6 +86,7 @@ typedef struct sdp_stream_cell {
         int ice_attrs_num;                        /**< number of ICE attrs inside a stream */
         /* add fast access pointers to ice attributes if you need them */
         sdp_ice_attr_t *ice_attr;
+	str remote_candidates;                    /**< ICE a:remote-candidates */
 } sdp_stream_cell_t;
 
 typedef struct sdp_session_cell {




More information about the sr-dev mailing list