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.
This commit is contained in:
Jon Trulson
2018-07-02 01:19:24 +00:00
parent eb811f26f8
commit dc7807b13b
2 changed files with 25 additions and 1 deletions

View File

@@ -14,9 +14,10 @@ DEPEND_DEFINES = $(CXXDEPENDINCLUDES) $(DEPENDDEFINES)
#include "../tooltalk.tmpl"
DEFINES =
DEFINES = $(TIRPC_DEFINES)
INCLUDES = $(TIRPCINC) -I. -I../lib
SRCS = \
mp_ce_attrs.C mp_observer.C mp_observer_utils.C \
mp_otype.C mp_otype_utils.C mp_ptype.C \