Arduino gives up / Flooding ethershield?

Hello SurferTim:

The function "ServerComms" does that. The code is below:

int ServerComms( int sid, String bid, int mode, byte srv )
{
//  sid = Device ID
//  bid = Badge ID (for reading, 0 otherwise)
//  mode 0 = Register, 1 = Poll 2 = GetAuth
//  srv = Server

  char resp;         // Server response, should always be one character.
  String getrequest; // GET request formatted prior to sending to server.

  switch (mode)
  {
    //register  "GET /ardurfid/commander.php?sta=XX&mode=reg"; XX is Station ID
    case 0:
      getrequest = "GET /ardurfid/commander.php?sta=";
      getrequest += stationID;
      getrequest += "&mode=reg HTTP/1.0";
    break;
  
    //poll "GET /ardurfid/commander.php?sta=XX&mode=poll"; XX is Station ID
    case 1:
        getrequest = "GET /ardurfid/commander.php?sta=";
        getrequest += stationID;
        getrequest += "&mode=poll HTTP/1.0";
    break;
  
    //getauth "GET /ardurfid/commander.php?sta=XX&mode=auth&bid=YYYYYYYYYYY" XX is Station ID, YYYYYYYY is read card ID.
    case 2:
      getrequest = "GET /ardurfid/commander.php?sta=";
      getrequest += stationID;
      getrequest += "&mode=auth&card=";
      getrequest += bid;
      getrequest +=" HTTP/1.0";  
  break;

  } // END of case statement
  Serial.print("Request:");
  Serial.println(getrequest);

  if (client.connect(server, 80)) 
    {
    client.println(getrequest);
    client.println(); 
    } 
    else
    {
    // Do nothing if we have no connection. Light stays red
    // indicating fault.
    for (;;) 
    {
      }
    }   
  while(client.connected()) 
  {
    while(client.available()) 
    {
      char c = client.read();
      // Read for API's response started with a #
      if ( c == '#' )
      {
        c = client.read();
        if ( c == '1')
          {
           client.stop();
           Serial.println("API says YES");        
           return 1;
          }
          else
          {
            client.stop();
            Serial.println("API says NO");
            return 0;
          }
      }
    }
  }
}