コード例 #1
0
ファイル: blacklist.c プロジェクト: darnir/mget
mget_iri_t *blacklist_add(mget_iri_t *iri)
{
	if (!iri)
		return NULL;

	if (mget_iri_supported(iri)) {
		mget_thread_mutex_lock(&mutex);

		if (!blacklist) {
			blacklist = mget_hashmap_create(128, -2, (unsigned int(*)(const void *))hash_iri, (int(*)(const void *, const void *))mget_iri_compare);
			mget_hashmap_set_destructor(blacklist, (void(*)(void *, void *))_free_entry);
		}

		if (!mget_hashmap_contains(blacklist, iri)) {
			// info_printf("Add to blacklist: %s\n",iri->uri);
			mget_hashmap_put_noalloc(blacklist, iri, NULL); // use hashmap as a hashset (without value)
			mget_thread_mutex_unlock(&mutex);
			return iri;
		}

		mget_thread_mutex_unlock(&mutex);
	}

	mget_iri_free(&iri);

	return NULL;
}
コード例 #2
0
ファイル: ocsp.c プロジェクト: BIllli/mget
mget_ocsp_db_t *mget_ocsp_db_init(mget_ocsp_db_t *ocsp_db)
{
	if (!ocsp_db)
		ocsp_db = xmalloc(sizeof(mget_ocsp_db_t));

	memset(ocsp_db, 0, sizeof(*ocsp_db));

	ocsp_db->fingerprints = mget_hashmap_create(16, -2, (unsigned int(*)(const void *))_hash_ocsp, (int(*)(const void *, const void *))_compare_ocsp);
	mget_hashmap_set_key_destructor(ocsp_db->fingerprints, (void(*)(void *))mget_ocsp_free);
	mget_hashmap_set_value_destructor(ocsp_db->fingerprints, (void(*)(void *))mget_ocsp_free);

	ocsp_db->hosts = mget_hashmap_create(16, -2, (unsigned int(*)(const void *))_hash_ocsp, (int(*)(const void *, const void *))_compare_ocsp);
	mget_hashmap_set_key_destructor(ocsp_db->hosts, (void(*)(void *))mget_ocsp_free);
	mget_hashmap_set_value_destructor(ocsp_db->hosts, (void(*)(void *))mget_ocsp_free);

	mget_thread_mutex_init(&ocsp_db->mutex);

	return ocsp_db;
}
コード例 #3
0
ファイル: stringmap.c プロジェクト: darnir/mget
mget_stringmap_t *mget_stringmap_create_nocase(int max)
{
	return mget_hashmap_create(max, -2, (unsigned int (*)(const void *))hash_string_nocase, (int (*)(const void *, const void *))strcasecmp);
}