コード例 #1
0
ファイル: test_routerset.c プロジェクト: Archer-sys/tor
static void
NS(test_main)(void *arg)
{
  routerset_t *set;
  const char *s;
  int r;
  (void)arg;

  set = routerset_new();
  s = "$0000000000000000000000000000000000000000";
  r = routerset_parse(set, s, "");
  tt_int_op(r, OP_EQ, 0);
  tt_int_op(digestmap_isempty(set->digests), OP_NE, 1);

  done:
    routerset_free(set);
}
コード例 #2
0
ファイル: rendcache.c プロジェクト: ageis/tor
/** Remove all entries that re REND_CACHE_FAILURE_MAX_AGE old. This is
 * called every second.
 *
 * We have to clean these regurlarly else if for whatever reasons an hidden
 * service goes offline and a client tries to connect to it during that
 * time, a failure entry is created and the client will be unable to connect
 * for a while even though the service has return online.  */
void
rend_cache_failure_clean(time_t now)
{
  time_t cutoff = now - REND_CACHE_FAILURE_MAX_AGE;
  STRMAP_FOREACH_MODIFY(rend_cache_failure, key,
                        rend_cache_failure_t *, ent) {
    /* Free and remove every intro failure object that match the cutoff. */
    DIGESTMAP_FOREACH_MODIFY(ent->intro_failures, ip_key,
                             rend_cache_failure_intro_t *, ip_ent) {
      if (ip_ent->created_ts < cutoff) {
        rend_cache_failure_intro_entry_free(ip_ent);
        MAP_DEL_CURRENT(ip_key);
      }
    } DIGESTMAP_FOREACH_END;
    /* If the entry is now empty of intro point failures, remove it. */
    if (digestmap_isempty(ent->intro_failures)) {
      rend_cache_failure_entry_free(ent);
      MAP_DEL_CURRENT(key);
    }
  } STRMAP_FOREACH_END;