Skip to content

Commit 1a504bf

Browse files
committed
fixed:No message will be sent to the client when the upload is completed without writing to the database
modify:XEngine_APPHelp_RangeFile function support export / range parament modify:not delete session when upload complete
1 parent a61fbb6 commit 1a504bf

File tree

5 files changed

+32
-10
lines changed

5 files changed

+32
-10
lines changed

XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
153153
BOOL bRange = FALSE;
154154
int nPosStart = 0;
155155
int nPosEnd = 0;
156-
if (XEngine_APPHelp_RangeFile(lpszClientAddr, &nPosStart, &nPosEnd, pptszListHdr, nHdrCount, STORAGE_NETTYPE_HTTPDOWNLOAD))
156+
__int64x nPosCount = 0;
157+
if (XEngine_APPHelp_RangeFile(lpszClientAddr, &nPosStart, &nPosEnd, &nPosCount, pptszListHdr, nHdrCount, STORAGE_NETTYPE_HTTPDOWNLOAD))
157158
{
158159
bRange = TRUE;
159160
}

XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,13 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
9898
{
9999
int nPosStart = 0;
100100
int nPosEnd = 0;
101-
XEngine_APPHelp_RangeFile(lpszClientAddr, &nPosStart, &nPosEnd, pptszListHdr, nHdrCount, STORAGE_NETTYPE_HTTPUPLOADER);
101+
__int64x nPosCount = 0;
102+
103+
XEngine_APPHelp_RangeFile(lpszClientAddr, &nPosStart, &nPosEnd, &nPosCount, pptszListHdr, nHdrCount, STORAGE_NETTYPE_HTTPUPLOADER);
102104
RfcComponents_HttpServer_GetRecvModeEx(xhUPHttp, lpszClientAddr, &nRVMode, &nRVCount, &nHDSize);
103105

104106
_stprintf(tszFileDir, _T("%s%s"), st_ServiceCfg.st_XStorage.tszFileDir, pSt_HTTPParam->tszHttpUri);
105-
if (!Session_UPStroage_Insert(lpszClientAddr, tszFileDir, nRVCount, nRVCount, nPosStart, nPosEnd))
107+
if (!Session_UPStroage_Insert(lpszClientAddr, tszFileDir, nPosCount, nRVCount, nPosStart, nPosEnd))
106108
{
107109
st_HDRParam.bIsClose = TRUE;
108110
st_HDRParam.nHttpCode = 404;
@@ -184,10 +186,13 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
184186
}
185187
else
186188
{
189+
st_HDRParam.bIsClose = TRUE;
190+
st_HDRParam.nHttpCode = 200;
191+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
192+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
187193
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("上传客户端:%s,请求上传文件成功,文件名:%s,大小:%d,数据库没有启用,不插入数据库"), lpszClientAddr, tszFileDir, nRVCount);
188194
}
189195
}
190-
Session_UPStroage_Delete(lpszClientAddr);
191196
}
192197
else
193198
{

XEngine_Source/XEngine_StorageApp/Storage_APPHelp/Storage_APPHelp.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ BOOL XEngine_APPHelp_ProxyAuth(LPCTSTR lpszClientAddr, LPCTSTR lpszMethod, LPCTS
106106
}
107107
return TRUE;
108108
}
109-
BOOL XEngine_APPHelp_RangeFile(LPCTSTR lpszClientAddr, int* pInt_SPos, int* pInt_EPos, TCHAR** pptszListHdr, int nHdrCount, int nSDType)
109+
BOOL XEngine_APPHelp_RangeFile(LPCTSTR lpszClientAddr, int* pInt_SPos, int* pInt_EPos, __int64x* pInt_Count, TCHAR** pptszListHdr, int nHdrCount, int nSDType)
110110
{
111111
LPCTSTR lpszRange = _T("Range");
112112
LPCTSTR lpszClientType;
@@ -147,9 +147,25 @@ BOOL XEngine_APPHelp_RangeFile(LPCTSTR lpszClientAddr, int* pInt_SPos, int* pInt
147147
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("%s:%s,请求内容有范围信息,但是解析失败,内容:%s"), lpszClientType, lpszClientAddr, tszRangeStr);
148148
return FALSE;
149149
}
150-
*pInt_SPos = _ttoi(tszKeyStr);
151-
*pInt_EPos = _ttoi(tszValueStr);
152-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("%s:%s,客户端的请求设置了数据范围:%s - %s"), lpszClientType, lpszClientAddr, tszKeyStr, tszValueStr);
150+
//得到 1/2 如果有的话
151+
TCHAR tszRangeEnd[128];
152+
TCHAR tszRangeCount[128];
153+
154+
memset(tszRangeEnd, '\0', sizeof(tszRangeEnd));
155+
memset(tszRangeCount, '\0', sizeof(tszRangeCount));
156+
if (BaseLib_OperatorString_GetWithChar(tszValueStr, tszRangeEnd, tszRangeCount, '/'))
157+
{
158+
*pInt_SPos = _ttoi(tszKeyStr);
159+
*pInt_EPos = _ttoi(tszRangeEnd);
160+
*pInt_Count = _ttoi64(tszRangeCount);
161+
}
162+
else
163+
{
164+
*pInt_SPos = _ttoi(tszKeyStr);
165+
*pInt_EPos = _ttoi(tszValueStr);
166+
}
167+
168+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("%s:%s,客户端的请求设置了数据范围:%d - %d/%lld"), lpszClientType, lpszClientAddr, *pInt_SPos, *pInt_EPos, *pInt_Count);
153169
return TRUE;
154170
}
155171
BOOL XEngine_APPHelp_VerHash(LPCTSTR lpszClientAddr ,LPCTSTR lpszFileName, LPCTSTR lpszFileHash, TCHAR** pptszListHdr, int nHdrCount)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#pragma once
22

33
BOOL XEngine_APPHelp_ProxyAuth(LPCTSTR lpszClientAddr, LPCTSTR lpszMethod, LPCTSTR lpszPostUrl, TCHAR** pptszListHdr, int nHdrCount, int nSDType = STORAGE_NETTYPE_HTTPDOWNLOAD);
4-
BOOL XEngine_APPHelp_RangeFile(LPCTSTR lpszClientAddr, int* pInt_SPos, int* pInt_EPos, TCHAR** pptszListHdr, int nHdrCount, int nSDType = STORAGE_NETTYPE_HTTPDOWNLOAD);
4+
BOOL XEngine_APPHelp_RangeFile(LPCTSTR lpszClientAddr, int* pInt_SPos, int* pInt_EPos, __int64x* pInt_Count, TCHAR** pptszListHdr, int nHdrCount, int nSDType = STORAGE_NETTYPE_HTTPDOWNLOAD);
55
BOOL XEngine_APPHelp_VerHash(LPCTSTR lpszClientAddr, LPCTSTR lpszFileName, LPCTSTR lpszFileHash, TCHAR** pptszListHdr, int nHdrCount);

XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ int main(int argc, char** argv)
281281
goto XENGINE_EXITAPP;
282282
}
283283
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动下载会话服务成功,下载错误重试次数:%d"), st_ServiceCfg.st_XLimit.nDLTry);
284-
if (!Session_UPStroage_Init())
284+
if (!Session_UPStroage_Init(TRUE))
285285
{
286286
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务器中,启动上传会话服务失败,错误:%lX"), Session_GetLastError());
287287
goto XENGINE_EXITAPP;

0 commit comments

Comments
 (0)