From f647519e1cf6f4586ca02428a70097a3e74f797c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Wed, 23 Oct 2019 14:07:35 +0000 Subject: [PATCH] Take the time to check loss before enabling a path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrien Gallouët --- mud.c | 12 ++++++++---- mud.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mud.c b/mud.c index 4b24d12..097b81d 100644 --- a/mud.c +++ b/mud.c @@ -1276,9 +1276,11 @@ mud_update_window(struct mud *mud, struct mud_path *path, if (send_bytes && send_bytes >= recv_bytes) { path->tx.loss = (send_bytes - recv_bytes) * 100 / send_bytes; if (path->tx.loss < mud->loss_limit) { - path->loss_count = 0; - } else if (path->loss_count < MUD_LOSS_COUNT) { - path->loss_count++; + if (path->loss_count > -MUD_LOSS_COUNT) + path->loss_count--; + } else { + if (path->loss_count < MUD_LOSS_COUNT) + path->loss_count++; } } @@ -1317,7 +1319,9 @@ mud_recv_msg(struct mud *mud, struct mud_path *path, path->rx.loss = (uint64_t)msg->loss; path->msg_sent = 0; - path->ok = 1; + + if (path->loss_count == -MUD_LOSS_COUNT) // tmp hack + path->ok = 1; } else { mud_keyx_init(mud, now); path->state = (enum mud_state)msg->state; diff --git a/mud.h b/mud.h index c428fef..77cae8c 100644 --- a/mud.h +++ b/mud.h @@ -51,7 +51,7 @@ struct mud_path { struct mud_pubkey pk; unsigned char ok; unsigned msg_sent; - unsigned loss_count; + int loss_count; }; struct mud_bad {