diff options
author | Jan200101 <sentrycraft123@gmail.com> | 2022-06-29 20:12:20 +0200 |
---|---|---|
committer | Jan200101 <sentrycraft123@gmail.com> | 2022-06-29 20:12:20 +0200 |
commit | ccd667be067a5148545d7ccc958e29e65a2ac458 (patch) | |
tree | cd3373253bf68835a523ddc7894d4b47c07a5ce4 /src/qt/workers.cpp | |
parent | 8f946f8dd153c367fc026a3e860757a55c547b7b (diff) | |
download | OFQT-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.cpp | 22 |
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; } |