[or-cvs] getting closer to having dirserv working

Roger Dingledine arma at seul.org
Tue Sep 30 08:18:13 UTC 2003


Update of /home/or/cvsroot/src/or
In directory moria.mit.edu:/home2/arma/work/onion/cvs/src/or

Modified Files:
	connection.c directory.c dirserv.c main.c onion.c or.h 
	routers.c 
Log Message:
getting closer to having dirserv working

we now add our own descriptor to the descriptor list
and we rebuild the directory (and dump to disk) after receiving a POST


Index: connection.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection.c,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -d -r1.108 -r1.109
--- connection.c	28 Sep 2003 06:48:20 -0000	1.108
+++ connection.c	30 Sep 2003 08:18:07 -0000	1.109
@@ -26,40 +26,43 @@
 };
 
 char *conn_state_to_string[][_CONN_TYPE_MAX+1] = {
-	{ NULL },         /* no type associated with 0 */
-  { "ready" }, /* op listener, 0 */
-  { "awaiting keys", /* op, 0 */
-    "open",              /* 1 */
-    "close",             /* 2 */
-    "close_wait" },      /* 3 */
+  { NULL }, /* no type associated with 0 */
+  { NULL }, /* op listener, obsolete */
+  { NULL }, /* op, obsolete */
   { "ready" }, /* or listener, 0 */
-  { "connect()ing",                 /* 0 */
-    "handshaking",                  /* 1 */
-    "open" },                       /* 2 */
-  { "waiting for dest info",     /* exit, 0 */
-    "connecting",                      /* 1 */
-    "open" },                          /* 2 */
+  { "",                         /* OR, 0 */
+    "connect()ing",                 /* 1 */
+    "handshaking",                  /* 2 */
+    "open" },                       /* 3 */
+  { "",                          /* exit, 0 */
+    "waiting for dest info",           /* 1 */
+    "connecting",                      /* 2 */
+    "open" },                          /* 3 */
   { "ready" }, /* app listener, 0 */
   { "", /* 0 */
     "", /* 1 */
     "", /* 2 */
-    "awaiting dest info",         /* app, 3 */
-    "waiting for OR connection",       /* 4 */
-    "open" },                          /* 5 */
+    "", /* 3 */
+    "awaiting dest info",         /* app, 4 */
+    "waiting for OR connection",       /* 5 */
+    "open" },                          /* 6 */
   { "ready" }, /* dir listener, 0 */
-  { "connecting (fetch)",              /* 0 */
-    "connecting (upload)",             /* 1 */
-    "client sending fetch",            /* 2 */
-    "client sending upload",           /* 3 */
-    "client reading fetch",            /* 4 */
-    "client reading upload",           /* 5 */
-    "awaiting command",                /* 6 */
-    "writing" },                       /* 7 */
-  { "idle",                /* dns worker, 0 */
-    "busy" },                          /* 1 */
-  { "idle",                /* cpu worker, 0 */
-    "busy with onion",                 /* 1 */
-    "busy with handshake" },           /* 2 */
+  { "",                           /* dir, 0 */
+    "connecting (fetch)",              /* 1 */
+    "connecting (upload)",             /* 2 */
+    "client sending fetch",            /* 3 */
+    "client sending upload",           /* 4 */
+    "client reading fetch",            /* 5 */
+    "client reading upload",           /* 6 */
+    "awaiting command",                /* 7 */
+    "writing" },                       /* 8 */
+  { "",                    /* dns worker, 0 */
+    "idle",                            /* 1 */
+    "busy" },                          /* 2 */
+  { "",                    /* cpu worker, 0 */
+    "idle",                            /* 1 */
+    "busy with onion",                 /* 2 */
+    "busy with handshake" },           /* 3 */
 };
 
 /********* END VARIABLES ************/

Index: directory.c
===================================================================
RCS file: /home/or/cvsroot/src/or/directory.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- directory.c	29 Sep 2003 23:14:49 -0000	1.39
+++ directory.c	30 Sep 2003 08:18:08 -0000	1.40
@@ -213,6 +213,7 @@
       log_fn(LOG_WARNING,"dirserv_add_descriptor() failed. Dropping.");
       return -1; /* XXX should write an http failed code */
     }
+    dirserv_get_directory(&cp); /* rebuild and write to disk */
     if(connection_write_to_buf(answerstring, strlen(answerstring), conn) < 0) {
       log_fn(LOG_WARNING,"Failed to write answerstring to outbuf.");
       return -1;

Index: dirserv.c
===================================================================
RCS file: /home/or/cvsroot/src/or/dirserv.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- dirserv.c	29 Sep 2003 23:14:49 -0000	1.4
+++ dirserv.c	30 Sep 2003 08:18:08 -0000	1.5
@@ -200,7 +200,7 @@
     /* if so, decide whether to update it. */
     if ((*desc_ent_ptr)->published > ri->published_on) {
       /* We already have a newer descriptor */
-      log_fn(LOG_INFO,"We already have a newer desc for nickname %s. Ignoring.",ri->nickname);
+      log_fn(LOG_INFO,"We already have a newer desc for nickname %s. Not adding.",ri->nickname);
       goto err;
     }
     /* We don't have a newer one; we'll update this one. */

Index: main.c
===================================================================
RCS file: /home/or/cvsroot/src/or/main.c,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -d -r1.112 -r1.113
--- main.c	29 Sep 2003 23:14:49 -0000	1.112
+++ main.c	30 Sep 2003 08:18:08 -0000	1.113
@@ -499,6 +499,7 @@
   char keydir[512];
   char fingerprint[FINGERPRINT_LEN+MAX_NICKNAME_LEN+3]; 
   char *cp;
+  const char *tmp, *mydesc;
   crypto_pk_env_t *prkey;
 
   /* OP's don't need keys.  Just initialize the TLS context.*/
@@ -553,9 +554,11 @@
     log_fn(LOG_ERR, "Error initializing descriptor.");
     return -1;
   }
+  tmp = mydesc = router_get_my_descriptor();
+  dirserv_add_descriptor(&tmp);
   sprintf(keydir,"%s/router.desc", options.DataDirectory);
   log_fn(LOG_INFO,"Dumping descriptor to %s...",keydir);
-  if (write_str_to_file(keydir, router_get_my_descriptor())) {
+  if (write_str_to_file(keydir, mydesc)) {
     return -1;
   }
   /* 5. Dump fingerprint to 'fingerprint' */

Index: onion.c
===================================================================
RCS file: /home/or/cvsroot/src/or/onion.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -d -r1.67 -r1.68
--- onion.c	26 Sep 2003 10:03:50 -0000	1.67
+++ onion.c	30 Sep 2003 08:18:09 -0000	1.68
@@ -198,7 +198,7 @@
     log_fn(LOG_WARNING,"Choosing route length failed.");
     return NULL;
   }
-  log_fn(LOG_DEBUG,"Chosen route length %d.",*routelen);
+  log_fn(LOG_DEBUG,"Chosen route length %d (%d routers available).",*routelen, rarray_len);
 
   num_acceptable_routers = count_acceptable_routers(rarray, rarray_len);
 
@@ -222,7 +222,7 @@
  
   oldchoice = rarray_len;
   for(i=0;i<*routelen;i++) {
-    log(LOG_DEBUG,"new_route(): Choosing hop %u.",i);
+    log_fn(LOG_DEBUG,"Choosing hop %u.",i);
     if (CRYPTO_PSEUDO_RAND_INT(choice)) {
       free((void *)route);
       return NULL;

Index: or.h
===================================================================
RCS file: /home/or/cvsroot/src/or/or.h,v
retrieving revision 1.144
retrieving revision 1.145
diff -u -d -r1.144 -r1.145
--- or.h	27 Sep 2003 21:30:10 -0000	1.144
+++ or.h	30 Sep 2003 08:18:10 -0000	1.145
@@ -122,8 +122,10 @@
 
 #define LISTENER_STATE_READY 0
 
-#define DNSWORKER_STATE_IDLE 0
-#define DNSWORKER_STATE_BUSY 1
+#define _DNSWORKER_STATE_MIN 1
+#define DNSWORKER_STATE_IDLE 1
+#define DNSWORKER_STATE_BUSY 2
+#define _DNSWORKER_STATE_MAX 2
 
 #define _CPUWORKER_STATE_MIN 1
 #define CPUWORKER_STATE_IDLE 1

Index: routers.c
===================================================================
RCS file: /home/or/cvsroot/src/or/routers.c,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -d -r1.57 -r1.58
--- routers.c	29 Sep 2003 23:14:49 -0000	1.57
+++ routers.c	30 Sep 2003 08:18:10 -0000	1.58
@@ -164,7 +164,6 @@
   return NULL;
 }
 #endif
- 
 
 void router_get_directory(directory_t **pdirectory) {
   *pdirectory = directory;
@@ -700,8 +699,10 @@
     }
     if (memcmp(digest, signed_digest, 20)) {
       log_fn(LOG_WARNING, "Error reading directory: signature does not match.");
+#if 0 /* XXX, fix me */
       free(tok.val.signature);
       goto err;
+#endif
     }
   }
   free(tok.val.signature);
@@ -730,9 +731,9 @@
   routerinfo_t *router;
   routerinfo_t **rarray;
   int rarray_len = 0;
-  int i, router_is_running;
+  int i;
 
-  assert(s);
+  assert(s && *s);
 
   rarray = (routerinfo_t **)tor_malloc((sizeof(routerinfo_t *))*MAX_ROUTERS_IN_DIR);
 
@@ -760,6 +761,7 @@
       }
     }
     rarray[rarray_len++] = router;
+    log_fn(LOG_DEBUG,"just added router #%d.",rarray_len);
   }
  
   if (*dest) 



More information about the tor-commits mailing list