[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [torsocks/master 5/5] Exit if Tor DNS is disabled
Author: Robert Hogan <robert@xxxxxxxxxxxxxxx>
Date: Mon, 20 Sep 2010 20:44:46 +0100
Subject: Exit if Tor DNS is disabled
Commit: 965ae344734bd97c26d657719e72d99fc86bfa01
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))
--
1.7.1