Probably this patch will fix the bug. Please try.

--
   Alexander.
Index: CmdExec.cc
===================================================================
RCS file: /home/lav/cvsroot/lftp/src/CmdExec.cc,v
retrieving revision 1.122
diff -u -p -r1.122 CmdExec.cc
--- CmdExec.cc  24 May 2006 07:30:21 -0000      1.122
+++ CmdExec.cc  2 Aug 2006 13:14:34 -0000
@@ -1311,19 +1311,21 @@ void CmdExec::FeedArgV(const ArgV *args,
    xfree(cmd);
 }
 
-bool CmdExec::SameQueueParameters(CmdExec *scan)
+bool CmdExec::SameQueueParameters(CmdExec *scan,const char *this_url)
 {
-   return !strcmp(this->session->GetConnectURL(FA::NO_PATH),
-                 scan->session->GetConnectURL(FA::NO_PATH))
+   return !strcmp(this_url,scan->session->GetConnectURL(FA::NO_PATH))
       && !xstrcmp(this->slot,scan->slot);
 }
 
 /* return the CmdExec containing a queue feeder; create if necessary */
 CmdExec  *CmdExec::GetQueue(bool create)
 {
+   const char *this_url=session->GetConnectURL(FA::NO_PATH);
+   // future GetConnectURL overwrite the static buffer, save it.
+   this_url=alloca_strdup(this_url);
    for(CmdExec *scan=chain; scan; scan=scan->next)
    {
-      if(scan->queue_feeder && SameQueueParameters(scan))
+      if(scan->queue_feeder && SameQueueParameters(scan,this_url))
         return scan;
    }
    if(!create)
Index: CmdExec.h
===================================================================
RCS file: /home/lav/cvsroot/lftp/src/CmdExec.h,v
retrieving revision 1.55
diff -u -p -r1.55 CmdExec.h
--- CmdExec.h   5 Apr 2006 12:28:15 -0000       1.55
+++ CmdExec.h   2 Aug 2006 13:14:41 -0000
@@ -138,7 +138,7 @@ private:
 
    QueueFeeder *queue_feeder;
    CmdExec *GetQueue(bool create = true);
-   bool SameQueueParameters(CmdExec *);
+   bool SameQueueParameters(CmdExec *,const char *);
 
    FileAccess *saved_session;
    void ReuseSavedSession();

Reply via email to