diff --git a/channels/chan_iax.c b/channels/chan_iax.c
index 69ad1822eb623382340adcb3bd8e6812a6a3d7e6..7f61b622a1fe55e82062266d30d2bc695a379d5e 100755
--- a/channels/chan_iax.c
+++ b/channels/chan_iax.c
@@ -4841,6 +4841,7 @@ static struct iax_dpcache *find_cache(struct ast_channel *chan, char *data, char
 		/* We found an entry that matches us! */
 		if (!strcmp(dp->peercontext, data) && !strcmp(dp->exten, exten)) 
 			break;
+		prev = dp;
 		dp = next;
 	}
 	if (!dp) {
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 2316cd68600d3a347228f1154c4f877161fb6a6c..04b0bcafaad5ca1a72e3e2d44c83110059625190 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -5224,6 +5224,7 @@ static struct iax2_dpcache *find_cache(struct ast_channel *chan, char *data, cha
 		/* We found an entry that matches us! */
 		if (!strcmp(dp->peercontext, data) && !strcmp(dp->exten, exten)) 
 			break;
+		perv = dp;
 		dp = next;
 	}
 	if (!dp) {
@@ -5495,6 +5496,7 @@ int load_module(void)
 
 	ast_pthread_mutex_init(&iaxq.lock);
 	ast_pthread_mutex_init(&userl.lock);
+	ast_pthread_mutex_init(&peerl.lock);
 
 	ast_cli_register(&cli_show_users);
 	ast_cli_register(&cli_show_channels);