summaryrefslogtreecommitdiff
path: root/apps/confbridge/include/confbridge.h
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2015-01-27 17:48:18 +0000
committerRichard Mudgett <rmudgett@digium.com>2015-01-27 17:48:18 +0000
commit94eebd5ba541396175c195f91b50168191e6d24a (patch)
tree57af16a9b3a2aeaaf9555a7fde9b274780280f3d /apps/confbridge/include/confbridge.h
parenta43d24a9d3d61274e6b7b8cf594af0d802c100b7 (diff)
app_confbridge: Repeatedly starting and stopping recording ref leaks the recording channel.
Starting and stopping conference recording more than once causes the recording channels to be leaked. For v13 the channels also show up in the CLI "core show channels" output. * Reworked and simplified the recording channel code to use ast_bridge_impart() instead of managing the recording thread in the ConfBridge code. The recording channel's ref handling easily falls into place and other off nominal code paths get handled better as a result. ASTERISK-24719 #close Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/4368/ Review: https://reviewboard.asterisk.org/r/4369/ ........ Merged revisions 431135 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 431160 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431161 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/confbridge/include/confbridge.h')
-rw-r--r--apps/confbridge/include/confbridge.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/apps/confbridge/include/confbridge.h b/apps/confbridge/include/confbridge.h
index 5488065ca..54a9dc4ec 100644
--- a/apps/confbridge/include/confbridge.h
+++ b/apps/confbridge/include/confbridge.h
@@ -221,13 +221,11 @@ struct confbridge_conference {
unsigned int waitingusers; /*!< Number of waiting users present */
unsigned int locked:1; /*!< Is this conference bridge locked? */
unsigned int muted:1; /*!< Is this conference bridge muted? */
- unsigned int record_state:2; /*!< Whether recording is started, stopped, or should exit */
struct ast_channel *playback_chan; /*!< Channel used for playback into the conference bridge */
struct ast_channel *record_chan; /*!< Channel used for recording the conference */
- pthread_t record_thread; /*!< The thread the recording chan lives in */
+ struct ast_str *record_filename; /*!< Recording filename. */
+ struct ast_str *orig_rec_file; /*!< Previous b_profile.rec_file. */
ast_mutex_t playback_lock; /*!< Lock used for playback channel */
- ast_mutex_t record_lock; /*!< Lock used for the record thread */
- ast_cond_t record_cond; /*!< Recording condition variable */
AST_LIST_HEAD_NOLOCK(, confbridge_user) active_list; /*!< List of users participating in the conference bridge */
AST_LIST_HEAD_NOLOCK(, confbridge_user) waiting_list; /*!< List of users waiting to join the conference bridge */
};