diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c
index 021fe4fe29795413dd0d93e80e30aaf6d8962cce..3c97784a13f4a4bd4f4bbc23b890a399bf5e3646 100644
--- a/res/res_pjsip_t38.c
+++ b/res/res_pjsip_t38.c
@@ -113,11 +113,7 @@ static struct t38_parameters_task_data *t38_parameters_task_data_alloc(struct as
 
 	data->session = session;
 	ao2_ref(session, +1);
-
-	if (!(data->frame = ast_frdup(frame))) {
-		ao2_cleanup(data);
-		return NULL;
-	}
+	data->frame = frame;
 
 	return data;
 }
@@ -396,6 +392,8 @@ static struct ast_frame *t38_framehook_write(struct ast_sip_session *session, st
 		if (ast_sip_push_task(session->serializer, t38_interpret_parameters, data)) {
 			ao2_ref(data, -1);
 		}
+
+		f = &ast_null_frame;
 	} else if (f->frametype == AST_FRAME_MODEM) {
 		RAII_VAR(struct ast_sip_session_media *, session_media, NULL, ao2_cleanup);