Bugfix: UDP checksums are now calculated after all fields have been filled in
diff --git a/contiki/uip/uip.c b/contiki/uip/uip.c
index acf424a..18fc4ed 100644
--- a/contiki/uip/uip.c
+++ b/contiki/uip/uip.c
@@ -39,7 +39,7 @@
*
* This file is part of the uIP TCP/IP stack.
*
- * $Id: uip.c,v 1.17 2004/09/17 20:59:23 adamdunkels Exp $
+ * $Id: uip.c,v 1.18 2004/09/18 20:17:01 adamdunkels Exp $
*
*/
@@ -823,13 +823,6 @@
UDPBUF->udplen = HTONS(uip_slen + 8);
UDPBUF->udpchksum = 0;
-#if UIP_UDP_CHECKSUMS
- /* Calculate UDP checksum. */
- UDPBUF->udpchksum = ~(uip_udpchksum());
- if(UDPBUF->udpchksum == 0) {
- UDPBUF->udpchksum = 0xffff;
- }
-#endif /* UIP_UDP_CHECKSUMS */
BUF->srcport = uip_udp_conn->lport;
BUF->destport = uip_udp_conn->rport;
@@ -840,6 +833,15 @@
BUF->destipaddr[1] = uip_udp_conn->ripaddr[1];
uip_appdata = &uip_buf[UIP_LLH_LEN + 40];
+
+#if UIP_UDP_CHECKSUMS
+ /* Calculate UDP checksum. */
+ UDPBUF->udpchksum = ~(uip_udpchksum());
+ if(UDPBUF->udpchksum == 0) {
+ UDPBUF->udpchksum = 0xffff;
+ }
+#endif /* UIP_UDP_CHECKSUMS */
+
goto ip_send_nolen;
#endif /* UIP_UDP */