do proper mtu detection, ticket #54

This commit is contained in:
Erik Ekman 2009-03-06 23:16:23 +00:00
parent 7fe021cba9
commit 1971df98ee

View File

@ -772,26 +772,27 @@ handshake_autoprobe_fragsize(int dns_fd)
fprintf(stderr, "%d ok.. ", acked_fragsize); fprintf(stderr, "%d ok.. ", acked_fragsize);
fflush(stderr); fflush(stderr);
max_fragsize = acked_fragsize; max_fragsize = acked_fragsize;
range >>= 1;
proposed_fragsize += range;
continue;
} else {
goto badlen;
} }
} }
if (strncmp("BADIP", in, 5) == 0) { if (strncmp("BADIP", in, 5) == 0) {
fprintf(stderr, "got BADIP.. "); fprintf(stderr, "got BADIP.. ");
fflush(stderr); fflush(stderr);
} }
break;
} }
} }
} }
badlen: range >>= 1;
if (max_fragsize == proposed_fragsize) {
/* Try bigger */
proposed_fragsize += range;
} else {
/* Try smaller */
fprintf(stderr, "%d not ok.. ", proposed_fragsize); fprintf(stderr, "%d not ok.. ", proposed_fragsize);
fflush(stderr); fflush(stderr);
range >>= 1;
proposed_fragsize -= range; proposed_fragsize -= range;
} }
}
if (!running) { if (!running) {
fprintf(stderr, "\n"); fprintf(stderr, "\n");
warnx("stopped while autodetecting fragment size (Try probing manually with -m)"); warnx("stopped while autodetecting fragment size (Try probing manually with -m)");