title: Bug keep-alive delay
body: <p>This code connect using keep-alive to load lots of domains that share the same IP Address, but there's a bug after the first 25 domains, witch is a 30 seconds delay at every domain load! How to solve this?</p>
  
  <pre><code>#pragma comment(lib,"ws2_32.lib")
  #include &lt;WinSock2.h&gt;
  #include &lt;iostream&gt;
  int main(){
      WSAData wsaData;
      WORD DllVersion = MAKEWORD(2, 1);
      if (WSAStartup(DllVersion, &amp;wsaData) != 0) {
          MessageBoxA(NULL, "Winsock startup failed", "Error", MB_OK | MB_ICONERROR);
          exit(1);
      }
      SOCKADDR_IN addr;
      int sizeofaddr = sizeof(addr);
      addr.sin_addr.s_addr = inet_addr("123.123.123.123");
      addr.sin_port = htons(80);
      addr.sin_family = AF_INET;
      SOCKET Connection = socket(AF_INET, SOCK_STREAM, NULL);
      if (connect(Connection, (SOCKADDR*)&amp;addr, sizeofaddr) != 0)
      {
          MessageBoxA(NULL, "Failed to Connect", "Error", MB_OK | MB_ICONERROR);
          return 0;
      }
      std::cout &lt;&lt; "Connected!" &lt;&lt; std::endl;
      char MTD[] = "GET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost:site.com\r\nConnection:close\r\n\r\n";
      send(Connection, MTD, sizeof(MTD), NULL);
      char MOTD[1];
      int result;
      while ((result = recv(Connection, MOTD, 1, NULL)) &gt; 0){
          std::cout &lt;&lt; MOTD[0]; // ...
      }
      if (result == 0) {
          // end of stream
          std::cout &lt;&lt; "end of stream";
          close(Connection);
      } else if (result &lt; 0) {
          // error
          std::cout &lt;&lt; "error";
          perror("recv"); // at least
          close(Connection);
      } else {
          std::cout &lt;&lt; "data received";
          // data received, in MOTD[0..result-1]
      }
  };
  </code></pre>