@@ -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