On Tue, Mar 17, 2009 at 10:16:35AM +0300, Alexander V. Lukyanov wrote:
> On Sun, Mar 15, 2009 at 08:52:05PM +0100, Manuel Reimer wrote:
> > ---> REST 5760
> > <--- 350 Restarting at 5760. Send STORE or RETRIEVE to initiate transfer
> > ---> STOR hu.po
> > <--- 451 hu.po: Append/Restart not permitted, try again
> > ---- Closing data socket
> > 
> > lftp doesn't interpret this error and tries to use "rest" in front of a 
> > "stor" over and over again.
> 
> IMHO lftp interprets this error correctly, as 4xx means a transient error,
> from RFC959: "the error condition is temporary and the action may be 
> requested again".

Anyway, please try this patch.

-- 
   Alexander..
Index: ftpclass.cc
===================================================================
RCS file: /home/lav/cvsroot/lftp/src/ftpclass.cc,v
retrieving revision 1.455
diff -u -p -r1.455 ftpclass.cc
--- ftpclass.cc 3 Mar 2009 10:20:51 -0000       1.455
+++ ftpclass.cc 17 Mar 2009 10:35:59 -0000
@@ -251,19 +251,21 @@ void Ftp::NoFileCheck(int act)
       SetError(FATAL,all_lines);
       return;
    }
+   if(real_pos>0 && !GetFlag(IO_FLAG) && copy_mode==COPY_NONE
+   && ((is4XX(act) && strstr(line,"Append/Restart not permitted"))
+    || (is5XX(act) && !Transient5XX(act))))
+   {
+      DataClose();
+      LogNote(2,_("Switching to NOREST mode"));
+      flags|=NOREST_MODE;
+      real_pos=0;
+      if(mode==STORE)
+        pos=0;
+      state=EOF_STATE; // retry
+      return;
+   }
    if(is5XX(act) && !Transient5XX(act))
    {
-      if(real_pos>0 && !GetFlag(IO_FLAG) && copy_mode==COPY_NONE)
-      {
-        DataClose();
-        LogNote(2,_("Switching to NOREST mode"));
-        flags|=NOREST_MODE;
-        real_pos=0;
-        if(mode==STORE)
-           pos=0;
-        state=EOF_STATE; // retry
-        return;
-      }
       SetError(NO_FILE,all_lines);
       return;
    }

Reply via email to