aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-nat-client-windows.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-08-21 07:30:50 +0000
committerChristian Grothoff <christian@grothoff.org>2010-08-21 07:30:50 +0000
commit0465310093c39138a7b894e15b40a819ce768ae4 (patch)
tree762f3acd7d7631c2197ac2e84b4a352738c48a98 /src/transport/gnunet-nat-client-windows.c
parent375bc5e4bd829694f84920329340160ecf5f95b5 (diff)
downloadgnunet-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.c15
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");