Ver código fonte

r8725@Kushana: nickm | 2006-09-06 04:39:29 -0400
spawn_func fixes: have cpuworker_main and dnsworker_main confirm to the right interfaces [casting func to void* is icky]. Also, make pthread_create() build without warnings.


svn:r8327

Nick Mathewson 18 anos atrás
pai
commit
365ccf0742
3 arquivos alterados com 7 adições e 9 exclusões
  1. 2 2
      src/common/compat.c
  2. 3 4
      src/or/cpuworker.c
  3. 2 3
      src/or/dns.c

+ 2 - 2
src/common/compat.c

@@ -936,14 +936,14 @@ get_uname(void)
  * invoke them in a way pthreads would expect.
  */
 typedef struct tor_pthread_data_t {
-  int (*func)(void *);
+  void (*func)(void *);
   void *data;
 } tor_pthread_data_t;
 static void *
 tor_pthread_helper_fn(void *_data)
 {
   tor_pthread_data_t *data = _data;
-  int (*func)(void*);
+  void (*func)(void*);
   void *arg;
   func = data->func;
   arg = data->data;

+ 3 - 4
src/or/cpuworker.c

@@ -36,7 +36,7 @@ static int num_cpuworkers_busy=0;
  * the last time we got a key rotation event. */
 static time_t last_rotation_time=0;
 
-static int cpuworker_main(void *data);
+static void cpuworker_main(void *data);
 static int spawn_cpuworker(void);
 static void spawn_enough_cpuworkers(void);
 static void process_pending_task(connection_t *cpuworker);
@@ -222,7 +222,7 @@ done_processing:
  *  (Note: this _should_ be by addr/port, since we're concerned with specific
  * connections, not with routers (where we'd use identity).)
  */
-static int
+static void
 cpuworker_main(void *data)
 {
   char question[ONIONSKIN_CHALLENGE_LEN];
@@ -308,7 +308,6 @@ cpuworker_main(void *data)
   tor_close_socket(fd);
   crypto_thread_cleanup();
   spawn_exit();
-  return 0; /* windows wants this function to return an int */
 }
 
 /** Launch a new cpuworker. Return 0 if we're happy, -1 if we failed.
@@ -333,7 +332,7 @@ spawn_cpuworker(void)
   tor_assert(fdarray[1] >= 0);
 
   fd = fdarray[0];
-  spawn_func((void*) cpuworker_main, (void*)fdarray);
+  spawn_func(cpuworker_main, (void*)fdarray);
   log_debug(LD_OR,"just spawned a cpu worker.");
 #ifndef TOR_IS_MULTITHREADED
   tor_close_socket(fdarray[1]); /* don't need the worker's side of the pipe */

+ 2 - 3
src/or/dns.c

@@ -112,7 +112,7 @@ static void send_resolved_cell(edge_connection_t *conn, uint8_t answer_type);
 static int launch_resolve(edge_connection_t *exitconn);
 #ifndef USE_EVENTDNS
 static void dnsworkers_rotate(void);
-static int dnsworker_main(void *data);
+static void dnsworker_main(void *data);
 static int spawn_dnsworker(void);
 static int spawn_enough_dnsworkers(void);
 #else
@@ -991,7 +991,7 @@ dnsworkers_rotate(void)
  * The dnsworker runs indefinitely, until its connection is closed or an error
  * occurs.
  */
-static int
+static void
 dnsworker_main(void *data)
 {
   char address[MAX_ADDRESSLEN+1]; /* Plus a byte for a final '.' */
@@ -1079,7 +1079,6 @@ dnsworker_main(void *data)
       spawn_exit();
     }
   }
-  return 0; /* windows wants this function to return an int */
 }
 
 /** Launch a new DNS worker; return 0 on success, -1 on failure.