diff --git a/src/channels/chan_voicemngr.c b/src/channels/chan_voicemngr.c
index acb8809594d16787ddc7370ee03f2cd96fb64d4b..097fb557b3a8a57c56235d728a261f6e193d9ab4 100644
--- a/src/channels/chan_voicemngr.c
+++ b/src/channels/chan_voicemngr.c
@@ -2685,11 +2685,11 @@ static void handle_Rkey_uk(struct chan_voicemngr_subchannel *sub, struct chan_vo
 			}
 		} else if (sub_peer->channel_state == ONHOLD) {
 			ast_log(LOG_NOTICE, "R on hold, line: %d action: %s\n",
-				p->line_id, sub->call_direction == INCOMING_CALL ? "Toggle" : "3way Conference");
-			if (sub->call_direction == OUTGOING_CALL) {
+				p->line_id, p->sub[1]->call_direction == INCOMING_CALL ? "Toggle" : "3way Conference");
+			if (p->sub[1]->call_direction == OUTGOING_CALL) {
 				sub->channel_state = INCALL;
 				sub->conf_timer_id = ast_sched_add(sched, dtmf_wait_timer, setup_conference_call_cb, p);
-			} else if (sub->call_direction == INCOMING_CALL){
+			} else if (p->sub[1]->call_direction == INCOMING_CALL){
 				chan_voicemngr_unmute_connection(sub_peer);
 				ast_queue_unhold(peer_owner);
 				sub_peer->channel_state = INCALL;