fix: review fixes — getsockname, memcpy, clang-format
CI / lint (pull_request) Failing after 9s
CI / build-and-test (pull_request) Has been skipped
CI / sanitizers (address) (pull_request) Has been skipped
CI / sanitizers (undefined) (pull_request) Has been skipped
CI / fuzz-build (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / valgrind (pull_request) Has been skipped
CI / lint (pull_request) Failing after 9s
CI / build-and-test (pull_request) Has been skipped
CI / sanitizers (address) (pull_request) Has been skipped
CI / sanitizers (undefined) (pull_request) Has been skipped
CI / fuzz-build (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / valgrind (pull_request) Has been skipped
This commit is contained in:
@@ -16,17 +16,17 @@ DirectoryScanner* directory_scanner_create(char* root_directory, bool use_metada
|
||||
int exclude_count, char** include_patterns,
|
||||
int include_count, unsigned long long max_size,
|
||||
unsigned long long min_size) {
|
||||
return directory_scanner_create_full(root_directory, use_metadata, chunk_size,
|
||||
exclude_patterns, exclude_count,
|
||||
include_patterns, include_count,
|
||||
max_size, min_size, true);
|
||||
return directory_scanner_create_full(root_directory, use_metadata, chunk_size, exclude_patterns,
|
||||
exclude_count, include_patterns, include_count, max_size,
|
||||
min_size, true);
|
||||
}
|
||||
|
||||
DirectoryScanner* directory_scanner_create_full(char* root_directory, bool use_metadata,
|
||||
unsigned long long chunk_size, char** exclude_patterns,
|
||||
int exclude_count, char** include_patterns,
|
||||
int include_count, unsigned long long max_size,
|
||||
unsigned long long min_size, bool follow_symlinks) {
|
||||
unsigned long long chunk_size,
|
||||
char** exclude_patterns, int exclude_count,
|
||||
char** include_patterns, int include_count,
|
||||
unsigned long long max_size,
|
||||
unsigned long long min_size, bool follow_symlinks) {
|
||||
DirectoryScanner* scanner = malloc(sizeof(DirectoryScanner));
|
||||
if (scanner == NULL)
|
||||
return NULL;
|
||||
|
||||
@@ -27,10 +27,11 @@ DirectoryScanner* directory_scanner_create(char* root_directory, bool use_metada
|
||||
int include_count, unsigned long long max_size,
|
||||
unsigned long long min_size);
|
||||
DirectoryScanner* directory_scanner_create_full(char* root_directory, bool use_metadata,
|
||||
unsigned long long chunk_size, char** exclude_patterns,
|
||||
int exclude_count, char** include_patterns,
|
||||
int include_count, unsigned long long max_size,
|
||||
unsigned long long min_size, bool follow_symlinks);
|
||||
unsigned long long chunk_size,
|
||||
char** exclude_patterns, int exclude_count,
|
||||
char** include_patterns, int include_count,
|
||||
unsigned long long max_size,
|
||||
unsigned long long min_size, bool follow_symlinks);
|
||||
Chunk* directory_scanner_next(DirectoryScanner* scanner);
|
||||
void directory_scanner_destroy(DirectoryScanner* scanner);
|
||||
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@
|
||||
#include "protocol.h"
|
||||
#include "utils.h"
|
||||
|
||||
#define STREAM_THRESHOLD (64ULL * 1024 * 1024) /* 64 MB */
|
||||
#define STREAM_CHUNK_SIZE (1ULL * 1024 * 1024) /* 1 MB */
|
||||
#define STREAM_THRESHOLD (64ULL * 1024 * 1024) /* 64 MB */
|
||||
#define STREAM_CHUNK_SIZE (1ULL * 1024 * 1024) /* 1 MB */
|
||||
|
||||
File* file_create(const char* path) {
|
||||
File* file = (File*)malloc(sizeof(File));
|
||||
|
||||
+10
-12
@@ -44,9 +44,11 @@ Server* server_create(int port) {
|
||||
server->ssl_ctx = NULL;
|
||||
|
||||
// Try IPv6 first, fall back to IPv4
|
||||
int fd = socket(AF_INET6, SOCK_STREAM, 0);
|
||||
int domain = AF_INET6;
|
||||
int fd = socket(domain, SOCK_STREAM, 0);
|
||||
if (fd < 0) {
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
domain = AF_INET;
|
||||
fd = socket(domain, SOCK_STREAM, 0);
|
||||
}
|
||||
if (fd < 0) {
|
||||
perror("Could not create Socket!");
|
||||
@@ -69,17 +71,11 @@ Server* server_create(int port) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Determine address family from the actual socket
|
||||
struct sockaddr_storage* addr = &server->address;
|
||||
socklen_t addr_len = sizeof(*addr);
|
||||
if (getsockname(fd, (struct sockaddr*)addr, &addr_len) == 0) {
|
||||
// Use the family of the socket we actually created
|
||||
}
|
||||
|
||||
struct sockaddr_in* addr4 = (struct sockaddr_in*)addr;
|
||||
struct sockaddr_in6* addr6 = (struct sockaddr_in6*)addr;
|
||||
|
||||
if (addr->ss_family == AF_INET6) {
|
||||
if (domain == AF_INET6) {
|
||||
addr6->sin6_family = AF_INET6;
|
||||
addr6->sin6_addr = in6addr_any;
|
||||
addr6->sin6_port = htons(port);
|
||||
@@ -94,7 +90,7 @@ Server* server_create(int port) {
|
||||
if (bind(server->file_descriptor, (struct sockaddr*)&server->address, server->address_length) <
|
||||
0) {
|
||||
// If IPv6 bind failed (maybe no IPv6), try IPv4
|
||||
if (addr->ss_family == AF_INET6) {
|
||||
if (domain == AF_INET6) {
|
||||
close(fd);
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd < 0) {
|
||||
@@ -254,8 +250,10 @@ bool client_connect(Client* client, char* host, int port) {
|
||||
}
|
||||
|
||||
// Save the connected address
|
||||
memcpy(&client->address, rp->ai_addr, rp->ai_addrlen);
|
||||
client->address_length = rp->ai_addrlen;
|
||||
size_t copy_len =
|
||||
rp->ai_addrlen < sizeof(client->address) ? rp->ai_addrlen : sizeof(client->address);
|
||||
memcpy(&client->address, rp->ai_addr, copy_len);
|
||||
client->address_length = (int)copy_len;
|
||||
freeaddrinfo(res);
|
||||
|
||||
// Close old fd if any and set new one
|
||||
|
||||
@@ -34,7 +34,7 @@ static void log_ssl_errors(void) {
|
||||
}
|
||||
|
||||
static SSL_CTX* create_ssl_ctx(bool is_server, const char* cert, const char* key,
|
||||
const char* ca_path) {
|
||||
const char* ca_path) {
|
||||
const SSL_METHOD* method = is_server ? TLS_server_method() : TLS_client_method();
|
||||
SSL_CTX* ctx = SSL_CTX_new(method);
|
||||
if (!ctx) {
|
||||
|
||||
@@ -22,8 +22,8 @@ static void test_sendfile_basic() {
|
||||
/* Set the size so file_send_sendfile can report it */
|
||||
file->data->size = len;
|
||||
|
||||
Config* cfg = config_create(str_dup(PROTOCOL_VERSION), str_dup("/tmp"), str_dup("/tmp"),
|
||||
false, false, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup(PROTOCOL_VERSION), str_dup("/tmp"), str_dup("/tmp"), false,
|
||||
false, false, false, false, 0, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
int p[2];
|
||||
@@ -80,8 +80,8 @@ static void test_sendfile_empty_file() {
|
||||
EXPECT_NOT_NULL(file);
|
||||
file->data->size = 0;
|
||||
|
||||
Config* cfg = config_create(str_dup(PROTOCOL_VERSION), str_dup("/tmp"), str_dup("/tmp"),
|
||||
false, false, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup(PROTOCOL_VERSION), str_dup("/tmp"), str_dup("/tmp"), false,
|
||||
false, false, false, false, 0, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
int p[2];
|
||||
@@ -161,8 +161,8 @@ static void test_sendfile_compression_fallback() {
|
||||
file->data->size = (size_t)st.st_size;
|
||||
EXPECT_TRUE(file_load_data(file));
|
||||
|
||||
Config* cfg = config_create(str_dup(PROTOCOL_VERSION), str_dup("/tmp"), str_dup("/tmp"),
|
||||
false, false, false, true, false, 3, false, 0);
|
||||
Config* cfg = config_create(str_dup(PROTOCOL_VERSION), str_dup("/tmp"), str_dup("/tmp"), false,
|
||||
false, false, true, false, 3, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
int p[2];
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ static void test_log_set_level_info() {
|
||||
set_log_level(LOG_LEVEL_INFO);
|
||||
|
||||
/* INFO level should show INFO, WARNING, ERROR but not DEBUG */
|
||||
log_message(LOG_LEVEL_DEBUG, "debug should be filtered"); /* filtered */
|
||||
log_message(LOG_LEVEL_DEBUG, "debug should be filtered"); /* filtered */
|
||||
log_message(LOG_LEVEL_INFO, "info should show");
|
||||
log_message(LOG_LEVEL_WARNING, "warning should show");
|
||||
log_message(LOG_LEVEL_ERROR, "error should show");
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
/* Test pipeline_context_sender_create/destroy with valid arguments */
|
||||
static void test_sender_create_destroy() {
|
||||
Config* cfg = config_create(str_dup("1.0"), str_dup("/src"), str_dup("/dst"),
|
||||
false, false, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup("1.0"), str_dup("/src"), str_dup("/dst"), false, false, false,
|
||||
false, false, 0, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
Queue* q_scanner = queue_create(5, NULL);
|
||||
@@ -32,8 +32,8 @@ static void test_sender_create_destroy() {
|
||||
|
||||
/* Test pipeline_context_receiver_create/destroy with valid arguments */
|
||||
static void test_receiver_create_destroy() {
|
||||
Config* cfg = config_create(str_dup("2.0"), str_dup("/src"), str_dup("/dst"),
|
||||
true, true, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup("2.0"), str_dup("/src"), str_dup("/dst"), true, true, false,
|
||||
false, false, 0, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
Queue* q = queue_create(20, NULL);
|
||||
@@ -51,8 +51,8 @@ static void test_receiver_create_destroy() {
|
||||
|
||||
/* Test that create handles various queue capacities */
|
||||
static void test_sender_queue_capacities() {
|
||||
Config* cfg = config_create(str_dup("3.0"), str_dup("/src"), str_dup("/dst"),
|
||||
false, false, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup("3.0"), str_dup("/src"), str_dup("/dst"), false, false, false,
|
||||
false, false, 0, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
/* Single-element queues */
|
||||
@@ -67,8 +67,8 @@ static void test_sender_queue_capacities() {
|
||||
|
||||
/* Test that create handles zero-capacity queues */
|
||||
static void test_sender_zero_capacity() {
|
||||
Config* cfg = config_create(str_dup("4.0"), str_dup("/src"), str_dup("/dst"),
|
||||
false, false, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup("4.0"), str_dup("/src"), str_dup("/dst"), false, false, false,
|
||||
false, false, 0, false, 0);
|
||||
EXPECT_NOT_NULL(cfg);
|
||||
|
||||
Queue* q1 = queue_create(0, NULL);
|
||||
@@ -82,8 +82,8 @@ static void test_sender_zero_capacity() {
|
||||
|
||||
/* Test receiver with zero file_descriptor */
|
||||
static void test_receiver_fd_zero() {
|
||||
Config* cfg = config_create(str_dup("5.0"), str_dup("/src"), str_dup("/dst"),
|
||||
false, false, false, false, false, 0, false, 0);
|
||||
Config* cfg = config_create(str_dup("5.0"), str_dup("/src"), str_dup("/dst"), false, false, false,
|
||||
false, false, 0, false, 0);
|
||||
Queue* q = queue_create(5, NULL);
|
||||
PipelineContextReceiver* ctx = pipeline_context_receiver_create(cfg, q, 0);
|
||||
EXPECT_NOT_NULL(ctx);
|
||||
|
||||
@@ -336,10 +336,10 @@ static void test_scanner_size_range() {
|
||||
static void test_scanner_mixed_patterns() {
|
||||
/* Combine exclude, include, and size filters together */
|
||||
const char* dir = "test_scan_mixed";
|
||||
const char* a_txt = "test_scan_mixed/a.txt"; /* size ~= 5 */
|
||||
const char* b_bin = "test_scan_mixed/b.bin"; /* size ~= 13 */
|
||||
const char* c_txt = "test_scan_mixed/c.txt"; /* size ~= 5 */
|
||||
const char* d_bak = "test_scan_mixed/d.bak"; /* size ~= 42 */
|
||||
const char* a_txt = "test_scan_mixed/a.txt"; /* size ~= 5 */
|
||||
const char* b_bin = "test_scan_mixed/b.bin"; /* size ~= 13 */
|
||||
const char* c_txt = "test_scan_mixed/c.txt"; /* size ~= 5 */
|
||||
const char* d_bak = "test_scan_mixed/d.bak"; /* size ~= 42 */
|
||||
|
||||
mkdir(dir, 0755);
|
||||
create_test_file(a_txt, "aaaaa");
|
||||
|
||||
Reference in New Issue
Block a user