problem with POST reply and Streaming Ethernet Client functions

the streaming function(s) client findUntil is only working on the first call. While this has been documented in other posts to the forum, I am looking for a method to process the reply stream so that the web page and arduino parameters are updated. Any help appreciated. Change POST service code attached.

[quote]
//=============================================================================
//================================    Pool Settings Page  =====================
//=============================================================================

void showSettings(boolean isPost)
{
 
  if(isPost)
  {
    //====================================== POST Param Processing =========
    Serial.println("Doing POST");// DEBUG
    client.find("\n\r"); // skip to the body
    // find parameters starting with "Solar" stop on the first blank line
  
    Serial.println(F("searching for parms"));
    //====================================================================
//   DEBUG area for POST Capture and Display

    // =============  Solar System ON/OFF ==================
    
   if(client.findUntil("Solar=", "\n\r")){
      
      int val = client.parseInt();       // 0 or 1
      Serial.print("Solar ");
      Serial.print("=");
      Serial.println(val);
     SolarSystem = val;
     Serial.print("SetSolarVal=");
     Serial.println(SolarSystem);
    }
    else
    // ================  WaterValve ON/OFF      ========================
    
    if(client.findUntil("WaterValve=", "\n\r")){
      
      int val = client.parseInt();       // 0 or 1
      Serial.print("WaterValve ");
      Serial.print("=");
      Serial.println(val);
     WaterValvePositionCurrent = val;
     Serial.print("SetWaterValve=");
     Serial.println(WaterValvePositionCurrent);
     digitalWrite(WaterValve_Pin, val);
    }
    else
      // ================  DrainValve ON/OFF      ========================
    
    if(client.findUntil("Drain=","\n\r")){
      
      int val = client.parseInt();       // 0 or 1
      Serial.print("DrainValve ");
      Serial.print("=");
      Serial.println(val);
     DrainValvePositionCurrent = val;
     Serial.print("SetDrainValve=");
     Serial.println(DrainValvePositionCurrent);
     digitalWrite(DrainValve_Pin, val);
    }
    else
      // ================  Set New Temp SetPoint      ========================
   
    if(client.find("New+Set+Point=")){
      
      int val = client.parseInt();       // 0 or 1
      Serial.print("SetPoint Update ");
      Serial.print("=");
      Serial.println(val);
     SolarSetPoint = val;
     Serial.print("New SetPoint=");
     Serial.println(SolarSetPoint);
    }
    
 // ===================  Show Setting Options  =================   
  }
  Serial.println(F("Pool Settings"));
  sendHeader("Multi-page Pool Settings");
  client.println(F("<h1 style=\"text-align:center;color:blue\">Pool Settings</h1>"));
// =========================================================
    client.println(F("<h2>Change Options</h2>"));
    client.println(F("<hr /><h3>Enable Pool System</h3>"));
    
 //=========================================================
    // Table with 3 entries and no borders
      client.println(F("<table cellspacing=\"10\"><tr>"));  
      client.println(F("<td>"));
      
 htmlButton( "On", "Solar", ON);
 
      client.println(F("</td>"));  
      client.println(F("<td>"));
       
 htmlButton("Off", "Solar", OFF);
 
      client.println(F("</td>"));  
      client.println(F("<td>"));
   
   if(SolarSystem == OFF)
   {
      client.print("    System is OFF");
      printP(led_off);
   }
    else
    {
      client.print("    System is ON");
      printP(led_on);
    }
      client.println(F("</td>"));  
      client.println(F("</tr></table>"));
            client.println(F("</td>"));  
      client.println(F("</tr></table>"));
 //============================================================
  
    client.print(F("</form></p><h3>Change Pool Temp Settings</h3>"));
          
 //=========================================================
    // Table with 2 entries and no borders
      client.println(F("<table cellspacing=\"10\"><tr>"));  
      client.println(F("<td>"));
      
 client.print(F("<p>Solar Heat SetPoint: (Range 75 to 99 degrees F)
 Current Setting: "));
 client.print(SolarSetPoint);
 client.print(F(" &deg F</p"));
     client.println(F("</td>"));  
     client.println(F("<td>"));
       
 client.print(F("<form action='/Settings/' method= 'POST' ><input type=\"text\" size = '3' name=\"New Set Point\"><input type=\"submit\" value=\"TempSet\"><form type=”submit”
"));
 
     client.println(F("</td>"));  
     client.println(F("</tr></table>"));
 
 //============================================================
   
     client.print(F("</p><h3>Add Water To Pool</h3><p>"));
             
 //=========================================================
    // Table with 3 entries and no borders
      client.println(F("<table cellspacing=\"10\"><tr>"));  
      client.println(F("<td>"));
      
  htmlButton( "On", "WaterValve", ON);
 
      client.println(F("</td>"));  
      client.println(F("<td>"));
       
 htmlButton("Off", "WaterValve", OFF);
 
      client.println(F("</td>"));  
      client.println(F("<td>"));
   
   if(digitalRead(WaterValve_Pin) == LOW)
   {
      client.print("    Valve is Off");
      printP(led_off);
    }
    else
    {
      client.print("    Valve is On");
      printP(led_on);
    }
  
      client.println(F("</td>"));  
      client.println(F("</tr></table>"));
 //============================================================
  
     client.print(F("</p><h3>Drain Water From Pool</h3><p>"));
                 
 //=========================================================
    // Table with 3 entries and no borders
      client.println(F("<table cellspacing=\"10\"><tr>"));  
      client.println(F("<td>"));
      
  htmlButton( "Open", "Drain", ON);
 
      client.println(F("</td>"));  
      client.println(F("<td>"));
       
 htmlButton("Close", "Drain", OFF);
 
      client.println(F("</td>"));  
      client.println(F("<td>"));
   
   if(digitalRead(DrainValve_Pin) == LOW)
   {
      client.print("    Drain Valve is Closed");
      printP(led_off);
   }
    else
    {
      client.print("    Drain Valve is Open");
      printP(led_on);
    }

      client.println(F("</td>"));  
      client.println(F("</tr></table>"));
 //============================================================
 
   Serial.print("Debug After Settings>"); 
   Serial.println(buffer); //DEBUG

  }
  //   =====================   Functions    =============================
  
  

// create an HTML button
void htmlButton( char * label, char *name, int value)
{
  client.print(F("<form action='/Settings/' method='POST'><p><input type='hidden' name='"));
  client.print(name);
  //client.print(nameId);
  client.print(F("' value='"));
  client.print(value);
  client.print(F("'><input type='submit' value='"));
  client.print(label);
  client.print(F("'/></form>"));
}

[/quote]

PoolServer2.ino (35.5 KB)