Skip to content

Commit 66fdc44

Browse files
committed
fixed:close client clear is incorrect when actively close client
1 parent daed8b9 commit 66fdc44

File tree

5 files changed

+26
-15
lines changed

5 files changed

+26
-15
lines changed

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L
9494
}
9595
for (int i = 0; i < nListCount; i++)
9696
{
97-
XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true);
97+
XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr);
9898
}
9999
BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount);
100100
Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen);
@@ -139,7 +139,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L
139139
Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserInfo.tszUserName);
140140
for (int i = 0; i < nListCount; i++)
141141
{
142-
XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true);
142+
XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr);
143143
}
144144
BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount);
145145
//删除数据库

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX
6565
Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserInfo.tszUserName);
6666
for (int i = 0; i < nListCount; i++)
6767
{
68-
XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true);
68+
XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr);
6969
}
7070
BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount);
7171

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ void CALLBACK XEngine_Client_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LP
1717
}
1818
void CALLBACK XEngine_Client_TCPClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
1919
{
20-
XEngine_CloseClient(lpszClientAddr, false);
20+
XEngine_CloseClient(lpszClientAddr, 1);
2121
}
2222
void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam)
2323
{
24-
XEngine_CloseClient(lpszClientAddr, true);
24+
XEngine_CloseClient(lpszClientAddr, 2);
2525
}
2626
//////////////////////////////////////////////////////////////////////////
2727
bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
@@ -57,11 +57,11 @@ void CALLBACK XEngine_Client_WSRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPC
5757
}
5858
void CALLBACK XEngine_Client_WSClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
5959
{
60-
XEngine_CloseClient(lpszClientAddr, false);
60+
XEngine_CloseClient(lpszClientAddr, 1);
6161
}
6262
void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam)
6363
{
64-
XEngine_CloseClient(lpszClientAddr, true);
64+
XEngine_CloseClient(lpszClientAddr, 2);
6565
}
6666
//////////////////////////////////////////////////////////////////////////
6767
bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
@@ -81,30 +81,41 @@ void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
8181
}
8282
void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam)
8383
{
84-
XEngine_CloseClient(lpszClientAddr, false);
84+
XEngine_CloseClient(lpszClientAddr, 1);
8585
}
8686
void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam)
8787
{
88-
XEngine_CloseClient(lpszClientAddr, true);
88+
XEngine_CloseClient(lpszClientAddr, 2);
8989
}
9090
//////////////////////////////////////////////////////////////////////////
91-
bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart)
91+
bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType)
9292
{
9393
xstring m_StrLeave;
94-
if (bHeart)
94+
if (0 == nLeaveType)
9595
{
9696
NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr);
9797
NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr);
9898
NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr);
99-
m_StrLeave = _X("心跳断开");
99+
100+
SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr);
101+
SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr);
102+
SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr);
103+
m_StrLeave = _X("主动断开");
100104
}
101-
else
105+
else if (1 == nLeaveType)
102106
{
103107
SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr);
104108
SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr);
105109
SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr);
106110
m_StrLeave = _X("正常断开");
107111
}
112+
else
113+
{
114+
NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr);
115+
NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr);
116+
NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr);
117+
m_StrLeave = _X("心跳断开");
118+
}
108119
HelpComponents_Datas_DeleteEx(xhTCPPacket, lpszClientAddr);
109120
RfcComponents_WSPacket_DeleteEx(xhWSPacket, lpszClientAddr);
110121
HttpProtocol_Server_CloseClinetEx(xhHttpPacket, lpszClientAddr);

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, L
1515
void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam);
1616
void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam);
1717

18-
bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart);
18+
bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType = 0);
1919
bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType);
2020
bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType, LPCXSTR lpszPass = NULL);

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserNam
3838
XEngine_Client_TaskSend(lpszUserAddr, tszMsgBuffer, nMsgLen, nNetType);
3939
if (!st_AuthConfig.bTimeNotify)
4040
{
41-
XEngine_CloseClient(lpszUserAddr, true);
41+
XEngine_CloseClient(lpszUserAddr);
4242
}
4343
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("地址:%s,用户:%s,网络类型:%d,没有剩余时间,已经通知客户单超时,三方通知设置:%d"), lpszUserName, lpszUserAddr, nNetType, st_AuthConfig.st_XLogin.bPassAuth);
4444
}

0 commit comments

Comments
 (0)