@@ -55,6 +55,7 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
5555 LPCXSTR lpszMethodPut = _X (" PUT" );
5656 LPCXSTR lpszMethodDel = _X (" DELETE" );
5757 LPCXSTR lpszMethodLock = _X (" LOCK" );
58+ LPCXSTR lpszMethodUNLock = _X (" UNLOCK" );
5859
5960 st_HDRParam.bIsClose = false ;
6061 st_HDRParam.nHttpCode = 200 ;
@@ -217,6 +218,18 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
217218 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBDAV客户端:%s,处理WEBDAV协议LOCK方法成功,锁用户:%s" ), lpszClientAddr, st_WDLock.tszOwner );
218219 return true ;
219220 }
221+ else if (0 == _tcsxnicmp (lpszMethodUNLock, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodUNLock)))
222+ {
223+ // 使用重定向实现上传
224+ st_HDRParam.bIsClose = false ;
225+ st_HDRParam.nHttpCode = 204 ;
226+
227+ Session_Webdav_Delete (pSt_HTTPParam->tszHttpUri );
228+ HttpProtocol_Server_SendMsgEx (xhWebdavHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
229+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV);
230+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBDAV客户端:%s,处理WEBDAV协议UNLOCK方法成功,锁文件:%s" ), lpszClientAddr, pSt_HTTPParam->tszHttpUri );
231+ return true ;
232+ }
220233 else if (0 == _tcsxnicmp (lpszMethodPropPatch, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodPropPatch)))
221234 {
222235 st_HDRParam.bIsClose = false ;
0 commit comments