diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index e126bfc8c0fcf6a37e2ed9f21c5fe8cd9fc0891e..4dc0e0b6797a86978b94185232547fbe189fe3e8 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -4127,7 +4127,10 @@ end:
 
 		ast_channel_SIPSessionID_set(invite->session->channel, value);
 		ast_channel_sessionId_set(invite->session->channel, local->origin.id);
-		ast_channel_sipIpAddress_set(invite->session->channel, pj_strbuf(&local->origin.addr), pj_strlen(&local->origin.addr));
+		/* Log the IP that the INVITE came from as CallLog.{i}.X_Vendor_SIPIPAddress */
+		const char *addr_buf;
+		addr_buf = pj_sockaddr_print(&invite->rdata->pkt_info.src_addr, buffer, sizeof(buffer), 0);
+		ast_channel_sipIpAddress_set(invite->session->channel, addr_buf, strlen(addr_buf));
 	}
 
 	SCOPE_EXIT_RTN_VALUE(0, "%s\n", ast_sip_session_get_name(invite->session));
@@ -5048,6 +5051,15 @@ static void session_inv_on_tsx_state_changed(pjsip_inv_session *inv, pjsip_trans
 		break;
 	}
 
+	if (inv->state == PJSIP_INV_STATE_CALLING && tsx->state == PJSIP_TSX_STATE_CALLING ) {
+		/* Log the IP that the INVITE been sent as CallLog.{i}.X_Vendor_SIPIPAddress */
+		const char *addr_buf;
+		char tempaddr[AST_SOCKADDR_BUFLEN];
+		addr_buf = pj_sockaddr_print(&tsx->addr, tempaddr, sizeof(tempaddr), 0);
+		ast_debug(3, "%s: INVITE sent to IP: %s \n", ast_sip_session_get_name(session), addr_buf );
+		ast_channel_sipIpAddress_set(session->channel, addr_buf, strlen(addr_buf));
+	}
+
 	if (AST_LIST_EMPTY(&session->delayed_requests)) {
 		/* No delayed request pending, so just return */
 		SCOPE_EXIT_RTN("Nothing delayed\n");
@@ -5360,7 +5372,6 @@ static struct pjmedia_sdp_session *create_local_sdp(pjsip_inv_session *inv, stru
 end:
 	if (session && session->channel) {
 		ast_channel_sessionId_set(session->channel, local->origin.id);
-		ast_channel_sipIpAddress_set(session->channel, pj_strbuf(&local->origin.addr), pj_strlen(&local->origin.addr));
 	}
 
 	SCOPE_EXIT_RTN_VALUE(local, "%s\n", ast_sip_session_get_name(session));