static void EraseTransFileList(void);\r
static ULONG WINAPI TransferThread(void *Dummy);\r
static int MakeNonFullPath(TRANSPACKET *Pkt, char *CurDir, char *Tmp);\r
-static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
-static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
-static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
+static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
+static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
+static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode);\r
// 再転送対応\r
//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
// 64ビット対応\r
//static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
-static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt);\r
-static int UpLoadNonPassive(TRANSPACKET *Pkt);\r
-static int UpLoadPassive(TRANSPACKET *Pkt);\r
-static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt);\r
+static int DoUpload(SOCKET cSkt, TRANSPACKET *Pkt);\r
+static int UploadNonPassive(TRANSPACKET *Pkt);\r
+static int UploadPassive(TRANSPACKET *Pkt);\r
+static int UploadFile(TRANSPACKET *Pkt, SOCKET dSkt);\r
// 同時接続対応\r
//static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii);\r
static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii, int *CancelCheckWork);\r
extern int MirDownDelNotify;\r
extern int FolderAttr;\r
extern int FolderAttrNum;\r
+// 同時接続対応\r
+extern int SendQuit;\r
\r
\r
/*----- ファイル転送スレッドを起動する ----------------------------------------\r
if(timeGetTime() - LastUsed > 60000 || NewCmdSkt == INVALID_SOCKET)\r
{\r
ReleaseMutex(hListAccMutex);\r
- SendData(TrnSkt, "QUIT\r\n", 6, 0, &Canceled[ThreadCount]);\r
+ DoQUIT(TrnSkt, &Canceled[ThreadCount]);\r
DoClose(TrnSkt);\r
TrnSkt = INVALID_SOCKET;\r
// WaitForSingleObject(hListAccMutex, INFINITE);\r
}\r
\r
Down = YES;\r
-// if(DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)\r
+// if(DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)\r
// {\r
// if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
-// DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
- DoDownLoad(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);\r
+// DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
+ DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);\r
// }\r
}\r
}\r
if(MakeNonFullPath(Pos, CurDir[Pos->ThreadCount], Tmp) == FFFTP_SUCCESS)\r
{\r
Up = YES;\r
-// if(DoUpLoad(AskTrnCtrlSkt(), TransPacketBase) == 429)\r
+// if(DoUpload(AskTrnCtrlSkt(), TransPacketBase) == 429)\r
// {\r
// if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
-// DoUpLoad(AskTrnCtrlSkt(), TransPacketBase);\r
- DoUpLoad(TrnSkt, Pos);\r
+// DoUpload(AskTrnCtrlSkt(), TransPacketBase);\r
+ DoUpload(TrnSkt, Pos);\r
// }\r
+\r
+ // ホスト側の日時設定\r
+ /* ファイルのタイムスタンプを合わせる */\r
+ if((SaveTimeStamp == YES) &&\r
+ ((Pos->Time.dwLowDateTime != 0) || (Pos->Time.dwHighDateTime != 0)))\r
+ {\r
+ DoMFMT(TrnSkt, Pos->RemoteFile, &Pos->Time, &Canceled[Pos->ThreadCount]);\r
+ }\r
}\r
// 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
ReleaseMutex(hListAccMutex);\r
{\r
for(i = 0; i < MAX_DATA_CONNECTION; i++)\r
Canceled[i] = YES;\r
+ if(Pos != NULL)\r
+ strcpy(Pos->Cmd, "");\r
+ Pos = NULL;\r
EraseTransFileList();\r
GoExit = YES;\r
- Pos = NULL;\r
}\r
else\r
{\r
* からも呼ばれる。メインのスレッドから呼ばれる時は Pkt->hWndTrans == NULL。\r
*----------------------------------------------------------------------------*/\r
\r
-int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)\r
+int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)\r
{\r
int iRetCode;\r
char Reply[ERR_MSG_LEN+7];\r
else if(BackgrndMessageProc() == NO)\r
{\r
if(AskPasvMode() != YES)\r
- iRetCode = DownLoadNonPassive(Pkt, CancelCheckWork);\r
+ iRetCode = DownloadNonPassive(Pkt, CancelCheckWork);\r
else\r
- iRetCode = DownLoadPassive(Pkt, CancelCheckWork);\r
+ iRetCode = DownloadPassive(Pkt, CancelCheckWork);\r
}\r
else\r
iRetCode = 500;\r
* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
-static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
+static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
{\r
int iRetCode;\r
int iLength;\r
// 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
ReleaseMutex(hListAccMutex);\r
// FTPS対応\r
-// iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+// iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))\r
- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
else\r
iRetCode = 500;\r
}\r
else\r
- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
// data_socket = DoClose(data_socket);\r
}\r
}\r
* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
-static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
+static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
{\r
int iRetCode;\r
SOCKET data_socket = INVALID_SOCKET; // data channel socket\r
// 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
ReleaseMutex(hListAccMutex);\r
// FTPS対応\r
-// iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+// iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))\r
- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
else\r
iRetCode = 500;\r
}\r
else\r
- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
// data_socket = DoClose(data_socket);\r
}\r
else\r
* ダイアログを出さない場合、このルーチンからDispDownloadSize()を呼ぶ\r
*----------------------------------------------------------------------------*/\r
\r
-static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)\r
+static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)\r
{\r
int iNumBytes;\r
char Buf[BUFSIZE];\r
* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
-static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)\r
+static int DoUpload(SOCKET cSkt, TRANSPACKET *Pkt)\r
{\r
int iRetCode;\r
char Reply[ERR_MSG_LEN+7];\r
else if(BackgrndMessageProc() == NO)\r
{\r
if(AskPasvMode() != YES)\r
- iRetCode = UpLoadNonPassive(Pkt);\r
+ iRetCode = UploadNonPassive(Pkt);\r
else\r
- iRetCode = UpLoadPassive(Pkt);\r
+ iRetCode = UploadPassive(Pkt);\r
}\r
else\r
iRetCode = 500;\r
* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
-static int UpLoadNonPassive(TRANSPACKET *Pkt)\r
+static int UploadNonPassive(TRANSPACKET *Pkt)\r
{\r
int iRetCode;\r
int iLength;\r
// 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
ReleaseMutex(hListAccMutex);\r
// FTPS対応\r
-// iRetCode = UpLoadFile(Pkt, data_socket);\r
+// iRetCode = UploadFile(Pkt, data_socket);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))\r
- iRetCode = UpLoadFile(Pkt, data_socket);\r
+ iRetCode = UploadFile(Pkt, data_socket);\r
else\r
iRetCode = 500;\r
}\r
else\r
- iRetCode = UpLoadFile(Pkt, data_socket);\r
+ iRetCode = UploadFile(Pkt, data_socket);\r
data_socket = DoClose(data_socket);\r
}\r
}\r
* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
-static int UpLoadPassive(TRANSPACKET *Pkt)\r
+static int UploadPassive(TRANSPACKET *Pkt)\r
{\r
int iRetCode;\r
SOCKET data_socket = INVALID_SOCKET; // data channel socket\r
// 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
ReleaseMutex(hListAccMutex);\r
// FTPS対応\r
-// iRetCode = UpLoadFile(Pkt, data_socket);\r
+// iRetCode = UploadFile(Pkt, data_socket);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))\r
- iRetCode = UpLoadFile(Pkt, data_socket);\r
+ iRetCode = UploadFile(Pkt, data_socket);\r
else\r
iRetCode = 500;\r
}\r
else\r
- iRetCode = UpLoadFile(Pkt, data_socket);\r
+ iRetCode = UploadFile(Pkt, data_socket);\r
\r
data_socket = DoClose(data_socket);\r
}\r
* 転送ダイアログを出さないでアップロードすることはない\r
*----------------------------------------------------------------------------*/\r
\r
-static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)\r
+static int UploadFile(TRANSPACKET *Pkt, SOCKET dSkt)\r
{\r
DWORD iNumBytes;\r
HANDLE iFileHandle;\r
char *Pos;\r
char *Btm;\r
int Sts;\r
- int i;\r
+// int i;\r
struct sockaddr_in6 SockAddr;\r
\r
Sts = FFFTP_FAIL;\r
}\r
else\r
{\r
- i = sizeof(SockAddr);\r
- if(getpeername(Skt, (struct sockaddr*)&SockAddr, &i) != SOCKET_ERROR)\r
+// i = sizeof(SockAddr);\r
+// if(getpeername(Skt, (struct sockaddr*)&SockAddr, &i) != SOCKET_ERROR)\r
+ if(GetAsyncTableDataIPv6(Skt, &SockAddr, NULL) == YES)\r
AddressToStringIPv6(Adrs, &SockAddr.sin6_addr);\r
}\r
\r