Просмотр исходного кода

handle case where POLLHUP or POLLERR are not supported by OS

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1311 fd59a12c-fef9-0310-b244-a6a79926bd2f
Fabien Thomas 19 лет назад
Родитель
Сommit
cdb8452805
2 измененных файлов с 7 добавлено и 1 удалено
  1. 6 0
      exec/ipc.c
  2. 1 1
      lib/util.c

+ 6 - 0
exec/ipc.c

@@ -770,6 +770,12 @@ retry_recv:
 		return;
 	} else
 	if (res == 0) {
+#if defined(OPENAIS_SOLARIS) || defined(OPENAIS_BSD) || defined(OPENAIS_DARWIN)
+		/* On many OS poll never return POLLHUP or POLLERR.
+		 * EOF is detected when recvmsg return 0.
+		 */
+  		libais_disconnect_request (conn_info);
+#endif
 		return;
 	}
 

+ 1 - 1
lib/util.c

@@ -260,7 +260,7 @@ retry_recv:
 	 * EOF is detected when recvmsg return 0.
 	 */
 	if (result == 0) {
-		error = SA_AIS_ERR_BAD_HANDLE;
+		error = SA_AIS_ERR_LIBRARY;
 		goto error_exit;
 	}
 #endif