diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c
index e5b426e0ac08b7a2e4bd3a7de8a54df0ef0c4c6c..4b5727bd03361bbc77af46d3dbb9c4bb38aca42c 100644
--- a/libraries/libldap/tls_m.c
+++ b/libraries/libldap/tls_m.c
@@ -903,6 +903,8 @@ tlsm_get_pin(PK11SlotInfo *slot, PRBool retry, tlsm_ctx *ctx)
 	 */
 	if ( ctx->tc_pin_file ) {
 		pwdstr = tlsm_get_pin_from_file( token_name, ctx );
+		if (retry && pwdstr != NULL)
+			return NULL;
 	}
 #endif /* RETRIEVE_PASSWORD_FROM_FILE */
 #ifdef READ_PASSWORD_FROM_STDIN