diff --git a/ecrire/inc_flock.php3 b/ecrire/inc_flock.php3
index dc8bd5585f113aab08195d4d96526683cf2b5ab9..ae1ebd5cb9d000394a7bce1ea6f13accacbe7a53 100644
--- a/ecrire/inc_flock.php3
+++ b/ecrire/inc_flock.php3
@@ -5,88 +5,7 @@
 if (defined("_ECRIRE_INC_FLOCK")) return;
 define("_ECRIRE_INC_FLOCK", "1");
 
-// flock() marche dans ce repertoire <=> j'ai le droit de flock() sur ce fichier
-if (LOCK_UN!=3) {
-	define ('LOCK_SH', 1);
-	define ('LOCK_EX', 2);
-	define ('LOCK_UN', 3);
-	define ('LOCK_NB', 4);
-}
-
-function test_flock ($fichier, $ecriture = false) {
-	static $flock = array();
-	global $flag_flock;
-	if (!$flag_flock)
-		return false;
-
-	preg_match('|(.*)/([^/]*)$|', $fichier, $match);
-	$dir = $match[1];
-	if ($dir == '')
-		return false;	// a la racine on ne fait que lire
-
-	// premier appel pour ce $dir ?
-	if (!isset($flock[$dir])) {
-		// si un fichier d'etat flock est la et pas trop vieux -- id est:
-		// pas recopie depuis une autre installation ! -- c'est ok.
-		if (@file_exists("$dir/.flock_ok")
-		AND (filemtime("$dir/.flock_ok") > time() - 3600))
-			$flock[$dir] = true;
-		else if (@file_exists("$dir/.flock_naze")
-		AND (filemtime("$dir/.flock_naze") > time() - 3600))
-			$flock[$dir] = false;
-
-		// pas d'infos de flock, on va tester
-		// MAIS attention on ne veut effectivement
-		// tester que les repertoires dans lesquels on ecrit
-		// Si on ne fait qu'y lire, pas necessaire (et pas
-		// forcement autorise)
-		else if ($ecrire) {
-			$fichiertest = $dir.'/'
-			.substr(uniqid(@getmypid(), true),-6).".tmp";
-			if ($fp = @fopen($fichiertest, 'w')) {
-				if (@flock($fp, LOCK_SH)) {
-					@flock($fp, LOCK_UN);
-					$flock[$dir] = true;
-					@touch("$dir/.flock_ok");
-					@unlink("$dir/.flock_naze");
-					@fclose($fp);
-					spip_log("test $dir: flock ok");
-				} else {
-					$flock[$dir] = false;
-					@touch("$dir/.flock_naze");
-					@unlink("$dir/.flock_ok");
-					spip_log("test $dir: flock naze");
-				}
-				@unlink($fichiertest);
-			} else {
-				spip_log("test $dir: echec du test sur $fichiertest !");
-				@touch("$dir/.flock_naze");
-				@unlink("$dir/.flock_ok");
-			}
-		} else
-			$flock[$dir] = false;
-	}
-
-	return $flock[$dir];
-}
-
-// Si flock ne marche pas dans ce repertoire ou chez cet hebergeur,
-// on renvoie OK pour ne pas bloquer
-function spip_flock($filehandle, $mode, $fichier, $ecriture = false) {
-	if (!test_flock($fichier, $ecriture))
-		return true;
-
-	$r = flock($filehandle, $mode);
-
-	// demande de verrou ==> risque de sleep ==> forcer la relecture de l'etat
-	if ($mode == LOCK_EX)
-		clearstatcache();
-
-	return $r;
-}
-
 function spip_file_get_contents ($fichier) {
-
 	if (substr($fichier, -3) != '.gz') {
 		if (function_exists('file_get_contents')
 		AND $GLOBALS['os_serveur'] !='windows') # windows retourne ''
@@ -95,7 +14,6 @@ function spip_file_get_contents ($fichier) {
 			return join('', @file($fichier));
 	} else
 			return join('', @gzfile($fichier));
-	
 }
 
 // options = array(
@@ -111,7 +29,7 @@ function lire_fichier ($fichier, &$contenu, $options=false) {
 	if ($fl = @fopen($fichier, 'r')) {
 
 		// verrou lecture
-		while (!spip_flock($fl, LOCK_SH, $fichier));
+		@flock($fl, LOCK_SH);
 
 		// a-t-il ete supprime par le locker ?
 		if (!@file_exists($fichier)) {
@@ -123,7 +41,7 @@ function lire_fichier ($fichier, &$contenu, $options=false) {
 		$contenu = spip_file_get_contents($fichier);
 
 		// liberer le verrou
-		spip_flock($fl, LOCK_UN, $fichier);
+		@flock($fl, LOCK_UN);
 		@fclose($fl);
 
 		// Verifications
@@ -158,7 +76,7 @@ function ecrire_fichier ($fichier, $contenu) {
 
 	// verrouiller le fichier destination
 	if ($fp = @fopen($fichier, 'a'))
-		while (!spip_flock($fp, LOCK_EX, $fichier, 'ecriture'));
+		@flock($fp, LOCK_EX);
 	else
 		return false;
 
@@ -176,7 +94,7 @@ function ecrire_fichier ($fichier, $contenu) {
 	#spip_log("$fputs $fichier ".spip_timer('ecrire_fichier'));
 
 	// liberer le verrou et fermer le fichier
-	spip_flock($fp, LOCK_UN, $fichier);
+	@flock($fp, LOCK_UN);
 	@fclose($fp);
 
 	return $ok;
@@ -190,22 +108,17 @@ function supprimer_fichier($fichier) {
 		return;
 
 	// verrouiller le fichier destination
-	if ($flock = test_flock($fichier, 'ecriture')) {
-		if ($fp = @fopen($fichier, 'a'))
-			while (!spip_flock($fp, LOCK_EX, $fichier));
-		else
-			return;
-	}
+	if ($fp = @fopen($fichier, 'a'))
+		@flock($fp, LOCK_EX);
+	else
+		return;
 
 	// supprimer
 	@unlink($fichier);
-	
-	// liberer le verrou
-	if ($flock) {
-		spip_flock($fp, LOCK_UN, $fichier);
-		@fclose($fp);
-	}
 
+	// liberer le verrou
+	@flock($fp, LOCK_UN);
+	@fclose($fp);
 }
 
 ?>
diff --git a/ecrire/inc_invalideur.php3 b/ecrire/inc_invalideur.php3
index 1d29806e5b0f12955b9db26384696fada384823c..0cd92bbfaac4ac99445f21f054a3d6899bba04d2 100644
--- a/ecrire/inc_invalideur.php3
+++ b/ecrire/inc_invalideur.php3
@@ -62,7 +62,7 @@ function retire_cache($cache) {
 	if (preg_match(
 	"|^CACHE(/[0-9a-f])?(/[0-9]+)?/[^.][\-_\%0-9a-z]+\.[0-9a-f]+(\.gz)?$|i",
 	$cache)) {
-		// supprimer le fichier (avec spip_flock)
+		// supprimer le fichier (de facon propre)
 		supprimer_fichier($cache);
 		// et le fichier compagnon s'il existe
 		@unlink($cache.'.NEW');
diff --git a/inc-cache.php3 b/inc-cache.php3
index e67c600416efc619e4ad46278a86964eac37d7f1..789bcb036405482878a3dd6ca4e5fed5e4582bf0 100644
--- a/inc-cache.php3
+++ b/inc-cache.php3
@@ -127,29 +127,24 @@ function determiner_cache($delais, &$use_cache, &$chemin_cache) {
 		// Le fichier cache est-il valide ?
 		$use_cache = utiliser_cache($chemin_cache, $delais);
 
-		// S'il faut calculer, poser un lock SQL
+		// Sinon, tester qu'on a la connexion a la base
 		if (!$use_cache) {
-			// Attendre 20 secondes maxi, que le copain ait
-			// calcule le meme fichier cache ou que
-			// l'invalideur ait fini de supprimer le fichier
-			$ok = spip_get_lock($chemin_cache, 20);
-			# ici mettre plutot du spip_flock ?
-			# avec le meme dans la partie invalideur ?
-
-			if (!$ok)
-				$use_cache = @file_exists($chemin_cache);
-
-			// Toujours rien ? La base est morte :-(
-			if (!$use_cache AND !$GLOBALS['db_ok']) {
-				spip_log("Erreur base de donnees &
-				impossible utiliser $chemin_cache");
-				if (!$GLOBALS['flag_preserver']) {
-					include_ecrire('inc_presentation.php3');
-					install_debut_html(_T('info_travaux_titre'));
-					echo "<p>"._T('titre_probleme_technique')."</p>\n";
-					install_fin_html();
+			include_ecrire('inc_connect.php3');
+			if (!$GLOBALS['db_ok']) {
+				if (@file_exists($chemin_cache)) {
+					$use_cache = true;
+				}
+				else {
+					spip_log("Erreur base de donnees & "
+						. "impossible utiliser $chemin_cache");
+					if (!$GLOBALS['flag_preserver']) {
+						include_ecrire('inc_presentation.php3');
+						install_debut_html(_T('info_travaux_titre'));
+						echo "<p>"._T('titre_probleme_technique')."</p>\n";
+						install_fin_html();
+					}
+					exit;
 				}
-				exit;
 			}
 		}
 	}