From 07b291efd9e91262a0a3e015c04eb9b0e4efd734 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 14 Jan 2021 12:23:58 +0100 Subject: [PATCH] Some fixes --- src/meas_lat.c | 24 ++++++++++++++++-------- src/measure.c | 4 ++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/meas_lat.c b/src/meas_lat.c index 0a160f2..4b30f2d 100644 --- a/src/meas_lat.c +++ b/src/meas_lat.c @@ -103,10 +103,10 @@ void measlat_stop( printf("All measurements done\n"); evt_core_rm_fd(ctx, timer_fd); - evt_core_rm_fd(ctx, net_fd); - if (mctx->role == MEASLAT_CLIENT) { + if (!(mctx->connectionless && mctx->role == MEASLAT_SERVER)) + evt_core_rm_fd(ctx, net_fd); + if (mctx->role == MEASLAT_CLIENT) exit(EXIT_SUCCESS); - } } int on_receive_measure_packet(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) { @@ -132,7 +132,7 @@ int on_receive_measure_packet(struct evt_core_ctx* ctx, struct evt_core_fdinfo* // 2. Read data in our measurement object if (ms->mp_nin >= mctx->mp.payload_size || strcmp(mctx->transport, "udp") == 0) ms->mp_nin = 0; - nread = mctx->connectionless ? + nread = mctx->connectionless && mctx->role == MEASLAT_SERVER ? recvfrom(fdinfo->fd, ms->mp_in, mctx->mp.payload_size, MSG_TRUNC, (struct sockaddr*)&mctx->addr, &mctx->addrlen) : recv(fdinfo->fd, ms->mp_in + ms->mp_nin, mctx->mp.payload_size - ms->mp_nin, 0); @@ -220,7 +220,7 @@ int on_timer(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) { struct measure_packet* head = measure_generate(&mctx->mp, ms); //printf("send(id=%ld,is_echo=%d)\n", head->counter, head->is_echo); - s = mctx->connectionless ? + s = mctx->connectionless && mctx->role == MEASLAT_SERVER ? sendto(ms->fd, head, mctx->mp.payload_size, 0, (struct sockaddr*)&mctx->addr, mctx->addrlen) : send(ms->fd, head, mctx->mp.payload_size, 0); @@ -351,9 +351,16 @@ void spawn_udp_client(struct evt_core_ctx* evts) { struct evt_core_fdinfo* reg_fdinfo = evt_core_add_fd (evts, &fdinfo); printf("--- UDP client registered\n"); + struct sockaddr_in my_addr; + socklen_t my_addr_len = sizeof(my_addr); + getsockname(udp_sock, (struct sockaddr *) &my_addr, &my_addr_len); + uint16_t myPort = ntohs(my_addr.sin_port); + printf("client port is %u\n", myPort); + struct measure_state ms = {0}; ms.fd = udp_sock; measure_state_init (&mctx->mp, &ms); + register_timer (evts, mctx, &ms, NULL); } @@ -400,15 +407,16 @@ void spawn_tcp_client(struct evt_core_ctx* evts) { struct evt_core_fdinfo* reg_fdinfo = evt_core_add_fd (evts, &fdinfo); printf("--- TCP client registered\n"); - struct measure_state ms = {0}; struct sockaddr_in my_addr; socklen_t my_addr_len = sizeof(my_addr); - ms.fd = tcp_sock; - measure_state_init (&mctx->mp, &ms); getsockname(tcp_sock, (struct sockaddr *) &my_addr, &my_addr_len); uint16_t myPort = ntohs(my_addr.sin_port); printf("client port is %u\n", myPort); + struct measure_state ms = {0}; + ms.fd = tcp_sock; + measure_state_init (&mctx->mp, &ms); + register_timer (evts, mctx, &ms, NULL); } diff --git a/src/measure.c b/src/measure.c index 63d7d80..2b1a892 100644 --- a/src/measure.c +++ b/src/measure.c @@ -64,10 +64,10 @@ void measure_parse(struct measure_params* mp, struct measure_state* ms) { uint8_t is_vanilla = (ms->mp_in->flag & 0x40) >> 6; uint8_t link_id = ms->mp_in->flag & 0x3f; printf( - "[%s] src=%d, id=%llu, owd=%luµs, flag=%d, link=%d, vanilla=%d\n", + "[%s] src=%d, id=%lu, owd=%luµs, flag=%d, link=%d, vanilla=%d\n", current_human_datetime(), ms->fd, - (unsigned long long)ms->mp_in->counter, + ms->mp_in->counter, micro_sec, is_slow, link_id,