{\r
if(TransPacketBase && NewCmdSkt != INVALID_SOCKET && ThreadCount < AskMaxThreadCount())\r
{\r
+ ReleaseMutex(hListAccMutex);\r
if(TrnSkt == INVALID_SOCKET || NewCmdSkt != CmdSkt)\r
- {\r
- ReleaseMutex(hListAccMutex);\r
ReConnectTrnSkt(&TrnSkt, &Canceled[ThreadCount]);\r
- // 同時ログイン数制限対策\r
- if(TrnSkt != INVALID_SOCKET)\r
- LastUsed = timeGetTime();\r
- else\r
- {\r
- // 同時ログイン数制限に引っかかった可能性あり\r
- // 負荷を下げるために約10秒間待機\r
- i = 10000;\r
- while(NewCmdSkt != CmdSkt && i > 0)\r
- {\r
- BackgrndMessageProc();\r
- Sleep(1);\r
- i--;\r
- }\r
- }\r
-// WaitForSingleObject(hListAccMutex, INFINITE);\r
- while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
+ else\r
+ CheckClosedAndReconnectTrnSkt(&TrnSkt, &Canceled[ThreadCount]);\r
+ // 同時ログイン数制限対策\r
+ if(TrnSkt != INVALID_SOCKET)\r
+ LastUsed = timeGetTime();\r
+ else\r
+ {\r
+ // 同時ログイン数制限に引っかかった可能性あり\r
+ // 負荷を下げるために約10秒間待機\r
+ i = 10000;\r
+ while(NewCmdSkt != CmdSkt && i > 0)\r
{\r
BackgrndMessageProc();\r
Sleep(1);\r
+ i--;\r
}\r
}\r
+// WaitForSingleObject(hListAccMutex, INFINITE);\r
+ while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
+ {\r
+ BackgrndMessageProc();\r
+ Sleep(1);\r
+ }\r
}\r
else\r
{\r
if(TrnSkt != INVALID_SOCKET)\r
{\r
// 同時ログイン数制限対策\r
- // 10秒間は再利用を許可\r
- if(timeGetTime() - LastUsed > 10000)\r
+ // 60秒間使用されなければログアウト\r
+ if(timeGetTime() - LastUsed > 60000)\r
{\r
ReleaseMutex(hListAccMutex);\r
SendData(TrnSkt, "QUIT\r\n", 6, 0, &Canceled[ThreadCount]);\r
// if(TransPacketBase != NULL)\r
if(TrnSkt != INVALID_SOCKET && NextTransPacketBase != NULL)\r
{\r
+ if(strcmp(NextTransPacketBase->Cmd, "GOQUIT") == 0 && NextTransPacketBase != TransPacketBase)\r
+ {\r
+ ReleaseMutex(hListAccMutex);\r
+ BackgrndMessageProc();\r
+ Sleep(1);\r
+ continue;\r
+ }\r
Pos = NextTransPacketBase;\r
NextTransPacketBase = NextTransPacketBase->Next;\r
// ディレクトリ操作は非同期で行わない\r
{\r
iRetCode = 500;\r
SetTaskMsg(MSGJPN085, GetFileName(Pkt->LocalFile));\r
- DispDownloadFinishMsg(Pkt, iRetCode);\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+// DispDownloadFinishMsg(Pkt, iRetCode);\r
}\r
else if(Pkt->Mode != EXIST_IGNORE)\r
{\r
SetTaskMsg(MSGJPN089, Pkt->RemoteFile);\r
iRetCode = 200;\r
}\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+ DispDownloadFinishMsg(Pkt, iRetCode);\r
return(iRetCode);\r
}\r
\r
iRetCode = 500;\r
SetErrorMsg(MSGJPN279);\r
}\r
- DispDownloadFinishMsg(Pkt, iRetCode);\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+// DispDownloadFinishMsg(Pkt, iRetCode);\r
\r
return(iRetCode);\r
}\r
else\r
SetErrorMsg(Buf);\r
\r
- DispDownloadFinishMsg(Pkt, iRetCode);\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+// DispDownloadFinishMsg(Pkt, iRetCode);\r
\r
return(iRetCode);\r
}\r
if (AskHostType() == HTYPE_VMS)\r
return;\r
#endif\r
+#if defined(HAVE_TANDEM)\r
+ /* HP Nonstop Server の場合、ファイルのない subvol へ移動すると550 File not found\r
+ * になるが問題ないのでエラーダイアログやエラーメッセージを出さないため */\r
+ if (AskHostType() == HTYPE_TANDEM)\r
+ return;\r
+#endif\r
\r
if((strncmp(Pkt->Cmd, "NLST", 4) == 0) || (strncmp(Pkt->Cmd, "LIST", 4) == 0))\r
{\r
SetTaskMsg(MSGJPN105, Pkt->LocalFile);\r
iRetCode = 500;\r
Pkt->Abort = ABORT_ERROR;\r
- DispUploadFinishMsg(Pkt, iRetCode);\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+// DispUploadFinishMsg(Pkt, iRetCode);\r
}\r
}\r
else\r
SetTaskMsg(MSGJPN107, Pkt->LocalFile);\r
iRetCode = 200;\r
}\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+ DispUploadFinishMsg(Pkt, iRetCode);\r
return(iRetCode);\r
}\r
\r
{\r
SetUploadResume(Pkt, Pkt->Mode, Pkt->ExistSize, &Resume);\r
if(Resume == NO)\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO && Pkt->Type != TYPE_A) {\r
+ if( Pkt->PriExt == DEF_PRIEXT && Pkt->SecExt == DEF_SECEXT && Pkt->MaxExt == DEF_MAXEXT) {\r
+ // EXTENTがデフォルトのときはコードのみ\r
+ sprintf(Buf, "%s%s,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode);\r
+ } else {\r
+ sprintf(Buf, "%s%s,%d,%d,%d,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode, Pkt->PriExt, Pkt->SecExt, Pkt->MaxExt);\r
+ }\r
+ } else\r
+#endif\r
sprintf(Buf, "%s%s", Pkt->Cmd, Pkt->RemoteFile);\r
else\r
sprintf(Buf, "%s%s", "APPE ", Pkt->RemoteFile);\r
SetErrorMsg(MSGJPN279);\r
iRetCode = 500;\r
}\r
- DispUploadFinishMsg(Pkt, iRetCode);\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+// DispUploadFinishMsg(Pkt, iRetCode);\r
\r
return(iRetCode);\r
}\r
\r
SetUploadResume(Pkt, Pkt->Mode, Pkt->ExistSize, &Resume);\r
if(Resume == NO)\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO && Pkt->Type != TYPE_A) {\r
+ if( Pkt->PriExt == DEF_PRIEXT && Pkt->SecExt == DEF_SECEXT && Pkt->MaxExt == DEF_MAXEXT) {\r
+ // EXTENTがデフォルトのときはコードのみ\r
+ sprintf(Buf, "%s%s,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode);\r
+ } else {\r
+ sprintf(Buf, "%s%s,%d,%d,%d,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode, Pkt->PriExt, Pkt->SecExt, Pkt->MaxExt);\r
+ }\r
+ } else\r
+#endif\r
sprintf(Buf, "%s%s", Pkt->Cmd, Pkt->RemoteFile);\r
else\r
sprintf(Buf, "%s%s", "APPE ", Pkt->RemoteFile);\r
else\r
SetErrorMsg(Buf);\r
\r
- DispUploadFinishMsg(Pkt, iRetCode);\r
+ // エラーによってはダイアログが表示されない場合があるバグ対策\r
+// DispUploadFinishMsg(Pkt, iRetCode);\r
\r
return(iRetCode);\r
}\r