MT#55283 streamline call_stream_address

Remove unneeded intermediate buffer

Change-Id: I17f6c0f4b9ac27ab1b3b8e33fc49d0662e687970
rfuchs/test
Richard Fuchs 1 year ago
parent 725f72e20f
commit 09cb85f32a

@ -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;
}

@ -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');
}

@ -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));

@ -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);

Loading…
Cancel
Save