diff --git a/daemon/call.c b/daemon/call.c index b0fbee564..0fc6b09f9 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -3981,10 +3981,9 @@ no_stats_output: } -int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address_format format, - int *len, const struct local_intf *ifa, bool keep_unspec) +int call_stream_address(GString *s, struct packet_stream *ps, enum stream_address_format format, + const struct local_intf *ifa, bool keep_unspec) { - int l = 0; const struct intf_address *ifa_addr; if (!ifa) { @@ -3995,15 +3994,16 @@ int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address } ifa_addr = &ifa->spec->local_address; - if (format == SAF_NG) - l += sprintf(o + l, "%s ", ifa_addr->addr.family->rfc_name); + if (format == SAF_NG) { + g_string_append(s, ifa_addr->addr.family->rfc_name); + g_string_append_c(s, ' '); + } if (PS_ISSET(ps, ZERO_ADDR) && keep_unspec) - l += sprintf(o + l, "%s", ifa_addr->addr.family->unspec_string); + g_string_append(s, ifa_addr->addr.family->unspec_string); else - l += sprintf(o + l, "%s", sockaddr_print_buf(&ifa->advertised_address.addr)); + g_string_append(s, sockaddr_print_buf(&ifa->advertised_address.addr)); - *len = l; return ifa_addr->addr.family->af; } diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 973075acc..64c28bf7f 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -66,14 +66,6 @@ static void ng_stats_ssrc(const ng_parser_t *parser, parser_arg dict, struct ssr static str *str_dup_escape(const str *s); static void call_set_dtmf_block(call_t *call, struct call_monologue *monologue, sdp_ng_flags *flags); -static int call_stream_address_gstring(GString *o, struct packet_stream *ps, enum stream_address_format format) { - int len, ret; - char buf[64]; /* 64 bytes ought to be enough for anybody */ - - ret = call_stream_address46(buf, ps, format, &len, NULL, true); - g_string_append_len(o, buf, len); - return ret; -} static str *streams_print(medias_arr *s, int start, int end, const char *prefix, enum stream_address_format format) { GString *o; @@ -98,13 +90,13 @@ static str *streams_print(medias_arr *s, int start, int end, const char *prefix, ps = media->streams.head->data; if (format == SAF_TCP) - call_stream_address_gstring(o, ps, format); + call_stream_address(o, ps, format, NULL, true); port = ps->selected_sfd ? ps->selected_sfd->socket.local.port : 0; g_string_append_printf(o, (format == 1) ? "%i " : " %i", port); if (format == SAF_UDP) { - af = call_stream_address_gstring(o, ps, format); + af = call_stream_address(o, ps, format, NULL, true); g_string_append_printf(o, " %c", (af == AF_INET) ? '4' : '6'); } diff --git a/daemon/sdp.c b/daemon/sdp.c index d80ef8c51..78d5312bd 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2322,31 +2322,21 @@ warn: } static int insert_ice_address(GString *s, stream_fd *sfd, const sdp_ng_flags *flags) { - char buf[64]; - int len; - if (!is_addr_unspecified(&flags->media_address)) - len = sprintf(buf, "%s", - sockaddr_print_buf(&flags->media_address)); + g_string_append(s, sockaddr_print_buf(&flags->media_address)); else - call_stream_address46(buf, sfd->stream, SAF_ICE, &len, sfd->local_intf, false); - g_string_append_len(s, buf, len); + call_stream_address(s, sfd->stream, SAF_ICE, sfd->local_intf, false); g_string_append_printf(s, " %u", sfd->socket.local.port); return 0; } static int insert_raddr_rport(GString *s, stream_fd *sfd, const sdp_ng_flags *flags) { - char buf[64]; - int len; - g_string_append(s, " raddr "); if (!is_addr_unspecified(&flags->media_address)) - len = sprintf(buf, "%s", - sockaddr_print_buf(&flags->media_address)); + g_string_append(s, sockaddr_print_buf(&flags->media_address)); else - call_stream_address46(buf, sfd->stream, SAF_ICE, &len, sfd->local_intf, false); - g_string_append_len(s, buf, len); + call_stream_address(s, sfd->stream, SAF_ICE, sfd->local_intf, false); g_string_append(s, " rport "); g_string_append_printf(s, "%u", sfd->socket.local.port); @@ -2357,19 +2347,15 @@ static int insert_raddr_rport(GString *s, stream_fd *sfd, const sdp_ng_flags *fl static int replace_network_address(struct sdp_chopper *chop, struct network_address *address, struct packet_stream *ps, sdp_ng_flags *flags, bool keep_unspec) { - char buf[64]; - int len; - if (copy_up_to(chop, &address->address_type)) return -1; if (!is_addr_unspecified(&flags->media_address)) - len = sprintf(buf, "%s %s", + g_string_append_printf(chop->output, "%s %s", flags->media_address.family->rfc_name, sockaddr_print_buf(&flags->media_address)); else - call_stream_address46(buf, ps, SAF_NG, &len, NULL, keep_unspec); - chopper_append(chop, buf, len); + call_stream_address(chop->output, ps, SAF_NG, NULL, keep_unspec); if (skip_over(chop, &address->address)) return -1; @@ -2920,15 +2906,13 @@ static void insert_rtcp_attr(GString *s, struct packet_stream *ps, const sdp_ng_ g_string_append_printf(s_dst, "%u", ps->selected_sfd->socket.local.port); if (flags->full_rtcp_attr) { - char buf[64]; - int len; + g_string_append(s_dst, " IN "); if (!is_addr_unspecified(&flags->media_address)) - len = sprintf(buf, "%s %s", + g_string_append_printf(s_dst, "%s %s", flags->media_address.family->rfc_name, sockaddr_print_buf(&flags->media_address)); else - call_stream_address46(buf, ps, SAF_NG, &len, NULL, false); - g_string_append_printf(s_dst, " IN %.*s", len, buf); + call_stream_address(s_dst, ps, SAF_NG, NULL, false); } /* append to the chop->output */ append_attr_to_gstring(s, "rtcp", &STR_GS(s_dst), flags, (media ? media->type_id : MT_UNKNOWN)); diff --git a/include/call.h b/include/call.h index 09323dce2..c32a02ef0 100644 --- a/include/call.h +++ b/include/call.h @@ -845,8 +845,8 @@ void __monologue_unconfirm(struct call_monologue *monologue, const char *); void __media_unconfirm(struct call_media *media, const char *); void update_init_subscribers(struct call_monologue *ml, enum call_opmode opmode); -int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address_format format, - int *len, const struct local_intf *ifa, bool keep_unspec); +int call_stream_address(GString *, struct packet_stream *ps, enum stream_address_format format, + const struct local_intf *ifa, bool keep_unspec); void add_total_calls_duration_in_interval(struct timeval *interval_tv); enum thread_looper_action call_timer(void);