<div dir="auto"><div>Do not use your own taskPool, just use global taskPool proerty (import std.parallelism: taskPool). </div><div dir="auto"><br></div><div dir="auto">You should not set blocking to false. And dont use Thread here.  There is no reason to do that.  Just move that code into the main<br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">Dne 15. 11. 2017 12:15 odp. napsal uživatel "ade90036 via Digitalmars-d-learn" <<a href="mailto:digitalmars-d-learn@puremagic.com">digitalmars-d-learn@puremagic.com</a>>:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">So thanks for the suggestions,  i have fixed HTTP response not postman cal also parse the headers correctly!! happy days.<br>
<br>
I have removed the duration from the Socket.select but the application seems to process a bunch or requests and then it stalls for several seconds (3/5) and then it resumes.<br>
<br>
The httpclinet which i'm using to test the application is reporting: "connection timeout".<br>
<br>
Could this be caused by the GC?<br>
<br>
```updated code<div class="quoted-text"><br>
import std.algorithm : remove;<br>
import std.conv : to;<br>
import core.thread: Thread;<br>
import std.socket : InternetAddress, Socket, SocketException, SocketSet, TcpSocket, SocketShutdown;<br>
import core.time : Duration, dur;<br>
import std.stdio : writeln, writefln;<br>
import std.parallelism : task, TaskPool;<br>
<br></div><div class="quoted-text">
string to_retlf (string s)<br>
{<br>
   import std.algorithm;<br>
   import std.string;<br>
   return s<br>
      .lineSplitter<br>
      .map!(a => chomp (a))<br>
      .join ("\r\n");<br>
}<br>
<br></div><div class="quoted-text">
void main(string[] args)<br>
{<br>
    ushort port;<br>
<br>
    if (args.length >= 2)<br>
        port = to!ushort(args[1]);<br>
    else<br></div>
        port = 4444;<div class="quoted-text"><br>
<br>
    auto listener = new TcpSocket();<br>
    assert(listener.isAlive);<br>
    listener.blocking = false;<br>
    listener.bind(new InternetAddress(port));<br>
    listener.listen(100);<br>
    writefln("Listening on port %d.", port);<br>
<br>
    auto taskPool = new TaskPool(8);<br>
<br></div>
    string response = "HTTP/1.1 200 OK<div class="quoted-text"><br>
Server: dland:v2.076.1<br>
Date: Tue, 11 Nov 2017 15:56:02 GMT<br></div>
Content-Type: text/html; charset=UTF-8<br>
Content-Length: 51<br>
<br>
<html><head></head><body>Hello World!</body></html>".to_retlf<wbr>;<div class="quoted-text"><br>
<br>
    new Thread({<br>
        auto listeningSet = new SocketSet();<br></div>
        while(true) {<br>
            listeningSet.add(listener);<br>
            if (Socket.select(listeningSet, null, null)) {<div class="quoted-text"><br>
                if (listeningSet.isSet(listener))<wbr>        // connection request<br>
                {<br></div>
                    Socket socket = listener.accept();<br>
                    assert(socket.isAlive);<div class="quoted-text"><br>
                    //writefln("Connection from %s established.", socket.remoteAddress().toStrin<wbr>g());<br></div>
                    auto task = task!handle_socket(socket, response);<br>
                    taskPool.put(task);<br>
                }<br>
            }<br>
            listeningSet.reset();<br>
        }<br>
    }).start();<br>
}<br>
<br>
<br>
<br>
void handle_socket(Socket socket, string response) {<div class="quoted-text"><br>
    auto socketSet = new SocketSet();<br>
    while(true) {<br>
        socketSet.add(socket);<br></div>
        if (Socket.select(socketSet, null, null)) {<div class="quoted-text"><br>
            char[1024] buf;<br>
            auto datLength = socket.receive(buf[]);<br>
<br>
            if (datLength == Socket.ERROR)<br>
                writeln("Connection error.");<br>
            else if (datLength != 0)<br>
            {<br>
                //writefln("Received %d bytes from %s: \"%s\"", datLength, socket.remoteAddress().toStrin<wbr>g(), buf[0..datLength]);<br>
                //writefln("Writing response");<br></div>
                socket.send(response);<div class="quoted-text"><br>
            }<br>
            // release socket resources now<br>
<br></div>
            socket.close();<br>
<br>
            break;<br>
<br>
        }<br>
        socketSet.reset();<br>
    }<br>
```<br>
<br>
Regards<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</blockquote></div><br></div></div></div>