Browse Source

TT#75351 delete DB streams that have no corresponding file

Change-Id: I07bdfd6f4dfbcef82d0eb11461672f211badde78
(cherry picked from commit 92adeb0dbb)
(cherry picked from commit 0a846eb491)
changes/64/37364/1
Richard Fuchs 6 years ago
parent
commit
28bc6a68db
3 changed files with 29 additions and 6 deletions
  1. +16
    -0
      recording-daemon/db.c
  2. +1
    -0
      recording-daemon/db.h
  3. +12
    -6
      recording-daemon/output.c

+ 16
- 0
recording-daemon/db.c View File

@ -14,6 +14,7 @@ static MYSQL_STMT __thread
*stm_close_call,
*stm_insert_stream,
*stm_close_stream,
*stm_delete_stream,
*stm_config_stream,
*stm_insert_metadata;
@ -31,6 +32,7 @@ static void reset_conn() {
my_stmt_close(&stm_close_call);
my_stmt_close(&stm_insert_stream);
my_stmt_close(&stm_close_stream);
my_stmt_close(&stm_delete_stream);
my_stmt_close(&stm_config_stream);
my_stmt_close(&stm_insert_metadata);
mysql_close(mysql_conn);
@ -87,6 +89,8 @@ static int check_conn() {
if (prep(&stm_close_stream, "update recording_streams set " \
"end_timestamp = ? where id = ?"))
goto err;
if (prep(&stm_delete_stream, "delete from recording_streams where id = ?"))
goto err;
if (prep(&stm_config_stream, "update recording_streams set channels = ?, sample_rate = ? where id = ?"))
goto err;
if (prep(&stm_insert_metadata, "insert into recording_metakeys (`call`, `key`, `value`) values " \
@ -310,6 +314,18 @@ void db_close_stream(output_t *op) {
execute_wrap(&stm_close_stream, b, NULL);
}
void db_delete_stream(output_t *op) {
if (check_conn())
return;
if (op->db_id == 0)
return;
MYSQL_BIND b[1];
my_ull(&b[0], &op->db_id);
execute_wrap(&stm_delete_stream, b, NULL);
}
void db_config_stream(output_t *op) {
if (check_conn())
return;


+ 1
- 0
recording-daemon/db.h View File

@ -8,6 +8,7 @@ void db_do_call(metafile_t *);
void db_close_call(metafile_t *);
void db_do_stream(metafile_t *mf, output_t *op, const char *type, unsigned int id, unsigned long ssrc);
void db_close_stream(output_t *op);
void db_delete_stream(output_t *op);
void db_config_stream(output_t *op);


+ 12
- 6
recording-daemon/output.c View File

@ -15,7 +15,7 @@ int mp3_bitrate;
static void output_shutdown(output_t *output);
static int output_shutdown(output_t *output);
@ -255,15 +255,17 @@ err:
}
static void output_shutdown(output_t *output) {
static int output_shutdown(output_t *output) {
if (!output)
return;
return 0;
if (!output->fmtctx)
return;
return 0;
int ret = 0;
if (output->fmtctx->pb) {
av_write_trailer(output->fmtctx);
avio_closep(&output->fmtctx->pb);
ret = 1;
}
avcodec_close(output->avcctx);
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 0, 0)
@ -283,14 +285,18 @@ static void output_shutdown(output_t *output) {
format_init(&output->requested_format);
format_init(&output->actual_format);
return ret;
}
void output_close(output_t *output) {
if (!output)
return;
output_shutdown(output);
db_close_stream(output);
if (output_shutdown(output))
db_close_stream(output);
else
db_delete_stream(output);
g_slice_free1(sizeof(*output), output);
}


Loading…
Cancel
Save