diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index b86714b4fdb46b6995a87f0d23f5baa8a414d919..94ab42d8cc774bd2fdb6d8d670d527a20b8e953e 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -636,6 +636,7 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat
 		res = -1;
 		break;
 	case AST_CONTROL_CONNECTED_LINE:
+		res = -1;
 		ast_debug(4, "Got CONNECTED LINE UPDATE on %s\n", ast_channel_name(ast));
 		/* Update caller IDs on display - dect ? */
 		struct brcm_subchannel *sub_peer = brcm_subchannel_get_peer(sub);
@@ -656,12 +657,13 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat
 						}
 					}
 				}
+				res = 0;
 			}
-		} else if (sub->owner && (sub->call_id == 0)) {
+		}
+		if (sub->owner && (sub->call_id == 0)) {
 			sub->call_id = ast_channel_callid(sub->owner);
 			endpt_connection(sub->parent->line_id, sub->call_id, "update");
-		} else {
-			res = -1;
+			res = 0;
 		}
 		break;