slib/mp_rpc_server: TIRPC: force a listen() call on the server socket
authorJon Trulson <jon@radscan.com>
Mon, 2 Jul 2018 01:19:24 +0000 (01:19 +0000)
committerJon Trulson <jon@radscan.com>
Mon, 2 Jul 2018 01:45:09 +0000 (19:45 -0600)
commitdc7807b13bd140d9cd519e5770e7f0580a1a7365
tree15f80b1cdf18b7f0a97b108517eb84e7558af4dc
parenteb811f26f80af8ceec3c6e48045cc6e0616c0a2d
slib/mp_rpc_server: TIRPC: force a listen() call on the server socket

With earlier versions of RPC and TIRPC it seems that svctcp_create()
calles listen() on the socket (as seen by debugger and strace).
Tooltalk expects this behavior.

However, with newer systems (ArchLinux 5/18+ and similar bleeding edge
versions of SuSE's equivalent: Tumbleweed), this behavior seems to
have changed.

ttsession goes into an infinite loop trying to accept() a connection
in the TIRPC library (via svc_getreqset()).

It appears listen() is no longer called on the socket when it is
created via svctcp_create().  The hack in this commit, always causes
listen() to be called on the socket, and seems to resolve the problem.

But it is a hack I think.  I don't know if this is the correct
behavior of svctcp_create() or we were just lucky before.
cde/lib/tt/slib/Imakefile
cde/lib/tt/slib/mp_rpc_server.C