[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