> Below is link to httpGate trace (it seems there is no strace in
> FreeBSD, so I used "truss"):
> or should I include trace log directly into the message?
No, that's fine. I've downloaded it. Thanks!
Looking at the output
4.13311: read(4,"GET / HTTP/1.1\r\nHost: mtmlab.homedns.org\r\nUser-Agent:
we see that 'httpGate' correctly fully reads the first line. So it is
not the receiving side (as I suspected), and thus has nothing to do with
the fix last March.
Also, your observations were right in that only a parial line is sent:
10.13311: write(3,"GET /",5) = 5 (0x5)
11.13311: write(3," HTTP/1.1\r\n",11) = 11 (0xb)
But this is correct, it is explicitly programmed in lines 243 ff. of
wrBytes(srv, buf, p - buf); // This writes "GET /"
wrBytes(srv, q, p - q); // and this writes the rest of the line
To my understanding 'httpGate' behaves correctly. It should be all right
to send a single line in two chunks.
So we are back at the beginning. Why does 'line' return before it
received a complete line? I do not agree with you that it might be a
problem on the TCP-level due to transmitting the line in two packets.
'line' only terminates when it receives either end-of-line or
end-of-file. Could it be that some signal is involved, or something
unexpected happens on the receiving (picolisp) side?
Any ideas anybody?