[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r12697 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r12697 - gnunet/src/transport |
Date: |
Sat, 21 Aug 2010 09:30:50 +0200 |
Author: grothoff
Date: 2010-08-21 09:30:50 +0200 (Sat, 21 Aug 2010)
New Revision: 12697
Modified:
gnunet/src/transport/gnunet-nat-client-windows.c
gnunet/src/transport/gnunet-nat-client.c
Log:
fix
Modified: gnunet/src/transport/gnunet-nat-client-windows.c
===================================================================
--- gnunet/src/transport/gnunet-nat-client-windows.c 2010-08-20 16:31:55 UTC
(rev 12696)
+++ gnunet/src/transport/gnunet-nat-client-windows.c 2010-08-21 07:30:50 UTC
(rev 12697)
@@ -300,18 +300,19 @@
memcpy(&packet[off], &udp_pkt, sizeof(udp_pkt));
off += sizeof(udp_pkt);
- /* set ICMP checksum */
- icmp_pkt.checksum = htons(calc_checksum((uint16_t*)&packet[sizeof(ip_pkt)],
- sizeof (icmp_pkt) + sizeof(ip_pkt) +
sizeof(udp_pkt)));
- memcpy (&packet[sizeof(ip_pkt)], &icmp_pkt, sizeof (icmp_pkt));
+ /* no go back to calculate ICMP packet checksum */
+ off = sizeof (ip_pkt);
+ icmp_pkt.checksum = htons(calc_checksum((uint16_t*)&packet[off],
+ sizeof (icmp_pkt) + sizeof(ip_pkt) +
sizeof(udp_pkt)));
+ memcpy (&packet[off], &icmp_pkt, sizeof (icmp_pkt));
-
+
memset (&dst, 0, sizeof (dst));
dst.sin_family = AF_INET;
dst.sin_addr = *other;
err = sendto(rawsock,
packet,
- off, 0,
+ sizeof (packet), 0,
(struct sockaddr*)&dst,
sizeof(dst));
@@ -320,7 +321,7 @@
fprintf(stderr,
"sendto failed: %s\n", strerror(errno));
}
- else if (err != off)
+ else if (err != sizeof (packet))
{
fprintf(stderr,
"Error: partial send of ICMP message\n");
Modified: gnunet/src/transport/gnunet-nat-client.c
===================================================================
--- gnunet/src/transport/gnunet-nat-client.c 2010-08-20 16:31:55 UTC (rev
12696)
+++ gnunet/src/transport/gnunet-nat-client.c 2010-08-21 07:30:50 UTC (rev
12697)
@@ -324,6 +324,7 @@
int err;
/* ip header: send to (known) ip address */
+ off = 0;
ip_pkt.vers_ihl = 0x45;
ip_pkt.tos = 0;
ip_pkt.pkt_len = sizeof (packet); /* huh? */
@@ -335,7 +336,7 @@
ip_pkt.src_ip = my_ip->s_addr;
ip_pkt.dst_ip = other->s_addr;
ip_pkt.checksum = htons(calc_checksum((uint16_t*)&ip_pkt, sizeof (struct
ip_packet)));
- memcpy (packet, &ip_pkt, sizeof (struct ip_packet));
+ memcpy (&packet[off], &ip_pkt, sizeof (struct ip_packet));
off = sizeof (ip_pkt);
/* icmp reply: time exceeded */
@@ -391,7 +392,7 @@
dst.sin_addr = *other;
err = sendto(rawsock,
packet,
- off, 0,
+ sizeof (packet), 0,
(struct sockaddr*)&dst,
sizeof(struct sockaddr_in));
if (err < 0)
@@ -399,7 +400,7 @@
fprintf(stderr,
"sendto failed: %s\n", strerror(errno));
}
- else if (err != off)
+ else if (err != sizeof (packet))
{
fprintf(stderr,
"Error: partial send of ICMP message\n");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r12697 - gnunet/src/transport,
gnunet <=