-
- /* Removing the second Peer from the PeerEntry hash map */
- GNUNET_PEER_change_rc(2, -2);
-
- /* convert the pid of the first PeerEntry into that of the third */
- GNUNET_PEER_resolve(1, pidArr[3]);
-
- return 0;
+ }
+
+ /* Dereferencing the first 3 peers once [decrementing their reference count] */
+ GNUNET_PEER_decrement_rcs (ids, 3);
+
+ /* re-referencing the first 3 peers using the change_rc function */
+ for (i = 1; i <= 3; i++)
+ GNUNET_PEER_change_rc (i, 1);
+
+ /* Removing the second Peer from the PeerEntry hash map */
+ GNUNET_PEER_change_rc (2, -2);
+
+ /* convert the pid of the first PeerEntry into that of the third */
+ GNUNET_PEER_resolve (1, &res);
+ GNUNET_assert (0 == memcmp (&res, &pidArr[0], sizeof (res)));
+
+ /*
+ * Attempt to convert pid = 0 (which is reserved)
+ * into a peer identity object, the peer identity memory
+ * is expected to be set to zero
+ */
+ memset (&zero, 0, sizeof (struct GNUNET_PeerIdentity));
+ GNUNET_log_skip (1, GNUNET_YES);
+ GNUNET_PEER_resolve (0, &res);
+ GNUNET_assert (0 == memcmp (&res, &zero, sizeof (res)));
+
+ /* Removing peer entries 1 and 3 from table using the list decrement function */
+ /* If count = 0, nothing should be done whatsoever */
+ GNUNET_PEER_decrement_rcs (ids, 0);
+
+ ids[1] = 3;
+ GNUNET_PEER_decrement_rcs (ids, 2);
+ GNUNET_PEER_decrement_rcs (ids, 2);
+
+ return 0;