diff --git a/res/res_pjsip.c b/res/res_pjsip.c
index db33a4e12cc2409fda49be16ae396a67ad46da87..0a2e79c67c5bf4ca2eab4ab140126f56ddf41172 100644
--- a/res/res_pjsip.c
+++ b/res/res_pjsip.c
@@ -4056,6 +4056,7 @@ pjsip_dialog *ast_sip_create_dialog_uac(const struct ast_sip_endpoint *endpoint,
 	const char *outbound_proxy = endpoint->outbound_proxy;
 	pjsip_tpselector selector = { .type = PJSIP_TPSELECTOR_NONE, };
 	static const pj_str_t HCONTACT = { "Contact", 7 };
+	const char *fromuser;
 
 	snprintf(enclosed_uri, sizeof(enclosed_uri), "<%s>", uri);
 	pj_cstr(&remote_uri, enclosed_uri);
@@ -4083,7 +4084,8 @@ pjsip_dialog *ast_sip_create_dialog_uac(const struct ast_sip_endpoint *endpoint,
 
 	ast_sip_dlg_set_transport(endpoint, dlg, &selector);
 
-	if (sip_dialog_create_from(dlg->pool, &local_uri, endpoint->fromuser, endpoint->fromdomain, &remote_uri, &selector)) {
+	fromuser = ast_strlen_zero(endpoint->fromuser) ? endpoint->contact_user : endpoint->fromuser;
+	if (sip_dialog_create_from(dlg->pool, &local_uri, fromuser, endpoint->fromdomain, &remote_uri, &selector)) {
 		dlg->sess_count--;
 		pjsip_dlg_terminate(dlg);
 		ast_sip_tpselector_unref(&selector);