Hi all,

I'm in the process of learning pharo. As an exercise I'm implementing a
"Inter-VM Object channel":
- objects serialized/deserialized via Fuel
- bidi channel connects 2 vm's
- sendObject and receiveObject as api
- transport configurable as either Socket or SharedMem (as an
opportunity to learn the threaded FFI stuff)

During the implementation of the server socket side, I stumbled over a
strange behavior when the backlog is set to a value less than 2:

Here is a simplified version of the server side:

listeningSocket := Socket newTCP.

listeningSocket listenOn: 19999 backlogSize: 1. "NOTE the 1 here!"
clientSocket := listeningSocket waitForAcceptFor: 30.

...

When a client connects:
echo Hallo | nc -v 127.0.0.1 19999

listeningSocket waitForAcceptFor: is unblocked and signals an error
which I think is then masked by another error which is:
"SocketError: cannot access socket error code" which is raised from
Socket primSocketError:

Note that no error is signaled as soon as the backlog size is 2 or more.

- Is there a reason for this behavior or is this a bug?
- Is my analysis correct that the original error is hidden by another
error that is raised during handling of the original error?

Regards,
Martin

--

____________________________________
Martin Fischer

Reply via email to