4e00c8db07
The QPACK_MAX_TABLE_CAPACITY=0 advertisement worsened the result (1 file → 0 files written). Empirical: empty SETTINGS = spec defaults (both 0) and aioquic was already sending literal-encoded responses under that condition. Real bug isn't QPACK — diagnostic showed 1359 GETs processed in 58s (~23 streams/sec). Throughput is hard-bottlenecked by :quic's single conn.lock serializing send loop + read loop + openBidiStream across 1999 waiting coroutines. Even at maximum throughput we'd only complete ~1400 of 1999 in 60s. The 1 file we managed previously was just the first response landing before lock contention spiked. Filed multiplexing as a known-throughput-limit follow-up. Possible fixes (per-level lock split / Semaphore-bounded concurrency / QPACK dynamic-table support) are all non-trivial and the testcase is a stress test, not a real-world load shape. For now: revert to empty SETTINGS, accept multiplexing as the lone deferred testcase. Aioquic + picoquic stay at 6/7. https://claude.ai/code/session_01HcvfQq1ttPV9PkRoJb4nyT