cabbaa
diff --git a/lib/priority.c b/lib/priority.c
cabbaa
index 9feec47fe2..40511710fd 100644
cabbaa
--- a/lib/priority.c
cabbaa
+++ b/lib/priority.c
cabbaa
@@ -2001,13 +2001,14 @@ char *_gnutls_resolve_priorities(const char* priorities)
cabbaa
 		additional++;
cabbaa
 	}
cabbaa
 
cabbaa
-	/* Always try to refresh the cached data, to allow it to be
cabbaa
-	 * updated without restarting all applications.
cabbaa
-	 */
cabbaa
-	ret = _gnutls_update_system_priorities(false /* defer_system_wide */);
cabbaa
-	if (ret < 0) {
cabbaa
-		_gnutls_debug_log("failed to update system priorities: %s\n",
cabbaa
-				  gnutls_strerror(ret));
cabbaa
+	/* If priority string is not constructed yet, construct and finalize */
cabbaa
+	if (!system_wide_config.priority_string) {
cabbaa
+		ret = _gnutls_update_system_priorities(false
cabbaa
+		                                       /* defer_system_wide */);
cabbaa
+		if (ret < 0) {
cabbaa
+			_gnutls_debug_log("failed to update system priorities: "
cabbaa
+			                  " %s\n", gnutls_strerror(ret));
cabbaa
+		}
cabbaa
 	}
cabbaa
 
cabbaa
 	do {