diff options
author | Dennis Syrovatsky <dennis@tightvnc.com> | 2005-11-23 04:14:10 +0000 |
---|---|---|
committer | Dennis Syrovatsky <dennis@tightvnc.com> | 2005-11-23 04:14:10 +0000 |
commit | f7b2449ff01cd2c306702ab815b5b9539613f130 (patch) | |
tree | ac3d064fa105e8c4c8466477d4ce9f7fe9e10da6 | |
parent | abc2cc57795131cd87707b62c455d662e032e70a (diff) | |
download | tigervnc-f7b2449ff01cd2c306702ab815b5b9539613f130.tar.gz tigervnc-f7b2449ff01cd2c306702ab815b5b9539613f130.zip |
The FTMsgWriter class is finished.
Now this class may send any messages of the file transfers protocol.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@413 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r-- | vncviewer/FTMsgWriter.cxx | 47 | ||||
-rw-r--r-- | vncviewer/FTMsgWriter.h | 2 | ||||
-rw-r--r-- | vncviewer/FileTransfer.cxx | 2 |
3 files changed, 40 insertions, 11 deletions
diff --git a/vncviewer/FTMsgWriter.cxx b/vncviewer/FTMsgWriter.cxx index 724c7888..a8fd6e13 100644 --- a/vncviewer/FTMsgWriter.cxx +++ b/vncviewer/FTMsgWriter.cxx @@ -36,8 +36,11 @@ FTMsgWriter::~FTMsgWriter() } bool -FTMsgWriter::writeFileListRqst(char *pDirName, bool bDirOnly) +FTMsgWriter::writeFileListRqst(unsigned short dirnameLen, char *pDirName, + bool bDirOnly) { + if (dirnameLen >= FT_FILENAME_SIZE) return false; + char dirName[FT_FILENAME_SIZE]; strcpy(dirName, pDirName); int len = convertToUnixPath(dirName); @@ -67,31 +70,47 @@ bool FTMsgWriter::writeFileDownloadRqst(unsigned short filenameLen, char *pFilename, unsigned int position) { - m_pOutStream->writeU8(msgTypeFileDownloadRequest); + if (filenameLen >= FT_FILENAME_SIZE) return false; + + char filename[FT_FILENAME_SIZE]; + strcpy(filename, pFilename); + unsigned short len = (unsigned short) convertToUnixPath(filename); + if (len <= 0) return false; + m_pOutStream->writeU8(msgTypeFileDownloadRequest); + m_pOutStream->writeU8(0); + m_pOutStream->writeU16(len); + m_pOutStream->writeU32(position); + m_pOutStream->writeBytes(filename, len); m_pOutStream->flush(); - return false; + return true; } bool FTMsgWriter::writeFileUploadData(unsigned short dataSize, char *pData) { m_pOutStream->writeU8(msgTypeFileUploadData); - + m_pOutStream->writeU8(0); + m_pOutStream->writeU16(dataSize); + m_pOutStream->writeU16(dataSize); + m_pOutStream->writeBytes(pData, dataSize); m_pOutStream->flush(); - return false; + return true; } bool FTMsgWriter::writeFileUploadData(unsigned int modTime) { m_pOutStream->writeU8(msgTypeFileUploadData); - + m_pOutStream->writeU8(0); + m_pOutStream->writeU16(0); + m_pOutStream->writeU16(0); + m_pOutStream->writeU32(modTime); m_pOutStream->flush(); - return false; + return true; } bool @@ -105,11 +124,21 @@ bool FTMsgWriter::writeFileUploadRqst(unsigned short filenameLen, char *pFilename, unsigned int position) { - m_pOutStream->writeU8(msgTypeFileUploadRequest); + if (filenameLen >= FT_FILENAME_SIZE) return false; + + char filename[FT_FILENAME_SIZE]; + strcpy(filename, pFilename); + unsigned short len = (unsigned short) convertToUnixPath(filename); + if (len <= 0) return false; + m_pOutStream->writeU8(msgTypeFileUploadRequest); + m_pOutStream->writeU8(0); + m_pOutStream->writeU16(len); + m_pOutStream->writeU32(position); + m_pOutStream->writeBytes(filename, len); m_pOutStream->flush(); - return false; + return true; } bool diff --git a/vncviewer/FTMsgWriter.h b/vncviewer/FTMsgWriter.h index e41ca800..42e9a93d 100644 --- a/vncviewer/FTMsgWriter.h +++ b/vncviewer/FTMsgWriter.h @@ -37,7 +37,7 @@ namespace rfb { FTMsgWriter(rdr::OutStream *pOS); ~FTMsgWriter(); - bool writeFileListRqst(char *pDirName, bool bDirOnly); + bool writeFileListRqst(unsigned short dirnameLen, char *pDirName, bool bDirOnly); bool writeFileDownloadCancel(unsigned short reasonLen, char *pReason); bool writeFileDownloadRqst(unsigned short filenameLen, char *pFilename, diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx index 8997ebc5..57e67638 100644 --- a/vncviewer/FileTransfer.cxx +++ b/vncviewer/FileTransfer.cxx @@ -201,5 +201,5 @@ FileTransfer::requestFileList(char *pPath, int dest, bool bDirOnly) { m_queueFileListRqst.add(pPath, 0, 0, dest); - m_pWriter->writeFileListRqst(pPath, bDirOnly); + m_pWriter->writeFileListRqst(strlen(pPath), pPath, bDirOnly); }
\ No newline at end of file |