From bee0de0c2666c8eba66c99914a318a3f2c3a0565 Mon Sep 17 00:00:00 2001 From: Jop Zitman Date: Fri, 21 Mar 2025 21:12:16 +0800 Subject: [PATCH] set MTU for during ready state (after handshake) (cherry picked from commit 2d6658c0bfd2e90e22322942f31352e829fe7d92) --- src/slipstream_client.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/slipstream_client.c b/src/slipstream_client.c index df699eb..99a99a0 100644 --- a/src/slipstream_client.c +++ b/src/slipstream_client.c @@ -45,6 +45,7 @@ typedef struct st_slipstream_client_ctx_t { bool ready; bool closed; int listen_sock; + size_t ready_mtu; } slipstream_client_ctx_t; char* client_domain_name = NULL; @@ -627,6 +628,14 @@ int slipstream_client_callback(picoquic_cnx_t* cnx, break; case picoquic_callback_ready: fprintf(stdout, "Connection confirmed.\n"); + const size_t mtu = client_ctx->ready_mtu; + picoquic_set_initial_send_mtu(cnx->quic, mtu, mtu); + picoquic_set_mtu_max(cnx->quic, mtu); + for (int i = 0; i < cnx->nb_paths; i++) { + picoquic_path_t* path = cnx->path[i]; + path->send_mtu = mtu; + path->send_mtu_max_tried = mtu; + } client_ctx->ready = true; slipstream_add_paths(client_ctx); default: @@ -735,6 +744,10 @@ int picoquic_slipstream_client(int listen_port, char const* resolver_addresses_f current_time = picoquic_current_time(); // one connection only, freed in slipstream_client_free_context on picoquic close callback slipstream_client_ctx_t client_ctx = {0}; + + // set MTU for during ready state (after handshake) + client_ctx.ready_mtu = 13; + /* Create QUIC context */ picoquic_quic_t* quic = picoquic_create_and_configure(&config, slipstream_client_callback, &client_ctx, current_time, NULL); if (quic == NULL) {