gnunet-svn
[Top][All Lists]
Advanced

[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");




reply via email to

[Prev in Thread] Current Thread [Next in Thread]