MT#65392 add "fast" flag for delete processing

Change-Id: I16d4cdd9ecc8dbe612eac2ff002283b606f0f082
(cherry picked from commit 6391c6bf95)
(cherry picked from commit 52bb89d0d9)
mr14.1.1
Richard Fuchs 1 month ago
parent c5363ccd32
commit 95e0f3d047

@ -6079,7 +6079,8 @@ static void monologue_stop(struct call_monologue *ml, bool stop_media_subsribers
// call must be locked in W.
// unlocks the call and releases the reference prior to returning, even on error.
int call_delete_branch(call_t *c, const str *branch,
const str *fromtag, const str *totag, ng_command_ctx_t *ctx, int64_t delete_delay)
const str *fromtag, const str *totag, ng_command_ctx_t *ctx, int64_t delete_delay,
bool stats)
{
struct call_monologue *ml;
int ret;
@ -6162,13 +6163,13 @@ do_delete:
if (!del_stop)
goto del_all;
if (ctx)
if (ctx && stats)
ng_call_stats(ctx, c, fromtag, totag, NULL);
goto success_unlock;
del_all:
if (ctx)
if (ctx && stats)
ng_call_stats(ctx, c, NULL, NULL, NULL);
for (__auto_type i = c->monologues.head; i; i = i->next) {
@ -6219,7 +6220,7 @@ int call_delete_branch_by_id(const str *callid, const str *branch,
ilog(LOG_INFO, "Call-ID to delete not found");
return -1;
}
return call_delete_branch(c, branch, fromtag, totag, ctx, delete_delay);
return call_delete_branch(c, branch, fromtag, totag, ctx, delete_delay, false);
}
struct call_media *call_make_transform_media(struct call_monologue *ml, const str *type, enum media_type type_id,

@ -1159,6 +1159,9 @@ void call_ng_flags_flags(str *s, unsigned int idx, helper_arg arg) {
case CSH_LOOKUP("fatal"):
out->fatal = true;
break;
case CSH_LOOKUP("fast"):
out->fast = true;
break;
case CSH_LOOKUP("fragment"):
out->fragment = true;
break;
@ -2782,7 +2785,8 @@ const char *call_delete_ng(ng_command_ctx_t *ctx) {
if (call_delete_branch(c, &rtpp_flags.via_branch,
&rtpp_flags.from_tag,
(rtpp_flags.to_tag_flag ? &rtpp_flags.to_tag : NULL),
ctx, rtpp_flags.delete_delay))
ctx, rtpp_flags.delete_delay,
!rtpp_flags.fast))
{
goto err;
}

@ -1783,6 +1783,12 @@ of zero or more strings. The following flags are defined:
result in an error reply (i.e. `"result": "error"`). The default is to reply with a warning only
(i.e. `"result": "ok", "warning": ...`).
* `fast`
Omit adding statistics to the response message. This makes processing of
the delete message more light-weight and produces a smaller response
message, which is beneficial if the statistics aren't needed.
* `to-tag`
This flag controls whether the `"To"` tag's value is honoured or ignored when handling

@ -896,7 +896,8 @@ void monologue_destroy(struct call_monologue *ml);
int call_delete_branch_by_id(const str *callid, const str *branch,
const str *fromtag, const str *totag, ng_command_ctx_t *, int64_t delete_delay);
int call_delete_branch(call_t *, const str *branch,
const str *fromtag, const str *totag, ng_command_ctx_t *, int64_t delete_delay);
const str *fromtag, const str *totag, ng_command_ctx_t *, int64_t delete_delay,
bool stats);
void call_destroy(call_t *);
struct call_media *call_media_new(call_t *call);
void call_media_free(struct call_media **mdp);

@ -293,6 +293,7 @@ RTPE_NG_FLAGS_STR_CASE_HT_PARAMS
pierce_nat:1,
directional:1,
fatal:1,
fast:1,
new_branch:1,
provisional:1,
/* to_tag is used especially by delete handling */

@ -55,6 +55,7 @@ my @flags = qw(
block-egress
directional
allow-no-codec-media
fast
);
my @string_opts = qw(

Loading…
Cancel
Save