diff --git a/apps/app_record.c b/apps/app_record.c
index b8cce548cc4931953a641d5bb6036e905b588ed0..4703ade7254b2070d2d733cbb660095809c6a602 100755
--- a/apps/app_record.c
+++ b/apps/app_record.c
@@ -28,10 +28,10 @@ static char *app = "Record";
 static char *synopsis = "Record to a file";
 
 static char *descrip = 
-"  Record(filename:extension): Records from the channel into a given filename.\n"
-"  If the file exists it will be overwritten.  The 'extension' is the extension\n"
-"  of the file type to be recorded (wav, gsm, etc).  Returns -1 when the user\n"
-"  hangs up.\n";
+"  Record(filename:extension): Records from the  channel into a given\n"
+"filename. If the file exists it will be overwritten. The 'extension'\n"
+"is the extension of the file type  to  be  recorded (wav, gsm, etc).\n"
+"Returns -1 when the user hangs up.\n";
 
 STANDARD_LOCAL_USER;
 
@@ -124,6 +124,12 @@ static int record_exec(struct ast_channel *chan, void *data)
 						break;
 					}
 				}
+				if ((f->frametype == AST_FRAME_DTMF) &&
+					(f->subclass == '#')) {
+					ast_frfree(f);
+					break;
+				}
+				ast_frfree(f);
 			}
 			if (!f) {
 					ast_log(LOG_DEBUG, "Got hangup\n");