Ethernet als Webserver, unkontrollierter Abbruch

Hallo zusammen,

hoffe ich kann mal wieder auf eure Hilfe zählen :o)

Die Kommunikation (Webserver, AJAX) zwischen MEGA und Client funktioniert soweit ganz gut, doch es kommt so alle 5 Aufrufe vor das der Webserver vom MEGA die Verbindung abbricht

Mit Hilfe von AJAX habe ich heraus gefunden das es im Sendestatus 3, also beim Sendevorgang zum Abbruch kommt.

Es sind noch knappe 4KB RAM Speicher frei, daran kann es nicht liegen.

Mit dieser Function lese ich die Daten aus einer TXT Datei von der SD-Card aus und generiere ein XML Datei zum senden.

/////////////////////////
// SEND/ TEMPERATUR LOAHG FILE
//////////////////////
void classApp::sendXMLTemperaturLogFile(char *pchID, char* pchFileName) {
  unsigned int iSize = 0;
  char szBuffer[128]; 
  memset(&szBuffer[0], 0, 128*sizeof(char));
  
  char *chPath = (char*)malloc(40 * sizeof(char));
  memset(&chPath[0], 0, 40 * sizeof(char));
  strcat(chPath, "temp/");
  strcat(chPath, pchID);
  strcat(chPath, "/logger/");
  strcat(chPath, pchFileName);
  
  File logFile = SD.open(chPath, FILE_READ); 
  
  classXML pXML;  
  pXML.Open(m_WebServer.getClient());  
  pXML.setItemOpen("TEMPERATURLOGFILE");  
  
  while (logFile.available()) {
    char chBuf = logFile.read();
    if(chBuf == '#') {
      break;
    } 
    if(chBuf == '\r') {
      continue;
    } 
    if(chBuf == ':') {
      pXML.setItemOpen("ITEM"); 
      pXML.setItemDATA("STD", szBuffer);
      memset(&szBuffer[0], 0, 128*sizeof(char));
      iSize = 0;
      continue;
    } 
    if(chBuf == ',') { 
      pXML.setItemDATA("MIN", szBuffer);
      memset(&szBuffer[0], 0, 128*sizeof(char));
      iSize = 0;
      continue;
    } 
    if(chBuf == '\n') {
      pXML.setItemDATA("TEMP", szBuffer);
      pXML.setItemClose("ITEM");
      memset(&szBuffer[0], 0, 128*sizeof(char));
      iSize = 0;
      continue;
    }

    szBuffer[iSize] = chBuf;
    iSize++;   
  }

  pXML.setItemClose("TEMPERATURLOGFILE");
  pXML.Close(); 
  
  logFile.close();
  free(chPath);
}

Irgend welche Ideen woran es liegen könnte?

Grüße speedy

  char *chPath = (char*)malloc(40 * sizeof(char));

wieso schreibst Du das nicht gleich als

  char chPath[40];

?

Du hast vergessen, einen Link zu Deiner ClassXML-Bibliothek zu posten. Zudem ist das nur ein kleiner Ausschnitt aus Deinem Sketch. Bist Du 100% sicher, dass der Fehler hier liegt? Ist während der Abarbeitung dieser Methode immer 4kB Speicher frei?