Fix compilation errors

This commit is contained in:
2025-11-14 21:06:38 +01:00
parent 3df1745d69
commit bbae5fdb7f
4 changed files with 36 additions and 6 deletions
+34 -3
View File
@@ -28,7 +28,10 @@ static void download_targets_free(DownloadTargets *targets)
static void download_targets_remove(DownloadTargets *targets, static void download_targets_remove(DownloadTargets *targets,
SHA256 hash) SHA256 hash)
{ {
assert(0); // TODO: remove all downloads of this chunk // NOTE: This changes the download order!
for (int i = 0; i < targets->count; i++)
if (!memcmp(&targets->items[i].hash, &hash, sizeof(SHA256)))
targets->items[i--] = targets->items[--targets->count];
} }
static int download_targets_push(DownloadTargets *targets, static int download_targets_push(DownloadTargets *targets,
@@ -497,8 +500,10 @@ process_metadata_server_auth_response(ChunkServer *state, int conn_idx, ByteView
if (avoid_full_scan) if (avoid_full_scan)
return 0; return 0;
string path = { state->store.path, strlen(state->store.path) };
DirectoryScanner scanner; DirectoryScanner scanner;
if (directory_scanner_init(&scanner, state->path) < 0) { if (directory_scanner_init(&scanner, path) < 0) {
assert(0); // TODO assert(0); // TODO
} }
@@ -513,7 +518,33 @@ process_metadata_server_auth_response(ChunkServer *state, int conn_idx, ByteView
break; break;
assert(ret == 0); assert(ret == 0);
// TODO: translate name to hash SHA256 hash;
// Hash length as a string is 64 bytes
if (name.len != 64)
continue;
bool invalid = false;
for (int i = 0; i < 64; i += 2) {
uint8_t h = name.ptr[i+0];
uint8_t l = name.ptr[i+1];
if (0) {}
else if (h >= '0' && h <= '9') h = h - '0';
else if (h >= 'a' && h <= 'f') h = h - 'a' + 10;
else if (h >= 'A' && h <= 'F') h = h - 'A' + 10;
else { invalid = true; break; }
if (0) {}
else if (l >= '0' && l <= '9') l = l - '0';
else if (l >= 'a' && l <= 'f') l = l - 'a' + 10;
else if (l >= 'A' && l <= 'F') l = l - 'A' + 10;
else { invalid = true; break; }
hash.data[i >> 1] = (h << 4) | l;
}
if (invalid) continue;
if (hash_set_insert(&state->cs_add_list, hash) < 0) { if (hash_set_insert(&state->cs_add_list, hash) < 0) {
assert(0); // TODO assert(0); // TODO
+1 -1
View File
@@ -275,7 +275,7 @@ int directory_scanner_init(DirectoryScanner *scanner, string path)
{ {
char pattern[PATH_MAX]; char pattern[PATH_MAX];
int ret = snprintf(pattern, sizeof(pattern), "%.*s\\*", path.len, path.ptr); int ret = snprintf(pattern, sizeof(pattern), "%.*s\\*", path.len, path.ptr);
if (ret < 0 || ret >= sizeof(pattern)) if (ret < 0 || ret >= (int) sizeof(pattern))
return -1; return -1;
scanner->handle = sys_FindFirstFileA(pattern, &scanner->find_data); scanner->handle = sys_FindFirstFileA(pattern, &scanner->find_data);
+1
View File
@@ -33,6 +33,7 @@ enum {
MESSAGE_TYPE_WRITE_SUCCESS, MESSAGE_TYPE_WRITE_SUCCESS,
// Metadata server -> Chunk server // Metadata server -> Chunk server
MESSAGE_TYPE_AUTH_RESPONSE,
MESSAGE_TYPE_SYNC_2, MESSAGE_TYPE_SYNC_2,
MESSAGE_TYPE_SYNC_4, MESSAGE_TYPE_SYNC_4,
MESSAGE_TYPE_DOWNLOAD_LOCATIONS, MESSAGE_TYPE_DOWNLOAD_LOCATIONS,
-2
View File
@@ -1,5 +1,3 @@
#include "byte_queue.h"
#include "tcp.h"
#define _GNU_SOURCE #define _GNU_SOURCE
#include <string.h> #include <string.h>