Web Server code fails to function with change in Serial Print text

I am using code from a post (Home Automation) as modified by "briankTHISISIT" that works as it is suppose to unless I change the 'Serial.println("Activate Button");' to anything else in the double quotes. This makes no sense to me as it is just a print to the serial port ans I can't see how it would make the code drop through the code and not execute properly. The code seems to run but not properly after any change to the print "text".

Any thoughts?

If I blank the print statements out as shown in the code it works and also if I put the code back exactly with the same "text' [Serial.println("Activate Button");] it work too.

I am new with Arduino and the Ethernet Shield but this seems very odd to me.

THX Russell

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0x12, 0x15, 0x57, 0xFF, 0xAA, 0x07 };
IPAddress ip(169,254,86,101);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

String readString = String(100); //string for fetching data from address

void setup()
{
  Serial.begin(9600);

  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);

  // start the Ethernet connection and the server:

  Serial.println("Initiaizing ethernet...");

  // this uses a fixed address
  Ethernet.begin(mac, ip);

  // get an address with DHCP
  //if (Ethernet.begin(mac) == 0)
  //  Serial.println("Failed to configure Ethernet using DHCP");

  // give the card a second to initialize 
  delay(1000);

  server.begin();

  Serial.print("Garage Door Opener Control Ready at IP address ");
  Serial.println(Ethernet.localIP());
}

void loop()
{
  // command received (one character)  '1' - activate garage door button
  char cmd = 0;          // 1 - pulse button
  boolean done = false;  // set to indicate that response is complete

    // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {

    Serial.println("new client");
    readString = "";

    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        //int i = c;
        //Serial.print("(");
        //Serial.print(i);
        //Serial.print(")");

        // store character received in receive string
        if (readString.length() < 100) {
          readString += (c);
        }

        // check for end of line
        if (c == '\n') {
          //Serial.print("Receved line: ");
          //Serial.print(readString);  

          // process line if its the "GET" request
          // a request looks like "GET /?1" or "GET /?2"
          if (readString.indexOf("GET") != -1) {
            if (readString.indexOf("?1") != -1)
              cmd = '1';
            // check for other commands here. ie turn on light, etc.
            if (readString.indexOf("?2") != -1)
              cmd = '2';  
            if (readString.indexOf("?3") != -1)
              cmd = '3'; 
            if (readString.indexOf("?4") != -1)
              cmd = '4'; 
            if (readString.indexOf("?5") != -1)
              cmd = '5'; 
            if (readString.indexOf("?6") != -1)
              cmd = '6'; 
            if (readString.indexOf("?7") != -1)
              cmd = '7';
            if (readString.indexOf("?8") != -1)
              cmd = '8'; 

          }              

          // if a blank line was received (just cr lf, length of 2), then its the end of the request
          if (readString.length() == 2) {
            if (cmd == '1'){
              //Serial.println("1 On");
              digitalWrite(5, HIGH);

            }
            if (cmd == '2'){
              //Serial.println("1 Off");
              digitalWrite(5, LOW);

            }
            if (cmd == '3'){
             // Serial.println("2 On");
              digitalWrite(6, HIGH);

            }
            if (cmd == '4'){
             // Serial.println("Activate Button");
              digitalWrite(6, LOW);

            }
            if (cmd == '5'){
              Serial.println("Activate Button");
              digitalWrite(7, HIGH);

            }
            if (cmd == '6'){
             // Serial.println("Activate Button");
              digitalWrite(7, LOW);

            }
            if (cmd == '7'){
            //  Serial.println("4 On");
              digitalWrite(8, HIGH);

            }
            if (cmd == '8'){
              Serial.println("4 Off");
              digitalWrite(8, LOW);

            }

            // add other commands here

            // send web page back to client 
            Serial.println("sending web page");
            SendWebPage(client); 
            Serial.println("web page sent");

            cmd = 0;

            // break out and disconnect. This will tell the browser the request is complete without having to specify content-length
            break;

          }  // end of request reached

          // start line over            
          readString = "";
        }  // end of line reached
      }  // end data is available from client
    }  // end cient is connected
    // give the web browser time to receive the data
    Serial.println("delay before disconnect");
    delay(100);
    // close the connection:
    client.stop();
    Serial.println("client disonnected"); 
  }  // end client has been created
}

// send web page
void SendWebPage(EthernetClient client)
{
  client.println("HTTP/1.1 200 OK"); 
  client.println("Content-Type: text/html"); 
  // to specify the length, wooul have to construct the entire string and then get its length
  //client.println("Content-Length: 1234"); 
  client.println("Connnection: close"); 
  client.println(); 

  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head>");
  client.println("<title>Home Automation Control</title>");

  client.println("<style type='text/css'>");
  client.println(".label {font-size: 30px; text-align:center;}");
  client.println("button {width: 160px; height: 70px; font-size: 30px; -webkit-appearance: none; background-color:#1fe3ee; }");
  client.println("</style>");

  client.println("<script type='text/javascript'>");

  client.println("function OnButtonClicked(parm) { window.location.href=\"X?\" + parm; }");

  client.println("</script>");

  client.println("</head>");

  client.println("<body style=\"background-color:#3b5998\">");

  client.println("<div class=\"label\">");

  client.println("Home Garage Control

");

  // future idea: could read a limit switch on the garage door here and tell the user if the door is currently open or closed
  /*
   if (digitalRead(DOOR_OPEN_INPUT) == HIGH)
   client.println("Door is Open"); 
   else  
   client.println("Door is Closed"); 
   client.println("
");
   */

  // door open / close button
  if (digitalRead(5)==LOW){
    client.println("<button onclick=\"OnButtonClicked('1');\">1 ON</button>

");
  }
  if (digitalRead(5)==HIGH){
    client.println("<button onclick=\"OnButtonClicked('2');\">1 Off</button>

");
  }   
  if (digitalRead(6)==LOW){
    client.println("<button onclick=\"OnButtonClicked('3');\">2 ON</button>

");
  }
  if (digitalRead(6)==HIGH){
    client.println("<button onclick=\"OnButtonClicked('4');\">2 Off</button>

");
  }  
  if (digitalRead(7)==LOW){
    client.println("<button onclick=\"OnButtonClicked('5');\">3 ON</button>

");
  }
  if (digitalRead(7)==HIGH){
    client.println("<button onclick=\"OnButtonClicked('6');\">3 Off</button>

");
  }   
  if (digitalRead(8)==LOW)
  { 
    client.println("<button onclick=\"OnButtonClicked('7');\">4 ON</button>

");
  }
  if (digitalRead(8)==HIGH){
    client.println("<button onclick=\"OnButtonClicked('8');\">4 Off</button>

");
  }


  // add more buttons here
  // button separator



  client.println("</div>");

  client.println("</body>");
  client.println("</html>");

  client.println("");
}

You may be running out of memory. Try using the F() macro on your ststic text like below to save memory.

//example of web page bundled in single F() macro
//get submit box code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html or use a '
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString;

//////////////////////

void setup(){

 pinMode(5, OUTPUT); //pin selected to control
 pinMode(6, OUTPUT); //pin selected to control
 pinMode(7, OUTPUT); //pin selected to control
 pinMode(8, OUTPUT); //pin selected to control
 //start Ethernet
 Ethernet.begin(mac, ip, gateway, gateway, subnet);
 server.begin();

 //enable serial data print
 Serial.begin(9600);
 Serial.println(F("server text box test1")); // so I can keep track of what is loaded
}

void loop(){
 // Create a client connection
 EthernetClient client = server.available();
 if (client) {
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();

       //read char by char HTTP request
       if (readString.length() < 100) {

         //store characters to string
         readString += c;
         //Serial.print(c);
       }

       //if HTTP request has ended
       if (c == '\n') {

         ///////////////
         Serial.println(readString); //see what was captured

         //now output HTML data header

client.print(F(  //start F() macro
"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"
"<HTML>"
"<HEAD>"
"<meta name='apple-mobile-web-app-capable' content='yes' />"
"<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />"
"<TITLE>JAVA Page</TITLE>"
"</HEAD>"
"<BODY>"
"<H1>JAVA</H1>"
"<hr />"
"
"
"<FORM ACTION='/' method=get >"
"Enter Code: <INPUT TYPE=TEXT NAME='LED' VALUE='' SIZE='25' MAXLENGTH='50'>
"
"
"
"<input type=submit value='5 ON' style=width:100px;height:45px onClick=location.href='/?on8;'><input type=submit value='5 OFF' style=width:100px;height:45px onClick=location.href='/?off9;'>
"
"<input type=submit value='6 ON' style=width:100px;height:45px onClick=location.href='/?on8;'><input type=submit value='6 OFF' style=width:100px;height:45px onClick=location.href='/?off9;'>
"
"<input type=submit value='7 ON' style=width:100px;height:45px onClick=location.href='/?on8;'><input type=submit value='7 OFF' style=width:100px;height:45px onClick=location.href='/?off9;'>
"
"<input type=submit value='8 ON' style=width:100px;height:45px onClick=location.href='/?on8;'><input type=submit value='8 OFF' style=width:100px;height:45px onClick=location.href='/?off9;'>
"
"</FORM>"
"</BODY>"
"</HTML>"
));   //end F() macro

         delay(1);
         //stopping client
         client.stop();

         /////////////////////
         if(readString.indexOf("5") >0)//checks for on
         {
           digitalWrite(5, HIGH);    // set pin 5 high
           Serial.println(F("Led On"));
         }
         if(readString.indexOf("50") >0)//checks for off
         {
           digitalWrite(5, LOW);    // set pin 5 low
           Serial.println(F("Led Off"));
         }
         
         if(readString.indexOf("6") >0)//checks for on
         {
           digitalWrite(6, HIGH);    // set pin 6 high
           Serial.println(F("Led 6 On"));
         }
         if(readString.indexOf("60") >0)//checks for off
         {
           digitalWrite(6, LOW);    // set pin 6 low
           Serial.println(F("Led 6 Off"));
         }
         
         if(readString.indexOf("7") >0)//checks for on
         {
           digitalWrite(7, HIGH);    // set pin 7 high
           Serial.println(F("Led On"));
         }
         if(readString.indexOf("70") >0)//checks for off
         {
           digitalWrite(7, LOW);    // set pin 7 low
           Serial.println(F("Led Off"));
         }
         
         if(readString.indexOf("8") >0)//checks for on
         {
           digitalWrite(8, HIGH);    // set pin 8 high
           Serial.println(F("Led On"));
         }
         if(readString.indexOf("80") >0)//checks for off
         {
           digitalWrite(8, LOW);    // set pin 8 low
           Serial.println(F("Led Off"));
         }
         //clearing string for next read
         readString="";

       }
     }
   }
 }
}

I tried that and it seems to work. THX