@ -2937,7 +2937,8 @@ int monologue_offer_answer(struct call_monologue *monologues[2], sdp_streams_q *
__C_DBG ( " this= " STR_FORMAT " other= " STR_FORMAT , STR_FMT ( & monologue - > tag ) , STR_FMT ( & other_ml - > tag ) ) ;
__C_DBG ( " this= " STR_FORMAT " other= " STR_FORMAT , STR_FMT ( & monologue - > tag ) , STR_FMT ( & other_ml - > tag ) ) ;
g_autoptr ( GHashTable ) mid_tracker = g_hash_table_new ( ( GHashFunc ) str_hash , ( GEqualFunc ) str_equal ) ;
g_autoptr ( GHashTable ) mid_tracker_sender = g_hash_table_new ( ( GHashFunc ) str_hash , ( GEqualFunc ) str_equal ) ;
g_autoptr ( GHashTable ) mid_tracker_receiver = g_hash_table_new ( ( GHashFunc ) str_hash , ( GEqualFunc ) str_equal ) ;
for ( __auto_type sp_iter = streams - > head ; sp_iter ; sp_iter = sp_iter - > next ) {
for ( __auto_type sp_iter = streams - > head ; sp_iter ; sp_iter = sp_iter - > next ) {
struct stream_params * sp = sp_iter - > data ;
struct stream_params * sp = sp_iter - > data ;
@ -2946,8 +2947,8 @@ int monologue_offer_answer(struct call_monologue *monologues[2], sdp_streams_q *
/* first, check for existence of call_media struct on both sides of
/* first, check for existence of call_media struct on both sides of
* the dialogue */
* the dialogue */
media = __get_media ( monologue , sp , flags , 0 , mid_tracker ) ;
media = __get_media ( monologue , sp , flags , 0 , mid_tracker _receiver ) ;
other_media = __get_media ( other_ml , sp , flags , 0 , mid_tracker ) ;
other_media = __get_media ( other_ml , sp , flags , 0 , mid_tracker _sender ) ;
media - > media_sdp_id = sp - > media_sdp_id ;
media - > media_sdp_id = sp - > media_sdp_id ;
other_media - > media_sdp_id = sp - > media_sdp_id ;
other_media - > media_sdp_id = sp - > media_sdp_id ;
@ -3372,13 +3373,14 @@ static int monologue_subscribe_request1(struct call_monologue *src_ml, struct ca
sdp_ng_flags * flags , unsigned int * index )
sdp_ng_flags * flags , unsigned int * index )
{
{
unsigned int idx_diff = 0 , rev_idx_diff = 0 ;
unsigned int idx_diff = 0 , rev_idx_diff = 0 ;
g_autoptr ( GHashTable ) mid_tracker = g_hash_table_new ( ( GHashFunc ) str_hash , ( GEqualFunc ) str_equal ) ;
g_autoptr ( GHashTable ) mid_tracker_dst = g_hash_table_new ( ( GHashFunc ) str_hash , ( GEqualFunc ) str_equal ) ;
g_autoptr ( GHashTable ) mid_tracker_src = g_hash_table_new ( ( GHashFunc ) str_hash , ( GEqualFunc ) str_equal ) ;
for ( __auto_type l = src_ml - > last_in_sdp_streams . head ; l ; l = l - > next ) {
for ( __auto_type l = src_ml - > last_in_sdp_streams . head ; l ; l = l - > next ) {
struct stream_params * sp = l - > data ;
struct stream_params * sp = l - > data ;
struct call_media * dst_media = __get_media ( dst_ml , sp , flags , ( * index ) + + , mid_tracker ) ;
struct call_media * dst_media = __get_media ( dst_ml , sp , flags , ( * index ) + + , mid_tracker _dst ) ;
struct call_media * src_media = __get_media ( src_ml , sp , flags , 0 , mid_tracker ) ;
struct call_media * src_media = __get_media ( src_ml , sp , flags , 0 , mid_tracker _src ) ;
/* subscribe dst_ml (subscriber) to src_ml, don't forget to carry the egress flag, if required */
/* subscribe dst_ml (subscriber) to src_ml, don't forget to carry the egress flag, if required */
__add_media_subscription ( dst_media , src_media , & ( struct sink_attrs ) { . egress = ! ! flags - > egress } ) ;
__add_media_subscription ( dst_media , src_media , & ( struct sink_attrs ) { . egress = ! ! flags - > egress } ) ;