summaryrefslogtreecommitdiffstats
path: root/libvncserver/tightvnc-filetransfer/filetransfermsg.c
diff options
context:
space:
mode:
authorChristian Beier <dontmind@freeshell.org>2018-11-10 17:33:20 +0100
committerChristian Beier <dontmind@freeshell.org>2018-11-10 17:33:20 +0100
commit162d716b4c095a87aab2261857d583d68e3b3ea6 (patch)
tree1eaffa16e64ca88544748d695c683592fefe630c /libvncserver/tightvnc-filetransfer/filetransfermsg.c
parentaf2448218caa51dbdbdea46dad131435f60487f3 (diff)
parent495ffa3f3a213ab058eee1d7da48fa5ef71914d8 (diff)
downloadlibtdevnc-162d716b4c095a87aab2261857d583d68e3b3ea6.tar.gz
libtdevnc-162d716b4c095a87aab2261857d583d68e3b3ea6.zip
Merge branch 'fix-#242'
Diffstat (limited to 'libvncserver/tightvnc-filetransfer/filetransfermsg.c')
-rw-r--r--libvncserver/tightvnc-filetransfer/filetransfermsg.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libvncserver/tightvnc-filetransfer/filetransfermsg.c b/libvncserver/tightvnc-filetransfer/filetransfermsg.c
index 5f84e7f..0003b11 100644
--- a/libvncserver/tightvnc-filetransfer/filetransfermsg.c
+++ b/libvncserver/tightvnc-filetransfer/filetransfermsg.c
@@ -672,7 +672,7 @@ ChkFileUploadWriteErr(rfbClientPtr cl, rfbTightClientPtr rtcp, char* pBuf)
char reason[] = "Error writing file data";
int reasonLen = strlen(reason);
ftm = CreateFileUploadErrMsg(reason, reasonLen);
- CloseUndoneFileTransfer(cl, rtcp);
+ CloseUndoneFileUpload(cl, rtcp);
}
return ftm;
}
@@ -735,7 +735,7 @@ CreateFileUploadErrMsg(char* reason, unsigned int reasonLen)
******************************************************************************/
void
-CloseUndoneFileTransfer(rfbClientPtr cl, rfbTightClientPtr rtcp)
+CloseUndoneFileUpload(rfbClientPtr cl, rfbTightClientPtr rtcp)
{
/* TODO :: File Upload case is not handled currently */
/* TODO :: In case of concurrency we need to use Critical Section */
@@ -759,9 +759,19 @@ CloseUndoneFileTransfer(rfbClientPtr cl, rfbTightClientPtr rtcp)
memset(rtcp->rcft.rcfu.fName, 0 , PATH_MAX);
}
+}
+
+
+void
+CloseUndoneFileDownload(rfbClientPtr cl, rfbTightClientPtr rtcp)
+{
+ if(cl == NULL)
+ return;
if(rtcp->rcft.rcfd.downloadInProgress == TRUE) {
rtcp->rcft.rcfd.downloadInProgress = FALSE;
+ /* the thread will return if downloadInProgress is FALSE */
+ pthread_join(rtcp->rcft.rcfd.downloadThread, NULL);
if(rtcp->rcft.rcfd.downloadFD != -1) {
close(rtcp->rcft.rcfd.downloadFD);