From 2be2be81e0362dca586cfbb6173426edc104fb58 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 10 Jan 2017 12:30:54 +0000 Subject: [PATCH] messaging: Fix dead but not cleaned-up-yet destination sockets Bug: https://bugzilla.samba.org/show_bug.cgi?id=12509 Signed-off-by: Volker Lendecke Reviewed-by: Stefan Metzmacher Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Tue Jan 10 17:40:58 CET 2017 on sn-devel-144 (cherry picked from commit e84e44ce923e5dc7529bb813e10a2890528a4ab0) --- source3/lib/messages.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source3/lib/messages.c b/source3/lib/messages.c index 98bcf82..8e404f7 100644 --- a/source3/lib/messages.c +++ b/source3/lib/messages.c @@ -470,6 +470,17 @@ int messaging_send_iov_from(struct messaging_context *msg_ctx, ret = messaging_dgm_send(dst.pid, iov2, iovlen+1, fds, num_fds); unbecome_root(); + if (ret == ECONNREFUSED) { + /* + * Linux returns this when a socket exists in the file + * system without a listening process. This is not + * documented in susv4 or the linux manpages, but it's + * easily testable. For the higher levels this is the + * same as "destination does not exist" + */ + ret = ENOENT; + } + return ret; } -- 1.9.1