Enable memquota DoS resistance by default to support congestion control
For circuits and streams with congestion control, we don't know the congestion window at the other end and therefore have no upper bound for how many cells or bytes we will receive. Therefore we need unbounded stream queues, which means we rely entirely on memory dos resistance to kill circuits that are using too much memory (either maliciously or not).
https://spec.torproject.org/proposals/324-rtt-congestion-control.txt
4.1.3. Oomkiller behavior
A malicious client can attempt to exhaust memory in an Exits outbufs, by ignoring XOFF and advisory XONs. Implementations MAY choose to close specific streams with outbufs that grow too large, but since the exit does not know with certainty the client's congestion window, it is non-trival to determine the exact upper limit a well-behaved client might send on a blocked stream.
Implementations MUST close the streams with the oldest chunks present in their outbufs, while under global memory pressure, until memory pressure is relieved.
While the above quote mentions exits, this should also apply to clients and onion services.
This means that we need memquota accounting and memory dos prevention enabled by default if we want to enable congestion control.