|
@@ -138,52 +138,52 @@ int rend_get_service_id(crypto_pk_env_t *pk, char *out)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/* ==== Hidden service descriptor cache. */
|
|
|
-#define HIDSERV_MAX_AGE 24*60*60
|
|
|
-#define HIDSERV_MAX_SKEW 60*60
|
|
|
+/* ==== Rendezvous service descriptor cache. */
|
|
|
+#define REND_CACHE_MAX_AGE 24*60*60
|
|
|
+#define REND_CACHE_MAX_SKEW 60*60
|
|
|
|
|
|
-typedef struct hidserv_cache_entry_t {
|
|
|
+typedef struct rend_cache_entry_t {
|
|
|
int len;
|
|
|
char *desc;
|
|
|
rend_service_descriptor_t *parsed;
|
|
|
-} hidserv_cache_entry_t;
|
|
|
+} rend_cache_entry_t;
|
|
|
|
|
|
-static strmap_t *hidserv_cache = NULL;
|
|
|
+static strmap_t *rend_cache = NULL;
|
|
|
|
|
|
-void hidserv_cache_init(void)
|
|
|
+void rend_cache_init(void)
|
|
|
{
|
|
|
- hidserv_cache = strmap_new();
|
|
|
+ rend_cache = strmap_new();
|
|
|
}
|
|
|
|
|
|
-void hidserv_cache_clean(void)
|
|
|
+void rend_cache_clean(void)
|
|
|
{
|
|
|
strmap_iter_t *iter;
|
|
|
const char *key;
|
|
|
void *val;
|
|
|
- hidserv_cache_entry_t *ent;
|
|
|
+ rend_cache_entry_t *ent;
|
|
|
time_t cutoff;
|
|
|
- cutoff = time(NULL) - HIDSERV_MAX_AGE;
|
|
|
- for (iter = strmap_iter_init(hidserv_cache); !strmap_iter_done(iter); ) {
|
|
|
+ cutoff = time(NULL) - REND_CACHE_MAX_AGE;
|
|
|
+ for (iter = strmap_iter_init(rend_cache); !strmap_iter_done(iter); ) {
|
|
|
strmap_iter_get(iter, &key, &val);
|
|
|
- ent = (hidserv_cache_entry_t*)val;
|
|
|
+ ent = (rend_cache_entry_t*)val;
|
|
|
if (ent->parsed->timestamp < cutoff) {
|
|
|
- iter = strmap_iter_next_rmv(hidserv_cache, iter);
|
|
|
+ iter = strmap_iter_next_rmv(rend_cache, iter);
|
|
|
rend_service_descriptor_free(ent->parsed);
|
|
|
tor_free(ent->desc);
|
|
|
tor_free(ent);
|
|
|
} else {
|
|
|
- iter = strmap_iter_next(hidserv_cache, iter);
|
|
|
+ iter = strmap_iter_next(rend_cache, iter);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-int hidserv_lookup(char *query, const char **desc, int *desc_len)
|
|
|
+int rend_cache_lookup(char *query, const char **desc, int *desc_len)
|
|
|
{
|
|
|
- hidserv_cache_entry_t *e;
|
|
|
- assert(hidserv_cache);
|
|
|
+ rend_cache_entry_t *e;
|
|
|
+ assert(rend_cache);
|
|
|
if (strlen(query) != REND_SERVICE_ID_LEN)
|
|
|
return -1; /* XXXX also check for bad chars. */
|
|
|
- e = (hidserv_cache_entry_t*) strmap_get_lc(hidserv_cache, query);
|
|
|
+ e = (rend_cache_entry_t*) strmap_get_lc(rend_cache, query);
|
|
|
if (!e)
|
|
|
return 0;
|
|
|
*desc = e->desc;
|
|
@@ -191,13 +191,13 @@ int hidserv_lookup(char *query, const char **desc, int *desc_len)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
-int hidserv_store(char *desc, int desc_len)
|
|
|
+int rend_cache_store(char *desc, int desc_len)
|
|
|
{
|
|
|
- hidserv_cache_entry_t *e;
|
|
|
+ rend_cache_entry_t *e;
|
|
|
rend_service_descriptor_t *parsed;
|
|
|
char query[REND_SERVICE_ID_LEN+1];
|
|
|
time_t now;
|
|
|
- assert(hidserv_cache);
|
|
|
+ assert(rend_cache);
|
|
|
parsed = rend_parse_service_descriptor(desc,desc_len);
|
|
|
if (!parsed) {
|
|
|
log_fn(LOG_WARN,"Couldn't parse service descriptor");
|
|
@@ -209,17 +209,17 @@ int hidserv_store(char *desc, int desc_len)
|
|
|
return -1;
|
|
|
}
|
|
|
now = time(NULL);
|
|
|
- if (parsed->timestamp < now-HIDSERV_MAX_AGE) {
|
|
|
+ if (parsed->timestamp < now-REND_CACHE_MAX_AGE) {
|
|
|
log_fn(LOG_WARN,"Service descriptor is too old");
|
|
|
rend_service_descriptor_free(parsed);
|
|
|
return -1;
|
|
|
}
|
|
|
- if (parsed->timestamp > now+HIDSERV_MAX_SKEW) {
|
|
|
+ if (parsed->timestamp > now+REND_CACHE_MAX_SKEW) {
|
|
|
log_fn(LOG_WARN,"Service descriptor is too far in the future");
|
|
|
rend_service_descriptor_free(parsed);
|
|
|
return -1;
|
|
|
}
|
|
|
- e = (hidserv_cache_entry_t*) strmap_get_lc(hidserv_cache, query);
|
|
|
+ e = (rend_cache_entry_t*) strmap_get_lc(rend_cache, query);
|
|
|
if (e && e->parsed->timestamp > parsed->timestamp) {
|
|
|
log_fn(LOG_WARN,"We already have a newer service descriptor with the same ID");
|
|
|
rend_service_descriptor_free(parsed);
|
|
@@ -231,8 +231,8 @@ int hidserv_store(char *desc, int desc_len)
|
|
|
return -1;
|
|
|
}
|
|
|
if (!e) {
|
|
|
- e = tor_malloc_zero(sizeof(hidserv_cache_entry_t));
|
|
|
- strmap_set_lc(hidserv_cache, query, e);
|
|
|
+ e = tor_malloc_zero(sizeof(rend_cache_entry_t));
|
|
|
+ strmap_set_lc(rend_cache, query, e);
|
|
|
} else {
|
|
|
rend_service_descriptor_free(e->parsed);
|
|
|
tor_free(e->desc);
|