[or-cvs] clean up directory.c API

Roger Dingledine arma at seul.org
Wed May 12 23:48:59 UTC 2004


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

Modified Files:
	command.c directory.c main.c or.h rendclient.c rendservice.c 
	router.c 
Log Message:
clean up directory.c API


Index: command.c
===================================================================
RCS file: /home/or/cvsroot/src/or/command.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- command.c	11 May 2004 03:21:18 -0000	1.65
+++ command.c	12 May 2004 23:48:57 -0000	1.66
@@ -10,7 +10,7 @@
 /* In-points to command.c:
  *
  * - command_process_cell(), called from
- *   connection_or_process_cells_from_inbuf() in connection_or.c.
+ *   connection_or_process_cells_from_inbuf() in connection_or.c
  */
 
 #include "or.h"

Index: directory.c
===================================================================
RCS file: /home/or/cvsroot/src/or/directory.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -d -r1.104 -r1.105
--- directory.c	12 May 2004 21:12:33 -0000	1.104
+++ directory.c	12 May 2004 23:48:57 -0000	1.105
@@ -9,6 +9,26 @@
  * \brief Implement directory HTTP protocol.
  **/
 
+/* In-points to directory.c:
+ *
+ * - directory_post_to_dirservers(), called from
+ *   router_upload_dir_desc_to_dirservers() in router.c
+ *   upload_service_descriptor() in rendservice.c
+ * - directory_get_from_dirserver(), called from
+ *   rend_client_refetch_renddesc() in rendclient.c
+ *   run_scheduled_events() in main.c
+ *   do_hup() in main.c
+ * - connection_dir_process_inbuf(), called from
+ *   connection_process_inbuf() in connection.c
+ * - connection_dir_finished_flushing(), called from
+ *   connection_finished_flushing() in connection.c
+ * - connection_dir_finished_connecting(), called from
+ *   connection_finished_connecting() in connection.c
+ */
+
+static void
+directory_initiate_command(routerinfo_t *router, uint8_t purpose,
+                           const char *payload, int payload_len);
 static void directory_send_command(connection_t *conn, int purpose,
                                    const char *payload, int payload_len);
 static int directory_handle_command(connection_t *conn);
@@ -27,6 +47,43 @@
 
 /********* END VARIABLES ************/
 
+/** Start a connection to every known directory server, using
+ * connection purpose 'purpose' and uploading the payload 'payload'
+ * (length 'payload_len').  The purpose should be one of
+ * 'DIR_PURPOSE_UPLOAD_DIR' or 'DIR_PURPOSE_UPLOAD_RENDDESC'.
+ */
+void
+directory_post_to_dirservers(uint8_t purpose, const char *payload,
+                             int payload_len)
+{
+  int i;
+  routerinfo_t *router;
+  routerlist_t *rl;
+
+  router_get_routerlist(&rl);
+  if(!rl)
+    return;
+
+  for(i=0; i < smartlist_len(rl->routers); i++) {
+    router = smartlist_get(rl->routers, i);
+    if(router->dir_port > 0)
+      directory_initiate_command(router, purpose, payload, payload_len);
+  }
+}
+
+/** Start a connection to a random running directory server, using
+ * connection purpose 'purpose' requesting 'payload' (length
+ * 'payload_len').  The purpose should be one of
+ * 'DIR_PURPOSE_FETCH_DIR' or 'DIR_PURPOSE_FETCH_RENDDESC'.
+ */
+void
+directory_get_from_dirserver(uint8_t purpose, const char *payload,
+                             int payload_len)
+{
+  directory_initiate_command(router_pick_directory_server(),
+                             purpose, payload, payload_len);
+}
+
 /** Launch a new connection to the directory server <b>router</b> to upload or
  * download a service or rendezvous descriptor. <b>purpose</b> determines what
  * kind of directory connection we're launching, and must be one of
@@ -36,8 +93,10 @@
  * of the HTTP post.  When fetching a rendezvous descriptor, <b>payload</b>
  * and <b>payload_len</b> are the service ID we want to fetch.
  */
-void directory_initiate_command(routerinfo_t *router, int purpose,
-                                const char *payload, int payload_len) {
+static void
+directory_initiate_command(routerinfo_t *router, uint8_t purpose,
+                           const char *payload, int payload_len)
+{
   connection_t *conn;
 
   switch (purpose)
@@ -169,7 +228,9 @@
  * null-terminate it (this modifies headers!) and return 0.
  * Otherwise, return -1.
  */
-int parse_http_url(char *headers, char **url) {
+static int
+parse_http_url(char *headers, char **url)
+{
   char *s, *tmp;
 
   s = (char *)eat_whitespace_no_nl(headers);
@@ -193,7 +254,9 @@
  * (else leave it alone), and return 0.
  * Otherwise, return -1.
  */
-int parse_http_response(char *headers, int *code, char **message) {
+static int
+parse_http_response(char *headers, int *code, char **message)
+{
   int n1, n2;
   tor_assert(headers && code);
 
@@ -368,9 +431,10 @@
  * service descriptor.  On finding one, write a response into
  * conn-\>outbuf.  If the request is unrecognized, send a 404.
  * Always return 0. */
-static int directory_handle_command_get(connection_t *conn,
-                                        char *headers, char *body,
-                                        int body_len) {
+static int
+directory_handle_command_get(connection_t *conn, char *headers,
+                             char *body, int body_len)
+{
   size_t dlen;
   const char *cp;
   char *url;
@@ -434,9 +498,10 @@
  * service descriptor.  On finding one, process it and write a
  * response into conn-\>outbuf.  If the request is unrecognized, send a
  * 404.  Always return 0. */
-static int directory_handle_command_post(connection_t *conn,
-                                         char *headers, char *body,
-                                         int body_len) {
+static int
+directory_handle_command_post(connection_t *conn, char *headers,
+                                         char *body, int body_len)
+{
   const char *cp;
   char *url;
 

Index: main.c
===================================================================
RCS file: /home/or/cvsroot/src/or/main.c,v
retrieving revision 1.266
retrieving revision 1.267
diff -u -d -r1.266 -r1.267
--- main.c	12 May 2004 21:12:33 -0000	1.266
+++ main.c	12 May 2004 23:48:57 -0000	1.267
@@ -330,10 +330,6 @@
 
   log_fn(LOG_INFO, "A directory has arrived.");
 
-  /* just for testing */
-//  directory_initiate_command(router_pick_directory_server(),
-//                             DIR_PURPOSE_FETCH_RENDDESC, "foo", 3);
-
   has_fetched_directory=1;
 
   if(options.ORPort) { /* connect to them all */
@@ -445,8 +441,7 @@
     if(!options.DirPort) {
       /* NOTE directory servers do not currently fetch directories.
        * Hope this doesn't bite us later. */
-      directory_initiate_command(router_pick_directory_server(),
-                                 DIR_PURPOSE_FETCH_DIR, NULL, 0);
+      directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL, 0);
     } else {
       /* We're a directory; dump any old descriptors. */
       dirserv_remove_old_servers();
@@ -641,8 +636,7 @@
     rend_services_introduce();
   } else {
     /* fetch a new directory */
-    directory_initiate_command(router_pick_directory_server(),
-                               DIR_PURPOSE_FETCH_DIR, NULL, 0);
+    directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL, 0);
   }
   if(options.ORPort) {
     router_rebuild_descriptor();

Index: or.h
===================================================================
RCS file: /home/or/cvsroot/src/or/or.h,v
retrieving revision 1.345
retrieving revision 1.346
diff -u -d -r1.345 -r1.346
--- or.h	12 May 2004 21:12:33 -0000	1.345
+++ or.h	12 May 2004 23:48:57 -0000	1.346
@@ -864,7 +864,6 @@
 extern char *circuit_state_to_string[];
 circuit_t *circuit_new(uint16_t p_circ_id, connection_t *p_conn);
 void circuit_close_all_marked(void);
-void circuit_free_cpath(crypt_path_t *cpath);
 int _circuit_mark_for_close(circuit_t *circ);
 
 #define circuit_mark_for_close(c)                                       \
@@ -1069,8 +1068,10 @@
 
 /********************************* directory.c ***************************/
 
-void directory_initiate_command(routerinfo_t *router, int purpose,
-                                const char *payload, int payload_len);
+void directory_post_to_dirservers(uint8_t purpose, const char *payload,
+                                  int payload_len);
+void directory_get_from_dirserver(uint8_t purpose, const char *payload,
+                                  int payload_len);
 int connection_dir_process_inbuf(connection_t *conn);
 int connection_dir_finished_flushing(connection_t *conn);
 int connection_dir_finished_connecting(connection_t *conn);
@@ -1190,7 +1191,6 @@
 char *rend_client_get_random_intro(char *query);
 int rend_parse_rendezvous_address(char *address);
 
-int rend_client_send_establish_rendezvous(circuit_t *circ);
 int rend_client_send_introduction(circuit_t *introcirc, circuit_t *rendcirc);
 
 /********************************* rendcommon.c ***************************/
@@ -1265,7 +1265,6 @@
 
 void router_retry_connections(void);
 void router_upload_dir_desc_to_dirservers(void);
-void router_post_to_dirservers(uint8_t purpose, const char *payload, int payload_len);
 int router_compare_to_my_exit_policy(connection_t *conn);
 routerinfo_t *router_get_my_routerinfo(void);
 const char *router_get_my_descriptor(void);

Index: rendclient.c
===================================================================
RCS file: /home/or/cvsroot/src/or/rendclient.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- rendclient.c	12 May 2004 21:12:33 -0000	1.50
+++ rendclient.c	12 May 2004 23:48:57 -0000	1.51
@@ -228,9 +228,8 @@
     log_fn(LOG_INFO,"Would fetch a new renddesc here (for %s), but one is already in progress.", query);
   } else {
     /* not one already; initiate a dir rend desc lookup */
-    directory_initiate_command(router_pick_directory_server(),
-                               DIR_PURPOSE_FETCH_RENDDESC,
-                               query, strlen(query));
+    directory_get_from_dirserver(DIR_PURPOSE_FETCH_RENDDESC,
+                                 query, strlen(query));
   }
 }
 

Index: rendservice.c
===================================================================
RCS file: /home/or/cvsroot/src/or/rendservice.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -d -r1.66 -r1.67
--- rendservice.c	12 May 2004 19:30:28 -0000	1.66
+++ rendservice.c	12 May 2004 23:48:57 -0000	1.67
@@ -744,7 +744,7 @@
   }
 
   /* Post it to the dirservers */
-  router_post_to_dirservers(DIR_PURPOSE_UPLOAD_RENDDESC, desc, desc_len);
+  directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_RENDDESC, desc, desc_len);
   tor_free(desc);
 
   service->desc_is_dirty = 0;

Index: router.c
===================================================================
RCS file: /home/or/cvsroot/src/or/router.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- router.c	10 May 2004 17:30:51 -0000	1.42
+++ router.c	12 May 2004 23:48:57 -0000	1.43
@@ -321,30 +321,7 @@
     log_fn(LOG_WARN, "No descriptor; skipping upload");
     return;
   }
-  router_post_to_dirservers(DIR_PURPOSE_UPLOAD_DIR, s, strlen(s));
-}
-
-/** Start a connection to every known directory server, using
- * connection purpose 'purpose' and uploading the payload 'payload'
- * (length 'payload_len').  The purpose should be one of
- * 'DIR_PURPOSE_UPLOAD_DIR' or 'DIR_PURPOSE_UPLOAD_RENDDESC'.
- */
-/* XXXX This is misnamed; it shouldn't be a router-only function; it should
- * XXXX be in directory, since rendservice uses it too. */
-void router_post_to_dirservers(uint8_t purpose, const char *payload, int payload_len) {
-  int i;
-  routerinfo_t *router;
-  routerlist_t *rl;
-
-  router_get_routerlist(&rl);
-  if(!rl)
-    return;
-
-  for(i=0; i < smartlist_len(rl->routers); i++) {
-    router = smartlist_get(rl->routers, i);
-    if(router->dir_port > 0)
-      directory_initiate_command(router, purpose, payload, payload_len);
-  }
+  directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_DIR, s, strlen(s));
 }
 
 /** Append the comma-separated sequence of exit policies in <b>s</b> to the



More information about the tor-commits mailing list