diff -r f5d4820de50d -r 4fde310f06fe hti/HtiServicePlugins/HtiFtpServicePlugin/src/HtiFtpServicePlugin.cpp --- a/hti/HtiServicePlugins/HtiFtpServicePlugin/src/HtiFtpServicePlugin.cpp Tue May 25 18:01:01 2010 +0300 +++ b/hti/HtiServicePlugins/HtiFtpServicePlugin/src/HtiFtpServicePlugin.cpp Mon Jun 14 11:37:33 2010 +0300 @@ -682,15 +682,33 @@ TInt newNameLength = aMessage[newNamePos]; GetFileNameL( aMessage.Mid( newNamePos, newNameLength + 1 ), aUnicode ); + TInt msglen = aMessage.Length(); + TInt recurse = 1; + if(msglen>originalLenngth+newNameLength+3) + { + recurse = aMessage[newNamePos+1+newNameLength]; + } + + TInt err=0; if ( IsFileTcb( origName ) || IsFileTcb( iFileName ) ) { HandleTcbCopyL( origName, iFileName ); } else{ iHandlerAO = new ( ELeave ) CFtpHandlerAO( this ); - TInt err = iFileMan->Copy( origName, iFileName, + + if (recurse) + { + err = iFileMan->Copy( origName, iFileName, ( CFileMan::EOverWrite | CFileMan::ERecurse ), iHandlerAO->iStatus ); + } + else + { + err = iFileMan->Copy( origName, iFileName, + ( CFileMan::EOverWrite ), + iHandlerAO->iStatus ); + } if ( err == KErrNone) {