From ec409d4ca8c26da50846a1c71f3302923511806a Mon Sep 17 00:00:00 2001 From: Jop Zitman Date: Sun, 29 Dec 2024 21:16:22 +0800 Subject: [PATCH] Random path for polls --- src/slipstream_client.c | 15 ++++++++------- src/slipstream_sockloop.c | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/slipstream_client.c b/src/slipstream_client.c index ed58eff..16534bf 100644 --- a/src/slipstream_client.c +++ b/src/slipstream_client.c @@ -321,19 +321,20 @@ int slipstream_client_sockloop_callback(picoquic_quic_t* quic, picoquic_packet_l switch (cb_mode) { case picoquic_packet_loop_before_select: - picoquic_cnx_t* cnx = client_ctx->cnx; - picoquic_path_t* path_x = cnx->path[0]; - picoquic_connection_id_t outgoing_dest_connection_id = path_x->p_remote_cnxid->cnx_id; - if (outgoing_dest_connection_id.id_len == 0) { - outgoing_dest_connection_id = cnx->initial_cnxid; - } - uint64_t current_time = picoquic_current_time(); uint64_t passed = current_time - client_ctx->last_request; if (passed < 20000) { break; } + const picoquic_cnx_t* cnx = client_ctx->cnx; + const int path_index = rand() % cnx->nb_paths; + const picoquic_path_t* path_x = cnx->path[path_index]; + picoquic_connection_id_t outgoing_dest_connection_id = path_x->p_remote_cnxid->cnx_id; + if (outgoing_dest_connection_id.id_len == 0) { + outgoing_dest_connection_id = cnx->initial_cnxid; + } + uint8_t* poll_packet_buf; size_t poll_packet_len; diff --git a/src/slipstream_sockloop.c b/src/slipstream_sockloop.c index 4e928d4..4c951ec 100644 --- a/src/slipstream_sockloop.c +++ b/src/slipstream_sockloop.c @@ -56,7 +56,7 @@ int slipstream_packet_loop_(picoquic_network_thread_ctx_t* thread_ctx, picoquic_ picoquic_packet_loop_param_t* param = thread_ctx->param; const picoquic_packet_loop_cb_fn loop_callback = thread_ctx->loop_callback; void* loop_callback_ctx = thread_ctx->loop_callback_ctx; - slot_t slots[PICOQUIC_PACKET_LOOP_RECV_MAX]; + slot_t slots[PICOQUIC_PACKET_LOOP_RECV_MAX] = {0}; while (!thread_ctx->thread_should_close) { if (loop_callback) {