diff --git a/include/asterisk/module.h b/include/asterisk/module.h
index aba72980d7293395fb64ef34650328077d14846f..83f44ebe9e1e9f0e399564da035237bd3bff7007 100755
--- a/include/asterisk/module.h
+++ b/include/asterisk/module.h
@@ -158,7 +158,7 @@ void ast_unregister_atexit(void (*func)(void));
 
 #define LOCAL_USER_ADD(u) { \
  \
-	if (!(u=malloc(sizeof(struct localuser)))) { \
+	if (!(u=(struct localuser *)malloc(sizeof(struct localuser)))) { \
 		ast_log(LOG_WARNING, "Out of memory\n"); \
 		return -1; \
 	} \
diff --git a/rtp.c b/rtp.c
index 3d0c513886245294b28b5d4c4dbc3724fd4c272b..55a4e35781bbdf994388890bca55e902767bb5c6 100755
--- a/rtp.c
+++ b/rtp.c
@@ -965,6 +965,7 @@ int ast_rtp_senddigit(struct ast_rtp *rtp, char digit)
 	int res;
 	int ms;
 	int x;
+	int payload;
 	char data[256];
 	char iabuf[INET_ADDRSTRLEN];
 
@@ -982,7 +983,7 @@ int ast_rtp_senddigit(struct ast_rtp *rtp, char digit)
 		ast_log(LOG_WARNING, "Don't know how to represent '%c'\n", digit);
 		return -1;
 	}
-	
+	payload = ast_rtp_lookup_code(rtp, 0, AST_RTP_DTMF);
 
 	/* If we have no peer, return immediately */	
 	if (!rtp->them.sin_addr.s_addr)
@@ -1001,7 +1002,7 @@ int ast_rtp_senddigit(struct ast_rtp *rtp, char digit)
 	
 	/* Get a pointer to the header */
 	rtpheader = (unsigned int *)data;
-	rtpheader[0] = htonl((2 << 30) | (1 << 23) | (101 << 16) | (rtp->seqno++));
+	rtpheader[0] = htonl((2 << 30) | (1 << 23) | (payload << 16) | (rtp->seqno++));
 	rtpheader[1] = htonl(rtp->lastts);
 	rtpheader[2] = htonl(rtp->ssrc); 
 	rtpheader[3] = htonl((digit << 24) | (0xa << 16) | (0));