chiark
/
gitweb
/
~mdw
/
tripe
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pathmtu: Reset the timeout on each packet.
[tripe]
/
pathmtu
/
pathmtu.c
diff --git
a/pathmtu/pathmtu.c
b/pathmtu/pathmtu.c
index acc88378b64d43353ea5dcadcc75ac80a9e8a2d8..c86397fdcabf9edfcf4e4bce34ec47897c309a87 100644
(file)
--- 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;
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;
+ tv
proto.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)))
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;
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 ||
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 ||