浏览代码

Rebuild and re-upload service descriptors every 15 minutes

svn:r1537
Nick Mathewson 21 年之前
父节点
当前提交
b1537e7943
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      src/or/rendservice.c

+ 7 - 1
src/or/rendservice.c

@@ -644,6 +644,9 @@ find_intro_circuit(routerinfo_t *router, const char *pk_digest)
   return NULL;
 }
 
+/* XXXX Make this longer once directories remember service descriptors across
+ * restarts.*/
+#define MAX_SERVICE_PUBLICATION_INTERVAL (15*60)
 
 /* For every service, check how many intro points it currently has, and:
  *  - Pick new intro points as necessary.
@@ -659,6 +662,7 @@ int rend_services_init(void) {
   int changed, prev_intro_nodes, desc_len;
   smartlist_t *intro_routers, *exclude_routers;
   int n_old_routers;
+  time_t now;
 
   router_get_routerlist(&rl);
   intro_routers = smartlist_create();
@@ -715,7 +719,9 @@ int rend_services_init(void) {
     smartlist_truncate(exclude_routers, n_old_routers);
 
     /* If there's no need to republish, stop here. */
-    if (!changed)
+    now = time(NULL);
+    if (!changed &&
+        service->desc->timestamp+MAX_SERVICE_PUBLICATION_INTERVAL >= now)
       continue;
 
     /* Update the descriptor. */