Fix compilation errors
This commit is contained in:
+34
-3
@@ -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
@@ -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);
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
#include "byte_queue.h"
|
|
||||||
#include "tcp.h"
|
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user