Problème Ethernet Shield HTTP

Merci pour cette réponse rapide.

J'avais déjà regardé ce topic, je suis quasiment sûr de ne pas avoir de problème de mémoire vive car en utilisant une fonction de test de ram disponible, je vois que j'ai à chaque connexion quasiment 5ko.

Normalement je n'ai pas de problème de synchronisation avec le serveur car j'utilise une boucle d'attente de réponse.
Pas de problème non plus de la connexion précédente mal fermée, j'utilise HTTP/1.0 (pas de connexion persistante) et je vérifie à chaque connexion que la connexion précédente est bien fermée.

Enfin en gros je sèche...

voilà le code de ma fonction de connexion qui envoie la requête et lit les en-têtes de manière à laisser l'objet client prêt à lire le contenu de la page :

/* Connexion et envoi requete GET */
/* Retour : true si erreur */
bool connexion(char *adresse_connexion)
{
        Serial.print(" libre : ");
        Serial.println(memoryTest());
        deconnexionClient();
        
        if (client.connect())
        {
                delay(100);
                client.print("GET /");
                client.print(adresse_connexion);
                client.println(" HTTP/1.0");
                client.println();
                
                //attente serveur
                Serial.print("att.");
                unsigned long debut_tentative = millis();
                while (client.available() == 0)
                {
                        delay(10);
                        if (!client.connected())
                        {
                        	erreur(30);
                        	client.stop();
                        	return true;
                        }
			else if ((millis() - debut_tentative) > TIMEOUT)
			{
				erreur(35);
				return true;
			}
                }
                Serial.println("ok");
                
                //passage entetes
                char carac;
                bool clrf = false;
                debut_tentative = millis();
                Serial.println("Entetes...");
                while (true)
                {
                	if ((millis() - debut_tentative) > LONG_TIMEOUT)
			{
				erreur(39);
                                reinitShield();
				return true;
			}
                	
                        if (client.available())
                	{
		        	carac = client.read();
                                Serial.print(carac);
		        	if (carac == '\n')
		        	{
		        		//si deux retours à la ligne de suite lus, entetes passés
		        		if (clrf) break;
		        		else clrf = true;
		        	}
		        	else if (carac != '\r') clrf = false;
                	}
                        else if ((millis() - debut_tentative) > TIMEOUT)
			{
				erreur(36);
				return true;
			}
                	else if (!client.connected())
                	{
                		erreur(30);
                		return true;
                	}
                }
                Serial.println("ok");
                return false;
        }
        else
        {
                erreur(36);
                return true;
        }
}

//s'assurer que la connexion est fermée
void deconnexionClient()
{
        while (client.connected()) client.flush();
        client.stop();
}

//réinitialisation de l'ethernet shield
void reinitShield()
{
        client.stop();
        Serial.println("reinit reseau");
        delay(1000);
        Ethernet.begin(mac, ip, gateway, subnet);
        delay(1000);
        Serial.println("ok");
}

(je numérote les erreurs pour économiser de la mémoire)