From 9bbeb6edd2782d4fb33a0d3d24e481ab6f5045d3 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 23 Nov 2020 09:53:50 -0500 Subject: [PATCH] TT#81212 mark calls as owned upon activity Change-Id: I770d759e11e3ca10c6d879b0e8204ee2bc37bf72 (cherry picked from commit aa5e024417ff3a1115c29427bad8efd21e2e2eb4) --- daemon/call_interfaces.c | 14 ++++---------- daemon/media_socket.c | 2 ++ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 65b864232..c7f7293f3 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -1111,16 +1111,7 @@ static const char *call_offer_answer_ng(bencode_item_t *input, * call in memory and recreates an OWN call in redis */ // SDP fragments for trickle ICE must always operate on an existing call if (opmode == OP_OFFER && !flags.fragment) { - if (call) { - if (IS_FOREIGN_CALL(call)) { - /* destroy call and create new one */ - rwlock_unlock_w(&call->master_lock); - call_destroy(call); - obj_put(call); - call = call_get_or_create(&flags.call_id, 0); - } - } - else { + if (!call) { /* call == NULL, should create call */ call = call_get_or_create(&flags.call_id, 0); } @@ -1130,6 +1121,9 @@ static const char *call_offer_answer_ng(bencode_item_t *input, if (!call) goto out; + if (IS_FOREIGN_CALL(call)) + call_make_own_foreign(call, 0); + if (!call->created_from && addr) { call->created_from = call_strdup(call, addr); call->created_from_addr = sin->address; diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 02ae2483c..2ca0330ea 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -1851,6 +1851,8 @@ static int stream_packet(struct packet_handler_ctx *phc) { } #endif + if (IS_FOREIGN_CALL(phc->mp.call)) + call_make_own_foreign(phc->mp.call, 0); // this sets rtcp, in_srtp, out_srtp, and sink media_packet_rtcp_demux(phc);