cvs commit: spread/daemon groups.c

[email protected]
Newsgroups gmane.network.spread.cvs
Message-ID <[email protected]>
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()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.