Browse Source

TT#22660 don't zero out SDP origin on zero connection address

Change-Id: Idc68132a7ae23a6273464927ecf27237cdc9d6cf
changes/19/15719/1
Richard Fuchs 8 years ago
parent
commit
00cc28dff4
4 changed files with 13 additions and 11 deletions
  1. +3
    -2
      daemon/call.c
  2. +1
    -1
      daemon/call.h
  3. +1
    -1
      daemon/call_interfaces.c
  4. +8
    -7
      daemon/sdp.c

+ 3
- 2
daemon/call.c View File

@ -1966,7 +1966,7 @@ no_stats_output:
/* XXX move these */ /* XXX move these */
int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address_format format, int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address_format format,
int *len, const struct local_intf *ifa)
int *len, const struct local_intf *ifa, int keep_unspec)
{ {
struct packet_stream *sink; struct packet_stream *sink;
int l = 0; int l = 0;
@ -1986,7 +1986,8 @@ int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address
l += sprintf(o + l, "%s ", ifa_addr->addr.family->rfc_name); l += sprintf(o + l, "%s ", ifa_addr->addr.family->rfc_name);
if (is_addr_unspecified(&sink->advertised_endpoint.address) if (is_addr_unspecified(&sink->advertised_endpoint.address)
&& !is_trickle_ice_address(&sink->advertised_endpoint))
&& !is_trickle_ice_address(&sink->advertised_endpoint)
&& keep_unspec)
l += sprintf(o + l, "%s", ifa_addr->addr.family->unspec_string); l += sprintf(o + l, "%s", ifa_addr->addr.family->unspec_string);
else else
l += sprintf(o + l, "%s", sockaddr_print_buf(&ifa->advertised_address.addr)); l += sprintf(o + l, "%s", sockaddr_print_buf(&ifa->advertised_address.addr));


+ 1
- 1
daemon/call.h View File

@ -466,7 +466,7 @@ void call_media_state_machine(struct call_media *m);
void call_media_unkernelize(struct call_media *media); void call_media_unkernelize(struct call_media *media);
int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address_format format, int call_stream_address46(char *o, struct packet_stream *ps, enum stream_address_format format,
int *len, const struct local_intf *ifa);
int *len, const struct local_intf *ifa, int keep_unspec);
const struct transport_protocol *transport_protocol(const str *s); const struct transport_protocol *transport_protocol(const str *s);
void add_total_calls_duration_in_interval(struct callmaster *cm, struct timeval *interval_tv); void add_total_calls_duration_in_interval(struct callmaster *cm, struct timeval *interval_tv);


+ 1
- 1
daemon/call_interfaces.c View File

@ -33,7 +33,7 @@ static int call_stream_address_gstring(GString *o, struct packet_stream *ps, enu
int len, ret; int len, ret;
char buf[64]; /* 64 bytes ought to be enough for anybody */ char buf[64]; /* 64 bytes ought to be enough for anybody */
ret = call_stream_address46(buf, ps, format, &len, NULL);
ret = call_stream_address46(buf, ps, format, &len, NULL, 1);
g_string_append_len(o, buf, len); g_string_append_len(o, buf, len);
return ret; return ret;
} }


+ 8
- 7
daemon/sdp.c View File

@ -1464,7 +1464,7 @@ static int insert_ice_address(struct sdp_chopper *chop, struct stream_fd *sfd) {
char buf[64]; char buf[64];
int len; int len;
call_stream_address46(buf, sfd->stream, SAF_ICE, &len, sfd->local_intf);
call_stream_address46(buf, sfd->stream, SAF_ICE, &len, sfd->local_intf, 0);
chopper_append_dup(chop, buf, len); chopper_append_dup(chop, buf, len);
chopper_append_printf(chop, " %u", sfd->socket.local.port); chopper_append_printf(chop, " %u", sfd->socket.local.port);
@ -1476,7 +1476,7 @@ static int insert_raddr_rport(struct sdp_chopper *chop, struct packet_stream *ps
int len; int len;
chopper_append_c(chop, " raddr "); chopper_append_c(chop, " raddr ");
call_stream_address46(buf, ps, SAF_ICE, &len, ifa);
call_stream_address46(buf, ps, SAF_ICE, &len, ifa, 0);
chopper_append_dup(chop, buf, len); chopper_append_dup(chop, buf, len);
chopper_append_c(chop, " rport "); chopper_append_c(chop, " rport ");
chopper_append_printf(chop, "%u", ps->selected_sfd->socket.local.port); chopper_append_printf(chop, "%u", ps->selected_sfd->socket.local.port);
@ -1486,7 +1486,7 @@ static int insert_raddr_rport(struct sdp_chopper *chop, struct packet_stream *ps
static int replace_network_address(struct sdp_chopper *chop, struct network_address *address, static int replace_network_address(struct sdp_chopper *chop, struct network_address *address,
struct packet_stream *ps, struct sdp_ng_flags *flags)
struct packet_stream *ps, struct sdp_ng_flags *flags, int keep_unspec)
{ {
char buf[64]; char buf[64];
int len; int len;
@ -1507,7 +1507,7 @@ static int replace_network_address(struct sdp_chopper *chop, struct network_addr
flags->parsed_media_address.family->rfc_name, flags->parsed_media_address.family->rfc_name,
sockaddr_print_buf(&flags->parsed_media_address)); sockaddr_print_buf(&flags->parsed_media_address));
else else
call_stream_address46(buf, ps, SAF_NG, &len, NULL);
call_stream_address46(buf, ps, SAF_NG, &len, NULL, keep_unspec);
chopper_append_dup(chop, buf, len); chopper_append_dup(chop, buf, len);
if (skip_over(chop, &address->address)) if (skip_over(chop, &address->address))
@ -1923,12 +1923,12 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu
if (session->origin.parsed && flags->replace_origin && if (session->origin.parsed && flags->replace_origin &&
!flags->ice_force_relay) { !flags->ice_force_relay) {
if (replace_network_address(chop, &session->origin.address, ps, flags))
if (replace_network_address(chop, &session->origin.address, ps, flags, 0))
goto error; goto error;
} }
if (session->connection.parsed && sess_conn && if (session->connection.parsed && sess_conn &&
!flags->ice_force_relay) { !flags->ice_force_relay) {
if (replace_network_address(chop, &session->connection.address, ps, flags))
if (replace_network_address(chop, &session->connection.address, ps, flags, 1))
goto error; goto error;
} }
@ -1960,7 +1960,8 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu
goto error; goto error;
if (sdp_media->connection.parsed) { if (sdp_media->connection.parsed) {
if (replace_network_address(chop, &sdp_media->connection.address, ps, flags))
if (replace_network_address(chop, &sdp_media->connection.address, ps,
flags, 1))
goto error; goto error;
} }
} }


Loading…
Cancel
Save