diff --git a/apps/app_dial.c b/apps/app_dial.c
index e641356ac551388cad1235b4622c13985b340f05..fbd4ef68b90547ce6f68711444d44b2d9aab2088 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1061,7 +1061,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
 			ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(outgoing->chan));
 			ast_channel_unlock(outgoing->chan);
 			connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
-			ast_channel_update_connected_line(in, &connected_caller, NULL);
+			if (ast_channel_connected_line_sub(outgoing->chan, in, &connected_caller, 0) &&
+				ast_channel_connected_line_macro(outgoing->chan, in, &connected_caller, 1, 0)) {
+				ast_channel_update_connected_line(in, &connected_caller, NULL);
+			}
 			ast_party_connected_line_free(&connected_caller);
 		}
 	}
@@ -1126,7 +1129,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
 							ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(c));
 							ast_channel_unlock(c);
 							connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
-							ast_channel_update_connected_line(in, &connected_caller, NULL);
+							if (ast_channel_connected_line_sub(c, in, &connected_caller, 0) &&
+								ast_channel_connected_line_macro(c, in, &connected_caller, 1, 0)) {
+								ast_channel_update_connected_line(in, &connected_caller, NULL);
+							}
 							ast_party_connected_line_free(&connected_caller);
 						}
 					}
@@ -1199,7 +1205,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
 								ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(c));
 								ast_channel_unlock(c);
 								connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
-								ast_channel_update_connected_line(in, &connected_caller, NULL);
+								if (ast_channel_connected_line_sub(c, in, &connected_caller, 0) &&
+									ast_channel_connected_line_macro(c, in, &connected_caller, 1, 0)) {
+									ast_channel_update_connected_line(in, &connected_caller, NULL);
+								}
 								ast_party_connected_line_free(&connected_caller);
 							}
 						}
diff --git a/apps/app_queue.c b/apps/app_queue.c
index ef3223b53a0be5e6aa36ae1b984f579870faeb47..d372a50ba3256107da366b930c806384ce4c7709 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3756,7 +3756,10 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
 							ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(o->chan));
 							ast_channel_unlock(o->chan);
 							connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
-							ast_channel_update_connected_line(in, &connected_caller, NULL);
+							if (ast_channel_connected_line_sub(o->chan, in, &connected_caller, 0) &&
+								ast_channel_connected_line_macro(o->chan, in, &connected_caller, 1, 0)) {
+								ast_channel_update_connected_line(in, &connected_caller, NULL);
+							}
 							ast_party_connected_line_free(&connected_caller);
 						}
 					}
@@ -3886,7 +3889,10 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
 										ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(o->chan));
 										ast_channel_unlock(o->chan);
 										connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
-										ast_channel_update_connected_line(in, &connected_caller, NULL);
+										if (ast_channel_connected_line_sub(o->chan, in, &connected_caller, 0) &&
+											ast_channel_connected_line_macro(o->chan, in, &connected_caller, 1, 0)) {
+											ast_channel_update_connected_line(in, &connected_caller, NULL);
+										}
 										ast_party_connected_line_free(&connected_caller);
 									}
 								}