[Cluster-devel] cluster/ccs/daemon cnx_mgr.c
rohara at sourceware.org
rohara at sourceware.org
Wed Feb 14 16:20:24 UTC 2007
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: rohara at sourceware.org 2007-02-14 16:20:24
Modified files:
ccs/daemon : cnx_mgr.c
Log message:
Ignore EPIPE error when sending response. This can happen is, for example,
rgmanager makes a request, ccs receives/processes the request, but rgmanager
dies before ccs can send the response. Also added retry if we catch EINTR
during write.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/cnx_mgr.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.41&r2=1.41.2.1
--- cluster/ccs/daemon/cnx_mgr.c 2006/05/24 08:53:21 1.41
+++ cluster/ccs/daemon/cnx_mgr.c 2007/02/14 16:20:23 1.41.2.1
@@ -1234,10 +1234,14 @@
fail:
error = write(afd, ch, sizeof(comm_header_t)+ch->comm_payload_size);
- if(error < 0){
- log_sys_err("Unable to write package back to sender");
- return error;
- goto fail;
+ if(error < 0) {
+ if (errno == EINTR)
+ goto fail;
+ if (errno == EPIPE) {
+ error = 0;
+ } else {
+ log_sys_err("Unable to write package back to sender");
+ }
} else if(error < (sizeof(comm_header_t)+ch->comm_payload_size)){
log_err("Unable to write complete package.\n");
error = -EBADE;
@@ -1248,7 +1252,6 @@
if(ch){ free(ch); }
if(payload){ free(payload); }
-
EXIT("process_request");
return error;
More information about the Cluster-devel
mailing list