Browse Source

MT#55283 streamline call_stream_address

Remove unneeded intermediate buffer

Change-Id: I17f6c0f4b9ac27ab1b3b8e33fc49d0662e687970
rfuchs/test
Richard Fuchs 1 year ago
parent
commit
09cb85f32a
4 changed files with 21 additions and 45 deletions
  1. +8
    -8
      daemon/call.c
  2. +2
    -10
      daemon/call_interfaces.c
  3. +9
    -25
      daemon/sdp.c
  4. +2
    -2
      include/call.h

+ 8
- 8
daemon/call.c View File

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


+ 2
- 10
daemon/call_interfaces.c View File

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


+ 9
- 25
daemon/sdp.c View File

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


+ 2
- 2
include/call.h View File

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