aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/or/config.c38
-rw-r--r--src/or/or.h6
2 files changed, 21 insertions, 23 deletions
diff --git a/src/or/config.c b/src/or/config.c
index ced4288f00..28f1df0663 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -369,9 +369,9 @@ static config_var_t option_vars_[] = {
V(ServerDNSSearchDomains, BOOL, "0"),
V(ServerDNSTestAddresses, CSV,
"www.google.com,www.mit.edu,www.yahoo.com,www.slashdot.org"),
- V(SchedulerLowWaterMark, MEMUNIT, "16 kB"),
- V(SchedulerHighWaterMark, MEMUNIT, "32 kB"),
- V(SchedulerMaxFlushCells, UINT, "16"),
+ V(SchedulerLowWaterMark__, MEMUNIT, "100 MB"),
+ V(SchedulerHighWaterMark__, MEMUNIT, "101 MB"),
+ V(SchedulerMaxFlushCells__, UINT, "1000"),
V(ShutdownWaitLength, INTERVAL, "30 seconds"),
V(SocksListenAddress, LINELIST, NULL),
V(SocksPolicy, LINELIST, NULL),
@@ -1539,23 +1539,10 @@ options_act(const or_options_t *old_options)
}
/* Set up scheduler thresholds */
- if (options->SchedulerLowWaterMark > 0 &&
- options->SchedulerHighWaterMark > options->SchedulerLowWaterMark) {
- scheduler_set_watermarks(options->SchedulerLowWaterMark,
- options->SchedulerHighWaterMark,
- (options->SchedulerMaxFlushCells > 0) ?
- options->SchedulerMaxFlushCells : 16);
- } else {
- if (options->SchedulerLowWaterMark == 0) {
- log_warn(LD_GENERAL, "Bad SchedulerLowWaterMark option");
- }
-
- if (options->SchedulerHighWaterMark <= options->SchedulerLowWaterMark) {
- log_warn(LD_GENERAL, "Bad SchedulerHighWaterMark option");
- }
-
- return -1;
- }
+ scheduler_set_watermarks((uint32_t)options->SchedulerLowWaterMark__,
+ (uint32_t)options->SchedulerHighWaterMark__,
+ (options->SchedulerMaxFlushCells__ > 0) ?
+ options->SchedulerMaxFlushCells__ : 1000);
/* Set up accounting */
if (accounting_parse_options(options, 0)<0) {
@@ -2654,6 +2641,17 @@ options_validate(or_options_t *old_options, or_options_t *options,
routerset_union(options->ExcludeExitNodesUnion_,options->ExcludeNodes);
}
+ if (options->SchedulerLowWaterMark__ == 0 ||
+ options->SchedulerLowWaterMark__ > UINT32_MAX) {
+ log_warn(LD_GENERAL, "Bad SchedulerLowWaterMark__ option");
+ return -1;
+ } else if (options->SchedulerHighWaterMark__ <=
+ options->SchedulerLowWaterMark__ ||
+ options->SchedulerHighWaterMark__ > UINT32_MAX) {
+ log_warn(LD_GENERAL, "Bad SchedulerHighWaterMark option");
+ return -1;
+ }
+
if (options->NodeFamilies) {
options->NodeFamilySets = smartlist_new();
for (cl = options->NodeFamilies; cl; cl = cl->next) {
diff --git a/src/or/or.h b/src/or/or.h
index ccb29ee7df..0de37452bd 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -4251,15 +4251,15 @@ typedef struct {
/** Low-water mark for global scheduler - start sending when estimated
* queued size falls below this threshold.
*/
- uint32_t SchedulerLowWaterMark;
+ uint64_t SchedulerLowWaterMark__;
/** High-water mark for global scheduler - stop sending when estimated
* queued size exceeds this threshold.
*/
- uint32_t SchedulerHighWaterMark;
+ uint64_t SchedulerHighWaterMark__;
/** Flush size for global scheduler - flush this many cells at a time
* when sending.
*/
- unsigned int SchedulerMaxFlushCells;
+ int SchedulerMaxFlushCells__;
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */