aboutsummaryrefslogtreecommitdiff
path: root/src/qt/workers.cpp
diff options
context:
space:
mode:
authorJan200101 <sentrycraft123@gmail.com>2022-06-29 20:12:20 +0200
committerJan200101 <sentrycraft123@gmail.com>2022-06-29 20:12:20 +0200
commitccd667be067a5148545d7ccc958e29e65a2ac458 (patch)
treecd3373253bf68835a523ddc7894d4b47c07a5ce4 /src/qt/workers.cpp
parent8f946f8dd153c367fc026a3e860757a55c547b7b (diff)
downloadOFQT-ccd667be067a5148545d7ccc958e29e65a2ac458.tar.gz
OFQT-ccd667be067a5148545d7ccc958e29e65a2ac458.zip
validate revisions, set threads to 4, do not allow concurent updates
Diffstat (limited to 'src/qt/workers.cpp')
-rw-r--r--src/qt/workers.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/qt/workers.cpp b/src/qt/workers.cpp
index 41e8994..dc761e9 100644
--- a/src/qt/workers.cpp
+++ b/src/qt/workers.cpp
@@ -109,14 +109,30 @@ void Worker::stop_work()
int Worker::update_setup(int local_rev, int remote_rev)
{
if (!of_dir) return 1;
+ else if (update_in_progress) return 0;
- int retval = 0;
-
+ update_in_progress = true;
+ int retval = 0;
struct revision_t* rev = fastFowardRevisions(remote, local_rev, remote_rev);
if (rev)
{
+ for (size_t i = 0; i < rev->file_count; ++i)
+ {
+ struct file_info* file = &rev->files[i];
+
+ if (leavesRelativePath(file->path))
+ {
+ infoText = QString("Revision contains invalid path '%1'").arg(file->path);
+ emit resultReady(RESULT_UPDATE_TEXT);
+
+ update_in_progress = false;
+ freeRevision(rev);
+ return 1;
+ }
+ }
+
pthread_t download_threads[THREAD_COUNT] = {0};
struct thread_object_info thread_info[THREAD_COUNT] = {0, NULL, NULL, NULL, NULL, 0};
size_t tindex = 0;
@@ -222,6 +238,8 @@ int Worker::update_setup(int local_rev, int remote_rev)
freeRevision(rev);
}
+ update_in_progress = false;
+
return retval;
}