OSDN Git Service

Fix bugs of unexpected interruption of the transfer when the shared command socket...
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 5 Jan 2013 08:55:38 +0000 (17:55 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 5 Jan 2013 08:55:38 +0000 (17:55 +0900)
Add options for reconnection on transfer errors.
Fix bugs of shared command sockets.
Fix spelling mistakes.
Modify documents.

16 files changed:
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
Resource/FFFTP.rc
Resource/resource.h
Resource_eng/FFFTP-eng.rc
Resource_eng/resource.h
common.h
connect.c
doc/eng/FFFTP.txt
doc/eng/history.txt
doc/jpn/FFFTP.txt
doc/jpn/history.txt
getput.c
history.c
hostman.c
registry.c

index 7cb1ae7..76ee231 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index bd46e77..2947e7f 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 48f028d..875fc9c 100644 (file)
@@ -1392,6 +1392,7 @@ BEGIN
     LTEXT           "(0\81`300\95b; 0=\96³\8cø)",-1,122,44,76,8\r
     LTEXT           "\93]\91\97\83G\83\89\81[\8e\9e\82Ì\8f\88\97\9d",-1,7,61,81,8\r
     COMBOBOX        HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "\93]\91\97\83G\83\89\81[\8cã\82É\8dÄ\90Ú\91±",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10\r
 END\r
 \r
 savecrypt_dlg DIALOG  0, 0, 146, 62\r
index 5f47b2e..d3d2ea8 100644 (file)
 #define TRMODE4_EUC_CNV                 1217\r
 #define TRMODE4_UTF8N_CNV               1218\r
 #define TRMODE4_UTF8BOM_CNV             1219\r
+#define HSET_ERROR_RECONNECT             1220\r
 #define MENU_END                        40001\r
 #define MENU_EXIT                       40001\r
 #define MENU_CONNECT                    40003\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
 #define _APS_NEXT_RESOURCE_VALUE        197\r
 #define _APS_NEXT_COMMAND_VALUE         40177\r
-#define _APS_NEXT_CONTROL_VALUE         1220\r
+#define _APS_NEXT_CONTROL_VALUE         1221\r
 #define _APS_NEXT_SYMED_VALUE           101\r
 #endif\r
 #endif\r
index c4abaed..eac83e4 100644 (file)
@@ -1422,6 +1422,7 @@ BEGIN
     LTEXT           "(0 to 300sec; 0=Never)",-1,122,44,76,8\r
     LTEXT           "When transfer errors",-1,7,61,81,8\r
     COMBOBOX        HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Reconnect after errors",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10\r
 END\r
 \r
 savecrypt_dlg DIALOG  0, 0, 146, 62\r
index 0cf6842..d46de83 100644 (file)
 #define TRMODE4_EUC_CNV                 1217\r
 #define TRMODE4_UTF8N_CNV               1218\r
 #define TRMODE4_UTF8BOM_CNV             1219\r
+#define HSET_ERROR_RECONNECT             1220\r
 #define MENU_END                        40001\r
 #define MENU_EXIT                       40001\r
 #define MENU_CONNECT                    40003\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
 #define _APS_NEXT_RESOURCE_VALUE        197\r
 #define _APS_NEXT_COMMAND_VALUE         40177\r
-#define _APS_NEXT_CONTROL_VALUE         1220\r
+#define _APS_NEXT_CONTROL_VALUE         1221\r
 #define _APS_NEXT_SYMED_VALUE           101\r
 #endif\r
 #endif\r
index f25e0d5..448c5c5 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1037,6 +1037,8 @@ typedef struct {
        // 再転送対応\r
        int TransferErrorMode;                          /* 転送エラー時の処理 (EXIST_xxx) */\r
        int TransferErrorNotify;                        /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
+       // セッションあたりの転送量制限対策\r
+       int TransferErrorReconnect;                     /* 転送エラー時に再接続する (YES/NO) */\r
 } HOSTDATA;\r
 \r
 \r
@@ -1101,6 +1103,8 @@ typedef struct historydata {
        // 再転送対応\r
        int TransferErrorMode;                          /* 転送エラー時の処理 (EXIST_xxx) */\r
        int TransferErrorNotify;                        /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
+       // セッションあたりの転送量制限対策\r
+       int TransferErrorReconnect;                     /* 転送エラー時に再接続する (YES/NO) */\r
        struct historydata *Next;\r
 } HISTORYDATA;\r
 \r
@@ -1499,7 +1503,7 @@ void CopyDefaultHost(HOSTDATA *Set);
 int SearchHostName(char *Name);\r
 void ImportFromWSFTP(void);\r
 // 暗号化通信対応\r
-int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);\r
+int SetHostEncryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);\r
 \r
 /*===== connect.c =====*/\r
 \r
@@ -1571,6 +1575,8 @@ int AskNoopInterval(void);
 // 再転送対応\r
 int AskTransferErrorMode(void);\r
 int AskTransferErrorNotify(void);\r
+// セッションあたりの転送量制限対策\r
+int AskErrorReconnect(void);\r
 \r
 /*===== cache.c =====*/\r
 \r
index 989d550..ee22b46 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -202,28 +202,28 @@ void ConnectProc(int Type, int Num)
                                        if(CurHost.UseFTPIS != NO || CurHost.UseSFTP != NO)\r
                                        {\r
                                                if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
-                                                       SetHostExcryption(AskCurrentHost(), CurHost.UseNoEncryption, CurHost.UseFTPES, NO, NO);\r
+                                                       SetHostEncryption(AskCurrentHost(), CurHost.UseNoEncryption, CurHost.UseFTPES, NO, NO);\r
                                        }\r
                                        break;\r
                                case CRYPT_FTPES:\r
                                        if(CurHost.UseNoEncryption != NO || CurHost.UseFTPIS != NO || CurHost.UseSFTP != NO)\r
                                        {\r
                                                if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
-                                                       SetHostExcryption(AskCurrentHost(), NO, CurHost.UseFTPES, NO, NO);\r
+                                                       SetHostEncryption(AskCurrentHost(), NO, CurHost.UseFTPES, NO, NO);\r
                                        }\r
                                        break;\r
                                case CRYPT_FTPIS:\r
                                        if(CurHost.UseNoEncryption != NO || CurHost.UseFTPES != NO || CurHost.UseSFTP != NO)\r
                                        {\r
                                                if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
-                                                       SetHostExcryption(AskCurrentHost(), NO, NO, CurHost.UseFTPIS, NO);\r
+                                                       SetHostEncryption(AskCurrentHost(), NO, NO, CurHost.UseFTPIS, NO);\r
                                        }\r
                                        break;\r
                                case CRYPT_SFTP:\r
                                        if(CurHost.UseNoEncryption != NO || CurHost.UseFTPES != NO || CurHost.UseFTPIS != NO)\r
                                        {\r
                                                if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(savecrypt_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
-                                                       SetHostExcryption(AskCurrentHost(), NO, NO, NO, CurHost.UseSFTP);\r
+                                                       SetHostEncryption(AskCurrentHost(), NO, NO, NO, CurHost.UseSFTP);\r
                                        }\r
                                        break;\r
                                }\r
@@ -772,10 +772,18 @@ int AskHostNameKanji(void)
 \r
 int AskHostNameKana(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
-       return(CurHost.NameKanaCnv);\r
+       // 同時接続対応\r
+//     return(CurHost.NameKanaCnv);\r
+       return(TmpHost.NameKanaCnv);\r
 }\r
 \r
 \r
@@ -790,13 +798,21 @@ int AskHostNameKana(void)
 \r
 int AskListCmdMode(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(CurHost.HostType == HTYPE_VMS)\r
                return(YES);\r
        else\r
        {\r
                if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-                       CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
-               return(CurHost.ListCmdOnly);\r
+                       // 同時接続対応\r
+//                     CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+                       CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
+               // 同時接続対応\r
+//             return(CurHost.ListCmdOnly);\r
+               return(TmpHost.ListCmdOnly);\r
        }\r
 }\r
 \r
@@ -812,10 +828,18 @@ int AskListCmdMode(void)
 \r
 int AskUseNLST_R(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
-       return(CurHost.UseNLST_R);\r
+       // 同時接続対応\r
+//     return(CurHost.UseNLST_R);\r
+       return(TmpHost.UseNLST_R);\r
 }\r
 \r
 \r
@@ -830,10 +854,18 @@ int AskUseNLST_R(void)
 \r
 char *AskHostChmodCmd(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
-       return(CurHost.ChmodCmd);\r
+       // 同時接続対応\r
+//     return(CurHost.ChmodCmd);\r
+       return(TmpHost.ChmodCmd);\r
 }\r
 \r
 \r
@@ -848,10 +880,18 @@ char *AskHostChmodCmd(void)
 \r
 int AskHostTimeZone(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
-       return(CurHost.TimeZone);\r
+       // 同時接続対応\r
+//     return(CurHost.TimeZone);\r
+       return(TmpHost.TimeZone);\r
 }\r
 \r
 \r
@@ -881,10 +921,18 @@ int AskPasvMode(void)
 \r
 char *AskHostLsName(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
-       return(CurHost.LsName);\r
+       // 同時接続対応\r
+//     return(CurHost.LsName);\r
+       return(TmpHost.LsName);\r
 }\r
 \r
 \r
@@ -899,8 +947,14 @@ char *AskHostLsName(void)
 \r
 int AskHostType(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
 #if defined(HAVE_TANDEM)\r
        /* OSS ファイルシステムは UNIX ファイルシステムと同じでいいので AUTO を返す\r
@@ -910,7 +964,9 @@ int AskHostType(void)
                return(HTYPE_AUTO);\r
 #endif\r
 \r
-       return(CurHost.HostType);\r
+       // 同時接続対応\r
+//     return(CurHost.HostType);\r
+       return(TmpHost.HostType);\r
 }\r
 \r
 \r
@@ -979,13 +1035,19 @@ void SaveCurrentSetToHost(void)
        int Host;\r
        char LocDir[FMAX_PATH+1];\r
        char HostDir[FMAX_PATH+1];\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
 \r
        if(TrnCtrlSocket != INVALID_SOCKET)\r
        {\r
                if((Host = AskCurrentHost()) != HOSTNUM_NOENTRY)\r
                {\r
-                       CopyHostFromListInConnect(Host, &CurHost);\r
-                       if(CurHost.LastDir == YES)\r
+                       // 同時接続対応\r
+//                     CopyHostFromListInConnect(Host, &CurHost);\r
+//                     if(CurHost.LastDir == YES)\r
+                       CopyHostFromListInConnect(Host, &TmpHost);\r
+                       if(TmpHost.LastDir == YES)\r
                        {\r
                                AskLocalCurDir(LocDir, FMAX_PATH);\r
                                AskRemoteCurDir(HostDir, FMAX_PATH);\r
@@ -1046,13 +1108,19 @@ int ReConnectCmdSkt(void)
        int Sts;\r
 \r
 \r
-       if(CmdCtrlSocket != TrnCtrlSocket)\r
-               do_closesocket(TrnCtrlSocket);\r
-       TrnCtrlSocket = INVALID_SOCKET;\r
+       // 同時接続対応\r
+//     if(CmdCtrlSocket != TrnCtrlSocket)\r
+//             do_closesocket(TrnCtrlSocket);\r
+//     TrnCtrlSocket = INVALID_SOCKET;\r
+       if(CmdCtrlSocket == TrnCtrlSocket)\r
+               TrnCtrlSocket = INVALID_SOCKET;\r
 \r
        Sts = ReConnectSkt(&CmdCtrlSocket);\r
 \r
-       TrnCtrlSocket = CmdCtrlSocket;\r
+       // 同時接続対応\r
+//     TrnCtrlSocket = CmdCtrlSocket;\r
+       if(TrnCtrlSocket == INVALID_SOCKET)\r
+               TrnCtrlSocket = CmdCtrlSocket;\r
 \r
        return(Sts);\r
 }\r
@@ -1216,6 +1284,7 @@ void SktShareProh(void)
 //             ReConnectSkt(&CmdCtrlSocket);\r
                if(CurHost.ReuseCmdSkt == YES)\r
                {\r
+                       CurHost.ReuseCmdSkt = NO;\r
                        CmdCtrlSocket = INVALID_SOCKET;\r
                        ReConnectSkt(&CmdCtrlSocket);\r
                }\r
@@ -1349,10 +1418,18 @@ int AskConnecting(void)
 \r
 int AskRealHostType(void)\r
 {\r
+       // 同時接続対応\r
+       HOSTDATA TmpHost;\r
+       TmpHost = CurHost;\r
+\r
        if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
-               CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               // 同時接続対応\r
+//             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+               CopyHostFromListInConnect(AskCurrentHost(), &TmpHost);\r
 \r
-       return(CurHost.HostType);\r
+       // 同時接続対応\r
+//     return(CurHost.HostType);\r
+       return(TmpHost.HostType);\r
 }\r
 \r
 /*----- OSS ファイルシステムにアクセスしているかどうかのフラグを変更する ------\r
@@ -3262,3 +3339,9 @@ int AskTransferErrorNotify(void)
        return(CurHost.TransferErrorNotify);\r
 }\r
 \r
+// セッションあたりの転送量制限対策\r
+int AskErrorReconnect(void)\r
+{\r
+       return(CurHost.TransferErrorReconnect);\r
+}\r
+\r
index afc89d6..b9beb4e 100644 (file)
@@ -53,6 +53,14 @@ Changes in Ver.1.99
 \r
 -- Added an option to display file permissions in numbers.\r
 \r
+-- Added an option to reconnect after transfer errors.\r
+   This may work around the limitations on the transfer amount or time per\r
+   session.\r
+\r
+-- Fixed bugs that the file transfer might be aborted on operating the main\r
+   window if reusing sockets of the main window was enabled and you operated\r
+   the main window while files were transferring.\r
+\r
 \r
 Outline\r
 -------\r
index ea8e55a..6c94680 100644 (file)
@@ -25,6 +25,14 @@ Changes in Ver.1.99
 \r
 -- Added an option to display file permissions in numbers.\r
 \r
+-- Added an option to reconnect after transfer errors.\r
+   This may work around the limitations on the transfer amount or time per\r
+   session.\r
+\r
+-- Fixed bugs that the file transfer might be aborted on operating the main\r
+   window if reusing sockets of the main window was enabled and you operated\r
+   the main window while files were transferring.\r
+\r
 Changes in Ver.1.98f\r
 --------------------\r
 \r
index 9b0f857..1caad9b 100644 (file)
@@ -52,6 +52,13 @@ Ver 1.99
 \r
 \81E\83t\83@\83C\83\8b\82Ì\91®\90«\82ð\90\94\8e\9a\82Å\95\\8e¦\82·\82é\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
 \r
+\81E\83t\83@\83C\83\8b\82Ì\93]\91\97\82É\8e¸\94s\82µ\82½\8fê\8d\87\82É\8dÄ\90Ú\91±\82·\82é\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
+\81@\82±\82ê\82É\82æ\82è\83Z\83b\83V\83\87\83\93\82 \82½\82è\82Ì\93]\91\97\97Ê\82Ü\82½\82Í\8e\9e\8aÔ\82ª\90§\8cÀ\82³\82ê\82Ä\82¢\82é\8fê\8d\87\82É\r
+\81@\82»\82Ì\90§\8cÀ\82ð\89ñ\94ð\82Å\82«\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B\r
+\r
+\81E\83\81\83C\83\93\83E\83B\83\93\83h\83E\82Ì\83\\83P\83b\83g\82ð\8dÄ\97\98\97p\82·\82é\90Ý\92è\82Å\83t\83@\83C\83\8b\82Ì\93]\91\97\92\86\82É\83\81\83C\83\93\r
+\81@\83E\83B\83\93\83h\83E\82ð\91\80\8dì\82·\82é\82Æ\93]\91\97\82É\8e¸\94s\82·\82é\82±\82Æ\82ª\82 \82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
 \r
 Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
 -----------------------\r
index 20dd537..c0310cd 100644 (file)
@@ -24,6 +24,13 @@ FFFTP
 \r
 \81E\83t\83@\83C\83\8b\82Ì\91®\90«\82ð\90\94\8e\9a\82Å\95\\8e¦\82·\82é\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
 \r
+\81E\83t\83@\83C\83\8b\82Ì\93]\91\97\82É\8e¸\94s\82µ\82½\8fê\8d\87\82É\8dÄ\90Ú\91±\82·\82é\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
+\81@\82±\82ê\82É\82æ\82è\83Z\83b\83V\83\87\83\93\82 \82½\82è\82Ì\93]\91\97\97Ê\82Ü\82½\82Í\8e\9e\8aÔ\82ª\90§\8cÀ\82³\82ê\82Ä\82¢\82é\8fê\8d\87\82É\r
+\81@\82»\82Ì\90§\8cÀ\82ð\89ñ\94ð\82Å\82«\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B\r
+\r
+\81E\83\81\83C\83\93\83E\83B\83\93\83h\83E\82Ì\83\\83P\83b\83g\82ð\8dÄ\97\98\97p\82·\82é\90Ý\92è\82Å\83t\83@\83C\83\8b\82Ì\93]\91\97\92\86\82É\83\81\83C\83\93\r
+\81@\83E\83B\83\93\83h\83E\82ð\91\80\8dì\82·\82é\82Æ\93]\91\97\82É\8e¸\94s\82·\82é\82±\82Æ\82ª\82 \82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
 \81¡Ver 1.98f\r
 \r
 \81E\91I\91ð\83_\83C\83A\83\8d\83O\82ª\90³\8fí\82É\8b@\94\\82µ\82È\82¢\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
index 3daa3e6..82d54b2 100644 (file)
--- a/getput.c
+++ b/getput.c
@@ -712,6 +712,8 @@ static ULONG WINAPI TransferThread(void *Dummy)
        RECT WndRect;\r
        int i;\r
        DWORD LastUsed;\r
+       int LastError;\r
+       int Sts;\r
 \r
        hWndTrans = NULL;\r
        Down = NO;\r
@@ -724,6 +726,7 @@ static ULONG WINAPI TransferThread(void *Dummy)
        CmdSkt = INVALID_SOCKET;\r
        NewCmdSkt = INVALID_SOCKET;\r
        TrnSkt = INVALID_SOCKET;\r
+       LastError = NO;\r
        SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);\r
 \r
        while((TransPacketBase != NULL) ||\r
@@ -767,6 +770,20 @@ static ULONG WINAPI TransferThread(void *Dummy)
                }\r
                else\r
                {\r
+                       // セッションあたりの転送量制限対策\r
+                       if(AskErrorReconnect() == YES && LastError == YES)\r
+                       {\r
+                               ReleaseMutex(hListAccMutex);\r
+                               DoQUIT(TrnSkt, &Canceled[ThreadCount]);\r
+                               DoClose(TrnSkt);\r
+                               TrnSkt = INVALID_SOCKET;\r
+//                             WaitForSingleObject(hListAccMutex, INFINITE);\r
+                               while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
+                               {\r
+                                       BackgrndMessageProc();\r
+                                       Sleep(1);\r
+                               }\r
+                       }\r
                        if(TransPacketBase && NewCmdSkt != INVALID_SOCKET && ThreadCount < AskMaxThreadCount())\r
                        {\r
                                ReleaseMutex(hListAccMutex);\r
@@ -818,6 +835,7 @@ static ULONG WINAPI TransferThread(void *Dummy)
                        }\r
                }\r
                CmdSkt = NewCmdSkt;\r
+               LastError = NO;\r
 //             if(TransPacketBase != NULL)\r
                if(TrnSkt != INVALID_SOCKET && NextTransPacketBase != NULL)\r
                {\r
@@ -899,7 +917,9 @@ static ULONG WINAPI TransferThread(void *Dummy)
 //                                             {\r
 //                                                     if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
 //                                                             DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
-                                                               DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);\r
+                                                               Sts = DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]) / 100;\r
+                                                               if(Sts != FTP_COMPLETE)\r
+                                                                       LastError = YES;\r
 //                                             }\r
                                        }\r
                                }\r
@@ -921,7 +941,9 @@ static ULONG WINAPI TransferThread(void *Dummy)
 //                                     {\r
 //                                             if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
 //                                                     DoUpload(AskTrnCtrlSkt(), TransPacketBase);\r
-                                                       DoUpload(TrnSkt, Pos);\r
+                                                       Sts = DoUpload(TrnSkt, Pos) / 100;\r
+                                                       if(Sts != FTP_COMPLETE)\r
+                                                               LastError = YES;\r
 //                                     }\r
 \r
                                        // ホスト側の日時設定\r
index 8bd01e1..1124089 100644 (file)
--- a/history.c
+++ b/history.c
@@ -244,6 +244,8 @@ static void CopyHostToHistory(HOSTDATA *Host, HISTORYDATA *New)
        // 再転送対応\r
        New->TransferErrorMode = Host->TransferErrorMode;\r
        New->TransferErrorNotify = Host->TransferErrorNotify;\r
+       // セッションあたりの転送量制限対策\r
+       New->TransferErrorReconnect = Host->TransferErrorReconnect;\r
        return;\r
 }\r
 \r
@@ -311,6 +313,8 @@ void CopyHistoryToHost(HISTORYDATA *Hist, HOSTDATA *Host)
        // 再転送対応\r
        Host->TransferErrorMode = Hist->TransferErrorMode;\r
        Host->TransferErrorNotify = Hist->TransferErrorNotify;\r
+       // セッションあたりの転送量制限対策\r
+       Host->TransferErrorReconnect = Hist->TransferErrorReconnect;\r
        return;\r
 }\r
 \r
index e5f373d..31cfff1 100644 (file)
--- a/hostman.c
+++ b/hostman.c
@@ -1063,6 +1063,8 @@ int CopyHostFromListInConnect(int Num, HOSTDATA *Set)
                // 再転送対応\r
                Set->TransferErrorMode = Pos->Set.TransferErrorMode;\r
                Set->TransferErrorNotify = Pos->Set.TransferErrorNotify;\r
+               // セッションあたりの転送量制限対策\r
+               Set->TransferErrorReconnect = Pos->Set.TransferErrorReconnect;\r
                Sts = FFFTP_SUCCESS;\r
        }\r
        return(Sts);\r
@@ -1360,6 +1362,8 @@ void CopyDefaultHost(HOSTDATA *Set)
        // 再転送対応\r
        Set->TransferErrorMode = EXIST_OVW;\r
        Set->TransferErrorNotify = YES;\r
+       // セッションあたりの転送量制限対策\r
+       Set->TransferErrorReconnect = NO;\r
        return;\r
 }\r
 \r
@@ -2356,6 +2360,7 @@ static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam,
                                SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 3, 0);\r
                        else\r
                                SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0);\r
+                       SendDlgItemMessage(hDlg, HSET_ERROR_RECONNECT, BM_SETCHECK, TmpHost.TransferErrorReconnect, 0);\r
                        return(TRUE);\r
 \r
                case WM_NOTIFY:\r
@@ -2387,6 +2392,7 @@ static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam,
                                                TmpHost.TransferErrorNotify = NO;\r
                                                break;\r
                                        }\r
+                                       TmpHost.TransferErrorReconnect = SendDlgItemMessage(hDlg, HSET_ERROR_RECONNECT, BM_GETCHECK, 0, 0);\r
                                        Apply = YES;\r
                                        break;\r
 \r
@@ -2404,7 +2410,7 @@ static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam,
 \r
 // 暗号化通信対応\r
 // ホストの暗号化設定を更新\r
-int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP)\r
+int SetHostEncryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP)\r
 {\r
        int Sts;\r
        HOSTLISTDATA *Pos;\r
index ab65c44..7c484c0 100644 (file)
@@ -515,6 +515,8 @@ void SaveRegistry(void)
                                                        // 再転送対応\r
                                                        SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode);\r
                                                        SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify);\r
+                                                       // セッションあたりの転送量制限対策\r
+                                                       SaveIntNum(hKey5, "ErrReconnect", Hist.TransferErrorReconnect, DefaultHist.TransferErrorReconnect);\r
 \r
                                                        CloseSubKey(hKey5);\r
                                                        n++;\r
@@ -602,6 +604,8 @@ void SaveRegistry(void)
                                                        // 再転送対応\r
                                                        SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode);\r
                                                        SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify);\r
+                                                       // セッションあたりの転送量制限対策\r
+                                                       SaveIntNum(hKey5, "ErrReconnect", Host.TransferErrorReconnect, DefaultHost.TransferErrorReconnect);\r
                                                }\r
                                                CloseSubKey(hKey5);\r
                                        }\r
@@ -1022,6 +1026,8 @@ int LoadRegistry(void)
                                        // 再転送対応\r
                                        ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode);\r
                                        ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify);\r
+                                       // セッションあたりの転送量制限対策\r
+                                       ReadIntValueFromReg(hKey5, "ErrReconnect", &Host.TransferErrorReconnect);\r
 \r
                                        CloseSubKey(hKey5);\r
 \r