Skip to content

Commit 0ed60ff

Browse files
authored
Merge pull request #5 from libxengine/develop
V1.4.0.1001 Merge
2 parents 194ba95 + 4c3a627 commit 0ed60ff

File tree

11 files changed

+58
-58
lines changed

11 files changed

+58
-58
lines changed

CHANGELOG

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
XEngine_ProxyServer V1.4.0.1001
2+
3+
更新:匹配XEngine 7.43版本
4+
修改:使用新的方式来关闭客户端
5+
修正:当客户端关闭某些时候回崩溃的问题
6+
7+
update:match xengine v7.43
8+
modify:use the new way to close the client
9+
fixed:crashed when client is closed
10+
======================================================================================
111
XEngine_ProxyServer V1.3.1.1001
212

313
更新:匹配XEngine 7.38版本

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ make FLAGS=CleanAll 清理编译
8181
3. 提交代码
8282
4. 新建 Pull Request
8383

84+
## 开发计划
85+
使用线程池转发数据而不是一对一的线程
86+
8487
## 关注我们
8588
如果你觉得这个软件对你有帮助,请你给我们一个START吧
8689

XEngine_APPClient/APPClient_ForwardExample/APPClient_ForwardExample.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ int main(int argc, char** argv)
150150

151151
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
152152

153-
if (XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
153+
if (XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
154154
{
155155
printf("%s\n", tszMsgBuffer);
156156
}

XEngine_APPClient/APPClient_SocksExample/APPClient_SocksExample.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ int main(int argc, char** argv)
5454
nMsgLen = 2048;
5555
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
5656

57-
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
57+
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
5858
{
5959
printf("接受数据失败!\n");
6060
return 0;
@@ -72,7 +72,7 @@ int main(int argc, char** argv)
7272

7373
nMsgLen = 2048;
7474
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
75-
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
75+
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
7676
{
7777
printf("接受数据失败!\n");
7878
return 0;
@@ -94,7 +94,7 @@ int main(int argc, char** argv)
9494
}
9595
nMsgLen = 2048;
9696
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
97-
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
97+
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
9898
{
9999
printf("接受数据失败!\n");
100100
return 0;
@@ -112,7 +112,7 @@ int main(int argc, char** argv)
112112
{
113113
nMsgLen = 2048;
114114
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
115-
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
115+
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
116116
{
117117
break;
118118
}

XEngine_APPClient/APPClient_TunnelExample/APPClient_TunnelExample.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ int main(int argc, char** argv)
3131
#endif
3232
SOCKET m_Socket;
3333
LPCTSTR lpszServiceAddr = _T("127.0.0.1");
34+
3435
if (!XClient_TCPSelect_Create(&m_Socket, lpszServiceAddr, 5401))
3536
{
3637
printf("连接失败!错误:%lX\n", XClient_GetLastError());
@@ -50,7 +51,7 @@ int main(int argc, char** argv)
5051
nMsgLen = 2048;
5152
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
5253

53-
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
54+
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
5455
{
5556
printf("接受数据失败!\n");
5657
return 0;
@@ -68,7 +69,7 @@ int main(int argc, char** argv)
6869
{
6970
nMsgLen = 2048;
7071
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
71-
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, FALSE))
72+
if (!XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
7273
{
7374
break;
7475
}

XEngine_Release/XEngine_Config/XEngine_Config.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
},
1313
"XTime": {
1414
"nTimeCheck": 3,
15-
"nSocksTimeOut": 0,
16-
"nTunnelTimeOut": 0,
17-
"nForwardTimeOut": 0
15+
"nSocksTimeOut": 5,
16+
"nTunnelTimeOut": 5,
17+
"nForwardTimeOut": 5
1818
},
1919
"XLog": {
2020
"MaxSize": 1024000,
@@ -23,10 +23,11 @@
2323
"tszLogFile": "./XEngine_Log/XEngine_ServiceApp.log"
2424
},
2525
"XAuth": {
26-
"bAuth": 2,
26+
"bAuth": 0,
2727
"tszAuthFile": "./XEngine_Config/UserList.txt"
2828
},
2929
"XVer": [
30+
"1.4.0.1001 Build20221111",
3031
"1.3.1.1001 Build20220804",
3132
"1.3.0.1001 Build20220617",
3233
"1.2.0.1001 Build20220413",

XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ extern XHANDLE xhTunnelHeart;
8383
extern XHANDLE xhForwardSocket;
8484
extern XHANDLE xhForwardHeart;
8585
extern XHANDLE xhForwardPacket;
86-
extern XNETHANDLE xhForwardPool;
86+
extern XHANDLE xhForwardPool;
8787
//配置文件
8888
extern XENGINE_SERVICECONFIG st_ServiceConfig;
8989

XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,7 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType)
115115
SocketOpt_HeartBeat_DeleteAddrEx(xhSocksHeart, lpszClientAddr);
116116
NetCore_TCPXCore_CloseForClientEx(xhSocksSocket, lpszClientAddr);
117117
}
118-
PROXYPROTOCOL_CLIENTINFO st_ProxyClient;
119-
memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO));
120-
if (ProxyProtocol_SocksCore_GetInfo(lpszClientAddr, &st_ProxyClient))
121-
{
122-
st_ProxyClient.bClose = TRUE;
123-
ProxyProtocol_SocksCore_SetInfo(lpszClientAddr, &st_ProxyClient, sizeof(PROXYPROTOCOL_CLIENTINFO));
124-
}
118+
ProxyProtocol_SocksCore_Delete(lpszClientAddr);
125119
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("SOCKS客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType);
126120
}
127121
else if (XENGINE_CLIENT_NETTYPE_TUNNEL == nIPProto)
@@ -136,16 +130,10 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType)
136130
}
137131
else
138132
{
139-
SocketOpt_HeartBeat_DeleteAddrEx(xhTunnelHeart, lpszClientAddr);
140133
NetCore_TCPXCore_CloseForClientEx(xhTunnelSocket, lpszClientAddr);
134+
SocketOpt_HeartBeat_DeleteAddrEx(xhTunnelHeart, lpszClientAddr);
141135
}
142-
PROXYPROTOCOL_CLIENTINFO st_ProxyClient;
143-
memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO));
144-
if (ProxyProtocol_TunnelCore_GetInfo(lpszClientAddr, &st_ProxyClient))
145-
{
146-
st_ProxyClient.bClose = TRUE;
147-
ProxyProtocol_TunnelCore_SetInfo(lpszClientAddr, &st_ProxyClient, sizeof(PROXYPROTOCOL_CLIENTINFO));
148-
}
136+
ProxyProtocol_TunnelCore_Delete(lpszClientAddr);
149137
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType);
150138
}
151139
else if (XENGINE_CLIENT_NETTYPE_FORWARD == nIPProto)

XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ XHANDLE xhTunnelHeart = NULL;
1212
XHANDLE xhForwardSocket = NULL;
1313
XHANDLE xhForwardHeart = NULL;
1414
XHANDLE xhForwardPacket = NULL;
15-
XNETHANDLE xhForwardPool = 0;
15+
XHANDLE xhForwardPool = NULL;
1616
//配置文件
1717
XENGINE_SERVICECONFIG st_ServiceConfig;
1818

@@ -245,7 +245,8 @@ int main(int argc, char** argv)
245245
ppSt_ListParam[i]->lParam = pInt_Pos;
246246
ppSt_ListParam[i]->fpCall_ThreadsTask = XEngine_Forward_Thread;
247247
}
248-
if (!ManagePool_Thread_NQCreate(&xhForwardPool, &ppSt_ListParam, st_ServiceConfig.st_XMax.nForwardThread))
248+
xhForwardPool = ManagePool_Thread_NQCreate(&ppSt_ListParam, st_ServiceConfig.st_XMax.nForwardThread);
249+
if (NULL == xhForwardPool)
249250
{
250251
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Forward线程池服务失败,错误:%lX"), ManagePool_GetLastError());
251252
goto XENGINE_SERVICEAPP_EXIT;

XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -199,28 +199,26 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
199199
XHTHREAD CALLBACK XEngine_SocksTask_Thread(LPCTSTR lpszClientAddr, SOCKET hSocket)
200200
{
201201
TCHAR tszMsgBuffer[4096];
202+
TCHAR tszClientAddr[128];
203+
204+
memset(tszClientAddr, '\0', sizeof(tszClientAddr));
205+
_tcscpy(tszClientAddr, lpszClientAddr);
206+
202207
while (1)
203208
{
204209
int nMsgLen = 4096;
205-
if (!XClient_TCPSelect_RecvMsg(hSocket, tszMsgBuffer, &nMsgLen, FALSE))
210+
if (!XClient_TCPSelect_RecvMsg(hSocket, tszMsgBuffer, &nMsgLen))
206211
{
207212
break;
208213
}
209-
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen, XENGINE_CLIENT_NETTYPE_SOCKS);
210-
}
211-
//退出处理
212-
PROXYPROTOCOL_CLIENTINFO st_ProxyClient;
213-
memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO));
214-
if (ProxyProtocol_SocksCore_GetInfo(lpszClientAddr, &st_ProxyClient))
215-
{
216-
ProxyProtocol_SocksCore_Delete(lpszClientAddr);
217-
//是主动关闭的还是被动触发的
218-
if (!st_ProxyClient.bClose)
214+
if (!XEngine_Network_Send(tszClientAddr, tszMsgBuffer, nMsgLen, XENGINE_CLIENT_NETTYPE_SOCKS))
219215
{
220-
//主动关闭,需要调用
221-
XClient_TCPSelect_Close(st_ProxyClient.hSocket);
222-
XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_SOCKS, XENGINE_CLIENT_CLOSE_SERVICE);
216+
break;
223217
}
224218
}
219+
//退出处理
220+
XClient_TCPSelect_Close(hSocket);
221+
SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, tszClientAddr);
222+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Socks客户端:%s,离开服务器,客户端主动断开"), tszClientAddr);
225223
return 0;
226224
}

0 commit comments

Comments
 (0)