MT#59071 support selective DB updates

Introduce flag to suppress recording DB update.

Change-Id: Ie9006f3608fc90296caf86120124da98fe50f8a1
pull/1786/head
Richard Fuchs 2 years ago
parent 1645f6dd36
commit bda1b937cb

@ -1135,6 +1135,10 @@ static void call_ng_flags_flags(sdp_ng_flags *out, str *s, helper_arg dummy) {
case CSH_LOOKUP("siprec"):
out->siprec = 1;
break;
case CSH_LOOKUP("skip-recording-db"):
case CSH_LOOKUP("skip-recording-database"):
out->skip_recording_db = 1;
break;
case CSH_LOOKUP("static-codec"):
case CSH_LOOKUP("static-codecs"):
out->static_codecs = 1;

@ -287,6 +287,14 @@ static void update_call_field(call_t *call, str *dst_field, const str *src_field
// lock must be held
void update_metadata_call(call_t *call, const sdp_ng_flags *flags) {
if (flags && flags->skip_recording_db)
CALL_SET(call, NO_REC_DB);
if (call->recording) {
// must come first because METADATA triggers update to DB
if (CALL_ISSET(call, NO_REC_DB))
append_meta_chunk_null(call->recording, "SKIP_DATABASE");
}
update_call_field(call, &call->metadata, flags ? &flags->metadata : NULL, "METADATA");
update_call_field(call, &call->recording_file, flags ? &flags->recording_file : NULL, "RECORDING_FILE");
update_call_field(call, &call->recording_path, flags ? &flags->recording_path : NULL, "RECORDING_PATH");

@ -844,6 +844,11 @@ Spaces in each string may be replaced by hyphens.
recorded. When used within an offer/answer exchange, applies to both call
parties involved.
* `skip-recording-db`
Suppress writing the information about the call recording to the configured
metadata DB.
* `early media`
Used in conjunction with the audio player. If set, audio playback is

@ -216,6 +216,7 @@ enum {
#define CALL_FLAG_DEBUG 0x08000000
#define CALL_FLAG_BLOCK_MEDIA 0x10000000
#define CALL_FLAG_SILENCE_MEDIA 0x20000000
#define CALL_FLAG_NO_REC_DB 0x40000000
/* access macros */
#define SP_ISSET(p, f) bf_isset(&(p)->sp_flags, SP_FLAG_ ## f)

@ -160,6 +160,7 @@ struct sdp_ng_flags {
record_call:1,
discard_recording:1,
exclude_recording:1,
skip_recording_db:1,
debug:1,
inactive:1,
loop_protect:1,

@ -255,6 +255,8 @@ static void db_do_call_id(metafile_t *mf) {
return;
if (!mf->call_id)
return;
if (mf->skip_db)
return;
MYSQL_BIND b[2];
my_cstr(&b[0], mf->call_id);
@ -267,6 +269,8 @@ static void db_do_call_metadata(metafile_t *mf) {
return;
if (mf->db_id == 0)
return;
if (mf->skip_db)
return;
MYSQL_BIND b[3];
my_ull(&b[0], &mf->db_id); // stays persistent
@ -301,6 +305,8 @@ void db_do_stream(metafile_t *mf, output_t *op, stream_t *stream, unsigned long
return;
if (op->db_id > 0)
return;
if (mf->skip_db)
return;
unsigned long id = stream ? stream->id : 0;

@ -245,6 +245,8 @@ static void meta_section(metafile_t *mf, char *section, char *content, unsigned
mf->output_path = g_string_chunk_insert(mf->gsc, content);
else if (!strcmp(section, "RECORDING_PATTERN"))
mf->output_pattern = g_string_chunk_insert(mf->gsc, content);
else if (!strcmp(section, "SKIP_DATABASE"))
mf->skip_db = 1;
}

@ -152,6 +152,7 @@ struct metafile_s {
unsigned int forwarding_on:1;
unsigned int discard:1;
unsigned int db_metadata_done:1;
unsigned int skip_db:1;
};

Loading…
Cancel
Save