diff --git a/channels/chan_local.c b/channels/chan_local.c
index 7e7ef3c4ec81cc4b9a298dde103e4781ad5f19d7..6f910931e3540b7b15966bd62ca051f5d03ebe49 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -416,6 +416,7 @@ static int local_indicate(struct ast_channel *ast, int condition, const void *da
 		 * we need to transmit the collected connected line information instead of whatever
 		 * happens to be in this control frame. The same applies for redirecting information, which
 		 * is why it is handled here as well.*/
+		ast_mutex_lock(&p->lock);
 		isoutbound = IS_OUTBOUND(ast, p);
 		if (isoutbound) {
 			this_channel = p->chan;