Backout commit 8f1bc284 as it causes TFTP to fail.
authorWolfgang Denk <wd@denx.de>
Thu, 30 Aug 2007 12:42:15 +0000 (14:42 +0200)
committerWolfgang Denk <wd@denx.de>
Thu, 30 Aug 2007 12:42:15 +0000 (14:42 +0200)
Signed-off-by: Wolfgang Denk <wd@denx.de>
net/tftp.c

index 27f5e88be830f6dfb1873deca9e3605d3a9b34b1..fb2f50564e9d0bda8760c3cb6cfd047d54c65c76 100644 (file)
@@ -238,9 +238,9 @@ TftpSend (void)
 static void
 TftpHandler (uchar * pkt, unsigned dest, unsigned src, unsigned len)
 {
-       char * blksize;
        ushort proto;
        ushort *s;
+       int i;
 
        if (dest != TftpOurPort) {
 #ifdef CONFIG_MCAST_TFTP
@@ -272,22 +272,22 @@ TftpHandler (uchar * pkt, unsigned dest, unsigned src, unsigned len)
 
        case TFTP_OACK:
 #ifdef ET_DEBUG
-               printf("Got OACK:\n");
-               print_buffer (0, pkt, 1, len, 16);
+               printf("Got OACK: %s %s\n", pkt, pkt+strlen(pkt)+1);
 #endif
                TftpState = STATE_OACK;
                TftpServerPort = src;
-
                /* Check for 'blksize' option */
-               pkt[len] = 0; /* NULL terminate so string ops work */
-               blksize = strstr((char*)pkt, "blksize");
-               if ((blksize) && (blksize + 8 < (char*)pkt + len)) {
-                       TftpBlkSize = simple_strtoul(blksize + 8, NULL, 10);
+               for (i=0;i<len-8;i++) {
+                       if (strcmp ((char*)pkt+i,"blksize") == 0) {
+                               TftpBlkSize = (unsigned short)
+                                       simple_strtoul((char*)pkt+i+8,NULL,10);
 #ifdef ET_DEBUG
-                       printf("Blocksize ack: %d\n", TftpBlkSize);
+                               printf ("Blocksize ack: %s, %d\n",
+                                       (char*)pkt+i+8,TftpBlkSize);
 #endif
+                               break;
+                       }
                }
-
 #ifdef CONFIG_MCAST_TFTP
                parse_multicast_oack((char *)pkt,len-1);
                if ((Multicast) && (!MasterClient))