Browse Source

Don't free the metadata before writing it to metadata file

We used to sometimes free the generic metadata (passed in through
rtpengine commands) before writing it to disk. Then we were writing
blank metadata to our metadata files. We fixed the ordering of
our `free` operations.
pull/245/head
Dylan Mikus 10 years ago
committed by Eric Green
parent
commit
844abeec7d
3 changed files with 6 additions and 4 deletions
  1. +2
    -3
      daemon/call.c
  2. +3
    -1
      daemon/call_interfaces.c
  3. +1
    -0
      daemon/recording.c

+ 2
- 3
daemon/call.c View File

@ -2220,10 +2220,9 @@ void call_destroy(struct call *c) {
if (c->recording != NULL) {
recording_finish_file(c->recording);
free(c->recording->metadata);
meta_finish_file(c);
g_slice_free1(sizeof(*(c->recording)), c->recording);
}
meta_finish_file(c);
g_slice_free1(sizeof(*(c->recording)), c->recording);
rwlock_unlock_w(&c->master_lock);


+ 3
- 1
daemon/call_interfaces.c View File

@ -698,7 +698,9 @@ static const char *call_offer_answer_ng(bencode_item_t *input, struct callmaster
}
bencode_dictionary_get_str(input, "metadata", &metadata);
if (metadata.len > 0) {
free(call->recording->metadata);
if (call->recording->metadata != NULL) {
free(call->recording->metadata);
}
call->recording->metadata = str_dup(&metadata);
}
} else {


+ 1
- 0
daemon/recording.c View File

@ -151,6 +151,7 @@ int meta_finish_file(struct call *call) {
// Print metadata
fprintf(recording->meta_fp, "\n%s\n", recording->metadata->s);
free(recording->metadata);
fclose(recording->meta_fp);
// Get the filename (in between its directory and the file extension)


Loading…
Cancel
Save