diff --git a/daemon/sdp.c b/daemon/sdp.c index 7dff6f5c6..21a18c0d1 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -375,6 +375,8 @@ static void append_attr_to_gstring(GString *s, const char * name, const str * va sdp_ng_flags *flags, enum media_type media_type); static void append_attr_int_to_gstring(GString *s, const char * value, const int additional, sdp_ng_flags *flags, enum media_type media_type); +static void append_tagged_attr_to_gstring(GString *s, const char * name, const str *tag, const str * value, + sdp_ng_flags *flags, enum media_type media_type); INLINE struct sdp_attribute *attr_get_by_id(struct sdp_attributes *a, enum attr_id id) { return t_hash_table_lookup(a->id_hash, &id); @@ -2619,8 +2621,7 @@ static void insert_candidate(GString *s, stream_fd *sfd, local_pref = ifa->unique_id; priority = ice_priority_pref(type_pref, local_pref, ps->component); - g_string_append_printf(s_dst, STR_FORMAT, STR_FMT(&ifa->ice_foundation)); - g_string_append_printf(s_dst, " %u UDP %lu ", ps->component, priority); + g_string_append_printf(s_dst, "%u UDP %lu ", ps->component, priority); insert_ice_address(s_dst, sfd, flags); g_string_append(s_dst, " typ "); g_string_append(s_dst, ice_candidate_type_str(type)); @@ -2629,7 +2630,7 @@ static void insert_candidate(GString *s, stream_fd *sfd, insert_raddr_rport(s_dst, sfd, flags); /* append to the chop->output */ - append_attr_to_gstring(s, "candidate", &STR_INIT_GS(s_dst), flags, + append_tagged_attr_to_gstring(s, "candidate", &ifa->ice_foundation, &STR_INIT_GS(s_dst), flags, (sdp_media ? sdp_media->media_type_id : MT_UNKNOWN)); } @@ -2953,6 +2954,16 @@ static void append_attr_to_gstring(GString *s, const char * name, const str * va generic_append_attr_to_gstring(s, name, ':', value, flags, media_type); } +/* A function used to append attributes (`a=name:tag value`) to the output chop */ +static void append_tagged_attr_to_gstring(GString *s, const char * name, const str *tag, const str * value, + sdp_ng_flags *flags, enum media_type media_type) +{ + g_autoptr(GString) n = g_string_new(name); + g_string_append_c(n, ':'); + g_string_append_len(n, tag->s, tag->len); + generic_append_attr_to_gstring(s, n->str, ' ', value, flags, media_type); +} + /* A function used to append attributes to the output chop */ static void append_attr_int_to_gstring(GString *s, const char * name, const int value, sdp_ng_flags *flags, enum media_type media_type)