• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FFFTPのソースコードです。


Commit MetaInfo

Revisiona82e762de627fc89cfb5524f9615eaf43fb0f481 (tree)
Zeit2013-01-05 17:55:38
Autors_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Log Message

Fix bugs of unexpected interruption of the transfer when the shared command socket is disconnected.
Add options for reconnection on transfer errors.
Fix bugs of shared command sockets.
Fix spelling mistakes.
Modify documents.

Ändern Zusammenfassung

Diff

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/Resource/FFFTP.rc
+++ b/Resource/FFFTP.rc
@@ -1392,6 +1392,7 @@ BEGIN
13921392 LTEXT "(0`300•b; 0=–³Œø)",-1,122,44,76,8
13931393 LTEXT "“]‘—ƒGƒ‰[Žž‚̏ˆ—",-1,7,61,81,8
13941394 COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
1395+ CONTROL "“]‘—ƒGƒ‰[Œã‚ɍĐڑ±",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10
13951396 END
13961397
13971398 savecrypt_dlg DIALOG 0, 0, 146, 62
--- a/Resource/resource.h
+++ b/Resource/resource.h
@@ -455,6 +455,7 @@
455455 #define TRMODE4_EUC_CNV 1217
456456 #define TRMODE4_UTF8N_CNV 1218
457457 #define TRMODE4_UTF8BOM_CNV 1219
458+#define HSET_ERROR_RECONNECT 1220
458459 #define MENU_END 40001
459460 #define MENU_EXIT 40001
460461 #define MENU_CONNECT 40003
@@ -643,7 +644,7 @@
643644 #ifndef APSTUDIO_READONLY_SYMBOLS
644645 #define _APS_NEXT_RESOURCE_VALUE 197
645646 #define _APS_NEXT_COMMAND_VALUE 40177
646-#define _APS_NEXT_CONTROL_VALUE 1220
647+#define _APS_NEXT_CONTROL_VALUE 1221
647648 #define _APS_NEXT_SYMED_VALUE 101
648649 #endif
649650 #endif
--- a/Resource_eng/FFFTP-eng.rc
+++ b/Resource_eng/FFFTP-eng.rc
@@ -1422,6 +1422,7 @@ BEGIN
14221422 LTEXT "(0 to 300sec; 0=Never)",-1,122,44,76,8
14231423 LTEXT "When transfer errors",-1,7,61,81,8
14241424 COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
1425+ CONTROL "Reconnect after errors",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10
14251426 END
14261427
14271428 savecrypt_dlg DIALOG 0, 0, 146, 62
--- a/Resource_eng/resource.h
+++ b/Resource_eng/resource.h
@@ -455,6 +455,7 @@
455455 #define TRMODE4_EUC_CNV 1217
456456 #define TRMODE4_UTF8N_CNV 1218
457457 #define TRMODE4_UTF8BOM_CNV 1219
458+#define HSET_ERROR_RECONNECT 1220
458459 #define MENU_END 40001
459460 #define MENU_EXIT 40001
460461 #define MENU_CONNECT 40003
@@ -643,7 +644,7 @@
643644 #ifndef APSTUDIO_READONLY_SYMBOLS
644645 #define _APS_NEXT_RESOURCE_VALUE 197
645646 #define _APS_NEXT_COMMAND_VALUE 40177
646-#define _APS_NEXT_CONTROL_VALUE 1220
647+#define _APS_NEXT_CONTROL_VALUE 1221
647648 #define _APS_NEXT_SYMED_VALUE 101
648649 #endif
649650 #endif
--- a/common.h
+++ b/common.h
@@ -1037,6 +1037,8 @@ typedef struct {
10371037 // 再転送対応
10381038 int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */
10391039 int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */
1040+ // セッションあたりの転送量制限対策
1041+ int TransferErrorReconnect; /* 転送エラー時に再接続する (YES/NO) */
10401042 } HOSTDATA;
10411043
10421044
@@ -1101,6 +1103,8 @@ typedef struct historydata {
11011103 // 再転送対応
11021104 int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */
11031105 int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */
1106+ // セッションあたりの転送量制限対策
1107+ int TransferErrorReconnect; /* 転送エラー時に再接続する (YES/NO) */
11041108 struct historydata *Next;
11051109 } HISTORYDATA;
11061110
@@ -1499,7 +1503,7 @@ void CopyDefaultHost(HOSTDATA *Set);
14991503 int SearchHostName(char *Name);
15001504 void ImportFromWSFTP(void);
15011505 // 暗号化通信対応
1502-int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);
1506+int SetHostEncryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);
15031507
15041508 /*===== connect.c =====*/
15051509
@@ -1571,6 +1575,8 @@ int AskNoopInterval(void);
15711575 // 再転送対応
15721576 int AskTransferErrorMode(void);
15731577 int AskTransferErrorNotify(void);
1578+// セッションあたりの転送量制限対策
1579+int AskErrorReconnect(void);
15741580
15751581 /*===== cache.c =====*/
15761582
--- a/connect.c
+++ b/connect.c
@@ -202,28 +202,28 @@ void ConnectProc(int Type, int Num)
202202 if(CurHost.UseFTPIS != NO || CurHost.UseSFTP != NO)
203203 {
204204 if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)
205- SetHostExcryption(AskCurrentHost(), CurHost.UseNoEncryption, CurHost.UseFTPES, NO, NO);
205+ SetHostEncryption(AskCurrentHost(), CurHost.UseNoEncryption, CurHost.UseFTPES, NO, NO);
206206 }
207207 break;
208208 case CRYPT_FTPES:
209209 if(CurHost.UseNoEncryption != NO || CurHost.UseFTPIS != NO || CurHost.UseSFTP != NO)
210210 {
211211 if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)
212- SetHostExcryption(AskCurrentHost(), NO, CurHost.UseFTPES, NO, NO);
212+ SetHostEncryption(AskCurrentHost(), NO, CurHost.UseFTPES, NO, NO);
213213 }
214214 break;
215215 case CRYPT_FTPIS:
216216 if(CurHost.UseNoEncryption != NO || CurHost.UseFTPES != NO || CurHost.UseSFTP != NO)
217217 {
218218 if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)
219- SetHostExcryption(AskCurrentHost(), NO, NO, CurHost.UseFTPIS, NO);
219+ SetHostEncryption(AskCurrentHost(), NO, NO, CurHost.UseFTPIS, NO);
220220 }
221221 break;
222222 case CRYPT_SFTP:
223223 if(CurHost.UseNoEncryption != NO || CurHost.UseFTPES != NO || CurHost.UseFTPIS != NO)
224224 {
225225 if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)
226- SetHostExcryption(AskCurrentHost(), NO, NO, NO, CurHost.UseSFTP);
226+ SetHostEncryption(AskCurrentHost(), NO, NO, NO, CurHost.UseSFTP);
227227 }
228228 break;
229229 }
@@ -772,10 +772,18 @@ int AskHostNameKanji(void)
772772
773773 int AskHostNameKana(void)
774774 {
775+ // 同時接続対応
776+ HOSTDATA TmpHost;
777+ TmpHost = CurHost;
778+
775779 if(AskCurrentHost() != HOSTNUM_NOENTRY)
776- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
780+ // 同時接続対応
781+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
782+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
777783
778- return(CurHost.NameKanaCnv);
784+ // 同時接続対応
785+// return(CurHost.NameKanaCnv);
786+ return(TmpHost.NameKanaCnv);
779787 }
780788
781789
@@ -790,13 +798,21 @@ int AskHostNameKana(void)
790798
791799 int AskListCmdMode(void)
792800 {
801+ // 同時接続対応
802+ HOSTDATA TmpHost;
803+ TmpHost = CurHost;
804+
793805 if(CurHost.HostType == HTYPE_VMS)
794806 return(YES);
795807 else
796808 {
797809 if(AskCurrentHost() != HOSTNUM_NOENTRY)
798- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
799- return(CurHost.ListCmdOnly);
810+ // 同時接続対応
811+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
812+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
813+ // 同時接続対応
814+// return(CurHost.ListCmdOnly);
815+ return(TmpHost.ListCmdOnly);
800816 }
801817 }
802818
@@ -812,10 +828,18 @@ int AskListCmdMode(void)
812828
813829 int AskUseNLST_R(void)
814830 {
831+ // 同時接続対応
832+ HOSTDATA TmpHost;
833+ TmpHost = CurHost;
834+
815835 if(AskCurrentHost() != HOSTNUM_NOENTRY)
816- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
836+ // 同時接続対応
837+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
838+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
817839
818- return(CurHost.UseNLST_R);
840+ // 同時接続対応
841+// return(CurHost.UseNLST_R);
842+ return(TmpHost.UseNLST_R);
819843 }
820844
821845
@@ -830,10 +854,18 @@ int AskUseNLST_R(void)
830854
831855 char *AskHostChmodCmd(void)
832856 {
857+ // 同時接続対応
858+ HOSTDATA TmpHost;
859+ TmpHost = CurHost;
860+
833861 if(AskCurrentHost() != HOSTNUM_NOENTRY)
834- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
862+ // 同時接続対応
863+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
864+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
835865
836- return(CurHost.ChmodCmd);
866+ // 同時接続対応
867+// return(CurHost.ChmodCmd);
868+ return(TmpHost.ChmodCmd);
837869 }
838870
839871
@@ -848,10 +880,18 @@ char *AskHostChmodCmd(void)
848880
849881 int AskHostTimeZone(void)
850882 {
883+ // 同時接続対応
884+ HOSTDATA TmpHost;
885+ TmpHost = CurHost;
886+
851887 if(AskCurrentHost() != HOSTNUM_NOENTRY)
852- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
888+ // 同時接続対応
889+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
890+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
853891
854- return(CurHost.TimeZone);
892+ // 同時接続対応
893+// return(CurHost.TimeZone);
894+ return(TmpHost.TimeZone);
855895 }
856896
857897
@@ -881,10 +921,18 @@ int AskPasvMode(void)
881921
882922 char *AskHostLsName(void)
883923 {
924+ // 同時接続対応
925+ HOSTDATA TmpHost;
926+ TmpHost = CurHost;
927+
884928 if(AskCurrentHost() != HOSTNUM_NOENTRY)
885- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
929+ // 同時接続対応
930+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
931+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
886932
887- return(CurHost.LsName);
933+ // 同時接続対応
934+// return(CurHost.LsName);
935+ return(TmpHost.LsName);
888936 }
889937
890938
@@ -899,8 +947,14 @@ char *AskHostLsName(void)
899947
900948 int AskHostType(void)
901949 {
950+ // 同時接続対応
951+ HOSTDATA TmpHost;
952+ TmpHost = CurHost;
953+
902954 if(AskCurrentHost() != HOSTNUM_NOENTRY)
903- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
955+ // 同時接続対応
956+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
957+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
904958
905959 #if defined(HAVE_TANDEM)
906960 /* OSS ファイルシステムは UNIX ファイルシステムと同じでいいので AUTO を返す
@@ -910,7 +964,9 @@ int AskHostType(void)
910964 return(HTYPE_AUTO);
911965 #endif
912966
913- return(CurHost.HostType);
967+ // 同時接続対応
968+// return(CurHost.HostType);
969+ return(TmpHost.HostType);
914970 }
915971
916972
@@ -979,13 +1035,19 @@ void SaveCurrentSetToHost(void)
9791035 int Host;
9801036 char LocDir[FMAX_PATH+1];
9811037 char HostDir[FMAX_PATH+1];
1038+ // 同時接続対応
1039+ HOSTDATA TmpHost;
1040+ TmpHost = CurHost;
9821041
9831042 if(TrnCtrlSocket != INVALID_SOCKET)
9841043 {
9851044 if((Host = AskCurrentHost()) != HOSTNUM_NOENTRY)
9861045 {
987- CopyHostFromListInConnect(Host, &CurHost);
988- if(CurHost.LastDir == YES)
1046+ // 同時接続対応
1047+// CopyHostFromListInConnect(Host, &CurHost);
1048+// if(CurHost.LastDir == YES)
1049+ CopyHostFromListInConnect(Host, &TmpHost);
1050+ if(TmpHost.LastDir == YES)
9891051 {
9901052 AskLocalCurDir(LocDir, FMAX_PATH);
9911053 AskRemoteCurDir(HostDir, FMAX_PATH);
@@ -1046,13 +1108,19 @@ int ReConnectCmdSkt(void)
10461108 int Sts;
10471109
10481110
1049- if(CmdCtrlSocket != TrnCtrlSocket)
1050- do_closesocket(TrnCtrlSocket);
1051- TrnCtrlSocket = INVALID_SOCKET;
1111+ // 同時接続対応
1112+// if(CmdCtrlSocket != TrnCtrlSocket)
1113+// do_closesocket(TrnCtrlSocket);
1114+// TrnCtrlSocket = INVALID_SOCKET;
1115+ if(CmdCtrlSocket == TrnCtrlSocket)
1116+ TrnCtrlSocket = INVALID_SOCKET;
10521117
10531118 Sts = ReConnectSkt(&CmdCtrlSocket);
10541119
1055- TrnCtrlSocket = CmdCtrlSocket;
1120+ // 同時接続対応
1121+// TrnCtrlSocket = CmdCtrlSocket;
1122+ if(TrnCtrlSocket == INVALID_SOCKET)
1123+ TrnCtrlSocket = CmdCtrlSocket;
10561124
10571125 return(Sts);
10581126 }
@@ -1216,6 +1284,7 @@ void SktShareProh(void)
12161284 // ReConnectSkt(&CmdCtrlSocket);
12171285 if(CurHost.ReuseCmdSkt == YES)
12181286 {
1287+ CurHost.ReuseCmdSkt = NO;
12191288 CmdCtrlSocket = INVALID_SOCKET;
12201289 ReConnectSkt(&CmdCtrlSocket);
12211290 }
@@ -1349,10 +1418,18 @@ int AskConnecting(void)
13491418
13501419 int AskRealHostType(void)
13511420 {
1421+ // 同時接続対応
1422+ HOSTDATA TmpHost;
1423+ TmpHost = CurHost;
1424+
13521425 if(AskCurrentHost() != HOSTNUM_NOENTRY)
1353- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
1426+ // 同時接続対応
1427+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
1428+ CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);
13541429
1355- return(CurHost.HostType);
1430+ // 同時接続対応
1431+// return(CurHost.HostType);
1432+ return(TmpHost.HostType);
13561433 }
13571434
13581435 /*----- OSS ファイルシステムにアクセスしているかどうかのフラグを変更する ------
@@ -3262,3 +3339,9 @@ int AskTransferErrorNotify(void)
32623339 return(CurHost.TransferErrorNotify);
32633340 }
32643341
3342+// セッションあたりの転送量制限対策
3343+int AskErrorReconnect(void)
3344+{
3345+ return(CurHost.TransferErrorReconnect);
3346+}
3347+
--- a/doc/eng/FFFTP.txt
+++ b/doc/eng/FFFTP.txt
@@ -53,6 +53,14 @@ Changes in Ver.1.99
5353
5454 -- Added an option to display file permissions in numbers.
5555
56+-- Added an option to reconnect after transfer errors.
57+ This may work around the limitations on the transfer amount or time per
58+ session.
59+
60+-- Fixed bugs that the file transfer might be aborted on operating the main
61+ window if reusing sockets of the main window was enabled and you operated
62+ the main window while files were transferring.
63+
5664
5765 Outline
5866 -------
--- a/doc/eng/history.txt
+++ b/doc/eng/history.txt
@@ -25,6 +25,14 @@ Changes in Ver.1.99
2525
2626 -- Added an option to display file permissions in numbers.
2727
28+-- Added an option to reconnect after transfer errors.
29+ This may work around the limitations on the transfer amount or time per
30+ session.
31+
32+-- Fixed bugs that the file transfer might be aborted on operating the main
33+ window if reusing sockets of the main window was enabled and you operated
34+ the main window while files were transferring.
35+
2836 Changes in Ver.1.98f
2937 --------------------
3038
--- a/doc/jpn/FFFTP.txt
+++ b/doc/jpn/FFFTP.txt
@@ -52,6 +52,13 @@ Ver 1.99
5252
5353 Eƒtƒ@ƒCƒ‹‚Ì‘®«‚𐔎š‚Å•\Ž¦‚·‚éÝ’è‚ð’ljÁ‚µ‚Ü‚µ‚½B
5454
55+Eƒtƒ@ƒCƒ‹‚Ì“]‘—‚ÉŽ¸”s‚µ‚½ê‡‚ɍĐڑ±‚·‚éÝ’è‚ð’ljÁ‚µ‚Ü‚µ‚½B
56+@‚±‚ê‚É‚æ‚èƒZƒbƒVƒ‡ƒ“‚ ‚½‚è‚Ì“]‘——Ê‚Ü‚½‚ÍŽžŠÔ‚ª§ŒÀ‚³‚ê‚Ä‚¢‚éê‡‚É
57+@‚»‚̐§ŒÀ‚ð‰ñ”ð‚Å‚«‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
58+
59+EƒƒCƒ“ƒEƒBƒ“ƒhƒE‚̃\ƒPƒbƒg‚ðÄ—˜—p‚·‚éÝ’è‚Ńtƒ@ƒCƒ‹‚Ì“]‘—’†‚ɃƒCƒ“
60+@ƒEƒBƒ“ƒhƒE‚𑀍삷‚é‚Æ“]‘—‚ÉŽ¸”s‚·‚邱‚Æ‚ª‚ ‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
61+
5562
5663 Ver 1.96dˆÈ‘O‚Ö–ß‚·ê‡
5764 -----------------------
--- a/doc/jpn/history.txt
+++ b/doc/jpn/history.txt
@@ -24,6 +24,13 @@ FFFTP
2424
2525 Eƒtƒ@ƒCƒ‹‚Ì‘®«‚𐔎š‚Å•\Ž¦‚·‚éÝ’è‚ð’ljÁ‚µ‚Ü‚µ‚½B
2626
27+Eƒtƒ@ƒCƒ‹‚Ì“]‘—‚ÉŽ¸”s‚µ‚½ê‡‚ɍĐڑ±‚·‚éÝ’è‚ð’ljÁ‚µ‚Ü‚µ‚½B
28+@‚±‚ê‚É‚æ‚èƒZƒbƒVƒ‡ƒ“‚ ‚½‚è‚Ì“]‘——Ê‚Ü‚½‚ÍŽžŠÔ‚ª§ŒÀ‚³‚ê‚Ä‚¢‚éê‡‚É
29+@‚»‚̐§ŒÀ‚ð‰ñ”ð‚Å‚«‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
30+
31+EƒƒCƒ“ƒEƒBƒ“ƒhƒE‚̃\ƒPƒbƒg‚ðÄ—˜—p‚·‚éÝ’è‚Ńtƒ@ƒCƒ‹‚Ì“]‘—’†‚ɃƒCƒ“
32+@ƒEƒBƒ“ƒhƒE‚𑀍삷‚é‚Æ“]‘—‚ÉŽ¸”s‚·‚邱‚Æ‚ª‚ ‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
33+
2734 ¡Ver 1.98f
2835
2936 E‘I‘ðƒ_ƒCƒAƒƒO‚ª³í‚É‹@”\‚µ‚È‚¢ƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
--- a/getput.c
+++ b/getput.c
@@ -712,6 +712,8 @@ static ULONG WINAPI TransferThread(void *Dummy)
712712 RECT WndRect;
713713 int i;
714714 DWORD LastUsed;
715+ int LastError;
716+ int Sts;
715717
716718 hWndTrans = NULL;
717719 Down = NO;
@@ -724,6 +726,7 @@ static ULONG WINAPI TransferThread(void *Dummy)
724726 CmdSkt = INVALID_SOCKET;
725727 NewCmdSkt = INVALID_SOCKET;
726728 TrnSkt = INVALID_SOCKET;
729+ LastError = NO;
727730 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);
728731
729732 while((TransPacketBase != NULL) ||
@@ -767,6 +770,20 @@ static ULONG WINAPI TransferThread(void *Dummy)
767770 }
768771 else
769772 {
773+ // セッションあたりの転送量制限対策
774+ if(AskErrorReconnect() == YES && LastError == YES)
775+ {
776+ ReleaseMutex(hListAccMutex);
777+ DoQUIT(TrnSkt, &Canceled[ThreadCount]);
778+ DoClose(TrnSkt);
779+ TrnSkt = INVALID_SOCKET;
780+// WaitForSingleObject(hListAccMutex, INFINITE);
781+ while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)
782+ {
783+ BackgrndMessageProc();
784+ Sleep(1);
785+ }
786+ }
770787 if(TransPacketBase && NewCmdSkt != INVALID_SOCKET && ThreadCount < AskMaxThreadCount())
771788 {
772789 ReleaseMutex(hListAccMutex);
@@ -818,6 +835,7 @@ static ULONG WINAPI TransferThread(void *Dummy)
818835 }
819836 }
820837 CmdSkt = NewCmdSkt;
838+ LastError = NO;
821839 // if(TransPacketBase != NULL)
822840 if(TrnSkt != INVALID_SOCKET && NextTransPacketBase != NULL)
823841 {
@@ -899,7 +917,9 @@ static ULONG WINAPI TransferThread(void *Dummy)
899917 // {
900918 // if(ReConnectTrnSkt() == FFFTP_SUCCESS)
901919 // DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);
902- DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);
920+ Sts = DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]) / 100;
921+ if(Sts != FTP_COMPLETE)
922+ LastError = YES;
903923 // }
904924 }
905925 }
@@ -921,7 +941,9 @@ static ULONG WINAPI TransferThread(void *Dummy)
921941 // {
922942 // if(ReConnectTrnSkt() == FFFTP_SUCCESS)
923943 // DoUpload(AskTrnCtrlSkt(), TransPacketBase);
924- DoUpload(TrnSkt, Pos);
944+ Sts = DoUpload(TrnSkt, Pos) / 100;
945+ if(Sts != FTP_COMPLETE)
946+ LastError = YES;
925947 // }
926948
927949 // ホスト側の日時設定
--- a/history.c
+++ b/history.c
@@ -244,6 +244,8 @@ static void CopyHostToHistory(HOSTDATA *Host, HISTORYDATA *New)
244244 // 再転送対応
245245 New->TransferErrorMode = Host->TransferErrorMode;
246246 New->TransferErrorNotify = Host->TransferErrorNotify;
247+ // セッションあたりの転送量制限対策
248+ New->TransferErrorReconnect = Host->TransferErrorReconnect;
247249 return;
248250 }
249251
@@ -311,6 +313,8 @@ void CopyHistoryToHost(HISTORYDATA *Hist, HOSTDATA *Host)
311313 // 再転送対応
312314 Host->TransferErrorMode = Hist->TransferErrorMode;
313315 Host->TransferErrorNotify = Hist->TransferErrorNotify;
316+ // セッションあたりの転送量制限対策
317+ Host->TransferErrorReconnect = Hist->TransferErrorReconnect;
314318 return;
315319 }
316320
--- a/hostman.c
+++ b/hostman.c
@@ -1063,6 +1063,8 @@ int CopyHostFromListInConnect(int Num, HOSTDATA *Set)
10631063 // 再転送対応
10641064 Set->TransferErrorMode = Pos->Set.TransferErrorMode;
10651065 Set->TransferErrorNotify = Pos->Set.TransferErrorNotify;
1066+ // セッションあたりの転送量制限対策
1067+ Set->TransferErrorReconnect = Pos->Set.TransferErrorReconnect;
10661068 Sts = FFFTP_SUCCESS;
10671069 }
10681070 return(Sts);
@@ -1360,6 +1362,8 @@ void CopyDefaultHost(HOSTDATA *Set)
13601362 // 再転送対応
13611363 Set->TransferErrorMode = EXIST_OVW;
13621364 Set->TransferErrorNotify = YES;
1365+ // セッションあたりの転送量制限対策
1366+ Set->TransferErrorReconnect = NO;
13631367 return;
13641368 }
13651369
@@ -2356,6 +2360,7 @@ static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam,
23562360 SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 3, 0);
23572361 else
23582362 SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0);
2363+ SendDlgItemMessage(hDlg, HSET_ERROR_RECONNECT, BM_SETCHECK, TmpHost.TransferErrorReconnect, 0);
23592364 return(TRUE);
23602365
23612366 case WM_NOTIFY:
@@ -2387,6 +2392,7 @@ static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam,
23872392 TmpHost.TransferErrorNotify = NO;
23882393 break;
23892394 }
2395+ TmpHost.TransferErrorReconnect = SendDlgItemMessage(hDlg, HSET_ERROR_RECONNECT, BM_GETCHECK, 0, 0);
23902396 Apply = YES;
23912397 break;
23922398
@@ -2404,7 +2410,7 @@ static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam,
24042410
24052411 // 暗号化通信対応
24062412 // ホストの暗号化設定を更新
2407-int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP)
2413+int SetHostEncryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP)
24082414 {
24092415 int Sts;
24102416 HOSTLISTDATA *Pos;
--- a/registry.c
+++ b/registry.c
@@ -515,6 +515,8 @@ void SaveRegistry(void)
515515 // 再転送対応
516516 SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode);
517517 SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify);
518+ // セッションあたりの転送量制限対策
519+ SaveIntNum(hKey5, "ErrReconnect", Hist.TransferErrorReconnect, DefaultHist.TransferErrorReconnect);
518520
519521 CloseSubKey(hKey5);
520522 n++;
@@ -602,6 +604,8 @@ void SaveRegistry(void)
602604 // 再転送対応
603605 SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode);
604606 SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify);
607+ // セッションあたりの転送量制限対策
608+ SaveIntNum(hKey5, "ErrReconnect", Host.TransferErrorReconnect, DefaultHost.TransferErrorReconnect);
605609 }
606610 CloseSubKey(hKey5);
607611 }
@@ -1022,6 +1026,8 @@ int LoadRegistry(void)
10221026 // 再転送対応
10231027 ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode);
10241028 ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify);
1029+ // セッションあたりの転送量制限対策
1030+ ReadIntValueFromReg(hKey5, "ErrReconnect", &Host.TransferErrorReconnect);
10251031
10261032 CloseSubKey(hKey5);
10271033