|
|
|
@ -192,6 +192,7 @@ struct sdp_attribute { |
|
|
|
ATTR_SETUP, |
|
|
|
ATTR_RTPMAP, |
|
|
|
ATTR_IGNORE, |
|
|
|
ATTR_END_OF_CANDIDATES, |
|
|
|
} attr; |
|
|
|
|
|
|
|
union { |
|
|
|
@ -829,6 +830,8 @@ static int parse_attribute(struct sdp_attribute *a) { |
|
|
|
case 17: |
|
|
|
if (!str_cmp(&a->name, "remote-candidates")) |
|
|
|
a->attr = ATTR_ICE; |
|
|
|
else if (!str_cmp(&a->name, "end-of-candidates")) |
|
|
|
a->attr = ATTR_END_OF_CANDIDATES; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
@ -1610,6 +1613,7 @@ static int process_media_attributes(struct sdp_chopper *chop, struct sdp_media * |
|
|
|
case ATTR_RECVONLY: |
|
|
|
case ATTR_SENDRECV: |
|
|
|
case ATTR_IGNORE: |
|
|
|
case ATTR_END_OF_CANDIDATES: // we strip it here and re-insert it later |
|
|
|
goto strip; |
|
|
|
|
|
|
|
case ATTR_EXTMAP: |
|
|
|
@ -2004,6 +2008,9 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu |
|
|
|
insert_candidates(chop, ps, ps_rtcp, flags, sdp_media); |
|
|
|
|
|
|
|
next: |
|
|
|
if (attr_get_by_id(&sdp_media->attributes, ATTR_END_OF_CANDIDATES)) |
|
|
|
chopper_append_c(chop, "a=end-of-candidates\r\n"); |
|
|
|
|
|
|
|
media_index++; |
|
|
|
m = m->next; |
|
|
|
} |
|
|
|
|