From: Kees Monshouwer Date: Thu, 12 Jun 2014 22:38:51 +0000 (+0200) Subject: add default for empty value to asNum(), and use a value of 1 for all thread settings... X-Git-Tag: auth-3.4.0-rc1~93^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ff99a74bd11359d7fde0b8b0cca42a2980d86a68;p=thirdparty%2Fpdns.git add default for empty value to asNum(), and use a value of 1 for all thread settings in auth --- diff --git a/pdns/arguments.cc b/pdns/arguments.cc index 9fcc5a0b75..e5abcdb834 100644 --- a/pdns/arguments.cc +++ b/pdns/arguments.cc @@ -238,7 +238,7 @@ uid_t ArgvMap::asUid(const string &arg) return uid; } -int ArgvMap::asNum(const string &arg) +int ArgvMap::asNum(const string &arg, int def) { int retval; const char *cptr_orig; @@ -247,9 +247,9 @@ int ArgvMap::asNum(const string &arg) if(!parmIsset(arg)) throw ArgException(string("Undefined but needed argument: '")+arg+"'"); - // treat empty values as zeros + // use default for empty values if (params[arg].empty()) - return 0; + return def; cptr_orig = params[arg].c_str(); retval = static_cast(strtol(cptr_orig, &cptr_ret, 0)); diff --git a/pdns/arguments.hh b/pdns/arguments.hh index afd0ede35e..a59ebc8147 100644 --- a/pdns/arguments.hh +++ b/pdns/arguments.hh @@ -95,7 +95,7 @@ public: typedef map param_t; //!< use this if you need to know the content of the map bool parmIsset(const string &var); //!< Checks if a parameter is set to *a* value bool mustDo(const string &var); //!< if a switch is given, if we must do something (--help) - int asNum(const string &var); //!< return a variable value as a number + int asNum(const string &var, int def=0); //!< return a variable value as a number or the default if the variable is empty mode_t asMode(const string &var); //!< return value interpreted as octal number uid_t asUid(const string &var); //!< return user id, resolves if necessary gid_t asGid(const string &var); //!< return group id, resolves if necessary diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index 5bfa4e92c0..bc6599e880 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -238,7 +238,7 @@ void sendout(const AnswerData &AD) void *qthread(void *number) { DNSPacket *P; - DNSDistributor *distributor = DNSDistributor::Create(::arg().asNum("distributor-threads")); // the big dispatcher! + DNSDistributor *distributor = DNSDistributor::Create(::arg().asNum("distributor-threads", 1)); // the big dispatcher! DNSPacket question; DNSPacket cached; @@ -398,7 +398,7 @@ void mainthread() pthread_create(&qtid,0,carbonDumpThread, 0); // runs even w/o carbon, might change @ runtime // fork(); (this worked :-)) - unsigned int max_rthreads= ::arg().asNum("receiver-threads"); + unsigned int max_rthreads= ::arg().asNum("receiver-threads", 1); for(unsigned int n=0; n < max_rthreads; ++n) pthread_create(&qtid,0,qthread, reinterpret_cast(n)); // receives packets diff --git a/pdns/communicator.cc b/pdns/communicator.cc index 40aa9e1b55..41e7e56ca7 100644 --- a/pdns/communicator.cc +++ b/pdns/communicator.cc @@ -58,7 +58,7 @@ void CommunicatorClass::go() { pthread_t tid; pthread_create(&tid,0,&launchhelper,this); // Starts CommunicatorClass::mainloop() - for(int n=0; n < ::arg().asNum("retrieval-threads"); ++n) + for(int n=0; n < ::arg().asNum("retrieval-threads", 1); ++n) pthread_create(&tid, 0, &retrieveLaunchhelper, this); // Starts CommunicatorClass::retrievalLoopThread() d_preventSelfNotification = ::arg().mustDo("prevent-self-notification"); diff --git a/pdns/tcpreceiver.cc b/pdns/tcpreceiver.cc index 1bfa08215e..ccc8d6584a 100644 --- a/pdns/tcpreceiver.cc +++ b/pdns/tcpreceiver.cc @@ -609,7 +609,7 @@ int TCPNameserver::doAXFR(const string &target, shared_ptr q, int out trc.d_mac = outpacket->d_trc.d_mac; outpacket = getFreshAXFRPacket(q); - ChunkedSigningPipe csp(target, securedZone, "", ::arg().asNum("signing-threads")); + ChunkedSigningPipe csp(target, securedZone, "", ::arg().asNum("signing-threads", 1)); typedef map nsecxrepo_t; nsecxrepo_t nsecxrepo;