It's an http connection in Roxen, so OOB isn't involved.
The first situation shouldn't be possible in a normal Pike process that spawns processes through the Process.* functions, should it?
Is anything using Stdio.Fd directly? I think the only sane thing is to extend it so that it has the data available before entering any pike code at all.
/ Martin Stjernholm, Roxen IS
Previous text:
2003-03-19 14:33: Subject: I/O callbacks in blocking mode
Yes, it is not supposed to be possible for read() to block when select (or poll) has reaturned that data is available.
I can only see two situations that can cause that:
1> The socket is available in two different processes, and the other process gets there first.
2> We actually call read twice from this process, either by using threads, or because the FD is present twice in the fd-set (or list of pollfds), or perhaps OOB-data is read separately, causing this problem?
/ Per Hedbor ()