[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

patch for wput



Hi,

Please note that wput 0.4 doesn't like multiline response messages
returned in one chunk. Try ftp://boxter.barnet.com.au/.

This patch overcomes the problem.

[~/cvs/ports/ftp/wput] edwin@k7>less files/patch-src\:\:ftp.c 
--- src/ftp.c.orig      Mon Jul  5 21:26:46 2004
+++ src/ftp.c   Mon Jul  5 21:39:05 2004
@@ -798,15 +798,30 @@
 
 int get_msg(int csock, char * msg, int buflen){
   int res = 0;
+  char *s;
   
   do {
          memset(msg, 0, buflen);
          res = recv(csock, msg, buflen-1, 0);
          printout(vDEBUG, "%s", msg);
+         /*
+          * Multiline responses should of course only check on the last line.
+          * If there are two \n's from the end of the string in the string,
+          * the check at the start of second last one.
+          */
+         if ((s=strrchr(msg,'\n'))!=NULL) {
+                 if ((s=strrchr(s-1,'\n'))!=NULL) {
+                       s++;
+                       if (*s=='\r') s++;
+                 } else
+                       s=msg;
+         } else {
+               s=msg;
+         }
   /* multiline messages are required by rfc to have a hiphen
    * after the command-code (e.g. 250-).
    * this counts for all but the last one, so look out for it. */
-  } while(msg[3] == '-');
+  } while(s[3] == '-');
   
   return res;
 }




Edwin

-- 
Edwin Groothuis      |            Personal website: http://www.mavetju.org
edwin@mavetju.org    |          Weblog: http://weblog.barnet.com.au/edwin/