From a412b5961892a1f8afbfb4704fce45d5308c5808 Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Tue, 27 Jan 2009 21:29:53 +0000 Subject: [PATCH] Actually check length of probe responses --- src/iodine.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/iodine.c b/src/iodine.c index 0c0085e..c4c40fe 100644 --- a/src/iodine.c +++ b/src/iodine.c @@ -732,16 +732,25 @@ autodetect_max_fragsize: /* We got a reply */ int acked_fragsize = ((in[0] & 0xff) << 8) | (in[1] & 0xff); if (acked_fragsize == proposed_fragsize) { - printf("%d ok.. ", acked_fragsize); + if (read == proposed_fragsize) { + printf("%d ok.. ", acked_fragsize); + fflush(stdout); + max_downstream_frag_size = acked_fragsize; + range >>= 1; + proposed_fragsize += range; + continue; + } else { + goto badlen; + } + } + if (strncmp("BADIP", in, 5) == 0) { + printf("got BADIP.. "); fflush(stdout); - max_downstream_frag_size = acked_fragsize; - range >>= 1; - proposed_fragsize += range; - continue; } } } } +badlen: printf("%d not ok.. ", proposed_fragsize); fflush(stdout); range >>= 1;