OSDN Git Service

Convert source codes' encoding to UTF-8.
[ffftp/ffftp.git] / socket.c
index b823c40..b930424 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -1,6 +1,6 @@
-/*=============================================================================\r
+/*=============================================================================\r
 *\r
-*                                                                      \83\\83P\83b\83g\r
+*                                                                      ソケット\r
 *\r
 ===============================================================================\r
 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
@@ -73,7 +73,8 @@ typedef struct {
 } ASYNCSIGNALDATABASE;\r
 \r
 \r
-// \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+// スレッド衝突のバグ修正\r
+// 念のためテーブルを増量\r
 //#define MAX_SIGNAL_ENTRY             10\r
 //#define MAX_SIGNAL_ENTRY_DBASE       5\r
 #define MAX_SIGNAL_ENTRY               100\r
@@ -82,7 +83,7 @@ typedef struct {
 \r
 \r
 \r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
 \r
 static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
 static int AskAsyncDone(SOCKET s, int *Error, int Mask);\r
@@ -93,12 +94,12 @@ static int UnRegistAsyncTable(SOCKET s);
 static int UnRegistAsyncTableDbase(HANDLE Async);\r
 \r
 \r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
 \r
 extern int TimeOut;\r
 \r
 \r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
 \r
 static const char SocketWndClass[] = "FFFTPSocketWnd";\r
 static HWND hWndSocket;\r
@@ -107,7 +108,7 @@ static ASYNCSIGNAL Signal[MAX_SIGNAL_ENTRY];
 static ASYNCSIGNALDATABASE SignalDbase[MAX_SIGNAL_ENTRY_DBASE];\r
 \r
 //static HANDLE hAsyncTblAccMutex;\r
-// \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+// スレッド衝突のバグ修正\r
 static HANDLE hAsyncTblAccMutex;\r
 \r
 \r
@@ -119,8 +120,8 @@ static HANDLE hAsyncTblAccMutex;
 *      Parameter\r
 *\r
 *      Return Value\r
-*              int \83X\83e\81[\83^\83X\r
-*                      SUCCESS/FAIL\r
+*              int ステータス\r
+*                      FFFTP_SUCCESS/FFFTP_FAIL\r
 *----------------------------------------------------------------------------*/\r
 \r
 int MakeSocketWin(HWND hWnd, HINSTANCE hInst)\r
@@ -143,7 +144,7 @@ int MakeSocketWin(HWND hWnd, HINSTANCE hInst)
        wClass.hIconSm       = NULL;\r
        RegisterClassEx(&wClass);\r
 \r
-       Sts = FAIL;\r
+       Sts = FFFTP_FAIL;\r
        hWndSocket = CreateWindowEx(0, SocketWndClass, NULL,\r
                        WS_BORDER | WS_POPUP,\r
                        0, 0, 0, 0,\r
@@ -153,7 +154,7 @@ int MakeSocketWin(HWND hWnd, HINSTANCE hInst)
        {\r
 //             hAsyncTblAccMutex = CreateMutex(NULL, FALSE, NULL);\r
 \r
-               // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+               // スレッド衝突のバグ修正\r
 //             for(i = 0; i < MAX_SIGNAL_ENTRY; i++)\r
 //                     Signal[i].Socket = INVALID_SOCKET;\r
 //             for(i = 0; i < MAX_SIGNAL_ENTRY_DBASE; i++)\r
@@ -165,7 +166,7 @@ int MakeSocketWin(HWND hWnd, HINSTANCE hInst)
                        for(i = 0; i < MAX_SIGNAL_ENTRY_DBASE; i++)\r
                                SignalDbase[i].Async = 0;\r
                }\r
-               Sts = SUCCESS;\r
+               Sts = FFFTP_SUCCESS;\r
        }\r
        return(Sts);\r
 }\r
@@ -174,16 +175,16 @@ int MakeSocketWin(HWND hWnd, HINSTANCE hInst)
 /*----- \r
 *\r
 *      Parameter\r
-*              \82È\82µ\r
+*              なし\r
 *\r
 *      Return Value\r
-*              \82È\82µ\r
+*              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
 void DeleteSocketWin(void)\r
 {\r
 //     CloseHandle(hAsyncTblAccMutex);\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        CloseHandle(hAsyncTblAccMutex);\r
        hAsyncTblAccMutex = NULL;\r
 \r
@@ -196,10 +197,10 @@ void DeleteSocketWin(void)
 /*----- \r
 *\r
 *      Parameter\r
-*              HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-*              UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-*              WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-*              LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+*              HWND hWnd : ウインドウハンドル\r
+*              UINT message : メッセージ番号\r
+*              WPARAM wParam : メッセージの WPARAM 引数\r
+*              LPARAM lParam : メッセージの LPARAM 引数\r
 *\r
 *      Return Value\r
 *              BOOL TRUE/FALSE\r
@@ -212,7 +213,7 @@ static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LP
        switch(message)\r
        {\r
                case WM_ASYNC_SOCKET :\r
-                       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+                       // スレッド衝突のバグ修正\r
                        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
                        for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
                        {\r
@@ -265,12 +266,12 @@ static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LP
                                        break;\r
                                }\r
                        }\r
-                       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+                       // スレッド衝突のバグ修正\r
                        ReleaseMutex(hAsyncTblAccMutex);\r
                        break;\r
 \r
                case WM_ASYNC_DBASE :\r
-                       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+                       // スレッド衝突のバグ修正\r
                        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
                        for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
                        {\r
@@ -290,7 +291,7 @@ static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LP
                                        break;\r
                                }\r
                        }\r
-                       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+                       // スレッド衝突のバグ修正\r
                        ReleaseMutex(hAsyncTblAccMutex);\r
                        break;\r
 \r
@@ -317,7 +318,7 @@ static int AskAsyncDone(SOCKET s, int *Error, int Mask)
        int Sts;\r
        int Pos;\r
 \r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
        Sts = NO;\r
        *Error = 0;\r
@@ -370,7 +371,7 @@ static int AskAsyncDone(SOCKET s, int *Error, int Mask)
                        break;\r
                }\r
        }\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        ReleaseMutex(hAsyncTblAccMutex);\r
 \r
        if(Pos == MAX_SIGNAL_ENTRY)\r
@@ -403,7 +404,7 @@ static int AskAsyncDoneDbase(HANDLE Async, int *Error)
        int Sts;\r
        int Pos;\r
 \r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
        Sts = NO;\r
        *Error = 0;\r
@@ -422,7 +423,7 @@ static int AskAsyncDoneDbase(HANDLE Async, int *Error)
                        break;\r
                }\r
        }\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        ReleaseMutex(hAsyncTblAccMutex);\r
 \r
        if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
@@ -449,7 +450,7 @@ static int RegistAsyncTable(SOCKET s)
        int Sts;\r
        int Pos;\r
 \r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
        Sts = NO;\r
        for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
@@ -460,12 +461,12 @@ static int RegistAsyncTable(SOCKET s)
                        break;\r
                }\r
        }\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        ReleaseMutex(hAsyncTblAccMutex);\r
 \r
        if(Pos == MAX_SIGNAL_ENTRY)\r
        {\r
-               // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+               // スレッド衝突のバグ修正\r
                WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
                for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
                {\r
@@ -485,7 +486,7 @@ static int RegistAsyncTable(SOCKET s)
                                break;\r
                        }\r
                }\r
-               // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+               // スレッド衝突のバグ修正\r
                ReleaseMutex(hAsyncTblAccMutex);\r
 \r
                if(Pos == MAX_SIGNAL_ENTRY)\r
@@ -513,7 +514,7 @@ static int RegistAsyncTableDbase(HANDLE Async)
        int Sts;\r
        int Pos;\r
 \r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
        Sts = NO;\r
        for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
@@ -524,12 +525,12 @@ static int RegistAsyncTableDbase(HANDLE Async)
                        break;\r
                }\r
        }\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        ReleaseMutex(hAsyncTblAccMutex);\r
 \r
        if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
        {\r
-               // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+               // スレッド衝突のバグ修正\r
                WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
                for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
                {\r
@@ -545,7 +546,7 @@ static int RegistAsyncTableDbase(HANDLE Async)
                                break;\r
                        }\r
                }\r
-               // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+               // スレッド衝突のバグ修正\r
                ReleaseMutex(hAsyncTblAccMutex);\r
 \r
                if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
@@ -573,7 +574,7 @@ static int UnRegistAsyncTable(SOCKET s)
        int Sts;\r
        int Pos;\r
 \r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
        Sts = NO;\r
        for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
@@ -588,7 +589,7 @@ static int UnRegistAsyncTable(SOCKET s)
                        break;\r
                }\r
        }\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        ReleaseMutex(hAsyncTblAccMutex);\r
        return(Sts);\r
 }\r
@@ -608,7 +609,7 @@ static int UnRegistAsyncTableDbase(HANDLE Async)
        int Sts;\r
        int Pos;\r
 \r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
        Sts = NO;\r
        for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
@@ -623,7 +624,7 @@ static int UnRegistAsyncTableDbase(HANDLE Async)
                        break;\r
                }\r
        }\r
-       // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+       // スレッド衝突のバグ修正\r
        ReleaseMutex(hAsyncTblAccMutex);\r
        return(Sts);\r
 }\r
@@ -708,7 +709,7 @@ int do_closesocket(SOCKET s)
 #endif\r
        CancelCheckWork = NO;\r
 \r
-       // FTPS\91Î\89\9e\r
+       // FTPS対応\r
 //     Ret = closesocket(s);\r
        if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
                Ret = closesocketS(s);\r
@@ -764,7 +765,7 @@ int do_connect(SOCKET s, const struct sockaddr *name, int namelen, int *CancelCh
        Ret = WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, FD_CONNECT | FD_CLOSE | FD_ACCEPT | FD_READ | FD_WRITE);\r
        if(Ret != SOCKET_ERROR)\r
        {\r
-               // FTPS\91Î\89\9e\r
+               // FTPS対応\r
 //             Ret = connect(s, name, namelen);\r
                if(AskCryptMode() == CRYPT_FTPIS)\r
                        Ret = connectS(s, name, namelen);\r
@@ -863,7 +864,7 @@ SOCKET do_accept(SOCKET s, struct sockaddr *addr, int *addrlen)
        {\r
                do\r
                {\r
-                       // FTPS\91Î\89\9e\r
+                       // FTPS対応\r
 //                     Ret2 = accept(s, addr, addrlen);\r
                        if(AskCryptMode() == CRYPT_FTPIS)\r
                                Ret2 = acceptS(s, addr, addrlen);\r
@@ -903,20 +904,20 @@ SOCKET do_accept(SOCKET s, struct sockaddr *addr, int *addrlen)
 \r
 \r
 \r
-/*----- recv\91\8a\93\96\82Ì\8aÖ\90\94 --------------------------------------------------------\r
+/*----- recv相当の関数 --------------------------------------------------------\r
 *\r
 *      Parameter\r
-*              SOCKET s : \83\\83P\83b\83g\r
-*              char *buf : \83f\81[\83^\82ð\93Ç\82Ý\8d\9e\82Þ\83o\83b\83t\83@\r
-*              int len : \92·\82³\r
-*              int flags : recv\82É\97^\82¦\82é\83t\83\89\83O\r
-*              int *TimeOutErr : \83^\83C\83\80\83A\83E\83g\82µ\82½\82©\82Ç\82¤\82©\82ð\95Ô\82·\83\8f\81[\83N\r
+*              SOCKET s : ソケット\r
+*              char *buf : データを読み込むバッファ\r
+*              int len : 長さ\r
+*              int flags : recvに与えるフラグ\r
+*              int *TimeOutErr : タイムアウトしたかどうかを返すワーク\r
 *\r
 *      Return Value\r
-*              int : recv\82Ì\96ß\82è\92l\82Æ\93¯\82\r
+*              int : recvの戻り値と同じ\r
 *\r
 *      Note\r
-*              \83^\83C\83\80\83A\83E\83g\82Ì\8e\9e\82Í TimeOut=YES\81ARet=SOCKET_ERROR \82É\82È\82é\r
+*              タイムアウトの時は TimeOut=YES、Ret=SOCKET_ERROR になる\r
 *----------------------------------------------------------------------------*/\r
 int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOutErr, int *CancelCheckWork)\r
 {\r
@@ -937,8 +938,8 @@ int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOutErr, int *Cance
        if(TimeOut != 0)\r
                time(&StartTime);\r
 \r
-       // FTPS\91Î\89\9e\r
-       // OpenSSL\82Å\82Í\8eó\90M\8am\94F\82ÍFD_READ\82ª\95¡\90\94\89ñ\8eó\90M\82³\82ê\82é\89Â\94\\90«\82ª\82 \82é\r
+       // FTPS対応\r
+       // OpenSSLでは受信確認はFD_READが複数回受信される可能性がある\r
 //     while((*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_READ_BIT) != YES))\r
        while(AskCryptMode() == CRYPT_NONE && (*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_READ_BIT) != YES))\r
        {\r
@@ -971,7 +972,7 @@ int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOutErr, int *Cance
                        DoPrintf("## recv()");\r
 #endif\r
 \r
-                       // FTPS\91Î\89\9e\r
+                       // FTPS対応\r
 //                     Ret = recv(s, buf, len, flags);\r
                        if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
                                Ret = recvS(s, buf, len, flags);\r
@@ -983,8 +984,8 @@ int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOutErr, int *Cance
                        Sleep(1);\r
                        if(BackgrndMessageProc() == YES)\r
                                break;\r
-                       // FTPS\91Î\89\9e\r
-                       // \8eó\90M\8am\94F\82ð\83o\83C\83p\83X\82µ\82½\82½\82ß\82±\82±\82Å\83^\83C\83\80\83A\83E\83g\82Ì\8am\94F\r
+                       // FTPS対応\r
+                       // 受信確認をバイパスしたためここでタイムアウトの確認\r
                        if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
                        {\r
                                if(BackgrndMessageProc() == YES)\r
@@ -1047,8 +1048,8 @@ int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int
        if(BackgrndMessageProc() == YES)\r
                *CancelCheckWork = YES;\r
 \r
-       // FTPS\91Î\89\9e\r
-       // \91\97\90M\83o\83b\83t\83@\82Ì\8bó\82«\8am\94F\82É\82Í\89e\8b¿\82µ\82È\82¢\82ª\94O\82Ì\82½\82ß\r
+       // FTPS対応\r
+       // 送信バッファの空き確認には影響しないが念のため\r
 //     while((*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_WRITE_BIT) != YES))\r
        while(AskCryptMode() == CRYPT_NONE && (*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_WRITE_BIT) != YES))\r
        {\r
@@ -1082,7 +1083,7 @@ int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int
                        DoPrintf("## send()");\r
 #endif\r
 \r
-                       // FTPS\91Î\89\9e\r
+                       // FTPS対応\r
 //                     Ret = send(s, buf, len, flags);\r
                        if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
                                Ret = sendS(s, buf, len, flags);\r
@@ -1099,8 +1100,8 @@ int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int
                        Sleep(1);\r
                        if(BackgrndMessageProc() == YES)\r
                                break;\r
-                       // FTPS\91Î\89\9e\r
-                       // \91\97\90M\83o\83b\83t\83@\8am\94F\82ð\83o\83C\83p\83X\82µ\82½\82½\82ß\82±\82±\82Å\83^\83C\83\80\83A\83E\83g\82Ì\8am\94F\r
+                       // FTPS対応\r
+                       // 送信バッファ確認をバイパスしたためここでタイムアウトの確認\r
                        if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
                        {\r
                                if(BackgrndMessageProc() == YES)\r
@@ -1141,8 +1142,8 @@ int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int
 *      Parameter\r
 *\r
 *      Return Value\r
-*              int \83X\83e\81[\83^\83X\r
-*                      SUCCESS/FAIL\r
+*              int ステータス\r
+*                      FFFTP_SUCCESS/FFFTP_FAIL\r
 *----------------------------------------------------------------------------*/\r
 \r
 int CheckClosedAndReconnect(void)\r
@@ -1152,7 +1153,7 @@ int CheckClosedAndReconnect(void)
 \r
 //SetTaskMsg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");\r
 \r
-       Sts = SUCCESS;\r
+       Sts = FFFTP_SUCCESS;\r
        if(AskAsyncDone(AskCmdCtrlSkt(), &Error, FD_CLOSE_BIT) == YES)\r
        {\r
                Sts = ReConnectCmdSkt();\r