CVSROOT:        /cvs/cluster
Module name:    cluster
Branch:         RHEL46
Changes by:     [EMAIL PROTECTED]       2008-02-05 22:16:51

Modified files:
        ccs/daemon     : cnx_mgr.c 

Log message:
        Pulled from RHEL4 branch.
        
        BZ 418961
        Fix issue with endian conversion that caused problems for mixed 
architecture
        nodes on same subnet. Need to correct swap byte ordering of 
comm_header_t
        structure before copying into buffer and when dereferencing.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/cnx_mgr.c.diff?cvsroot=cluster&only_with_tag=RHEL46&r1=1.24.2.15&r2=1.24.2.15.4.1

--- cluster/ccs/daemon/cnx_mgr.c        2007/03/19 20:03:15     1.24.2.15
+++ cluster/ccs/daemon/cnx_mgr.c        2008/02/05 22:16:50     1.24.2.15.4.1
@@ -1363,18 +1363,19 @@
     ch->comm_flags |= COMM_BROADCAST_FROM_QUORATE;
   }
 
+  swab_header(ch);
   memcpy(buffer, ch, sizeof(comm_header_t));
+  swab_header(ch); /* Swab back to dip into ch for payload_size */
   memcpy(buffer+sizeof(comm_header_t), payload, ch->comm_payload_size);
 
   log_dbg("Sending cluster.conf (version %d)...\n", 
get_doc_version(master_doc->od_doc));
   sendlen = ch->comm_payload_size + sizeof(comm_header_t);
-  swab_header(ch);
   if(sendto(sfd, buffer, sendlen, 0,
            (struct sockaddr *)&addr, (socklen_t)len) < 0){
     log_sys_err("Sendto failed");
     error = -errno;
   }
-  
+
  fail:
   if(buffer) free(buffer);
   if(payload) free(payload);

Reply via email to