Web server rejected a connection

I want to create a web server that will update a value of analog input on a page. The problem is that when I’m refreshing the page the second or third time, the system fails and I’ve got this message:

Server rejected connection.

What can cause this error? I use AJAX requests to update the value automatically.

void GetAjaxData(EthernetClient cl) {
  int analog_val;
  // read analog pin A0
  analog_val = analogRead(0);
  cl.print("<p>Analog 0: ");

void loop() {
  EthernetClient client = server.available();  // try to get client
  if (client) {  // got client?
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {   // client data available to read
        char c = client.read(); // read 1 byte (character) from client
        HTTP_req += c;  // save the HTTP request 1 char at a time
        // last line of client request is blank and ends with \n
        // respond to client only after last line received
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: keep-alive");
          // AJAX request for switch state
          if (HTTP_req.indexOf("ajax_switch") > -1) {
            // read switch state and analog input
          } else {  // HTTP request for web page
            // send web page - contains JavaScript with AJAX calls
            client.println("<!DOCTYPE html>");
            client.println("<title>Arduino Web Page</title>");
            client.println("function GetSwitchAnalogData() {");
              "nocache = \"&nocache=\" + Math.random() * 1000000;");
            client.println("var request = new XMLHttpRequest();");
            client.println("request.onreadystatechange = function() {");
            client.println("if (this.readyState == 4) {");
            client.println("if (this.status == 200) {");
            client.println("if (this.responseText != null) {");
            client.println("document.getElementById(\"sw_an_data\")\.innerHTML = this.responseText;");
              "request.open(\"GET\", \"ajax_switch\" + nocache, true);");
            client.println("setTimeout('GetSwitchAnalogData()', 200);");
            client.println("<body onload=\"GetSwitchAnalogData()\">");
            client.println("<h1>Arduino AJAX Input</h1>");
            client.println("<div id=\"sw_an_data\">");
          // display received HTTP request on serial port
          HTTP_req = ""; // finished with request, empty string
        // every line of text received from the client ends with \r\n
        if (c == '\n') {
          // last character on line of received text
          // starting new line with next character read
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // a text character was received from client
          currentLineIsBlank = false;
      } // end if (client.available())
    } // end while (client.connected())
    delay(1); // give the web browser time to receive the data
    client.stop(); // close the connection
  } // end if (client)


Post complete code, not excerpts. Usually the error is in the code part that you're hiding from us.

What type of Arduino are you using? What Ethernet hardware are you using? There might be memory shortages because of the many strings used. Do you know the F() macro to keep these in flash and don't waste RAM for them?

I'm using Intel Edison with built in Ethernet but it can be programmed just like Arduino and the code I presented is almost all I've got except setup.

the code I presented is almost all I've got except setup.

There are TWO exclusions there. Almost all is NOT good enough. Except setup() is NOT good enough.