/* Note that the user task will release all the expired streams
* attached to it.
*/
- /* Note that for QUIC, the number of available streams is not
+ /* Note that for QUIC and QMUX, the number of available streams is not
* incremented as soon as a stream is completed (fin=1).
* For H1, here this number is always 0.
*/
- if (!url->cfg->is_quic || hs->conn->mux->avail_streams(hs->conn))
+ if ((!url->cfg->is_quic && !url->cfg->is_h3) ||
+ hs->conn->mux->avail_streams(hs->conn))
task_wakeup(usr->task, TASK_WOKEN_IO);
LIST_DELETE(&hs->list);
static int hld_debug;
struct hld_url_cfg *hld_url_cfgs;
char *srv_opts, *tls_ciphers, *tls_ciphersuites, *tls_curves, *alpn;
-int h2c;
+int h2c, is_h3;
static void hld_usage(char *name, int argc)
{
hld_url_cfg->ssl = ssl;
hld_url_cfg->is_quic = is_quic;
+ hld_url_cfg->is_h3 = is_h3;
hld_url_cfg->h2c = h2c;
hld_url_cfg->addr = addr;
hld_url_cfg->raw_addr = raw_addr;
strcmp(opt, "h0") == 0) {
alpn = "hq-interop";
h2c = 0;
+ is_h3 = 0;
}
else if (strcmp(opt, "1") == 0 ||
strcmp(opt, "h1") == 0) {
alpn = "http/1.1";
h2c = 0;
+ is_h3 = 0;
}
else if (strcmp(opt, "2") == 0 ||
strcmp(opt, "h2") == 0) {
alpn = "h2";
h2c = 0;
+ is_h3 = 0;
}
else if (strcmp(opt, "2c") == 0 ||
strcmp(opt, "h2c") == 0) {
alpn = NULL;
h2c = 1;
+ is_h3 = 0;
}
else if (strcmp(opt, "3") == 0 ||
strcmp(opt, "h3") == 0) {
alpn = "h3";
h2c = 0;
+ is_h3 = 1;
}
else if (*opt == 'd') {
opt++;