diff --git a/rtp.c b/rtp.c
index 03606b0245b752cba39bb0b8bf13dc762528c2af..484e53fa0cea85ce201753e6ed720637a7b5ebfd 100755
--- a/rtp.c
+++ b/rtp.c
@@ -233,7 +233,10 @@ static struct ast_frame *process_rfc2833(struct ast_rtp *rtp, unsigned char *dat
 	}
 	else if(event_end & 0x80)
 	{
-		f = send_dtmf(rtp);
+		if (rtp->resp) {
+			f = send_dtmf(rtp);
+			rtp->resp = 0;
+		}
 		resp = 0;
 		duration = 0;
 	}
@@ -241,8 +244,8 @@ static struct ast_frame *process_rfc2833(struct ast_rtp *rtp, unsigned char *dat
 	{
 		f = send_dtmf(rtp);
 	}
-
-	rtp->resp = resp;
+	if (!(event_end & 0x80))
+		rtp->resp = resp;
 	rtp->dtmfcount = dtmftimeout;
 	rtp->dtmfduration = duration;
 	return f;