diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index d823e284800f1530d4dae4ca26ef74a02072e20a..c10369635bcc91e739496bbaee7afe13014822f1 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -3152,6 +3152,39 @@ static void set_sipdomain_variable(struct ast_sip_session *session)
 	return;
 }
 
+static int find_contact(void *obj, void *arg, int flags)
+{
+	struct ast_sip_contact *contact = obj;
+	char *contact_url = arg;
+
+	return !!strstr(contact->uri, contact_url);
+}
+
+static struct ast_sip_contact *contact_user_find_by_addr(char *contact_user, const pj_sockaddr *src_addr)
+{
+	RAII_VAR(struct ast_sip_aor *, aor_obj, NULL, ao2_cleanup);
+	RAII_VAR(struct ast_sip_contact *, contact, NULL, ao2_cleanup);
+	struct ast_sorcery *pjsip_sorcery;
+	struct ao2_container *contacts;
+	char contact_url[PJ_INET6_ADDRSTRLEN];
+
+	pjsip_sorcery = ast_sip_get_sorcery();
+	if (!pjsip_sorcery)
+		return 0;
+
+	aor_obj = ast_sorcery_retrieve_by_id(pjsip_sorcery, "aor", contact_user);
+	if (!aor_obj)
+		return 0;
+
+	contacts = ast_sip_location_retrieve_aor_contacts_nolock(aor_obj);
+	if (!contacts)
+		return 0;
+
+	pj_sockaddr_print(src_addr, contact_url, sizeof(contact_url), 3);
+	return ao2_callback(contacts, OBJ_UNLINK, find_contact, contact_url);
+}
+
+
 /*! \brief Function called when a request is received on the session */
 static int chan_pjsip_incoming_request(struct ast_sip_session *session, struct pjsip_rx_data *rdata)
 {
@@ -3174,8 +3207,11 @@ static int chan_pjsip_incoming_request(struct ast_sip_session *session, struct p
 		ast_log(LOG_DEBUG, "Request received from address: <%s>\n", buf);
 
 		pj_cstr(&proxy_config_val, session->endpoint->fromdomain);
+		if (contact_user_find_by_addr(session->endpoint->contact_user, &rdata->pkt_info.src_addr)) {
+			    ast_log(LOG_DEBUG, "Request from known contact %s\n", ast_sip_session_get_name(session));
+		}
 		// 'fromdomain' is not an IPv4 or IPv6 address
-		if (pj_sockaddr_parse(pj_AF_UNSPEC(), 0, &proxy_config_val, &proxy_address) != PJ_SUCCESS) {
+		else if (pj_sockaddr_parse(pj_AF_UNSPEC(), 0, &proxy_config_val, &proxy_address) != PJ_SUCCESS) {
 			if (!ast_sip_is_address_in_dns_records(&rdata->pkt_info.src_addr)) {
 				SCOPE_EXIT_RTN_VALUE(-1, "%s: Request not from DNS resolutions\n", ast_sip_session_get_name(session));
 			}