From 13de0495f29f9997b96b09f7a5357e1fb2a87fdf Mon Sep 17 00:00:00 2001 From: UpBeta <1.51861782e+08+UpBeta@users.noreply.github.com> Date: Sat, 23 May 2026 21:00:53 +0000 Subject: [PATCH] app_record: Fix hangup handling during beep playback When a hangup occurs while app_record is playing the initial beep, the application does not detect the hangup and continues running until the maxduration timeout expires. Replace the manual ast_streamfile() + ast_waitstream() sequence with ast_stream_and_wait(), which properly detects hangup and returns non-zero, allowing the application to exit immediately with RECORD_STATUS set to HANGUP. Resolves: #1950 --- apps/app_record.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/apps/app_record.c b/apps/app_record.c index 5dc362ca48..7004fd9f8b 100644 --- a/apps/app_record.c +++ b/apps/app_record.c @@ -457,15 +457,11 @@ static int record_exec(struct ast_channel *chan, const char *data) } if (!ast_test_flag(&flags, OPTION_QUIET)) { - /* Some code to play a nice little beep to signify the start of the record operation */ - res = ast_streamfile(chan, "beep", ast_channel_language(chan)); - if (!res) { - res = ast_waitstream(chan, ""); - } else { - ast_log(LOG_WARNING, "ast_streamfile(beep) failed on %s\n", ast_channel_name(chan)); - res = 0; + /* Play a beep to signify the start of the record operation */ + if (ast_stream_and_wait(chan, "beep", "")) { + status_response = "HANGUP"; + goto out; } - ast_stopstream(chan); } /* The end of beep code. Now the recording starts */