Hello,On BSD systems, if recv() returns 0, it means the remote process disconnected, and so coroipcc_dispatch_get() must return CS_ERR_LIBRARY.
On any systems, if recv() return -1 and errno == EINTR, I assume coroipcc_dispatch_get() must return CS_ERR_TRY_AGAIN. However, because the value was set in 'res' instead of 'error', CS_OK is returned instead.
diff --git a/lib/coroipcc.c b/lib/coroipcc.c
index 31de656..27a8b69 100644
--- a/lib/coroipcc.c
+++ b/lib/coroipcc.c
@@ -827,13 +827,16 @@ coroipcc_dispatch_get (
res = recv (ipc_instance->fd, &buf, 1, 0);
if (res == -1 && errno == EINTR) {
- res = CS_ERR_TRY_AGAIN;
+ error = CS_ERR_TRY_AGAIN;
goto error_put;
} else
if (res == -1) {
goto error_put;
}
if (res == 0) {
+#if defined(COROSYNC_BSD) || defined(COROSYNC_DARWIN)
+ error = CS_ERR_LIBRARY;
+#endif
goto error_put;
}
ipc_instance->flow_control_state = 0;
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
