diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index 974b6fb331db967d570476c90d84b852067fcc8c..14adf5c561e07edf83bdfc789bfeff9a5629447a 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -2260,7 +2260,12 @@ static int transfer(void *data)
 				target = contact->uri;
 			}
 		}
-		transfer_refer(trnf_data->session, target);
+
+		if (ast_channel_state(trnf_data->session->channel) == AST_STATE_RING) {
+			transfer_redirect(trnf_data->session, target);
+		} else {
+			transfer_refer(trnf_data->session, target);
+		}
 	}
 
 	ao2_ref(trnf_data, -1);