diff --git a/changes/bug9122 b/changes/bug9122
new file mode 100644
index 0000000000000000000000000000000000000000..5009da6126c15632aa64d4f29921f8f347fe080f
--- /dev/null
+++ b/changes/bug9122
@@ -0,0 +1,4 @@
+  o Major bugfixes:
+    - When receiving a new configuration file via the control port's
+      LOADCONF command, do not treat the defaults file as absent.
+      Fixes bug 9122; bugfix on 0.2.3.9-alpha.
diff --git a/src/or/config.c b/src/or/config.c
index 55d19b8e263ffb0ca90bf464f2cdcaadd7086815..725190a96df142492b3bbbd39d778524cf1055fe 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3785,6 +3785,10 @@ options_init_from_string(const char *cf_defaults, const char *cf,
       newdefaultoptions = config_dup(&options_format, newoptions);
   }
 
+  if (newdefaultoptions == NULL) {
+    newdefaultoptions = config_dup(&options_format, global_default_options);
+  }
+
   /* Go through command-line variables too */
   retval = config_assign(&options_format, newoptions,
                          global_cmdline_options, 0, 0, msg);