Ayuda con servidor ethernet

Que tal amigos, soy nuevo en este rubro, estoy tratando de implementar un pequeño servidor web para controlar unos led, el proyecto funciona, solo que para poder que responda tengo que darle click al botón mas de una vez, pueden ser 2 o hasta 3 o 4 veces, la verdad no entiendo que hago mal.
Espero y me puedan ayudar. saludos

#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>

byte mac[]={0x90, 0xA2, 0XDA, 0X0D, 0XF4, 0X67};
int estado=0;
IPAddress manualIP(192, 168, 1, 177);
EthernetServer server(80);
boolean dhcpConnected=false;
String cad = String(1000);
void setup() {
pinMode(2,OUTPUT);
digitalWrite(2, LOW);
Serial.begin(9600);
// put your setup code here, to run once:
if (!Ethernet.begin(mac)) {
Ethernet.begin(mac,manualIP);
}
server.begin();
}

void loop() {
// put your main code here, to run repeatedly:
EthernetClient client = server.available();
if(client){
boolean currentLineIsBlank=true;
while(client.connected())
{
if(client.available())
{
char c=client.read();
Serial.print(c);
cad = cad + c;
if(c=='\n' && currentLineIsBlank)
{
if ((cad.lastIndexOf("opcion") >-1) && (cad.lastIndexOf("encender") >-1)){
digitalWrite(2, HIGH);
}
if ((cad.lastIndexOf("opcion") >-1) && (cad.lastIndexOf("apagar") >-1)){
digitalWrite(2, LOW);
}
if (c == '\n' && currentLineIsBlank){
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("Interface arduino");
client.println("
");
client.println("");
client.println("");

client.println("EncenderApagar
");
client.println("
");
client.println("
");

client.println("");
client.print(" ");

break;
}
if(c=='\n')
{
currentLineIsBlank=true;
}
else if(c != '\r')
{
currentLineIsBlank=false;
}
}
}
delay(1);
client.stop();
}

}

amigos ya encontre el error, y es que cuando almaceno el contenido de c en cad, este no se almacena completo,es decir solo se almacenta parte de los datos, como puedo hacer para guardar todos los datos en esa variable, sin que s pierdan?

La variable cad deberias vaciarla una vez has recibido una cadena ,lo que haces es ir añadiendo a lo que ya tienes .despues de los dos if que buscan apagado o encendido en la cadena:
cad = "" ;
Antes del setup(),para definir la cadena:
String cad;
Con :
String cad = String(1000);
Lo que haces es guardar el valor 1000 como texto.

gracias por responder amigo, hice los cambios como me indicaste, pero sigo teniendo el mismo problema como que los datos que envía el cliente no se almacenan completamente en cad, pero cuando mando por serie el carácter c con serial.print(c); ahí veo la trama completa