[Spread-cvs] cvs commit: spread/daemon groups.c
wyvern at spread.org
wyvern at spread.org
Tue Jul 12 09:50:34 EDT 2011
wyvern 04/11/01 20:26:13
Modified: daemon groups.c
Log:
Fixed bug in G_build_groups_buf where daemon iterator wasn't set properly.
.
Revision Changes Path
1.20 +39 -41 spread/daemon/groups.c
Index: groups.c
===================================================================
RCS file: /storage/cvsroot/spread/daemon/groups.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- groups.c 29 Oct 2004 21:13:07 -0000 1.19
+++ groups.c 2 Nov 2004 01:26:12 -0000 1.20
@@ -1805,27 +1805,27 @@
* a sequence, and that the sorted order is preserved from the GroupsList. */
static int G_build_groups_buf( char buf[], struct skiplistnode **giter_ptr, struct skiplistnode **diter_ptr )
{
- int num_bytes;
+ int num_bytes;
- char *memb_id_ptr;
- char *flag_ptr; /* char, only need 1 bit, really */
- char *synced_set_size_ptr; /* int32u */
- char *synced_set_procs_ptr; /* int32 */
-
- group *grp;
- daemon_members *dmn;
- char *proc_id_ptr; /* int32 */
- char *dmn_memb_id_ptr; /* membership_id */
- member *mbr;
- struct skiplistnode *giter, *diter, *iter;
- char *num_dmns_ptr; /* int16u */
- int16u num_dmns;
- char *num_memb_ptr; /* int16u */
- int16u num_memb;
- char *memb_ptr;
+ char *memb_id_ptr;
+ char *flag_ptr; /* char, only need 1 bit, really */
+ char *synced_set_size_ptr; /* int32u */
+ char *synced_set_procs_ptr; /* int32 */
+
+ group *grp;
+ daemon_members *dmn;
+ char *proc_id_ptr; /* int32 */
+ char *dmn_memb_id_ptr; /* membership_id */
+ member *mbr;
+ struct skiplistnode *iter;
+ char *num_dmns_ptr; /* int16u */
+ int16u num_dmns;
+ char *num_memb_ptr; /* int16u */
+ int16u num_memb;
+ char *memb_ptr;
- int32u size_needed;
- int couldnt_fit_daemon;
+ int32u size_needed;
+ int couldnt_fit_daemon;
/* A GROUPS message looks like this:
* (Representative's name is in header, so we can get his proc id)
@@ -1852,11 +1852,11 @@
* member's private group name (MAX_GROUP_NAME)
*/
- num_bytes = 0;
+ num_bytes = 0;
- memb_id_ptr = &buf[num_bytes];
- num_bytes += sizeof( membership_id );
- memcpy( memb_id_ptr, &Reg_memb_id, sizeof( membership_id ) );
+ memb_id_ptr = &buf[num_bytes];
+ num_bytes += sizeof( membership_id );
+ memcpy( memb_id_ptr, &Reg_memb_id, sizeof( membership_id ) );
flag_ptr = &buf[num_bytes];
num_bytes += sizeof(char);
@@ -1877,28 +1877,28 @@
/* Resume where we left off in the GroupsList */
couldnt_fit_daemon = 0;
- giter = (*giter_ptr) ? (*giter_ptr) : (sl_getlist( &GroupsList ));
- grp = (giter) ? (group *) giter->data : NULL;
- for( ; grp != NULL ; grp = sl_next( &GroupsList, &giter ) )
- {
+ *giter_ptr = (*giter_ptr)? (*giter_ptr) : (sl_getlist(&GroupsList));
+ grp = (*giter_ptr)? (group *) (*giter_ptr)->data : NULL;
+ for( ; grp != NULL ; grp = sl_next(&GroupsList, giter_ptr) )
+ {
/* To have information about this group, we need to be able to fit
* its name, ID, and the number of daemons it has in this message. */
size_needed = MAX_GROUP_NAME + sizeof(group_id) + sizeof(int16u);
if( size_needed > GROUPS_BUF_SIZE - num_bytes ) break;
- memcpy( &buf[num_bytes], grp->name, MAX_GROUP_NAME );
- num_bytes += MAX_GROUP_NAME;
+ memcpy( &buf[num_bytes], grp->name, MAX_GROUP_NAME );
+ num_bytes += MAX_GROUP_NAME;
memcpy( &buf[num_bytes], &grp->grp_id, sizeof(group_id) );
num_bytes += sizeof(group_id);
- num_dmns_ptr = &buf[num_bytes];
- num_bytes += sizeof(int16u);
- num_dmns = 0;
-
- diter = (*diter_ptr) ? (*diter_ptr) : (sl_getlist( &grp->DaemonsList ));
- dmn = (diter) ? (daemon_members *) diter->data : NULL;
- for( ; dmn != NULL; dmn = sl_next( &grp->DaemonsList, &diter ) )
+ num_dmns_ptr = &buf[num_bytes];
+ num_bytes += sizeof(int16u);
+ num_dmns = 0;
+
+ *diter_ptr = (*diter_ptr)? (*diter_ptr) : (sl_getlist(&grp->DaemonsList));
+ dmn = (*diter_ptr)? (daemon_members *) (*diter_ptr)->data : NULL;
+ for( ; dmn != NULL; dmn = sl_next(&grp->DaemonsList, diter_ptr) )
{
/* To store this daemon's information about the current group,
* we need to be able to store its proc_id, memb_id, number of
@@ -1924,8 +1924,8 @@
num_memb = 0;
iter = sl_getlist( &dmn->MembersList );
- mbr = (iter) ? (member *) iter->data : NULL;
- for( ; mbr != NULL ; mbr = sl_next( &dmn->MembersList, &iter ) )
+ mbr = (iter)? (member *) iter->data : NULL;
+ for( ; mbr != NULL ; mbr = sl_next(&dmn->MembersList, &iter) )
{
/* Add to the buffer all group members from this daemon. */
memb_ptr = &buf[num_bytes];
@@ -1944,9 +1944,7 @@
if( couldnt_fit_daemon )
break;
}
- *giter_ptr = giter;
- *diter_ptr = diter;
- return( num_bytes );
+ return( num_bytes );
}
static void G_build_new_groups_bufs()
More information about the Spread-cvs
mailing list