diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-08-21 07:30:50 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-08-21 07:30:50 +0000 |
commit | 0465310093c39138a7b894e15b40a819ce768ae4 (patch) | |
tree | 762f3acd7d7631c2197ac2e84b4a352738c48a98 /src/transport/gnunet-nat-client-windows.c | |
parent | 375bc5e4bd829694f84920329340160ecf5f95b5 (diff) | |
download | gnunet-0465310093c39138a7b894e15b40a819ce768ae4.tar.gz gnunet-0465310093c39138a7b894e15b40a819ce768ae4.zip |
fix
Diffstat (limited to 'src/transport/gnunet-nat-client-windows.c')
-rw-r--r-- | src/transport/gnunet-nat-client-windows.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/transport/gnunet-nat-client-windows.c b/src/transport/gnunet-nat-client-windows.c index febcfc717..aae487b76 100644 --- a/src/transport/gnunet-nat-client-windows.c +++ b/src/transport/gnunet-nat-client-windows.c | |||
@@ -300,18 +300,19 @@ send_icmp_udp (const struct in_addr *my_ip, | |||
300 | memcpy(&packet[off], &udp_pkt, sizeof(udp_pkt)); | 300 | memcpy(&packet[off], &udp_pkt, sizeof(udp_pkt)); |
301 | off += sizeof(udp_pkt); | 301 | off += sizeof(udp_pkt); |
302 | 302 | ||
303 | /* set ICMP checksum */ | 303 | /* no go back to calculate ICMP packet checksum */ |
304 | icmp_pkt.checksum = htons(calc_checksum((uint16_t*)&packet[sizeof(ip_pkt)], | 304 | off = sizeof (ip_pkt); |
305 | sizeof (icmp_pkt) + sizeof(ip_pkt) + sizeof(udp_pkt))); | 305 | icmp_pkt.checksum = htons(calc_checksum((uint16_t*)&packet[off], |
306 | memcpy (&packet[sizeof(ip_pkt)], &icmp_pkt, sizeof (icmp_pkt)); | 306 | sizeof (icmp_pkt) + sizeof(ip_pkt) + sizeof(udp_pkt))); |
307 | 307 | memcpy (&packet[off], &icmp_pkt, sizeof (icmp_pkt)); | |
308 | 308 | ||
309 | |||
309 | memset (&dst, 0, sizeof (dst)); | 310 | memset (&dst, 0, sizeof (dst)); |
310 | dst.sin_family = AF_INET; | 311 | dst.sin_family = AF_INET; |
311 | dst.sin_addr = *other; | 312 | dst.sin_addr = *other; |
312 | err = sendto(rawsock, | 313 | err = sendto(rawsock, |
313 | packet, | 314 | packet, |
314 | off, 0, | 315 | sizeof (packet), 0, |
315 | (struct sockaddr*)&dst, | 316 | (struct sockaddr*)&dst, |
316 | sizeof(dst)); | 317 | sizeof(dst)); |
317 | 318 | ||
@@ -320,7 +321,7 @@ send_icmp_udp (const struct in_addr *my_ip, | |||
320 | fprintf(stderr, | 321 | fprintf(stderr, |
321 | "sendto failed: %s\n", strerror(errno)); | 322 | "sendto failed: %s\n", strerror(errno)); |
322 | } | 323 | } |
323 | else if (err != off) | 324 | else if (err != sizeof (packet)) |
324 | { | 325 | { |
325 | fprintf(stderr, | 326 | fprintf(stderr, |
326 | "Error: partial send of ICMP message\n"); | 327 | "Error: partial send of ICMP message\n"); |