summaryrefslogtreecommitdiff
path: root/ftp/wput/files/patch-src::ftp.c
diff options
context:
space:
mode:
Diffstat (limited to 'ftp/wput/files/patch-src::ftp.c')
-rw-r--r--ftp/wput/files/patch-src::ftp.c34
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;
+ }