From 1971df98ee2b15434a5a7ba09b9e4074f6ddf414 Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Fri, 6 Mar 2009 23:16:23 +0000 Subject: [PATCH] do proper mtu detection, ticket #54 --- src/iodine.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/iodine.c b/src/iodine.c index 71dd2cb..f238a48 100644 --- a/src/iodine.c +++ b/src/iodine.c @@ -772,25 +772,26 @@ handshake_autoprobe_fragsize(int dns_fd) fprintf(stderr, "%d ok.. ", acked_fragsize); fflush(stderr); max_fragsize = acked_fragsize; - range >>= 1; - proposed_fragsize += range; - continue; - } else { - goto badlen; } } if (strncmp("BADIP", in, 5) == 0) { fprintf(stderr, "got BADIP.. "); fflush(stderr); } + break; } } } -badlen: - fprintf(stderr, "%d not ok.. ", proposed_fragsize); - fflush(stderr); range >>= 1; - proposed_fragsize -= range; + if (max_fragsize == proposed_fragsize) { + /* Try bigger */ + proposed_fragsize += range; + } else { + /* Try smaller */ + fprintf(stderr, "%d not ok.. ", proposed_fragsize); + fflush(stderr); + proposed_fragsize -= range; + } } if (!running) { fprintf(stderr, "\n");