diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index 6e3b47afa326710fc671cd439247d706d89eb921..5a5674daa61c3dffdc3f546fd70b1d127b460422 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -3292,12 +3292,11 @@ static void key_call(struct unistimsession *pte, char keycode)
 		}
 		break;
 	case KEY_FUNC2:
+		if (ast_channel_state(sub->owner) == AST_STATE_RING) {
+			transfer_cancel_step2(pte);
+		}
 		if (ast_channel_state(sub->owner) == AST_STATE_UP) {
-			if (get_sub(pte->device, SUB_THREEWAY)) {
-				transfer_cancel_step2(pte);
-			} else {
-				transfer_call_step1(pte);
-			}
+			transfer_call_step1(pte);
 		}
 		break;
 	case KEY_HANGUP:
@@ -4815,7 +4814,6 @@ static int unistim_hangup(struct ast_channel *ast)
 				continue;
 			}
 			if (d->ssub[i] != NULL) { /* Found other subchannel active other then hangup'ed one */
-				ast_log(LOG_WARNING, "There is not only one call here %p %p %i\n",d->ssub[i], sub, i);
 				end_call = 0;
 			}
 		}