diff --git a/daemon/sdp.c b/daemon/sdp.c index def9ad2b6..648146ed3 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2697,7 +2697,8 @@ static void print_sdp_media_section(GString *s, struct call_media *media, return; } - sdp_out_print_information(s, &media->sdp_information); + if (source_media) + sdp_out_print_information(s, &source_media->sdp_information); /* add actual media connection * print zeroed address for the non accepted media, see RFC 3264 */ @@ -2992,6 +2993,7 @@ static bool sdp_out_add_media(GString *out, struct call_media *media, } static void sdp_out_handle_osrtp1(GString *out, struct call_media *media, + struct call_media *source_media, const endpoint_t *address, const struct transport_protocol *prtp, struct packet_stream *rtp_ps, packet_stream_list *rtp_ps_link, sdp_ng_flags *flags) @@ -3008,7 +3010,7 @@ static void sdp_out_handle_osrtp1(GString *out, struct call_media *media, sdp_out_add_osrtp_media(out, media, prtp, address); /* print media level attributes */ - print_sdp_media_section(out, media, address, NULL, NULL, rtp_ps, rtp_ps_link, flags); + print_sdp_media_section(out, media, address, NULL, source_media, rtp_ps, rtp_ps_link, flags); media->protocol = proto; } @@ -3194,7 +3196,7 @@ int sdp_create(str *out, struct call_monologue *monologue, sdp_ng_flags *flags) prtp = &transport_protocols[media->protocol->rtp_proto]; /* handle first OSRTP part */ - sdp_out_handle_osrtp1(s, media, &sdp_address, prtp, rtp_ps, rtp_ps_link, flags); + sdp_out_handle_osrtp1(s, media, source_media, &sdp_address, prtp, rtp_ps, rtp_ps_link, flags); /* set: media type, port, protocol (e.g. RTP/SAVP) */ err = "Unknown media protocol"; diff --git a/t/auto-daemon-tests.pl b/t/auto-daemon-tests.pl index a5dc53956..e055e9cc1 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -84,6 +84,67 @@ sub stun_succ { +new_call; + +offer('i= etc lines', {}, <