diff options
Diffstat (limited to 'ftp/wput/files/patch-src::ftp.c')
-rw-r--r-- | ftp/wput/files/patch-src::ftp.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/ftp/wput/files/patch-src::ftp.c b/ftp/wput/files/patch-src::ftp.c new file mode 100644 index 000000000000..843483ab0872 --- /dev/null +++ b/ftp/wput/files/patch-src::ftp.c @@ -0,0 +1,34 @@ +--- 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; + } |