From 82c657dd1564a4d5cff40277048159e02ffe7b4e Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Thu, 21 Jul 2011 15:23:53 +0200 Subject: [PATCH] Fix regression in session IPC handling --- libatalk/util/server_ipc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libatalk/util/server_ipc.c b/libatalk/util/server_ipc.c index f4c8f84f..46f89779 100644 --- a/libatalk/util/server_ipc.c +++ b/libatalk/util/server_ipc.c @@ -214,6 +214,8 @@ int reconnect_ipc(AFPObj *obj) /*! * Read a IPC message from a child * + * This is using an fd with non-blocking IO, so EAGAIN is not an error + * * @args children (rw) pointer to our structure with all childs * @args fd (r) IPC socket with child * @@ -226,9 +228,12 @@ int ipc_server_read(server_child *children, int fd) char buf[IPC_MAXMSGSIZE], *p; if ((ret = read(fd, buf, IPC_HEADERLEN)) != IPC_HEADERLEN) { - if (ret != 0) + if (ret != 0) { + if (errno == EAGAIN) + return 0; LOG(log_error, logtype_afpd, "Reading IPC header failed (%i of %u bytes read): %s", ret, IPC_HEADERLEN, strerror(errno)); + } return -1; } -- 2.39.2