Pārlūkot izejas kodu

Make windows version correct; initialize windows foolishness so that gethostbyname works.

svn:r1250
Nick Mathewson 20 gadi atpakaļ
vecāks
revīzija
d877aac5ad
2 mainītis faili ar 32 papildinājumiem un 2 dzēšanām
  1. 31 1
      src/or/main.c
  2. 1 1
      src/win32/orconfig.h

+ 31 - 1
src/or/main.c

@@ -695,12 +695,42 @@ static void dumpstats(int severity) {
            (int) (stats_n_bytes_read/stats_n_seconds_reading));
 }
 
+int network_init(void)
+{
+#ifdef MS_WINDOWS
+  /* This silly exercise is necessary before windows will allow gethostbyname to work.
+   */
+  WSADATA WSAData;
+  int r;
+  r = WSAStartup(0x101,&WSAData);
+  if (r) {
+	  log_fn(LOG_WARN,"Error initializing windows network layer: code was %d",r);
+	  return -1;
+  }
+  /* XXXX We should call WSACleanup on exit, I think. */
+#endif
+  return 0;
+}
+
+void exit_function(void)
+{
+#ifdef MS_WINDOWS
+  WSACleanup();
+#endif
+}
+
 int tor_main(int argc, char *argv[]) {
 
   /* give it somewhere to log to initially */
   add_stream_log(LOG_INFO, "<stdout>", stdout);
   log_fn(LOG_WARN,"Tor v%s. This is experimental software. Do not use it if you need anonymity.",VERSION);
 
+  if (network_init()<0) {
+	log_fn(LOG_ERR,"Error initializing network; exiting.");
+	return 1;
+  }
+  atexit(exit_function);
+
   if (init_from_config(argc,argv) < 0)
     return -1;
 
@@ -708,7 +738,7 @@ int tor_main(int argc, char *argv[]) {
   if(geteuid()==0)
     log_fn(LOG_WARN,"You are running Tor as root. You don't need to, and you probably shouldn't.");
 #endif
-
+  
   if(options.ORPort) { /* only spawn dns handlers if we're a router */
     dns_init(); /* initialize the dns resolve tree, and spawn workers */
   }

+ 1 - 1
src/win32/orconfig.h

@@ -148,7 +148,7 @@
 #define STDC_HEADERS
 
 /* Version number of package */
-#define VERSION "0.0.2pre6"
+#define VERSION "0.0.2pre26"
 
 /* XXXX WWWW */
 #define CONFDIR ""