diff --git a/src/client/client_validation.c b/src/client/client_validation.c index 106580f..e807085 100644 --- a/src/client/client_validation.c +++ b/src/client/client_validation.c @@ -23,15 +23,15 @@ bool validate_config(const Config* config) { log_message(LOG_LEVEL_ERROR, "--incremental is not supported with -s (chunk serialization)"); return false; } - if (config->use_delta && !config->use_incremental) { + if (config->use_delta && !config->whole_file && !config->use_incremental) { log_message(LOG_LEVEL_ERROR, "--delta requires --incremental"); return false; } - if (config->use_delta && config->use_chunk_serialization) { + if (config->use_delta && !config->whole_file && config->use_chunk_serialization) { log_message(LOG_LEVEL_ERROR, "--delta cannot be combined with -s (chunk serialization)"); return false; } - if (config->use_delta && config->use_sendfile) { + if (config->use_delta && !config->whole_file && config->use_sendfile) { log_message(LOG_LEVEL_ERROR, "--delta cannot be combined with -f (sendfile)"); return false; } diff --git a/tests/test_client_cli.c b/tests/test_client_cli.c index c1cb03f..a557774 100644 --- a/tests/test_client_cli.c +++ b/tests/test_client_cli.c @@ -59,6 +59,13 @@ static void test_validate_config_delta_sendfile_constraints() { cfg->use_incremental = true; cfg->use_sendfile = true; EXPECT_FALSE(validate_config(cfg)); + + /* Whole-file makes delta selection inactive, so these combinations are valid. */ + cfg->whole_file = true; + EXPECT_TRUE(validate_config(cfg)); + + cfg->use_incremental = false; + EXPECT_TRUE(validate_config(cfg)); config_delete(cfg); }