Skip to content

Commit 7ec9e2d

Browse files
committed
improved:file hash save to session
1 parent c5729ed commit 7ec9e2d

File tree

1 file changed

+26
-27
lines changed

1 file changed

+26
-27
lines changed

XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,27 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV
5757
{
5858
int nPLen = MAX_PATH;
5959
int nHttpCode = 0;
60-
int nHashLen = 0;
61-
UCHAR tszHashKey[MAX_PATH];
62-
TCHAR tszHashStr[MAX_PATH];
6360
TCHAR tszProxyStr[MAX_PATH];
6461
SESSION_STORAGEINFO st_StorageInfo;
6562

66-
memset(tszHashKey, '\0', MAX_PATH);
67-
memset(tszHashStr, '\0', MAX_PATH);
6863
memset(tszProxyStr, '\0', MAX_PATH);
6964
memset(&st_StorageInfo, '\0', sizeof(SESSION_STORAGEINFO));
7065

71-
OPenSsl_Api_Digest(st_StorageInfo.tszFileDir, tszHashKey, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode);
72-
BaseLib_OperatorString_StrToHex((char*)tszHashKey, nHashLen, tszHashStr);
7366
Session_DLStroage_GetInfo(lpszClientAddr, &st_StorageInfo);
7467

75-
Protocol_StoragePacket_UPDown(st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWCount, tszProxyStr, &nPLen, tszHashStr);
76-
APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass, tszProxyStr, &nHttpCode);
77-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE, _T("下载客户端:%s,请求完成通知返回值:%d,文件:%s,地址:%s"), lpszClientAddr, nHttpCode, st_StorageInfo.tszFileDir, st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass);
68+
Protocol_StoragePacket_UPDown(st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWCount, tszProxyStr, &nPLen, st_StorageInfo.tszFileHash);
69+
if (APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass, tszProxyStr, &nHttpCode))
70+
{
71+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("下载客户端:%s,请求完成通知返回值:%d,文件:%s,地址:%s"), lpszClientAddr, nHttpCode, st_StorageInfo.tszFileDir, st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass);
72+
}
73+
else
74+
{
75+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,请求完成通知失败,可能对方服务没有开启,文件:%s,地址:%s"), lpszClientAddr, st_StorageInfo.tszFileDir, st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass);
76+
}
7877
}
7978
NetCore_TCPXCore_CBSendEx(xhNetDownload, lpszClientAddr);
8079
Session_DLStroage_Delete(lpszClientAddr);
81-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE, _T("下载客户端:%s,文件已经发送完毕,用户已经被移除发送列表"), lpszClientAddr);
80+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("下载客户端:%s,文件已经发送完毕,用户已经被移除发送列表"), lpszClientAddr);
8281
}
8382
else
8483
{
@@ -168,7 +167,20 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
168167
}
169168
}
170169
_stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri);
171-
if (!Session_DLStroage_Insert(lpszClientAddr, tszFileDir, &ullCount, &ullSize, nPosStart, nPosEnd))
170+
171+
int nHashLen = 0;
172+
UCHAR tszHashKey[MAX_PATH];
173+
TCHAR tszFieldStr[MAX_PATH];
174+
TCHAR tszHashStr[128];
175+
memset(tszHashKey, '\0', MAX_PATH);
176+
memset(tszFieldStr, '\0', MAX_PATH);
177+
memset(tszHashStr, '\0', sizeof(tszHashStr));
178+
//得到文件HASH
179+
OPenSsl_Api_Digest(tszFileDir, tszHashKey, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode);
180+
BaseLib_OperatorString_StrToHex((char*)tszHashKey, nHashLen, tszHashStr);
181+
BaseLib_OperatorString_GetFileAndPath(tszFileDir, NULL, NULL, NULL, st_HDRParam.tszMimeType);
182+
//插入数据
183+
if (!Session_DLStroage_Insert(lpszClientAddr, tszFileDir, &ullCount, &ullSize, nPosStart, nPosEnd, tszHashStr))
172184
{
173185
st_HDRParam.bIsClose = TRUE;
174186
st_HDRParam.nHttpCode = 404;
@@ -178,7 +190,7 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
178190
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,插入用户请求失败,文件:%s,错误:%lX"), lpszClientAddr, tszFileDir, Session_GetLastError());
179191
return FALSE;
180192
}
181-
193+
//是否续传
182194
if (bRange)
183195
{
184196
st_HDRParam.st_Range.nPosStart = nPosStart;
@@ -197,20 +209,7 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
197209
st_HDRParam.nHttpCode = 200;
198210
st_HDRParam.bIsClose = TRUE;
199211
}
200-
int nHashLen = 0;
201-
UCHAR tszHashKey[MAX_PATH];
202-
TCHAR tszHashStr[MAX_PATH];
203-
TCHAR tszFieldStr[MAX_PATH];
204-
memset(tszHashKey, '\0', MAX_PATH);
205-
memset(tszHashStr, '\0', MAX_PATH);
206-
memset(tszFieldStr, '\0', MAX_PATH);
207-
208-
OPenSsl_Api_Digest(tszFileDir, tszHashKey, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode);
209-
BaseLib_OperatorString_StrToHex((char*)tszHashKey, nHashLen, tszHashStr);
210-
BaseLib_OperatorString_GetFileAndPath(tszFileDir, NULL, NULL, NULL, st_HDRParam.tszMimeType);
211-
212-
_stprintf(tszFieldStr, _T("FileHash: %s\r\n"),tszHashStr);
213-
212+
_stprintf(tszFieldStr, _T("FileHash: %s\r\n"), tszHashStr);
214213
RfcComponents_HttpServer_SendMsgEx(xhDLHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, ullSize, tszFieldStr);
215214
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
216215
//不能在send之前调用

0 commit comments

Comments
 (0)