commit 965ae344734bd97c26d657719e72d99fc86bfa01
Author: Robert Hogan <[email protected]>
Date:   Mon Sep 20 20:44:46 2010 +0100

    Exit if Tor DNS is disabled
    
    Exit with an error code if Tor DNS is disabled in the configuration
    or if we cannot reserve the deadpool address space for .onion
    addresses.
---
 src/tsocks.c |   44 ++++++++++++++++++++++++++------------------
 1 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/src/tsocks.c b/src/tsocks.c
index 80f7b9c..40b7e11 100644
--- a/src/tsocks.c
+++ b/src/tsocks.c
@@ -180,7 +180,6 @@ void tsocks_init(void)
                      (error)?error:"not found"); \
     dlerror(); \
     }
-
     pthread_mutex_lock(&tsocks_init_mutex);
 
     /* We only need to be called once */
@@ -245,7 +244,11 @@ void tsocks_init(void)
 #endif
     /* Unfortunately, we can't do this lazily because otherwise our mmap'd
        area won't be shared across fork()s. */
-    deadpool_init();
+    if (!deadpool_init()) {
+        show_msg(MSGERR, "Fatal error: exiting\n");
+        exit(1);
+    }
+
     tsocks_init_complete=1;
     pthread_mutex_unlock(&tsocks_init_mutex);
 
@@ -1608,23 +1611,28 @@ int EXPAND_GUTS_NAME(res_send)(RES_SEND_SIGNATURE, int 
(*original_res_send)(RES_
 
 static int deadpool_init(void)
 {
-    if(!pool) {
-        get_environment();
-        get_config();
-        if(config.tordns_enabled) {
-            pool = init_pool(
-                config.tordns_cache_size,
-                config.tordns_deadpool_range->localip,
-                config.tordns_deadpool_range->localnet,
-                config.defaultserver.address,
-                config.defaultserver.port
-            );
-            if(!pool) {
-                show_msg(MSGERR, "failed to initialize deadpool: tordns 
disabled\n");
-            }
-        }
+    if (pool)
+        return 1;
+
+    if (!config.tordns_enabled) {
+        show_msg(MSGERR, "Tor DNS is disabled. Check your configuration.\n");
+        return 0;
+    }
+
+    get_environment();
+    get_config();
+    pool = init_pool(config.tordns_cache_size,
+                     config.tordns_deadpool_range->localip,
+                     config.tordns_deadpool_range->localnet,
+                     config.defaultserver.address,
+                     config.defaultserver.port);
+
+    if (!pool) {
+        show_msg(MSGERR, "Could not initialize reserved addresses for "
+                         ".onion addresses. Torsocks will not work 
properly.\n");
+        return 0;
     }
-    return 0;
+    return 1;
 }
 
 struct hostent *tsocks_gethostbyname_guts(GETHOSTBYNAME_SIGNATURE, struct 
hostent *(*original_gethostbyname)(GETHOSTBYNAME_SIGNATURE))



_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to