diff --git a/rtp.c b/rtp.c
index 82a1cd5f6eb48169435acfcab0b3638945e53407..92fddcafe1d168589ecf3b27d2a1a9978e96229a 100755
--- a/rtp.c
+++ b/rtp.c
@@ -1199,10 +1199,13 @@ int ast_rtp_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, st
 		int codec0,codec1;
 		codec0 = pr0->get_codec(c0);
 		codec1 = pr1->get_codec(c1);
-		ast_log(LOG_WARNING, "codec0 = %d is not codec1 = %d, can't do reinvite\n",codec0,codec1);
 		/* Hey, we can't do reinvite if both parties speak diffrent codecs */
-		if (codec0 != codec1)
+		if (codec0 != codec1) {
+			ast_log(LOG_WARNING, "codec0 = %d is not codec1 = %d, can't do reinvite\n",codec0,codec1);
+			ast_mutex_unlock(&c0->lock);
+			ast_mutex_unlock(&c1->lock);
 			return -2;
+		}
 	}
 	if (pr0->set_rtp_peer(c0, p1, vp1)) 
 		ast_log(LOG_WARNING, "Channel '%s' failed to talk to '%s'\n", c0->name, c1->name);