+ // if (xbt_dict_size(peer->peers) > 0)
+ // xbt_assert((xbt_dict_size(peer->active_peers) != 0),
+ // "No more active peers !");
+
+
+ // if (peer_choked != NULL && peer_choked->choked_upload != 0)
+ // peer_choked = NULL;
+ // if (peer_choosed != NULL && peer_choosed->choked_upload == 0)
+ // peer_choosed = NULL;
+
+ if (peer_choked != peer_choosed) {
+ if (peer_choked != NULL) {
+ xbt_assert((!peer_choked->choked_upload),
+ "Tries to choked a choked peer");
+ peer_choked->choked_upload = 1;
+ xbt_assert((*((int *) key_choked) == peer_choked->id), "WTF !!!");
+ update_active_peers_set(peer, peer_choked);
+ // xbt_dict_remove_ext(peer->active_peers, key_choked, sizeof(int));
+ XBT_DEBUG("(%d) Sending a CHOKE to %d", peer->id, peer_choked->id);
+ send_choked(peer, peer_choked->mailbox);
+ }
+ if (peer_choosed != NULL) {
+ xbt_assert((peer_choosed->choked_upload),
+ "Tries to unchoked an unchoked peer");
+ peer_choosed->choked_upload = 0;
+ xbt_dict_set_ext(peer->active_peers, (char *) &peer_choosed->id,
+ sizeof(int), peer_choosed, NULL);
+ peer_choosed->last_unchoke = MSG_get_clock();
+ XBT_DEBUG("(%d) Sending a UNCHOKE to %d", peer->id, peer_choosed->id);
+ update_active_peers_set(peer, peer_choosed);
+ send_unchoked(peer, peer_choosed->mailbox);
+ }
+ }