diff --git a/.travis.yml b/.travis.yml
index 375796799b71fc6d11ae6e6d943098ce48f250ef..6cfc4e51fda3445f2aa4991ab40a0748e01fa45c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -93,8 +93,6 @@ matrix:
       os: osx
     - env: CHUTNEY="yes" CHUTNEY_ALLOW_FAILURES="2" SKIP_MAKE_CHECK="yes"
       os: osx
-    ## test-stem sometimes hangs on Travis
-    - env: TEST_STEM="yes" SKIP_MAKE_CHECK="yes"
 
 ## (Linux only) Use a recent Linux image (Ubuntu Bionic)
 dist: bionic
diff --git a/changes/bug32753 b/changes/bug32753
new file mode 100644
index 0000000000000000000000000000000000000000..6f59c7729d18d74882c9abb4533338ae54efa56e
--- /dev/null
+++ b/changes/bug32753
@@ -0,0 +1,3 @@
+  o Minor bugfixes (bridges):
+    - Lowercase the value of BridgeDistribution from torrc before adding it to
+      the descriptor. Fixes bug 32753; bugfix on 0.3.2.3-alpha.
diff --git a/changes/ticket33075 b/changes/ticket33075
new file mode 100644
index 0000000000000000000000000000000000000000..69698d90b3bc8d22ca4479e7d77369fd9d5b3156
--- /dev/null
+++ b/changes/ticket33075
@@ -0,0 +1,4 @@
+  o Testing:
+    - Stop allowing failures on the Travis CI stem tests job. It looks like all
+      the stem hangs we were seeing are now fixed, but let's make sure we see
+      them if they happen again. Closes ticket 33075.
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 8ccbac159a6002fec527b25008b0d08d0f99258a..3ab0f3b1298dbbf86887399eded3329019e3e089 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -6840,7 +6840,7 @@ check_bridge_distribution_setting(const char *bd)
   };
   unsigned i;
   for (i = 0; i < ARRAY_LENGTH(RECOGNIZED); ++i) {
-    if (!strcmp(bd, RECOGNIZED[i]))
+    if (!strcasecmp(bd, RECOGNIZED[i]))
       return 0;
   }
 
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 29a8ffaa399b0981978fe6aa9cb09eba774bca6b..2b28bd229c724bf20ffd2e9694ca58ae3024898c 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -2911,15 +2911,20 @@ router_dump_router_to_string(routerinfo_t *router,
   }
 
   if (options->BridgeRelay) {
-    const char *bd;
+    char *bd = NULL;
+
     if (options->BridgeDistribution && strlen(options->BridgeDistribution)) {
-      bd = options->BridgeDistribution;
+      bd = tor_strdup(options->BridgeDistribution);
     } else {
-      bd = "any";
+      bd = tor_strdup("any");
     }
-    if (strchr(bd, '\n') || strchr(bd, '\r'))
-      bd = escaped(bd);
+
+    // Make sure our value is lowercased in the descriptor instead of just
+    // forwarding what the user wrote in their torrc directly.
+    tor_strlower(bd);
+
     smartlist_add_asprintf(chunks, "bridge-distribution-request %s\n", bd);
+    tor_free(bd);
   }
 
   if (router->onion_curve25519_pkey) {
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 85216f4a402b403081b876b0fe590dd117050ad9..3d4908671365bc8a435ed7c8ba32aaf2bce802a9 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -5621,11 +5621,27 @@ test_config_check_bridge_distribution_setting_not_a_bridge(void *arg)
 static void
 test_config_check_bridge_distribution_setting_valid(void *arg)
 {
-  int ret = check_bridge_distribution_setting("https");
-
   (void)arg;
 
-  tt_int_op(ret, OP_EQ, 0);
+  // Check all the possible values we support right now.
+  tt_int_op(check_bridge_distribution_setting("none"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("any"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("https"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("email"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("moat"), OP_EQ, 0);
+
+  // Check all the possible values we support right now with weird casing.
+  tt_int_op(check_bridge_distribution_setting("NoNe"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("anY"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("hTTps"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("emAIl"), OP_EQ, 0);
+  tt_int_op(check_bridge_distribution_setting("moAt"), OP_EQ, 0);
+
+  // Invalid values.
+  tt_int_op(check_bridge_distribution_setting("x\rx"), OP_EQ, -1);
+  tt_int_op(check_bridge_distribution_setting("x\nx"), OP_EQ, -1);
+  tt_int_op(check_bridge_distribution_setting("\t\t\t"), OP_EQ, -1);
+
  done:
   return;
 }