diff --git a/changes/bug6304 b/changes/bug6304
new file mode 100644
index 0000000000000000000000000000000000000000..445560a8e19822b0caaf360a2d5eacb158b55c3d
--- /dev/null
+++ b/changes/bug6304
@@ -0,0 +1,4 @@
+  o Minor bugfixes:
+    - Behave correctly when the user disables LearnCircuitBuildTimeout
+      but doesn't tell us what they would like the timeout to be. Fixes
+      bug 6304; bugfix on 0.2.2.14-alpha. 
diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c
index 73e34d9ed7e5052bcfb13c51de52488c14e32934..fe9c80ddce057883396eb68b47b4db3350b5d318 100644
--- a/src/or/circuitstats.c
+++ b/src/or/circuitstats.c
@@ -417,19 +417,16 @@ circuit_build_times_get_initial_timeout(void)
    * Check if we have LearnCircuitBuildTimeout, and if we don't,
    * always use CircuitBuildTimeout, no questions asked.
    */
-  if (get_options()->LearnCircuitBuildTimeout) {
-    if (!unit_tests && get_options()->CircuitBuildTimeout) {
-      timeout = get_options()->CircuitBuildTimeout*1000;
-      if (timeout < circuit_build_times_min_timeout()) {
-        log_warn(LD_CIRC, "Config CircuitBuildTimeout too low. Setting to %ds",
-                 circuit_build_times_min_timeout()/1000);
-        timeout = circuit_build_times_min_timeout();
-      }
-    } else {
-      timeout = circuit_build_times_initial_timeout();
+  if (!unit_tests && get_options()->CircuitBuildTimeout) {
+    timeout = get_options()->CircuitBuildTimeout*1000;
+    if (get_options()->LearnCircuitBuildTimeout &&
+        timeout < circuit_build_times_min_timeout()) {
+      log_warn(LD_CIRC, "Config CircuitBuildTimeout too low. Setting to %ds",
+               circuit_build_times_min_timeout()/1000);
+      timeout = circuit_build_times_min_timeout();
     }
   } else {
-    timeout = get_options()->CircuitBuildTimeout*1000;
+    timeout = circuit_build_times_initial_timeout();
   }
 
   return timeout;
diff --git a/src/or/config.c b/src/or/config.c
index 86f06611469fd8ba0cf297bcbc960c1bf2b48f6c..f03f3802fc78e9261cef73464dff5887885d8699 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -2724,15 +2724,19 @@ options_validate(or_options_t *old_options, or_options_t *options,
              "http://freehaven.net/anonbib/#hs-attack06 for details.");
   }
 
-  if (!(options->LearnCircuitBuildTimeout) &&
-        options->CircuitBuildTimeout < RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT) {
+  if (!options->LearnCircuitBuildTimeout && options->CircuitBuildTimeout &&
+      options->CircuitBuildTimeout < RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT) {
     log_warn(LD_CONFIG,
-        "CircuitBuildTimeout is shorter (%d seconds) than recommended "
-        "(%d seconds), and LearnCircuitBuildTimeout is disabled.  "
+        "CircuitBuildTimeout is shorter (%d seconds) than the recommended "
+        "minimum (%d seconds), and LearnCircuitBuildTimeout is disabled.  "
         "If tor isn't working, raise this value or enable "
         "LearnCircuitBuildTimeout.",
         options->CircuitBuildTimeout,
         RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT );
+  } else if (!options->LearnCircuitBuildTimeout &&
+             !options->CircuitBuildTimeout) {
+    log_notice(LD_CONFIG, "You disabled LearnCircuitBuildTimeout, but didn't "
+               "a CircuitBuildTimeout. I'll pick a plausible default.");
   }
 
   if (options->PathBiasNoticeRate > 1.0) {