X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/b7e1e18b57c30555f65a2548e0f1f186200c0ea8..fc5f482398c76a2d1e81f88f2ce3e750ad029c19:/pathmtu/pathmtu.c diff --git a/pathmtu/pathmtu.c b/pathmtu/pathmtu.c index acc88378..c86397fd 100644 --- a/pathmtu/pathmtu.c +++ b/pathmtu/pathmtu.c @@ -90,9 +90,9 @@ static int pathmtu(struct sockaddr_in *sin, double to) int mtu; int i; size_t sz; - struct timeval tv; + struct timeval tv, tvproto; - tv.tv_sec = to; tv.tv_usec = (to - tv.tv_sec) * 1000000; + tvproto.tv_sec = to; tvproto.tv_usec = (to - tvproto.tv_sec) * 1000000; if ((sk = socket(PF_INET, SOCK_DGRAM, 0)) < 0) goto fail_0; i = IP_PMTUDISC_DO; if (setsockopt(sk, SOL_IP, IP_MTU_DISCOVER, &i, sizeof(i))) @@ -102,7 +102,7 @@ static int pathmtu(struct sockaddr_in *sin, double to) sz = sizeof(mtu); if (getsockopt(sk, SOL_IP, IP_MTU, &mtu, &sz)) goto fail_1; if (write(sk, buf, mtu - 28) < 0) goto fail_1; - FD_SET(sk, &fd_in); + FD_SET(sk, &fd_in); tv = tvproto; if (select(sk + 1, &fd_in, 0, 0, &tv) < 0) goto fail_1; if (!FD_ISSET(sk, &fd_in)) break; if (read(sk, &i, 1) >= 0 ||