vos-listaddrs-avoid-holes-in-index-20020805
authorDerrick Brashear <shadow@dementia.org>
Mon, 5 Aug 2002 23:07:12 +0000 (23:07 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 5 Aug 2002 23:07:12 +0000 (23:07 +0000)
index may have holes in it, so make sure we actually walk over the number
of entries we expect

src/volser/vos.c

index 1d57a19..056048f 100644 (file)
@@ -3950,6 +3950,17 @@ register struct cmd_syndesc *as;
       printuuid=1;
   }
 
+  m_addrs.bulkaddrs_val = 0;
+  m_addrs.bulkaddrs_len = 0;
+
+  vcode = ubik_Call_New(VL_GetAddrs, cstruct, 0,
+                        0, 0, &m_unique, &nentries, &m_addrs);
+  if (vcode) {
+    fprintf(STDERR,"vos: could not list the server addresses\n");
+    PrintError("",vcode);
+    return( vcode );
+  }
+
   m_nentries            = 0;
   m_addrs.bulkaddrs_val = 0;
   m_addrs.bulkaddrs_len = 0;
@@ -3959,8 +3970,11 @@ register struct cmd_syndesc *as;
 
       vcode = ubik_Call_New(VL_GetAddrsU, cstruct, 0, &m_attrs, &m_uuid, 
                        &m_unique, &m_nentries, &m_addrs);
-      if(vcode == VL_NOENT)
-         break;
+      if(vcode == VL_NOENT) {
+         i++;
+          nentries++;
+          continue;
+      }
 
       if (vcode) {
          fprintf(STDERR,"vos: could not list the server addresses\n");
@@ -3971,7 +3985,7 @@ register struct cmd_syndesc *as;
       print_addrs(&m_addrs, &m_uuid, m_nentries, printuuid, noresolve);
       i++;
 
-      if ((as->parms[1].items)||(as->parms[0].items))
+      if ((as->parms[1].items)||(as->parms[0].items)||(i>nentries))
          break;
   }