aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorMatt Traudt <sirmatt@ksu.edu>2017-09-13 12:47:02 -0400
committerDavid Goulet <dgoulet@torproject.org>2017-09-15 11:40:59 -0400
commit7f1d6430833a15a1ec806f9d17babc7d653b08ac (patch)
tree4893f64bec50f88e70f23eb7663b469e05180708 /src/or
parent61fc9c41ad8241be06587f28d1542c0caba55d1b (diff)
downloadtor-7f1d6430833a15a1ec806f9d17babc7d653b08ac.tar.gz
tor-7f1d6430833a15a1ec806f9d17babc7d653b08ac.zip
sched: validate KIST sched options
Diffstat (limited to 'src/or')
-rw-r--r--src/or/config.c13
-rw-r--r--src/or/scheduler.h14
-rw-r--r--src/or/scheduler_kist.c7
3 files changed, 27 insertions, 7 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 285d4952f2..f332ac97f8 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3112,6 +3112,19 @@ options_validate(or_options_t *old_options, or_options_t *options,
routerset_union(options->ExcludeExitNodesUnion_,options->ExcludeNodes);
}
+ if (options->KISTSockBufSizeFactor < 0) {
+ REJECT("KISTSockBufSizeFactor must be at least 0");
+ }
+ /* Don't need to validate that the Interval is less than anything because
+ * zero is valid and all negative values are valid. */
+ if (options->KISTSchedRunInterval > KIST_SCHED_RUN_INTERVAL_MAX) {
+ char *buf = tor_calloc(80, sizeof(char));
+ tor_snprintf(buf, 80, "KISTSchedRunInterval must not be more than %d (ms)",
+ KIST_SCHED_RUN_INTERVAL_MAX);
+ *msg = buf;
+ return -1;
+ }
+
if (options->NodeFamilies) {
options->NodeFamilySets = smartlist_new();
for (cl = options->NodeFamilies; cl; cl = cl->next) {
diff --git a/src/or/scheduler.h b/src/or/scheduler.h
index 6cf75c585a..0d82352734 100644
--- a/src/or/scheduler.h
+++ b/src/or/scheduler.h
@@ -83,6 +83,20 @@ typedef struct scheduler_s {
} scheduler_t;
/*****************************************************************************
+ * Globally visible scheduler variables/values
+ *
+ * These are variables/constants that all of Tor should be able to see.
+ *****************************************************************************/
+
+/* Default interval that KIST runs (in ms). */
+#define KIST_SCHED_RUN_INTERVAL_DEFAULT 10
+/* Minimum interval that KIST runs. This value disables KIST. */
+#define KIST_SCHED_RUN_INTERVAL_MIN 0
+/* Maximum interval that KIST runs (in ms). */
+#define KIST_SCHED_RUN_INTERVAL_MAX 100
+
+
+/*****************************************************************************
* Globally visible scheduler functions
*
* These functions are how the rest of Tor communicates with the scheduling
diff --git a/src/or/scheduler_kist.c b/src/or/scheduler_kist.c
index d3b19fdd1d..3c3d26ad5a 100644
--- a/src/or/scheduler_kist.c
+++ b/src/or/scheduler_kist.c
@@ -623,13 +623,6 @@ get_kist_scheduler(void)
return kist_scheduler;
}
-/* Default interval that KIST runs (in ms). */
-#define KIST_SCHED_RUN_INTERVAL_DEFAULT 10
-/* Minimum interval that KIST runs. This value disables KIST. */
-#define KIST_SCHED_RUN_INTERVAL_MIN 0
-/* Maximum interval that KIST runs (in ms). */
-#define KIST_SCHED_RUN_INTERVAL_MAX 100
-
/* Check the torrc for the configured KIST scheduler run interval.
* - If torrc < 0, then return the negative torrc value (shouldn't even be
* using KIST)