Index: ControlSocket.cpp
===================================================================
RCS file: /cvsroot/filezilla/FileZilla/source/ControlSocket.cpp,v
retrieving revision 1.33
diff -u -b -r1.33 ControlSocket.cpp
--- ControlSocket.cpp	2001/11/08 17:23:17	1.33
+++ ControlSocket.cpp	2001/12/05 12:11:52
@@ -200,29 +200,28 @@
 					//Check for multi-line responses
 					if (m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1].GetLength()>3)
 					{
-						if (m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1][3]=='-')
+						if (m_MultiLine!="") // multi-line was started
 						{
-							m_MultiLine=m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1].Left(3);
+							if (m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1].Left(4)!=m_MultiLine)
 							m_RecvBuffer.RemoveAt(m_RecvBuffer.GetUpperBound()-1);
-						}
-						else if (m_MultiLine!="")
-						{
-							if (m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1].Left(3)!=m_MultiLine)
-								m_RecvBuffer.RemoveAt(m_RecvBuffer.GetUpperBound()-1);
-							else
+							else // end of multi-line found
 							{
 								m_MultiLine="";
 								AfxGetThread()->PostThreadMessage(WM_THREADMSG,FTM_PROCESSREPLY,0);
 							}
 						}
+						// start of new multi-line
+						else if (m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1][3]=='-')
+						{
+							// DDD<SP> is the end of a multi-line response
+							m_MultiLine=m_RecvBuffer[m_RecvBuffer.GetUpperBound()-1].Left(3)+' ';
+							m_RecvBuffer.RemoveAt(m_RecvBuffer.GetUpperBound()-1);
+						}
 						else
 							AfxGetThread()->PostThreadMessage(WM_THREADMSG,FTM_PROCESSREPLY,0);
 					}
 					else
 						m_RecvBuffer.RemoveAt(m_RecvBuffer.GetUpperBound()-1);
-					
-					
-					
 				}
 			}
 			else

 	  	 
