stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test
- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll - stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close - utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP), add deferred drain in both Phase J and L - stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39, exchange ed25519_pubkey in both handshake directions - etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb - chat_sync.c: fix lk->conn NULL dereference for TCP links - test_stcp.c: update stcp_server_create/stcp_client_connect callsites - tools/chat_tcp_test: change transport udp→tcp
This commit is contained in:
1 parent
a3783b5f55
commit
38c9f229bc
1272 files changed
+968388
-1
No files matched your search
@@ -0,0 +1,138 @@
|
||||
/**
|
||||
* Тест загрузки debug настроек из конфигурационного файла
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "../lib/platform_compat.h"
|
||||
#include "test_utils.h"
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#include <direct.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#include <sys/stat.h>
|
||||
#include "../lib/debug_config.h"
|
||||
#include "../lib/socket_compat.h"
|
||||
#include "../src/config_parser.h"
|
||||
|
||||
// Temp config file path
|
||||
static char temp_dir[] = "/tmp/utun_test_XXXXXX";
|
||||
static char config_path[256];
|
||||
|
||||
// Config content
|
||||
static const char* config_content =
|
||||
"[global]\n"
|
||||
"my_node_id=0x1111111111111111\n"
|
||||
"my_private_key=38240cb82199e504686507f11f6eaa4f740fde6f0c425c495e49a523019a5d68\n"
|
||||
"my_public_key=ce8871f07fa056c636d297115f231b08c29cdf94e0d440fce83a07c34416d36a\n"
|
||||
"tun_ip=10.99.0.1/24\n"
|
||||
"tun_ifname=tun99\n"
|
||||
"# Debug and logging configuration\n"
|
||||
"log_file=/tmp/utun_debug.log\n"
|
||||
"debug_level=debug\n"
|
||||
"debug_categories=etcp,ll_queue,memory,traffic\n"
|
||||
"enable_timestamp=1\n"
|
||||
"enable_function_names=1\n"
|
||||
"enable_file_lines=1\n"
|
||||
"enable_colors=1\n"
|
||||
"\n"
|
||||
"[server: test]\n"
|
||||
"addr=127.0.0.1:9001\n"
|
||||
"type=public\n";
|
||||
|
||||
// Create temp config file
|
||||
static int create_temp_config(void) {
|
||||
if (test_mkdtemp(temp_dir) != 0) {
|
||||
fprintf(stderr, "Failed to create temp directory\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
snprintf(config_path, sizeof(config_path), "%s/test.conf", temp_dir);
|
||||
|
||||
FILE* f = fopen(config_path, "w");
|
||||
if (!f) {
|
||||
fprintf(stderr, "Failed to create config file\n");
|
||||
return -1;
|
||||
}
|
||||
fprintf(f, "%s", config_content);
|
||||
fclose(f);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Cleanup temp config file
|
||||
static void cleanup_temp_config(void) {
|
||||
if (config_path[0]) test_unlink(config_path);
|
||||
if (temp_dir[0]) test_rmdir(temp_dir);
|
||||
}
|
||||
|
||||
int main() {
|
||||
// Initialize socket platform (required for getaddrinfo on Windows)
|
||||
if (socket_platform_init() != 0) {
|
||||
fprintf(stderr, "Failed to initialize socket platform\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create temp config file first
|
||||
if (create_temp_config() != 0) {
|
||||
fprintf(stderr, "Failed to create temporary config file\n");
|
||||
socket_platform_cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "=== Тест загрузки debug настроек из конфигурационного файла ===");
|
||||
|
||||
// Инициализация отладки по умолчанию
|
||||
debug_config_init();
|
||||
debug_set_level(DEBUG_LEVEL_ERROR); // Начальный уровень
|
||||
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "1. До загрузки конфигурации:");
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "ERROR сообщение до загрузки конфигурации");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_CONFIG, "INFO сообщение до загрузки конфигурации (не должно выводиться)");
|
||||
|
||||
// Загрузка конфигурации из файла
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "2. Загрузка конфигурации из файла: %s", config_path);
|
||||
struct utun_config *config = parse_config(config_path);
|
||||
|
||||
if (!config) {
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "❌ Ошибка загрузки конфигурации");
|
||||
return 1;
|
||||
}
|
||||
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "✅ Конфигурация загружена успешно");
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, " Log file: %s", config->global.log_file[0] ? config->global.log_file : "(none)");
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, " Debug level: %s", config->global.debug_level[0] ? config->global.debug_level : "(none)");
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, " Enable timestamp: %d", config->global.enable_timestamp);
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, " Enable colors: %d", config->global.enable_colors);
|
||||
|
||||
// Тестирование новых настроек
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "4. Тестирование после применения настроек:");
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "ERROR от ETCP (должен выводиться)");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_ETCP, "INFO от ETCP (должен выводиться - уровень debug)");
|
||||
DEBUG_DEBUG(DEBUG_CATEGORY_ETCP, "DEBUG от ETCP (должен выводиться - уровень debug)");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_SYS, "INFO от LL_QUEUE (должен выводиться)");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_SYS, "INFO от MEMORY (должен выводиться)");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_TRAFFIC, "INFO от TRAFFIC (должен выводиться)");
|
||||
DEBUG_DEBUG(DEBUG_CATEGORY_TRAFFIC, "DEBUG от TRAFFIC (должен выводиться - уровень debug)");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "INFO от CONNECTION (НЕ должен выводиться - категория не включена)");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_CRYPTO, "INFO от CRYPTO (НЕ должен выводиться - категория не включена)");
|
||||
|
||||
// Проверка работы с файлом
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "5. Проверка вывода в файл:");
|
||||
DEBUG_INFO(DEBUG_CATEGORY_CONFIG, "Это сообщение должно быть записано в файл: /tmp/utun_debug.log");
|
||||
|
||||
// Освобождение ресурсов
|
||||
free_config(config);
|
||||
|
||||
// Cleanup temp config file
|
||||
cleanup_temp_config();
|
||||
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "=== Тест завершен ===");
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_CONFIG, "Проверьте файл /tmp/utun_debug.log для записанных сообщений");
|
||||
|
||||
socket_platform_cleanup();
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user