{"record":{"id":"40f260d7f8c913ef","repo":"cloudflare/quiche","slug":"unable-to-create-http-3-connection-check-the-serv","errorCode":null,"errorMessage":"Unable to create HTTP/3 connection, check the server's uni stream limit and window size","messagePattern":"Unable to create HTTP/3 connection, check the server's uni stream limit and window size","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"apps/src/common.rs","lineNumber":852,"sourceCode":"                    priority,\n                    response_hdrs: Vec::new(),\n                    response_body: Vec::new(),\n                    response_body_max: dump_json.unwrap_or_default(),\n                    stream_id: None,\n                    response_writer: None,\n                });\n            }\n        }\n\n        let h_conn = Http3Conn {\n            h3_conn: quiche::h3::Connection::with_transport(\n                conn,\n                &make_h3_config(\n                    max_field_section_size,\n                    qpack_max_table_capacity,\n                    qpack_blocked_streams,\n                ),\n            ).expect(\"Unable to create HTTP/3 connection, check the server's uni stream limit and window size\"),\n            reqs_hdrs_sent: 0,\n            reqs_complete: 0,\n            largest_processed_request: 0,\n            reqs,\n            body: body.as_ref().map(|b| b.to_vec()),\n            sent_body_bytes: HashMap::new(),\n            dump_json: dump_json.is_some(),\n            dgram_sender,\n            output_sink,\n        };\n\n        Box::new(h_conn)\n    }\n\n    pub fn with_conn(\n        conn: &mut quiche::Connection, max_field_section_size: Option<u64>,\n        qpack_max_table_capacity: Option<u64>,\n        qpack_blocked_streams: Option<u64>,","sourceCodeStart":834,"sourceCodeEnd":870,"githubUrl":"https://github.com/cloudflare/quiche/blob/9f96daa2c22a4468b0036fb0a0a3894eee6498b8/apps/src/common.rs#L834-L870","documentation":"When establishing the client's HTTP/3 layer, connect_to h3::Connection::with_streams is unwrapped with this message. The H3 handshake allocates control/QPACK encoder/decoder uni streams, which fails if the server's advertised uni stream limit or flow-control window is too small to open them.","triggerScenarios":"Server transport parameters set max_streams_uni (or window sizes) too low, so h3::Connection creation in apps/src/common.rs:852 fails while building the Http3Conn client.","commonSituations":"Custom/minimal quiche-server configs with reduced stream limits or windows; misconfigured intermediates; clients talking to servers with unusually restrictive transport parameters.","solutions":["Raise the server's uni stream limit (e.g. Config::set_max_streams_uni to >= 3) and window sizes (set_stream_window_uni / set_max_data)","Check the server's quiche::Config for restrictive transport parameters","Capture a qlog of the handshake to confirm the advertised limits","If you control neither endpoint, use a server with standard HTTP/3 defaults"],"exampleFix":"// before (server config)\nconfig.set_max_streams_uni(2); // not enough for control + QPACK streams\n// after (server config)\nconfig.set_max_streams_uni(8);\nconfig.set_stream_window_uni(16_384);","handlingStrategy":"validation","validationCode":"// on the server side, before accepting clients:\nconfig.set_max_streams_uni(8); // h3 needs control + QPACK encoder/decoder streams\nconfig.set_stream_window_uni(16_384);\nconfig.set_max_data(1_048_576);","typeGuard":null,"tryCatchPattern":"let h3_conn = h3::Connection::with_streams(...)\n    .map_err(|e| anyhow!(\"Unable to create HTTP/3 connection: {e} \\\n        (check server's uni stream limit and window size)\"))?;","preventionTips":["Ensure the server advertises at least 3 uni streams (control + QPACK pair)","Keep transport-parameter defaults unless you fully understand H3 requirements","Capture a qlog of the failed handshake to inspect advertised limits"],"tags":["http3","quiche","stream-limit","flow-control"],"backgroundTag":"invalid-config-value","analyzedSha":"9f96daa2c22a4468b0036fb0a0a3894eee6498b8","analyzedAt":"2026-09-08T11:27:09.536Z","contentChangedAt":"2026-09-08T11:27:09.536Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}