Browse Source

Add support for metadata in stop_recording.

(Issue #1075 on sipwise/rtpengine)
pull/1077/head
Doug Rylaarsdam 5 years ago
parent
commit
995375f500
3 changed files with 10 additions and 5 deletions
  1. +4
    -2
      daemon/call_interfaces.c
  2. +5
    -2
      daemon/recording.c
  3. +1
    -1
      include/recording.h

+ 4
- 2
daemon/call_interfaces.c View File

@ -1649,15 +1649,17 @@ const char *call_start_recording_ng(bencode_item_t *input, bencode_item_t *outpu
const char *call_stop_recording_ng(bencode_item_t *input, bencode_item_t *output) { const char *call_stop_recording_ng(bencode_item_t *input, bencode_item_t *output) {
str callid; str callid;
struct call *call; struct call *call;
str metadata;
if (!bencode_dictionary_get_str(input, "call-id", &callid)) if (!bencode_dictionary_get_str(input, "call-id", &callid))
return "No call-id in message"; return "No call-id in message";
bencode_dictionary_get_str(input, "metadata", &metadata);
call = call_get_opmode(&callid, OP_OTHER); call = call_get_opmode(&callid, OP_OTHER);
if (!call) if (!call)
return "Unknown call-id"; return "Unknown call-id";
call->recording_on = 0; call->recording_on = 0;
recording_stop(call);
recording_stop(call, &metadata);
rwlock_unlock_w(&call->master_lock); rwlock_unlock_w(&call->master_lock);
obj_put(call); obj_put(call);
@ -1783,7 +1785,7 @@ const char *call_stop_forwarding_ng(bencode_item_t *input, bencode_item_t *outpu
} }
} }
recording_stop(call);
recording_stop(call, NULL);
errstr = NULL; errstr = NULL;
out: out:


+ 5
- 2
daemon/recording.c View File

@ -302,10 +302,13 @@ void recording_start(struct call *call, const char *prefix, str *metadata) {
recording_update_flags(call); recording_update_flags(call);
} }
void recording_stop(struct call *call) {
void recording_stop(struct call *call, str *metadata) {
if (!call->recording) if (!call->recording)
return; return;
if (metadata)
update_metadata(call, metadata);
// check if all recording options are disabled // check if all recording options are disabled
if (call->recording_on || call->rec_forwarding) { if (call->recording_on || call->rec_forwarding) {
recording_update_flags(call); recording_update_flags(call);
@ -346,7 +349,7 @@ void detect_setup_recording(struct call *call, const str *recordcall, str *metad
} }
else if (!str_cmp(recordcall, "no") || !str_cmp(recordcall, "off")) { else if (!str_cmp(recordcall, "no") || !str_cmp(recordcall, "off")) {
call->recording_on = 0; call->recording_on = 0;
recording_stop(call);
recording_stop(call, NULL);
} }
else else
ilog(LOG_INFO, "\"record-call\" flag "STR_FORMAT" is invalid flag.", STR_FMT(recordcall)); ilog(LOG_INFO, "\"record-call\" flag "STR_FORMAT" is invalid flag.", STR_FMT(recordcall));


+ 1
- 1
include/recording.h View File

@ -117,7 +117,7 @@ void recording_fs_free(void);
void detect_setup_recording(struct call *call, const str *recordcall, str *metadata); void detect_setup_recording(struct call *call, const str *recordcall, str *metadata);
void recording_start(struct call *call, const char *prefix, str *metadata); void recording_start(struct call *call, const char *prefix, str *metadata);
void recording_stop(struct call *call);
void recording_stop(struct call *call, str *metadata);
/** /**


Loading…
Cancel
Save