OSDN Git Service

fix memory leak, thanks to Valgrind
[rec10/rec10-git.git] / b25-remote / CasProxy.cpp
index dbf0330..85bf499 100755 (executable)
@@ -1,38 +1,38 @@
-// CasProxy.cpp: CCasProxy \83N\83\89\83X\82Ì\83C\83\93\83v\83\8a\83\81\83\93\83e\81[\83V\83\87\83\93\r
-//\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-\r
-#include "CasProxy.h"\r
-#include <stdio.h>\r
-\r
-#define TCP_TIMEOUT    1000UL  // 1\95b\r
-\r
-\r
-DWORD CCasProxy::dwErrorDelayTime = 0UL;\r
-\r
-\r
-CCasProxy::CCasProxy(void)\r
-{\r
-\r
-}\r
-\r
-CCasProxy::~CCasProxy(void)\r
-{\r
-       // \83T\81[\83o\82©\82ç\90Ø\92f\r
-       m_Socket.Close();\r
-}\r
-\r
-const BOOL CCasProxy::Connect(void)\r
-{\r
+// CasProxy.cpp: CCasProxy クラスのインプリメンテーション
+//
+//////////////////////////////////////////////////////////////////////
+
+
+#include "CasProxy.h"
+#include <stdio.h>
+
+#define TCP_TIMEOUT    1000UL  // 1
+
+
+DWORD CCasProxy::dwErrorDelayTime = 0UL;
+
+
+CCasProxy::CCasProxy(void)
+{
+
+}
+
+CCasProxy::~CCasProxy(void)
+{
+       // サーバから切断
+       m_Socket.Close();
+}
+
+const BOOL CCasProxy::Connect(void)
+{
 /*
-       // \83G\83\89\81[\94­\90\8e\9e\82Ì\83K\81[\83h\83C\83\93\83^\81[\83o\83\8b\r
-       if(dwErrorDelayTime){\r
-               if((::GetTickCount() - dwErrorDelayTime) < TCP_TIMEOUT)return FALSE;\r
-               else dwErrorDelayTime = 0UL;\r
-               }\r
-*/\r
-       // \83T\81[\83o\82É\90Ú\91±
+       // エラー発生時のガードインターバル
+       if(dwErrorDelayTime){
+               if((::GetTickCount() - dwErrorDelayTime) < TCP_TIMEOUT)return FALSE;
+               else dwErrorDelayTime = 0UL;
+               }
+*/
+       // サーバに接続
        char* env = getenv("B25_SERVER_IP");
        LPCTSTR lpszHost;
        WORD wPort;
@@ -50,38 +50,38 @@ const BOOL CCasProxy::Connect(void)
                wPort = 6900;
        }
 
-       if(m_Socket.Connect(lpszHost, wPort, TCP_TIMEOUT)){\r
-               return TRUE;\r
-       }\r
+       if(m_Socket.Connect(lpszHost, wPort, TCP_TIMEOUT)){
+               return TRUE;
+       }
        else{
-               //dwErrorDelayTime = ::GetTickCount();\r
-               return FALSE;\r
-       }\r
-}\r
-\r
-const DWORD CCasProxy::TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData)\r
-{\r
-       // \91\97\90M\83f\81[\83^\8f\80\94õ\r
-       BYTE SendBuf[256];\r
-       SendBuf[0] = (BYTE)dwSendSize;\r
-       memcpy(&SendBuf[1], pSendData, dwSendSize);\r
-\r
-       try{\r
-               // \83\8a\83N\83G\83X\83g\91\97\90M\r
-               if(!m_Socket.Send(SendBuf, dwSendSize + 1UL, TCP_TIMEOUT))throw (const DWORD)__LINE__;\r
-       \r
-               // \83\8c\83X\83|\83\93\83X\83w\83b\83_\8eó\90M\r
-               if(!m_Socket.Recv(SendBuf, 1UL, TCP_TIMEOUT))throw (const DWORD)__LINE__;\r
-\r
-               // \83\8c\83X\83|\83\93\83X\83f\81[\83^\8eó\90M\r
-               if(!m_Socket.Recv(pRecvData, SendBuf[0], TCP_TIMEOUT))throw (const DWORD)__LINE__;\r
-               }\r
-       catch(const DWORD dwLine){\r
-               // \92Ê\90M\83G\83\89\81[\94­\90\r
-               m_Socket.Close();\r
-               return 0UL;\r
-               }\r
-               \r
-       return SendBuf[0];\r
+               //dwErrorDelayTime = ::GetTickCount();
+               return FALSE;
+       }
+}
+
+const DWORD CCasProxy::TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData)
+{
+       // 送信データ準備
+       BYTE SendBuf[256];
+       SendBuf[0] = (BYTE)dwSendSize;
+       memcpy(&SendBuf[1], pSendData, dwSendSize);
+
+       try{
+               // リクエスト送信
+               if(!m_Socket.Send(SendBuf, dwSendSize + 1UL, TCP_TIMEOUT))throw (const DWORD)__LINE__;
+       
+               // レスポンスヘッダ受信
+               if(!m_Socket.Recv(SendBuf, 1UL, TCP_TIMEOUT))throw (const DWORD)__LINE__;
+
+               // レスポンスデータ受信
+               if(!m_Socket.Recv(pRecvData, SendBuf[0], TCP_TIMEOUT))throw (const DWORD)__LINE__;
+               }
+       catch(const DWORD dwLine){
+               // 通信エラー発生
+               m_Socket.Close();
+               return 0UL;
+               }
+               
+       return SendBuf[0];
 }