summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis Syrovatsky <dennis@tightvnc.com>2005-12-18 09:10:43 +0000
committerDennis Syrovatsky <dennis@tightvnc.com>2005-12-18 09:10:43 +0000
commitafb285f52aca0a454da5d713958202550d54b14c (patch)
tree2d028537036336b8d59060ab6648c4059be45b37
parentf8f977dfd66f7b697993355a3b51f5caa26869ea (diff)
downloadtigervnc-afb285f52aca0a454da5d713958202550d54b14c.tar.gz
tigervnc-afb285f52aca0a454da5d713958202550d54b14c.zip
Added FileTransfer::procFileUploadCancelMsg() and
FileTransfer::procFileDownloadFailedMsg() methods. Code improvements. Major changes in the FTMsgReader class. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@459 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r--vncviewer/FTMsgReader.cxx34
-rw-r--r--vncviewer/FTMsgReader.h9
-rw-r--r--vncviewer/FileTransfer.cxx36
3 files changed, 54 insertions, 25 deletions
diff --git a/vncviewer/FTMsgReader.cxx b/vncviewer/FTMsgReader.cxx
index 7f0c3304..d2d118bf 100644
--- a/vncviewer/FTMsgReader.cxx
+++ b/vncviewer/FTMsgReader.cxx
@@ -88,18 +88,18 @@ FTMsgReader::readFileDownloadData(unsigned int *pSize, unsigned int *pModTime)
}
}
-int
-FTMsgReader::readFileUploadCancel(void *pReason)
+char *
+FTMsgReader::readFileUploadCancel(unsigned int *pReasonSize)
{
m_pInStream->skip(1);
- return readReasonMsg(pReason);
+ return readReasonMsg(pReasonSize);
}
-int
-FTMsgReader::readFileDownloadFailed(void *pReason)
+char *
+FTMsgReader::readFileDownloadFailed(unsigned int *pReasonSize)
{
m_pInStream->skip(1);
- return readReasonMsg(pReason);
+ return readReasonMsg(pReasonSize);
}
int
@@ -115,11 +115,11 @@ FTMsgReader::readFileDirSizeData(DWORD64 *pdw64DirSize)
return 1;
}
-int
-FTMsgReader::readFileLastRqstFailed(int *pTypeOfRequest, void *pReason)
+char *
+FTMsgReader::readFileLastRqstFailed(int *pTypeOfRequest, unsigned int *pReasonSize)
{
*pTypeOfRequest = m_pInStream->readU8();
- return readReasonMsg(pReason);
+ return readReasonMsg(pReasonSize);
}
bool
@@ -140,21 +140,25 @@ FTMsgReader::createFileInfo(unsigned int numFiles, FileInfo *fi,
return true;
}
-int
-FTMsgReader::readReasonMsg(void *pReason)
+char *
+FTMsgReader::readReasonMsg(unsigned int *pReasonSize)
{
int reasonLen = m_pInStream->readU16();
int _reasonLen = reasonLen + 1;
+ char *pReason;
if (reasonLen == 0) {
- return 0;
+ *pReasonSize = 0;
+ return NULL;
} else {
- pReason = malloc(_reasonLen);
+ pReason = new char [_reasonLen];
if (pReason == NULL) {
m_pInStream->skip(reasonLen);
- return -1;
+ *pReasonSize = 0;
+ return NULL;
}
m_pInStream->readBytes(pReason, reasonLen);
memset(((char *)pReason+reasonLen), '\0', 1);
- return _reasonLen;
+ return pReason;
}
}
+
diff --git a/vncviewer/FTMsgReader.h b/vncviewer/FTMsgReader.h
index ed51d517..00706f71 100644
--- a/vncviewer/FTMsgReader.h
+++ b/vncviewer/FTMsgReader.h
@@ -38,10 +38,11 @@ namespace rfb {
~FTMsgReader();
int readFileListData(FileInfo *pFileInfo);
- int readFileUploadCancel(void *pReason);
- int readFileDownloadFailed(void *pReason);
int readFileDirSizeData(DWORD64 *pdw64DirSize);
- int readFileLastRqstFailed(int *pTypeOfRequest, void *pReason);
+
+ char *readFileUploadCancel(unsigned int *pReasonSize);
+ char *readFileDownloadFailed(unsigned int *pReasonSize);
+ char *readFileLastRqstFailed(int *pTypeOfRequest, unsigned int *pReasonSize);
void *readFileDownloadData(unsigned int *pSize, unsigned int *pModTime);
private:
@@ -49,7 +50,7 @@ namespace rfb {
bool createFileInfo(unsigned int numFiles, FileInfo *fi,
SIZEDATAINFO *pSDInfo, char *pFilenames);
- int readReasonMsg(void *pReason);
+ char *readReasonMsg(unsigned int *pReasonSize);
};
}
}
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index 32279d01..01aae568 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -452,14 +452,14 @@ FileTransfer::procFileDownloadDataMsg()
if ((!m_fileWriter.isCreated()) || (!isTransferEnable())) {
m_bTransferSuccess = false;
- if (pFile != NULL) delete pFile;
+ if (pFile != NULL) delete [] pFile;
return false;
}
if (bufSize > 0) {
unsigned int bytesWritten = 0;
m_fileWriter.write(pFile, bufSize, &bytesWritten);
- delete pFile;
+ delete [] pFile;
if (bytesWritten != bufSize) {
m_bTransferSuccess = false;
char reason[] = "Error File Writting to File";
@@ -507,13 +507,33 @@ FileTransfer::procFileDownloadDataMsg()
bool
FileTransfer::procFileUploadCancelMsg()
{
- return false;
+ unsigned int reasonSize = 0;
+ char *pReason = m_pReader->readFileUploadCancel(&reasonSize);
+
+ if (m_bFTDlgShown) {
+ m_pFTDialog->setStatusText("Upload Canceled by Remote Computer : %s", pReason);
+ }
+ endUndoneOperation();
+ m_pFTDialog->postCheckTransferQueueMsg();
+
+ delete [] pReason;
+ return true;
}
bool
FileTransfer::procFileDownloadFailedMsg()
{
- return false;
+ unsigned int reasonSize = 0;
+ char *pReason = m_pReader->readFileDownloadFailed(&reasonSize);
+
+ if (m_bFTDlgShown) {
+ m_pFTDialog->setStatusText("Download Failed by Remote Computer : %s", pReason);
+ }
+ endUndoneOperation();
+ m_pFTDialog->postCheckTransferQueueMsg();
+
+ delete [] pReason;
+ return true;
}
bool
@@ -530,7 +550,11 @@ FileTransfer::procFileDirSizeDataMsg()
bool
FileTransfer::procFileLastRqstFailedMsg()
{
- return false;
+ unsigned int reasonSize = 0;
+ int requestType;
+ char *pReason = m_pReader->readFileLastRqstFailed(&requestType, &reasonSize);
+ delete [] pReason;
+ return true;
}
bool
@@ -646,7 +670,6 @@ FileTransfer::checkCancelOperations()
if (m_bFTDlgShown) m_pFTDialog->processDlgMsgs();
if (m_bCancel) {
endUndoneOperation();
- m_bTransferSuccess = false;
if (m_bFTDlgShown) {
m_pFTDialog->setStatusText("All Operations Canceled");
}
@@ -660,6 +683,7 @@ void
FileTransfer::endUndoneOperation()
{
m_bCancel = false;
+ m_bTransferSuccess = false;
m_fileReader.close();
m_fileWriter.close();
freeQueues();