From 271f47ca05e1d073f88188df027166c71edb4896 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 19 Apr 2021 08:39:56 -0400 Subject: [PATCH] TT#14008 allow re-invites for calls when load limit is hit closes #1241 Change-Id: I698f57d1bc9fe77d8c95530beefbdb112165adfc (cherry picked from commit dbf79cb76274b182f4fb1be10ea894d46b9ba818) --- daemon/call_interfaces.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 0f80be1b6..bfb0777f0 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -1347,17 +1347,6 @@ static const char *call_offer_answer_ng(struct ng_buffer *ngbuf, bencode_item_t str_swap(&flags.to_tag, &flags.from_tag); } - if (opmode == OP_OFFER) { - enum load_limit_reasons limit = call_offer_session_limit(); - if (limit != LOAD_LIMIT_NONE) { - if (!flags.supports_load_limit) - errstr = "Parallel session limit reached"; // legacy protocol - else - errstr = magic_load_limit_strings[limit]; - goto out; - } - } - errstr = "Failed to parse SDP"; if (sdp_parse(&sdp, &parsed, &flags)) goto out; @@ -1383,8 +1372,18 @@ static const char *call_offer_answer_ng(struct ng_buffer *ngbuf, bencode_item_t goto out; } - if (opmode == OP_OFFER && !call) + if (opmode == OP_OFFER && !call) { + enum load_limit_reasons limit = call_offer_session_limit(); + if (limit != LOAD_LIMIT_NONE) { + if (!flags.supports_load_limit) + errstr = "Parallel session limit reached"; // legacy protocol + else + errstr = magic_load_limit_strings[limit]; + goto out; + } + call = call_get_or_create(&flags.call_id, 0); + } errstr = "Unknown call-id"; if (!call)