diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.c
index c43a6ef4b3d5f27568eb9a5b44e544446c71530a..b21e1d8113e181374021f6c93590414f20a7e9d4 100644
--- a/src/core/lib/surface/server.c
+++ b/src/core/lib/surface/server.c
@@ -742,11 +742,13 @@ static grpc_mdelem server_filter(grpc_exec_ctx *exec_ctx, void *user_data,
   if (grpc_slice_cmp(GRPC_MDKEY(md), GRPC_MDSTR_PATH) == 0) {
     if (!calld->path_set) {
       calld->path = grpc_slice_ref(GRPC_MDVALUE(md));
+      calld->path_set = true;
     }
     return GRPC_MDNULL;
   } else if (grpc_slice_cmp(GRPC_MDKEY(md), GRPC_MDSTR_AUTHORITY) == 0) {
     if (!calld->host_set) {
       calld->host = grpc_slice_ref(GRPC_MDVALUE(md));
+      calld->host_set = true;
     }
     return GRPC_MDNULL;
   }