Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

修正 FileZilla 3 beta2 使用 sftp 無法上下傳目錄的問題
post by tommy @ 18 十月, 2006 18:57
在 FileZilla 3 的 beta2 版本中, 在使用 sftp 上下傳檔案時, 如果是傳送一整個目錄, 如果目錄不存在時, 並不會自動建立新的目錄, 造成無法上下傳整個目錄的問題.

這個 patch 可以修正這個問題.

diff -Nur src.utf8/engine/sftpcontrolsocket.cpp src/engine/sftpcontrolsocket.cpp
--- src.utf8/engine/sftpcontrolsocket.cpp Wed Oct 18 17:48:38 2006
+++ src/engine/sftpcontrolsocket.cpp Wed Oct 18 17:57:55 2006
@@ -995,12 +995,17 @@

int CSftpControlSocket::ChangeDirParseResponse(bool successful, const wxString& reply)
{
- if (!successful || !m_pCurOpData)
+ if (!m_pCurOpData)
{
ResetOperation(FZ_REPLY_ERROR);
return FZ_REPLY_ERROR;
}
CSftpChangeDirOpData *pData = static_cast<CSftpChangeDirOpData *>(m_pCurOpData);
+ if (!successful && pData->opState != cwd_cwd)
+ {
+ ResetOperation(FZ_REPLY_ERROR);
+ return FZ_REPLY_ERROR;
+ }

bool error = false;
switch (pData->opState)
@@ -1198,6 +1203,9 @@
if (download)
{
wxString filename = remotePath.FormatFilename(remoteFile);
+ // Create local directory
+ wxFileName fn(localFile);
+ wxFileName::Mkdir(fn.GetPath(), 0777, wxPATH_MKDIR_FULL);
LogMessage(Status, _("Starting download of %s"), filename.c_str());
}
else
 

這個 patch 可以在這兒抓取: http://www.teatime.com.tw/~tommy/mypatch/filezilla3_beta2_sftp_transfer_dir.patch 

不過在加上這個 patch 之後, 在我測試的時候, 多數的情形下都可以正常使用. 但是有時候會把原本不同目錄的檔案, 上傳到相同的目錄. 這個問題看起來像是作者提過的這個問題. 似乎是一個 race condition, 要抓出問題點可能需要一段時間吧.

另外就是在下載之後, local 端的 tree 並不會更新. 上傳之後, remote 端的 tree 會更新, 但是不完整.

剛剛又發現另一個問題, 如果 sftp 的 remote 端是一個 soft link 的目錄的話, 傳送該目錄會造成 loop,  然後 FileZilla 就當在那邊沒回應了.


2006/10/18: 這個修正作者修改後已進入目前的 CVS 中了.

 

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
迴響

  

Bad Behavior 已經阻擋了 128 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS