mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 02:26:23 +00:00
app_confbridge: Make sure name recordings are always removed from the filesystem
This commit fixes two possible scenarios: * When recording name and if during recording you hangup, file is never removed. This is due to the fact file location is nulled. * When recording name and if you hangup during thank-you prompt, file is never removed. ASTERISK-27123 #close Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625
This commit is contained in:
@@ -2145,6 +2145,7 @@ static int conf_rec_name(struct confbridge_user *user, const char *conf_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (res == -1) {
|
if (res == -1) {
|
||||||
|
ast_filedelete(user->name_rec_location, NULL);
|
||||||
user->name_rec_location[0] = '\0';
|
user->name_rec_location[0] = '\0';
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -2236,6 +2237,7 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
|
|||||||
{
|
{
|
||||||
int res = 0, volume_adjustments[2];
|
int res = 0, volume_adjustments[2];
|
||||||
int quiet = 0;
|
int quiet = 0;
|
||||||
|
int async_delete_task_pushed = 0;
|
||||||
char *parse;
|
char *parse;
|
||||||
const char *b_profile_name = NULL;
|
const char *b_profile_name = NULL;
|
||||||
const char *u_profile_name = NULL;
|
const char *u_profile_name = NULL;
|
||||||
@@ -2481,6 +2483,7 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
|
|||||||
async_play_sound_file(conference,
|
async_play_sound_file(conference,
|
||||||
conf_get_sound(CONF_SOUND_HAS_LEFT, conference->b_profile.sounds), NULL);
|
conf_get_sound(CONF_SOUND_HAS_LEFT, conference->b_profile.sounds), NULL);
|
||||||
async_delete_name_rec(conference, user.name_rec_location);
|
async_delete_name_rec(conference, user.name_rec_location);
|
||||||
|
async_delete_task_pushed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* play the leave sound */
|
/* play the leave sound */
|
||||||
@@ -2509,6 +2512,9 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
confbridge_cleanup:
|
confbridge_cleanup:
|
||||||
|
if (!async_delete_task_pushed && !ast_strlen_zero(user.name_rec_location)) {
|
||||||
|
ast_filedelete(user.name_rec_location, NULL);
|
||||||
|
}
|
||||||
ast_bridge_features_cleanup(&user.features);
|
ast_bridge_features_cleanup(&user.features);
|
||||||
conf_bridge_profile_destroy(&user.b_profile);
|
conf_bridge_profile_destroy(&user.b_profile);
|
||||||
return res;
|
return res;
|
||||||
|
Reference in New Issue
Block a user