From 93f45c25e9fde39a6ee12ec2005981d530abc79f Mon Sep 17 00:00:00 2001 From: radkesvat <134321679+radkesvat@users.noreply.github.com> Date: Sun, 21 Apr 2024 15:18:48 +0000 Subject: [PATCH] Finish general reformat --- CMakeLists.txt | 25 +- core/core_settings.c | 50 +-- core/core_settings.h | 1 - core/main.c | 13 +- core/os_helpers.h | 43 +++ core/static_tunnels.c | 4 +- tunnels/adapters/bridge/bridge.c | 104 ++---- tunnels/adapters/bridge/bridge.h | 9 +- tunnels/adapters/connector/CMakeLists.txt | 13 +- tunnels/adapters/connector/connector.c | 69 +++- tunnels/adapters/connector/tcp/CMakeLists.txt | 7 - .../adapters/connector/tcp/tcp_connector.c | 13 +- .../adapters/connector/tcp/tcp_connector.h | 8 +- tunnels/adapters/connector/tcp/types.h | 14 +- tunnels/adapters/connector/types.h | 19 - tunnels/adapters/connector/udp/CMakeLists.txt | 20 +- tunnels/adapters/connector/udp/types.h | 18 +- .../adapters/connector/udp/udp_connector.c | 17 +- tunnels/adapters/listener/tcp/tcp_listener.c | 2 +- tunnels/client/header/header_client.c | 27 +- tunnels/client/http2/helpers.h | 207 +++++------ tunnels/client/http2/http2_client.c | 342 ++++++++++-------- tunnels/client/http2/http2_client.h | 12 +- tunnels/client/http2/types.h | 93 +++-- tunnels/client/openssl/openssl_client.c | 218 +++++------ tunnels/client/openssl/openssl_client.h | 11 +- tunnels/client/preconnect/helpers.h | 69 ++-- tunnels/client/preconnect/preconnect_client.c | 89 ++--- tunnels/client/preconnect/preconnect_client.h | 12 +- tunnels/client/preconnect/types.h | 32 +- tunnels/client/protobuf/protobuf_client.c | 152 ++++---- tunnels/client/protobuf/protobuf_client.h | 11 +- tunnels/client/reverse/helpers.h | 59 +-- tunnels/client/reverse/reverse_client.c | 113 +++--- tunnels/client/reverse/reverse_client.h | 9 +- tunnels/client/reverse/types.h | 28 +- tunnels/client/wolfssl/CMakeLists.txt | 56 +-- tunnels/client/wolfssl/wolfssl_client.c | 268 +++++++------- tunnels/client/wolfssl/wolfssl_client.h | 11 +- tunnels/logger/logger_tunnel.c | 52 ++- tunnels/logger/logger_tunnel.h | 12 +- tunnels/server/boringssl/boringssl_server.c | 24 +- tunnels/server/header/header_server.c | 50 ++- tunnels/server/http2/helpers.h | 10 +- tunnels/server/http2/http2_server.c | 14 +- tunnels/server/openssl/openssl_server.c | 24 +- tunnels/server/preconnect/preconnect_server.c | 27 +- tunnels/server/protobuf/protobuf_server.c | 30 +- tunnels/server/reverse/reverse_server.c | 34 +- .../server/trojan/auth/trojan_auth_server.c | 10 +- .../server/trojan/socks/trojan_socks_server.c | 87 ++--- tunnels/server/wolfssl/CMakeLists.txt | 53 +-- tunnels/server/wolfssl/wolfssl_server.c | 31 +- tunnels/shared/protobuf/uleb128.h | 2 +- tunnels/shared/trojan/sha2.c | 48 +-- tunnels/shared/wolfssl/libwolfssl_arm64.a | Bin 4168458 -> 4175266 bytes tunnels/shared/wolfssl/wolfssl_globals.h | 8 +- ww/CMakeLists.txt | 1 + ww/buffer_pool.c | 104 +++--- ww/buffer_pool.h | 18 +- ww/library_loader.h | 2 +- ww/managers/node_manager.c | 102 +++--- ww/managers/node_manager.h | 1 + ww/node.h | 41 ++- ww/shiftbuffer.c | 9 + ww/shiftbuffer.h | 5 +- ww/sync_dns.c | 2 +- ww/tunnel.c | 33 +- ww/tunnel.h | 36 +- ww/utils/sockutils.h | 25 +- ww/utils/utils.c | 18 +- ww/ww.c | 37 +- 72 files changed, 1599 insertions(+), 1619 deletions(-) create mode 100644 core/os_helpers.h delete mode 100644 tunnels/adapters/connector/types.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f9f98287..7e106e6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,7 @@ option(INCLUDE_TCP_LISTENER "link TcpListener staticly to the core" TRUE) option(INCLUDE_LOGGER_TUNNEL "link LoggerTunnel staticly to the core" TRUE) option(INCLUDE_CONNECTOR "link Connector staticly to the core" TRUE) option(INCLUDE_TCPCONNECTOR "link TcpConnector staticly to the core" TRUE) +option(INCLUDE_UDPCONNECTOR "link UdpConnector staticly to the core" TRUE) option(INCLUDE_BRIDGE "link Bridge staticly to the core" TRUE) option(INCLUDE_OPENSSL_SERVER "link OpenSSlServer staticly to the core" TRUE) @@ -96,8 +97,8 @@ target_link_libraries(Waterwall ww) #tcp listener if (INCLUDE_TCP_LISTENER) target_compile_definitions(Waterwall PUBLIC INCLUDE_TCP_LISTENER=1) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/tcp_listener) -target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/tcp_listener) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/listener/tcp) +target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/listener/tcp) target_link_libraries(Waterwall TcpListener) endif() @@ -112,17 +113,25 @@ endif() #tcp connector if (INCLUDE_TCPCONNECTOR) target_compile_definitions(Waterwall PUBLIC INCLUDE_TCPCONNECTOR=1) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/bridge) -target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/bridge) -target_link_libraries(Waterwall Bridge) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/connector/tcp) +target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/connector/tcp) +target_link_libraries(Waterwall TcpConnector) +endif() + +#udp connector +if (INCLUDE_UDPCONNECTOR) +target_compile_definitions(Waterwall PUBLIC INCLUDE_UDPCONNECTOR=1) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/connector/udp) +target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/connector/udp) +target_link_libraries(Waterwall UdpConnector) endif() #bridge if (INCLUDE_BRIDGE) target_compile_definitions(Waterwall PUBLIC INCLUDE_BRIDGE=1) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/tcp_connector) -target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/tcp_connector) -target_link_libraries(Waterwall TcpConnector) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/bridge) +target_link_directories(Waterwall PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tunnels/adapters/bridge) +target_link_libraries(Waterwall Bridge) endif() #http2 server diff --git a/core/core_settings.c b/core/core_settings.c index 51349632..c74ec4b9 100644 --- a/core/core_settings.c +++ b/core/core_settings.c @@ -23,45 +23,7 @@ static struct core_settings_s *settings = NULL; -#ifdef OS_UNIX -#include -void increaseFileLimit() -{ - struct rlimit rlim; - // Get the current limit - if (getrlimit(RLIMIT_NOFILE, &rlim) == -1) - { - LOGF("Core: getrlimit failed"); - exit(EXIT_FAILURE); - } - if ((unsigned long) rlim.rlim_max < 8192) - { - LOGW( - "Core: Maximum allowed open files limit is %lu which is below 8192 !\n if you are running as a server then \ - you might experince time-outs if this limits gets reached, depends on how many clients are connected to the server simultaneously\ - ", - (unsigned long) rlim.rlim_max); - } - else - { - LOGD("Core: File limit %lu -> %lu", (unsigned long) rlim.rlim_cur, (unsigned long) rlim.rlim_max); - } - // Set the hard limit to the maximum allowed value - rlim.rlim_cur = rlim.rlim_max; - // Apply the new limit - if (setrlimit(RLIMIT_NOFILE, &rlim) == -1) - { - LOGF("Core: setrlimit failed"); - exit(EXIT_FAILURE); - } -} -#else -void increaseFileLimit() -{ - (void) (0); -} -#endif static void parseLogPartOfJsonNoCheck(const cJSON *log_obj) { @@ -129,8 +91,6 @@ static void parseLogPartOfJsonNoCheck(const cJSON *log_obj) } } - - static void parseLogPartOfJson(cJSON *log_obj) { if (cJSON_IsObject(log_obj) && (log_obj->child != NULL)) @@ -229,11 +189,17 @@ void parseCoreSettings(char *data_json) parseConfigPartOfJson(cJSON_GetObjectItemCaseSensitive(json, "configs")); parseMiscPartOfJson(cJSON_GetObjectItemCaseSensitive(json, "misc")); - if ((settings->workers_count < 0) || (settings->workers_count > 200)) + if (settings->workers_count <= 0) { - LOGF("CoreSettings: the workers count is invalid"); + fprintf(stderr, "CoreSettings: the workers count is invalid"); exit(1); } + + if (settings->workers_count > 255) + { + fprintf(stderr, "CoreSettings: workers count is shrinked to maximum supported value -> 255"); + settings->workers_count = 255; + } cJSON_Delete(json); // TODO (DNS) Implement dns settings and backend } diff --git a/core/core_settings.h b/core/core_settings.h index 825f4c42..221af36d 100644 --- a/core/core_settings.h +++ b/core/core_settings.h @@ -28,7 +28,6 @@ struct core_settings_s }; void parseCoreSettings(char *data_json); -void increaseFileLimit(); char *getCoreLoggerFullPath(); char *getNetworkLoggerFullPath(); diff --git a/core/main.c b/core/main.c index 7f5adf21..5b7d07be 100644 --- a/core/main.c +++ b/core/main.c @@ -5,8 +5,13 @@ #include "loggers/network_logger.h" #include "managers/node_manager.h" #include "managers/socket_manager.h" +#include "os_helpers.h" #include "static_tunnels.h" #include "utils/fileutils.h" +#include "utils/stringutils.h" + +#undef hlog +#define hlog getCoreLogger() // NOLINT #define CORE_FILE "core.json" @@ -38,14 +43,14 @@ int main(void) ww_construction_data_t runtime_data = { .workers_count = getCoreSettings()->workers_count, .core_logger_data = (logger_construction_data_t){.log_file_path = getCoreLoggerFullPath(), - .log_level = getCoreSettings()->core_log_level, - .log_console = getCoreSettings()->core_log_console}, + .log_level = getCoreSettings()->core_log_level, + .log_console = getCoreSettings()->core_log_console}, .network_logger_data = (logger_construction_data_t){.log_file_path = getNetworkLoggerFullPath(), .log_level = getCoreSettings()->network_log_level, .log_console = getCoreSettings()->network_log_level}, .dns_logger_data = (logger_construction_data_t){.log_file_path = getDnsLoggerFullPath(), - .log_level = getCoreSettings()->dns_log_level, - .log_console = getCoreSettings()->dns_log_console}, + .log_level = getCoreSettings()->dns_log_level, + .log_console = getCoreSettings()->dns_log_console}, }; createWW(runtime_data); diff --git a/core/os_helpers.h b/core/os_helpers.h new file mode 100644 index 00000000..4c060877 --- /dev/null +++ b/core/os_helpers.h @@ -0,0 +1,43 @@ +#pragma once + +#include "loggers/core_logger.h" + +#ifdef OS_UNIX +#include +static void increaseFileLimit() +{ + + struct rlimit rlim; + // Get the current limit + if (getrlimit(RLIMIT_NOFILE, &rlim) == -1) + { + LOGF("Core: getrlimit failed"); + exit(EXIT_FAILURE); + } + if ((unsigned long) rlim.rlim_max < 8192) + { + LOGW( + "Core: Maximum allowed open files limit is %lu which is below 8192 !\n if you are running as a server then \ + you might experince time-outs if this limits gets reached, depends on how many clients are connected to the server simultaneously\ + ", + (unsigned long) rlim.rlim_max); + } + else + { + LOGD("Core: File limit %lu -> %lu", (unsigned long) rlim.rlim_cur, (unsigned long) rlim.rlim_max); + } + // Set the hard limit to the maximum allowed value + rlim.rlim_cur = rlim.rlim_max; + // Apply the new limit + if (setrlimit(RLIMIT_NOFILE, &rlim) == -1) + { + LOGF("Core: setrlimit failed"); + exit(EXIT_FAILURE); + } +} +#else +static void increaseFileLimit() +{ + (void) (0); +} +#endif \ No newline at end of file diff --git a/core/static_tunnels.c b/core/static_tunnels.c index 74fb7a7d..02dceafc 100644 --- a/core/static_tunnels.c +++ b/core/static_tunnels.c @@ -12,7 +12,7 @@ } while (0) #ifdef INCLUDE_TCP_LISTENER -#include "tunnels/adapters/tcp_listener/tcp_listener.h" +#include "tunnels/adapters/listener/tcp/tcp_listener.h" #endif #ifdef INCLUDE_OPENSSL_SERVER @@ -40,7 +40,7 @@ #endif #ifdef INCLUDE_TCPCONNECTOR -#include "tunnels/adapters/tcp_connector/tcp_connector.h" +#include "tunnels/adapters/connector/tcp/tcp_connector.h" #endif #ifdef INCLUDE_BRIDGE diff --git a/tunnels/adapters/bridge/bridge.c b/tunnels/adapters/bridge/bridge.c index 043425fa..f045c8ac 100644 --- a/tunnels/adapters/bridge/bridge.c +++ b/tunnels/adapters/bridge/bridge.c @@ -1,18 +1,11 @@ #include "bridge.h" -#include "managers/node_manager.h" #include "loggers/network_logger.h" - - -#define STATE(x) ((bridge_state_t *)((x)->state)) -#define CSTATE(x) ((bridge_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) +#include "managers/node_manager.h" typedef struct bridge_state_s { - bool initialized; - bool mode_upside; // this node is last node of upstream - node_t *pair_node; + bool mode_upside; // this node is last node of upstream + node_t * pair_node; tunnel_t *pair; } bridge_state_t; @@ -22,66 +15,33 @@ typedef struct bridge_con_state_s } bridge_con_state_t; -static void secondary_init(tunnel_t *self, bridge_state_t *state) -{ - if (state->pair_node->instance == NULL) - { - LOGF("Bridge: the pair node is not running"); - exit(1); - } - if (!state->mode_upside && self->dw != NULL) - { - LOGF("Bridge: misconfiguration, bridge only exists at the start or end of a chain"); - exit(1); - } - state->pair = state->pair_node->instance; - state->initialized = true; -} static void upStream(tunnel_t *self, context_t *c) { bridge_state_t *state = STATE(self); - if (!state->initialized) - secondary_init(self,state); if (state->mode_upside) - state->pair->downStream(state->pair, c); - else - self->up->upStream(self->up, c); + { + self->dw->upStream = state->pair->dw->downStream; + state->pair->dw->downStream(state->pair, c); + } } static inline void downStream(tunnel_t *self, context_t *c) { bridge_state_t *state = STATE(self); - if (!state->initialized) - secondary_init(self,state); - if (state->mode_upside) - self->dw->downStream(self->dw, c); - else - state->pair->upStream(state->pair, c); -} -static void BridgeUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c); -} -static void BridgePacketUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c); -} -static void BridgeDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c); -} -static void BridgePacketDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c); + if (! state->mode_upside) + { + self->up->downStream = state->pair->up->upStream; + state->pair->up->upStream(state->pair, c); + } } tunnel_t *newBridge(node_instance_context_t *instance_info) { - const cJSON *settings = instance_info->node_settings_json; - char *pair_node_name = NULL; - if (!getStringFromJsonObject(&pair_node_name, settings, "pair")) + const cJSON *settings = instance_info->node_settings_json; + char * pair_node_name = NULL; + if (! getStringFromJsonObject(&pair_node_name, settings, "pair")) { LOGF("Bridge: \"pair\" is not provided in json"); exit(1); @@ -90,38 +50,46 @@ tunnel_t *newBridge(node_instance_context_t *instance_info) bridge_state_t *state = malloc(sizeof(bridge_state_t)); memset(state, 0, sizeof(bridge_state_t)); - hash_t hash_pairname = CALC_HASH_BYTES(pair_node_name, strlen(pair_node_name)); - node_t *pair_node = getNode(hash_pairname); + hash_t hash_pairname = CALC_HASH_BYTES(pair_node_name, strlen(pair_node_name)); + node_t *pair_node = getNode(hash_pairname); if (pair_node == NULL) { LOGF("Bridge: pair node \"%s\" not found", pair_node_name); exit(1); } free(pair_node_name); - state->pair_node = pair_node; - state->mode_upside = instance_info->self_node_handle->next == NULL; + state->pair_node = pair_node; + state->mode_upside = instance_info->node->next == NULL; + tunnel_t *t = newTunnel(); + if (pair_node->instance) + { + state->pair = pair_node->instance; + bridge_state_t *pair_state = STATE(pair_node->instance); + pair_state->pair = t; + } - tunnel_t *t = newTunnel(); - t->state = state; - t->upStream = &BridgeUpStream; - t->packetUpStream = &BridgePacketUpStream; - t->downStream = &BridgeDownStream; - t->packetDownStream = &BridgePacketDownStream; + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; return t; } -api_result_t apiBridge(tunnel_t *self, char *msg) +api_result_t apiBridge(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; // TODO + (void) (self); + (void) (msg); + return (api_result_t){0}; } tunnel_t *destroyBridge(tunnel_t *self) { + (void) (self); + return NULL; } tunnel_metadata_t getMetadataBridge() { - return (tunnel_metadata_t){.version = 0001, .flags = TFLAG_ROUTE_STARTER}; + return (tunnel_metadata_t){.version = 0001, .flags = kNodeFlagChainHead}; } \ No newline at end of file diff --git a/tunnels/adapters/bridge/bridge.h b/tunnels/adapters/bridge/bridge.h index aecc0c10..ce437648 100644 --- a/tunnels/adapters/bridge/bridge.h +++ b/tunnels/adapters/bridge/bridge.h @@ -1,12 +1,9 @@ #pragma once #include "api.h" - // con <------> Bridge(pair 1) <------> Bridge(pair 2) <------> con - - -tunnel_t *newBridge(node_instance_context_t *instance_info); -api_result_t apiBridge(tunnel_t *self, char *msg); -tunnel_t *destroyBridge(tunnel_t *self); +tunnel_t * newBridge(node_instance_context_t *instance_info); +api_result_t apiBridge(tunnel_t *self, const char *msg); +tunnel_t * destroyBridge(tunnel_t *self); tunnel_metadata_t getMetadataBridge(); diff --git a/tunnels/adapters/connector/CMakeLists.txt b/tunnels/adapters/connector/CMakeLists.txt index f8bff61b..f10b3785 100644 --- a/tunnels/adapters/connector/CMakeLists.txt +++ b/tunnels/adapters/connector/CMakeLists.txt @@ -2,28 +2,17 @@ add_library(Connector STATIC connector.c - tcp.c - udp.c - resolve.c - + ) # target_include_directories(Connector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - #ww api target_include_directories(Connector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../ww) target_link_libraries(Connector ww) - - # add dependencies include(${CMAKE_BINARY_DIR}/cmake/CPM.cmake) - - - target_compile_definitions(Connector PRIVATE Connector_VERSION=0.1) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(Connector PRIVATE DEBUG=1) - endif() diff --git a/tunnels/adapters/connector/connector.c b/tunnels/adapters/connector/connector.c index 88b31949..7481fb2c 100644 --- a/tunnels/adapters/connector/connector.c +++ b/tunnels/adapters/connector/connector.c @@ -1,39 +1,80 @@ #include "connector.h" #include "loggers/network_logger.h" -#include "types.h" -#include "utils/sockutils.h" +#include "managers/node_manager.h" +#include "utils/stringutils.h" -static void tcpUpStream(tunnel_t *self, context_t *c) +typedef struct connector_state_s { -} -static void tcpDownStream(tunnel_t *self, context_t *c) -{ -} -static void udpUpStream(tunnel_t *self, context_t *c) -{ -} -static void udpDownStream(tunnel_t *self, context_t *c) + tunnel_t *tcp_connector; + tunnel_t *udp_connector; + +} connector_state_t; + +typedef struct connector_con_state_s { -} + +} connector_con_state_t; static void upStream(tunnel_t *self, context_t *c) { + connector_state_t *state = STATE(self); + + switch ((c->line->dest_ctx.address_protocol)) + { + default: + case kSapTcp: + state->tcp_connector->upStream(state->tcp_connector, c); + + break; + case kSapUdp: + state->udp_connector->upStream(state->udp_connector, c); + break; + } } static void downStream(tunnel_t *self, context_t *c) { + connector_state_t *state = STATE(self); + switch ((c->line->dest_ctx.address_protocol)) + { + + default: + case kSapTcp: + state->tcp_connector->downStream(state->tcp_connector, c); + break; + + case kSapUdp: + state->udp_connector->downStream(state->udp_connector, c); + break; + } } tunnel_t *newConnector(node_instance_context_t *instance_info) { connector_state_t *state = malloc(sizeof(connector_state_t)); memset(state, 0, sizeof(connector_state_t)); - const cJSON *settings = instance_info->node_settings_json; + cJSON *settings = instance_info->node_settings_json; if (! (cJSON_IsObject(settings) && settings->child != NULL)) { LOGF("JSON Error: Connector->settings (object field) : The object was empty or invalid"); return NULL; } + node_t *tcp_outbound_node = malloc(sizeof(node_t)); + node_t *udp_outbound_node = malloc(sizeof(node_t)); + memset(tcp_outbound_node, 0, sizeof(node_t)); + memset(udp_outbound_node, 0, sizeof(node_t)); + tcp_outbound_node->name = concat(instance_info->node->name, "_tcp_outbound"); + tcp_outbound_node->type = "TcpConnector"; + tcp_outbound_node->version = instance_info->node->version; + udp_outbound_node->name = concat(instance_info->node->name, "_udp_outbound"); + udp_outbound_node->type = "UdpConnector"; + udp_outbound_node->version = instance_info->node->version; + registerNode(tcp_outbound_node, settings); + registerNode(udp_outbound_node, settings); + runNode(tcp_outbound_node, instance_info->chain_index + 1); + runNode(udp_outbound_node, instance_info->chain_index + 1); + state->tcp_connector = tcp_outbound_node->instance; + state->udp_connector = udp_outbound_node->instance; tunnel_t *t = newTunnel(); t->state = state; @@ -42,7 +83,7 @@ tunnel_t *newConnector(node_instance_context_t *instance_info) atomic_thread_fence(memory_order_release); return t; } -api_result_t apiConnector(tunnel_t *self,const char *msg) +api_result_t apiConnector(tunnel_t *self, const char *msg) { (void) (self); (void) (msg); diff --git a/tunnels/adapters/connector/tcp/CMakeLists.txt b/tunnels/adapters/connector/tcp/CMakeLists.txt index 6157ae30..549769de 100644 --- a/tunnels/adapters/connector/tcp/CMakeLists.txt +++ b/tunnels/adapters/connector/tcp/CMakeLists.txt @@ -1,26 +1,19 @@ add_library(TcpConnector STATIC - resolve.c tcp_connector.c ) -# target_include_directories(TcpConnector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) #ww api target_include_directories(TcpConnector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../ww) target_link_libraries(TcpConnector ww) - # add dependencies include(${CMAKE_BINARY_DIR}/cmake/CPM.cmake) - - target_compile_definitions(TcpConnector PRIVATE TcpConnector_VERSION=0.1) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(TcpConnector PRIVATE DEBUG=1) - endif() diff --git a/tunnels/adapters/connector/tcp/tcp_connector.c b/tunnels/adapters/connector/tcp/tcp_connector.c index 5d20d86b..7800c6fb 100644 --- a/tunnels/adapters/connector/tcp/tcp_connector.c +++ b/tunnels/adapters/connector/tcp/tcp_connector.c @@ -2,6 +2,7 @@ #include "loggers/network_logger.h" #include "types.h" #include "utils/sockutils.h" +#include "sync_dns.h" static void cleanup(tcp_connector_con_state_t *cstate, bool write_queue) { @@ -242,7 +243,7 @@ void upStream(tunnel_t *self, context_t *c) gettimeofday(&(cstate->__profile_conenct), NULL); #endif - cstate->buffer_pool = buffer_pools[c->line->tid]; + cstate->buffer_pool = getContextBufferPool(c); cstate->tunnel = self; cstate->line = c->line; cstate->data_queue = newContextQueue(cstate->buffer_pool); @@ -254,10 +255,10 @@ void upStream(tunnel_t *self, context_t *c) switch (state->dest_addr_selected.status) { case kCdvsFromSource: - copySocketContextAddr(&dest_ctx, &src_ctx); + copySocketContextAddr(dest_ctx, src_ctx); break; case kCdvsConstant: - copySocketContextAddr(&dest_ctx, &(state->constant_dest_addr)); + copySocketContextAddr(dest_ctx, &(state->constant_dest_addr)); break; default: case kCdvsFromDest: @@ -266,10 +267,10 @@ void upStream(tunnel_t *self, context_t *c) switch (state->dest_port_selected.status) { case kCdvsFromSource: - copySocketContextPort(&dest_ctx, &src_ctx); + copySocketContextPort(dest_ctx, src_ctx); break; case kCdvsConstant: - copySocketContextPort(&dest_ctx, &(state->constant_dest_addr)); + copySocketContextPort(dest_ctx, &(state->constant_dest_addr)); break; default: case kCdvsFromDest: @@ -428,7 +429,7 @@ tunnel_t *newTcpConnector(node_instance_context_t *instance_info) } if (state->dest_port_selected.status == kDvsConstant) { - sockaddr_set_port(&(state->constant_dest_addr), state->dest_port_selected.value); + setSocketContextPort(&(state->constant_dest_addr), state->dest_port_selected.value); } tunnel_t *t = newTunnel(); diff --git a/tunnels/adapters/connector/tcp/tcp_connector.h b/tunnels/adapters/connector/tcp/tcp_connector.h index d0c41c6e..d7e0a1f6 100644 --- a/tunnels/adapters/connector/tcp/tcp_connector.h +++ b/tunnels/adapters/connector/tcp/tcp_connector.h @@ -1,14 +1,12 @@ #pragma once #include "api.h" - // con <-----\ /-----> Resolve=> TCP Connect // con <------> TcpConnector <------> Resolve=> TCP Connect // con <-----/ \-----> Resolve=> TCP Connect // - -tunnel_t *newTcpConnector(node_instance_context_t *instance_info); -api_result_t apiTcpConnector(tunnel_t *self,const char *msg); -tunnel_t *destroyTcpConnector(tunnel_t *self); +tunnel_t * newTcpConnector(node_instance_context_t *instance_info); +api_result_t apiTcpConnector(tunnel_t *self, const char *msg); +tunnel_t * destroyTcpConnector(tunnel_t *self); tunnel_metadata_t getMetadataTcpConnector(); diff --git a/tunnels/adapters/connector/tcp/types.h b/tunnels/adapters/connector/tcp/types.h index 3f6eea5f..3053be9f 100644 --- a/tunnels/adapters/connector/tcp/types.h +++ b/tunnels/adapters/connector/tcp/types.h @@ -15,13 +15,13 @@ enum tcp_connector_dynamic_value_status typedef struct tcp_connector_state_s { // settings - bool tcp_no_delay; - bool tcp_fast_open; - bool reuse_addr; - enum domain_strategy domain_strategy; - dynamic_value_t dest_addr_selected; - dynamic_value_t dest_port_selected; - socket_context_t constant_dest_addr; + bool tcp_no_delay; + bool tcp_fast_open; + bool reuse_addr; + int domain_strategy; + dynamic_value_t dest_addr_selected; + dynamic_value_t dest_port_selected; + socket_context_t constant_dest_addr; } tcp_connector_state_t; diff --git a/tunnels/adapters/connector/types.h b/tunnels/adapters/connector/types.h deleted file mode 100644 index 442b0765..00000000 --- a/tunnels/adapters/connector/types.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once -#include "api.h" - - - -typedef struct connector_state_s -{ - tunnel_t *tcp_connector; - tunnel_t *udp_connector; - -} connector_state_t; - -typedef struct connector_con_state_s -{ - -} connector_con_state_t; - - - diff --git a/tunnels/adapters/connector/udp/CMakeLists.txt b/tunnels/adapters/connector/udp/CMakeLists.txt index f8bff61b..c50eb8b9 100644 --- a/tunnels/adapters/connector/udp/CMakeLists.txt +++ b/tunnels/adapters/connector/udp/CMakeLists.txt @@ -1,29 +1,21 @@ -add_library(Connector STATIC - connector.c - tcp.c - udp.c - resolve.c +add_library(UdpConnector STATIC + udp_connector.c ) -# target_include_directories(Connector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) #ww api -target_include_directories(Connector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../ww) -target_link_libraries(Connector ww) +target_include_directories(UdpConnector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../ww) +target_link_libraries(UdpConnector ww) # add dependencies include(${CMAKE_BINARY_DIR}/cmake/CPM.cmake) - - -target_compile_definitions(Connector PRIVATE Connector_VERSION=0.1) - +target_compile_definitions(UdpConnector PRIVATE UdpConnector_VERSION=0.1) if(CMAKE_BUILD_TYPE STREQUAL "Debug") -target_compile_definitions(Connector PRIVATE DEBUG=1) - +target_compile_definitions(UdpConnector PRIVATE DEBUG=1) endif() diff --git a/tunnels/adapters/connector/udp/types.h b/tunnels/adapters/connector/udp/types.h index f63ced70..365d0365 100644 --- a/tunnels/adapters/connector/udp/types.h +++ b/tunnels/adapters/connector/udp/types.h @@ -15,11 +15,11 @@ enum udp_connector_dynamic_value_status typedef struct udp_connector_state_s { // settings - bool reuse_addr; - enum domain_strategy domain_strategy; - dynamic_value_t dest_addr_selected; - dynamic_value_t dest_port_selected; - socket_context_t constant_dest_addr; + bool reuse_addr; + int domain_strategy; + dynamic_value_t dest_addr_selected; + dynamic_value_t dest_port_selected; + socket_context_t constant_dest_addr; } udp_connector_state_t; @@ -29,10 +29,10 @@ typedef struct udp_connector_con_state_s struct timeval __profile_conenct; #endif - tunnel_t *tunnel; - line_t * line; - hio_t * io; - buffer_pool_t * buffer_pool; + tunnel_t * tunnel; + line_t * line; + hio_t * io; + buffer_pool_t *buffer_pool; bool established; } udp_connector_con_state_t; diff --git a/tunnels/adapters/connector/udp/udp_connector.c b/tunnels/adapters/connector/udp/udp_connector.c index 99ccbb4e..db45942e 100644 --- a/tunnels/adapters/connector/udp/udp_connector.c +++ b/tunnels/adapters/connector/udp/udp_connector.c @@ -1,5 +1,6 @@ #include "loggers/network_logger.h" #include "types.h" +#include "sync_dns.h" #include "utils/sockutils.h" static void cleanup(udp_connector_con_state_t *cstate) @@ -37,7 +38,7 @@ static void onRecv(hio_t *io, void *buf, int readbytes) context_t *est_context = newContext(line); est_context->est = true; est_context->src_io = io; - self->packetDownStream(self, est_context); + self->downStream(self, est_context); if (hevent_userdata(io) == NULL) { return; @@ -48,7 +49,7 @@ static void onRecv(hio_t *io, void *buf, int readbytes) context->src_io = io; context->payload = payload; - self->packetDownStream(self, context); + self->downStream(self, context); } void upStream(tunnel_t *self, context_t *c) @@ -86,7 +87,7 @@ void upStream(tunnel_t *self, context_t *c) memset(CSTATE(c), 0, sizeof(udp_connector_con_state_t)); udp_connector_con_state_t *cstate = CSTATE(c); - cstate->buffer_pool = buffer_pools[c->line->tid]; + cstate->buffer_pool = getContextBufferPool(c); cstate->tunnel = self; cstate->line = c->line; // sockaddr_set_ipport(&(dest->addr),"www.gstatic.com",80); @@ -130,10 +131,10 @@ void upStream(tunnel_t *self, context_t *c) switch (state->dest_addr_selected.status) { case kCdvsFromSource: - copySocketContextAddr(&dest_ctx, &src_ctx); + copySocketContextAddr(dest_ctx, src_ctx); break; case kCdvsConstant: - copySocketContextAddr(&dest_ctx, &(state->constant_dest_addr)); + copySocketContextAddr(dest_ctx, &(state->constant_dest_addr)); break; default: case kCdvsFromDest: @@ -142,10 +143,10 @@ void upStream(tunnel_t *self, context_t *c) switch (state->dest_port_selected.status) { case kCdvsFromSource: - copySocketContextPort(&dest_ctx, &src_ctx); + copySocketContextPort(dest_ctx, src_ctx); break; case kCdvsConstant: - copySocketContextPort(&dest_ctx, &(state->constant_dest_addr)); + copySocketContextPort(dest_ctx, &(state->constant_dest_addr)); break; default: case kCdvsFromDest: @@ -235,7 +236,7 @@ tunnel_t *newUdpConnector(node_instance_context_t *instance_info) } if (state->dest_port_selected.status == kDvsConstant) { - sockaddr_set_port(&(state->constant_dest_addr), state->dest_port_selected.value); + setSocketContextPort(&(state->constant_dest_addr), state->dest_port_selected.value); } tunnel_t *t = newTunnel(); t->state = state; diff --git a/tunnels/adapters/listener/tcp/tcp_listener.c b/tunnels/adapters/listener/tcp/tcp_listener.c index 9f895c97..fc566e76 100644 --- a/tunnels/adapters/listener/tcp/tcp_listener.c +++ b/tunnels/adapters/listener/tcp/tcp_listener.c @@ -540,5 +540,5 @@ tunnel_t *destroyTcpListener(tunnel_t *self) } tunnel_metadata_t getMetadataTcpListener() { - return (tunnel_metadata_t){.version = 0001, .flags = TFLAG_ROUTE_STARTER}; + return (tunnel_metadata_t){.version = 0001, .flags = kNodeFlagChainHead}; } \ No newline at end of file diff --git a/tunnels/client/header/header_client.c b/tunnels/client/header/header_client.c index 1dfbc21c..36b4b4fc 100644 --- a/tunnels/client/header/header_client.c +++ b/tunnels/client/header/header_client.c @@ -3,13 +3,6 @@ #include "hv/hsocket.h" #include "loggers/network_logger.h" -#define MAX_PACKET_SIZE 65535 - -#define STATE(x) ((header_client_state_t *)((x)->state)) -#define CSTATE(x) ((header_client_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) - enum header_dynamic_value_status { kHdvsEmpty = 0x0, @@ -35,7 +28,7 @@ static void upStream(tunnel_t *self, context_t *c) if (c->payload != NULL && c->first) { - switch ((enum header_dynamic_value_status)state->data.status) + switch ((enum header_dynamic_value_status) state->data.status) { case kHdvsSourcePort: shiftl(c->payload, sizeof(uint16_t)); @@ -56,20 +49,17 @@ static inline void downStream(tunnel_t *self, context_t *c) self->dw->downStream(self->dw, c); } - - tunnel_t *newHeaderClient(node_instance_context_t *instance_info) { header_client_state_t *state = malloc(sizeof(header_client_state_t)); memset(state, 0, sizeof(header_client_state_t)); const cJSON *settings = instance_info->node_settings_json; - state->data = parseDynamicNumericValueFromJsonObject(settings, "data", 1, - "src_context->port"); - tunnel_t *t = newTunnel(); - t->state = state; - t->upStream = &upStream; - t->downStream = &downStream; + state->data = parseDynamicNumericValueFromJsonObject(settings, "data", 1, "src_context->port"); + tunnel_t *t = newTunnel(); + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; atomic_thread_fence(memory_order_release); return t; @@ -77,11 +67,14 @@ tunnel_t *newHeaderClient(node_instance_context_t *instance_info) api_result_t apiHeaderClient(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; // TODO(root): + (void) (self); + (void) (msg); + return (api_result_t){0}; // TODO(root): } tunnel_t *destroyHeaderClient(tunnel_t *self) { + (void) (self); return NULL; } tunnel_metadata_t getMetadataHeaderClient() diff --git a/tunnels/client/http2/helpers.h b/tunnels/client/http2/helpers.h index 3a6089fa..ce66a488 100644 --- a/tunnels/client/http2/helpers.h +++ b/tunnels/client/http2/helpers.h @@ -3,59 +3,51 @@ #include "types.h" #define MAX_CONCURRENT_STREAMS 0xffffffffu -#define PING_INTERVAL 5000 +#define PING_INTERVAL 5000 -#define STATE(x) ((http2_client_state_t *)((x)->state)) -#define CSTATE(x) ((void *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) +static void onPingTimer(htimer_t *timer); -static void on_ping_timer(htimer_t *timer); - -static nghttp2_nv make_nv(const char *name, const char *value) +static nghttp2_nv makeNV(const char *name, const char *value) { nghttp2_nv nv; - nv.name = (uint8_t *)name; - nv.value = (uint8_t *)value; - nv.namelen = strlen(name); + nv.name = (uint8_t *) name; + nv.value = (uint8_t *) value; + nv.namelen = strlen(name); nv.valuelen = strlen(value); - nv.flags = NGHTTP2_NV_FLAG_NONE; + nv.flags = NGHTTP2_NV_FLAG_NONE; return nv; } -static nghttp2_nv make_nv2(const char *name, const char *value, - int namelen, int valuelen) +static nghttp2_nv makeNV2(const char *name, const char *value, int namelen, int valuelen) { nghttp2_nv nv; - nv.name = (uint8_t *)name; - nv.value = (uint8_t *)value; - nv.namelen = namelen; + nv.name = (uint8_t *) name; + nv.value = (uint8_t *) value; + nv.namelen = namelen; nv.valuelen = valuelen; - nv.flags = NGHTTP2_NV_FLAG_NONE; + nv.flags = NGHTTP2_NV_FLAG_NONE; return nv; } -static void print_frame_hd(const nghttp2_frame_hd *hd) +static void printFrameHd(const nghttp2_frame_hd *hd) { - printd("[frame] length=%d type=%x flags=%x stream_id=%d\n", - (int)hd->length, (int)hd->type, (int)hd->flags, hd->stream_id); + LOGD("[frame] length=%d type=%x flags=%x stream_id=%d\n", (int) hd->length, (int) hd->type, (int) hd->flags, + hd->stream_id); } -static void add_stream(http2_client_con_state_t *con, - http2_client_child_con_state_t *stream) +static void addStraem(http2_client_con_state_t *con, http2_client_child_con_state_t *stream) { - stream->next = con->root.next; + stream->next = con->root.next; con->root.next = stream; - stream->prev = &con->root; + stream->prev = &con->root; if (stream->next) { stream->next->prev = stream; } } -static void remove_stream(http2_client_con_state_t *con, - http2_client_child_con_state_t *stream) +static void removeStream(http2_client_con_state_t *con, http2_client_child_con_state_t *stream) { - + (void) con; stream->prev->next = stream->next; if (stream->next) { @@ -63,63 +55,62 @@ static void remove_stream(http2_client_con_state_t *con, } } -static http2_client_child_con_state_t * -create_http2_stream(http2_client_con_state_t *con, line_t *child_line, hio_t *io) +static http2_client_child_con_state_t *createHttp2Stream(http2_client_con_state_t *con, line_t *child_line, hio_t *io) { - char authority_addr[320]; + char authority_addr[320]; nghttp2_nv nvs[15]; - int nvlen = 0; + int nvlen = 0; - nvs[nvlen++] = make_nv(":method", http_method_str(con->method)); - nvs[nvlen++] = make_nv(":path", con->path); - nvs[nvlen++] = make_nv(":scheme", con->scheme); + nvs[nvlen++] = makeNV(":method", httpMethodStr(con->method)); + nvs[nvlen++] = makeNV(":path", con->path); + nvs[nvlen++] = makeNV(":scheme", con->scheme); - if (con->host_port == 0 || - con->host_port == DEFAULT_kHTTP_PORT || - con->host_port == DEFAULT_HTTPS_PORT) + if (con->host_port == 0 || con->host_port == DEFAULT_HTTP_PORT || con->host_port == DEFAULT_HTTPS_PORT) { - nvs[nvlen++] = (make_nv(":authority", con->host)); + nvs[nvlen++] = (makeNV(":authority", con->host)); } else { snprintf(authority_addr, sizeof(authority_addr), "%s:%d", con->host, con->host_port); - nvs[nvlen++] = (make_nv(":authority", authority_addr)); + nvs[nvlen++] = (makeNV(":authority", authority_addr)); } // HTTP2_FLAG_END_STREAM; int flags = NGHTTP2_FLAG_END_HEADERS; - if (con->content_type == APPLICATION_GRPC) + if (con->content_type == kApplicationGrpc) { // flags = HTTP2_FLAG_NONE; - nvs[nvlen++] = (make_nv("content-type", "application/grpc+proto")); + nvs[nvlen++] = (makeNV("content-type", "application/grpc+proto")); } - // nvs[nvlen++] = make_nv("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"); - // nvs[nvlen++] = make_nv("Accept-Language", "en,fa;q=0.9,zh-CN;q=0.8,zh;q=0.7"); - // nvs[nvlen++] = make_nv("Cache-Control", "no-cache"); - // nvs[nvlen++] = make_nv("Pragma", "no-cache"); - // nvs[nvlen++] = make_nv("Sec-Ch-Ua", "Chromium\";v=\"122\", Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\""); - nvs[nvlen++] = make_nv("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"); - // nvs[nvlen++] = make_nv("Sec-Ch-Ua-Platform", "\"Windows\""); - - con->state = H2_SEND_HEADERS; + // nvs[nvlen++] = makeNV("Accept", + // "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"); + // nvs[nvlen++] = makeNV("Accept-Language", "en,fa;q=0.9,zh-CN;q=0.8,zh;q=0.7"); + // nvs[nvlen++] = makeNV("Cache-Control", "no-cache"); + // nvs[nvlen++] = makeNV("Pragma", "no-cache"); + // nvs[nvlen++] = makeNV("Sec-Ch-Ua", "Chromium\";v=\"122\", Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\""); + nvs[nvlen++] = makeNV("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like " + "Gecko) Chrome/122.0.0.0 Safari/537.36"); + // nvs[nvlen++] = makeNV("Sec-Ch-Ua-Platform", "\"Windows\""); + + con->state = kH2SendHeaders; http2_client_child_con_state_t *stream = malloc(sizeof(http2_client_child_con_state_t)); memset(stream, 0, sizeof(http2_client_child_con_state_t)); // stream->stream_id = nghttp2_submit_request2(con->session, NULL, &nvs[0], nvlen, NULL,stream); stream->stream_id = nghttp2_submit_headers(con->session, flags, -1, NULL, &nvs[0], nvlen, stream); - stream->chunkbs = newBufferStream(buffer_pools[con->line->tid]); - stream->parent = con->line; - stream->line = child_line; - stream->io = io; - stream->tunnel = con->tunnel->dw; + stream->chunkbs = newBufferStream(getLineBufferPool(con->line)); + stream->parent = con->line; + stream->line = child_line; + stream->io = io; + stream->tunnel = con->tunnel->dw; stream->line->chains_state[stream->tunnel->chain_index + 1] = stream; - add_stream(con, stream); + addStraem(con, stream); // nghttp2_session_set_stream_user_data(con->session, stream->stream_id, stream); return stream; } -static void delete_http2_stream(http2_client_child_con_state_t *stream) +static void deleteHttp2Stream(http2_client_child_con_state_t *stream) { destroyBufferStream(stream->chunkbs); @@ -127,58 +118,60 @@ static void delete_http2_stream(http2_client_child_con_state_t *stream) free(stream); } -static http2_client_con_state_t *create_http2_connection(tunnel_t *self, int tid, hio_t *io) +static http2_client_con_state_t *createHttp2Connection(tunnel_t *self, int tid, hio_t *io) { - http2_client_state_t *state = STATE(self); - http2_client_con_state_t *con = malloc(sizeof(http2_client_con_state_t)); + http2_client_state_t * state = STATE(self); + http2_client_con_state_t *con = malloc(sizeof(http2_client_con_state_t)); memset(con, 0, sizeof(http2_client_con_state_t)); - con->queue = newContextQueue(buffer_pools[tid]); - con->content_type = state->content_type; - con->path = state->path; - con->host = state->host; - con->host_port = state->host_port; - con->scheme = state->scheme; - con->method = kHTTP_GET; - con->line = newLine(tid); - con->ping_timer = htimer_add(con->line->loop, on_ping_timer, PING_INTERVAL, INFINITE); - con->tunnel = self; - con->io = io; + con->queue = newContextQueue(buffer_pools[tid]); + con->content_type = state->content_type; + con->path = state->path; + con->host = state->host; + con->host_port = state->host_port; + con->scheme = state->scheme; + con->method = kHttpGet; + con->line = newLine(tid); + con->ping_timer = htimer_add(con->line->loop, onPingTimer, PING_INTERVAL, INFINITE); + con->tunnel = self; + con->io = io; con->line->chains_state[self->chain_index] = con; hevent_set_userdata(con->ping_timer, con); nghttp2_session_client_new2(&con->session, state->cbs, con, state->ngoptions); - nghttp2_settings_entry settings[] = { - {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, MAX_CONCURRENT_STREAMS}}; + nghttp2_settings_entry settings[] = {{NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, MAX_CONCURRENT_STREAMS}}; nghttp2_submit_settings(con->session, NGHTTP2_FLAG_NONE, settings, ARRAY_SIZE(settings)); - con->state = H2_SEND_MAGIC; + con->state = kH2SendMagic; - if (state->content_type == APPLICATION_GRPC) + if (state->content_type == kApplicationGrpc) { - con->method = kHTTP_POST; + con->method = kHttpPost; } return con; } -static void delete_http2_connection(http2_client_con_state_t *con) +static void deleteHttp2Connection(http2_client_con_state_t *con) { - tunnel_t *self = con->tunnel; + tunnel_t * self = con->tunnel; + http2_client_state_t *state = STATE(self); - vec_cons *vector = &(STATE(self)->thread_cpool[con->line->tid].cons); - vec_cons_iter it = vec_cons_find(vector, con); + vec_cons * vector = &(state->thread_cpool[con->line->tid].cons); + vec_cons_iter it = vec_cons_find(vector, con); if (it.ref != vec_cons_end(vector).ref) + { vec_cons_erase_at(vector, it); + } http2_client_child_con_state_t *stream_i; for (stream_i = con->root.next; stream_i;) { - http2_client_child_con_state_t *next = stream_i->next; - context_t *fin_ctx = newFinContext(stream_i->line); - tunnel_t *dest = stream_i->tunnel; - delete_http2_stream(stream_i); + http2_client_child_con_state_t *next = stream_i->next; + context_t * fin_ctx = newFinContext(stream_i->line); + tunnel_t * dest = stream_i->tunnel; + deleteHttp2Stream(stream_i); CSTATE_MUT(fin_ctx) = NULL; dest->downStream(dest, fin_ctx); stream_i = next; @@ -191,11 +184,11 @@ static void delete_http2_connection(http2_client_con_state_t *con) free(con); } -static http2_client_con_state_t *take_http2_connection(tunnel_t *self, int tid, hio_t *io) +static http2_client_con_state_t *takeHttp2Connection(tunnel_t *self, int tid, hio_t *io) { http2_client_state_t *state = STATE(self); - // return create_http2_connection(self, tid, io); + // return createHttp2Connection(self, tid, io); vec_cons *vector = &(state->thread_cpool[tid].cons); if (vec_cons_size(vector) > 0) @@ -214,54 +207,54 @@ static http2_client_con_state_t *take_http2_connection(tunnel_t *self, int tid, if (con) { if (con->childs_added >= state->concurrency) + { vec_cons_pop(vector); + } return con; } - con = create_http2_connection(self, tid, io); - vec_cons_push(vector, con); - return con; - } - else - { - http2_client_con_state_t *con = create_http2_connection(self, tid, io); + con = createHttp2Connection(self, tid, io); vec_cons_push(vector, con); return con; } + + http2_client_con_state_t *con = createHttp2Connection(self, tid, io); + vec_cons_push(vector, con); + return con; } -static void on_ping_timer(htimer_t *timer) +static void onPingTimer(htimer_t *timer) { http2_client_con_state_t *con = hevent_userdata(timer); if (con->no_ping_ack) { LOGW("Http2Client: closing a session due to no ping reply"); - context_t *con_fc = newFinContext(con->line); - tunnel_t *con_dest = con->tunnel->up; - delete_http2_connection(con); + context_t *con_fc = newFinContext(con->line); + tunnel_t * con_dest = con->tunnel->up; + deleteHttp2Connection(con); con_dest->upStream(con_dest, con_fc); } else { con->no_ping_ack = true; - nghttp2_submit_ping(con->session,0,NULL); - char *data = NULL; + nghttp2_submit_ping(con->session, 0, NULL); + char * data = NULL; size_t len; - len = nghttp2_session_mem_send(con->session, (const uint8_t **)&data); + len = nghttp2_session_mem_send(con->session, (const uint8_t **) &data); if (len > 0) { - shift_buffer_t *send_buf = popBuffer(buffer_pools[con->line->tid]); + shift_buffer_t *send_buf = popBuffer(getLineBufferPool(con->line)); setLen(send_buf, len); writeRaw(send_buf, data, len); context_t *req = newContext(con->line); - req->payload = send_buf; - req->src_io = NULL; - if (!con->first_sent) + req->payload = send_buf; + req->src_io = NULL; + if (! con->first_sent) { con->first_sent = true; - req->first = true; + req->first = true; } - con->tunnel->up->upStream(con->tunnel->up, req); + con->tunnel->up->upStream(con->tunnel->up, req); } } } diff --git a/tunnels/client/http2/http2_client.c b/tunnels/client/http2/http2_client.c index fea5d553..f2162b95 100644 --- a/tunnels/client/http2/http2_client.c +++ b/tunnels/client/http2/http2_client.c @@ -1,48 +1,51 @@ #include "http2_client.h" -#include "types.h" #include "helpers.h" +#include "types.h" #define DEFAULT_CONCURRENCY 50 // 50 cons will be muxed into 1 static void sendGrpcFinalData(tunnel_t *self, line_t *line, size_t stream_id) { - http2_frame_hd framehd; + http2_frame_hd framehd; shift_buffer_t *buf = popBuffer(buffer_pools[line->tid]); setLen(buf, HTTP2_FRAME_HDLEN); - framehd.length = 0; - framehd.type = HTTP2_DATA; - framehd.flags = HTTP2_FLAG_END_STREAM; + framehd.length = 0; + framehd.type = kHttP2Data; + framehd.flags = kHttP2FlagEndStream; framehd.stream_id = stream_id; - http2_frame_hd_pack(&framehd, rawBufMut(buf)); + http2FrameHdPack(&framehd, rawBufMut(buf)); context_t *endstream_ctx = newContext(line); - endstream_ctx->payload = buf; + endstream_ctx->payload = buf; self->up->upStream(self->up, endstream_ctx); } -static bool trySendRequest(tunnel_t *self, http2_client_con_state_t *con, size_t stream_id, hio_t *stream_io, shift_buffer_t *buf) +static bool trySendRequest(tunnel_t *self, http2_client_con_state_t *con, size_t stream_id, hio_t *stream_io, + shift_buffer_t *buf) { line_t *line = con->line; if (con == NULL) + { return false; + } - char *data = NULL; + char * data = NULL; size_t len; - len = nghttp2_session_mem_send(con->session, (const uint8_t **)&data); + len = nghttp2_session_mem_send(con->session, (const uint8_t **) &data); // LOGD("nghttp2_session_mem_send %d\n", len); if (len > 0) { shift_buffer_t *send_buf = popBuffer(buffer_pools[line->tid]); - shiftl(send_buf, lCap(send_buf) / 1.25); // use some unused space + shiftl(send_buf, lCap(send_buf) / 2); // use some unused space setLen(send_buf, len); writeRaw(send_buf, data, len); context_t *req = newContext(line); - req->payload = send_buf; - req->src_io = stream_io; - if (!con->first_sent) + req->payload = send_buf; + req->src_io = stream_io; + if (! con->first_sent) { con->first_sent = true; - req->first = true; + req->first = true; } self->up->upStream(self->up, req); @@ -51,72 +54,73 @@ static bool trySendRequest(tunnel_t *self, http2_client_con_state_t *con, size_t assert(len >= 0); if (buf == NULL || bufLen(buf) <= 0) + { return false; - + } // HTTP2_DATA - if (con->state == H2_SEND_HEADERS) + if (con->state == kH2SendHeaders) { // http2_flag flags = HTTP2_FLAG_END_STREAM; - http2_flag flags = HTTP2_FLAG_NONE; + http2_flag flags = kHttP2FlagNone; // HTTP2 DATA framehd - con->state = H2_SEND_DATA; + con->state = kH2SendData; // LOGD("HTTP2 SEND_DATA_FRAME_HD...\n"); - if (con->content_type == APPLICATION_GRPC) + if (con->content_type == kApplicationGrpc) { grpc_message_hd msghd; - msghd.flags = 0; + msghd.flags = 0; msghd.length = bufLen(buf); // LOGD("grpc_message_hd: flags=%d length=%d\n", msghd.flags, msghd.length); // grpc server send grpc-status in HTTP2 header frame - flags = HTTP2_FLAG_NONE; + flags = kHttP2FlagNone; shiftl(buf, GRPC_MESSAGE_HDLEN); - grpc_message_hd_pack(&msghd, rawBufMut(buf)); + grpcMessageHdUnpack(&msghd, rawBufMut(buf)); } http2_frame_hd framehd; - framehd.length = bufLen(buf); - framehd.type = HTTP2_DATA; - framehd.flags = flags; + framehd.length = bufLen(buf); + framehd.type = kHttP2Data; + framehd.flags = flags; framehd.stream_id = stream_id; shiftl(buf, HTTP2_FRAME_HDLEN); - http2_frame_hd_pack(&framehd, rawBufMut(buf)); + http2FrameHdPack(&framehd, rawBufMut(buf)); context_t *req = newContext(line); - req->payload = buf; - req->src_io = stream_io; + req->payload = buf; + req->src_io = stream_io; self->up->upStream(self->up, req); goto send_done; } - else if (con->state == H2_SEND_DATA) + else if (con->state == kH2SendData) { - send_done: - con->state = H2_SEND_DONE; + send_done:; + con->state = kH2SendDone; } // LOGD("GetSendData %d\n", len); return false; } -static void flush_write_queue(http2_client_con_state_t *con) +static void flushWriteQueue(http2_client_con_state_t *con) { - tunnel_t *self = con->tunnel; - context_t *g = newContext(con->line); // keep the line alive + tunnel_t * self = con->tunnel; + context_t *g = newContext(con->line); // keep the line alive while (contextQueueLen(con->queue) > 0) { - context_t *stream_context = contextQueuePop(con->queue); - http2_client_child_con_state_t *stream = CSTATE(stream_context); - stream->io = stream_context->src_io; - con->state = H2_SEND_HEADERS; + context_t * stream_context = contextQueuePop(con->queue); + http2_client_child_con_state_t *stream = CSTATE(stream_context); + stream->io = stream_context->src_io; + con->state = kH2SendHeaders; // consumes payload while (trySendRequest(self, con, stream->stream_id, stream->io, stream_context->payload)) { - if (!ISALIVE(g)) + if (! isAlive(g->line)) { destroyContext(g); return; @@ -126,69 +130,76 @@ static void flush_write_queue(http2_client_con_state_t *con) destroyContext(g); } -static int on_header_callback(nghttp2_session *session, - const nghttp2_frame *frame, - const uint8_t *_name, size_t namelen, - const uint8_t *_value, size_t valuelen, - uint8_t flags, void *userdata) +static int onHeaderCallback(nghttp2_session *session, const nghttp2_frame *frame, const uint8_t *_name, size_t namelen, + const uint8_t *_value, size_t valuelen, uint8_t flags, void *userdata) { + (void) session; + (void) namelen; + (void) valuelen; + (void) flags; if (userdata == NULL) + { return 0; + } - // LOGD("on_header_callback\n"); - print_frame_hd(&frame->hd); - const char *name = (const char *)_name; - const char *value = (const char *)_value; + // LOGD("onHeaderCallback\n"); + printFrameHd(&frame->hd); + const char *name = (const char *) _name; + const char *value = (const char *) _value; // LOGD("%s: %s\n", name, value); - http2_client_con_state_t *con = (http2_client_con_state_t *)userdata; - tunnel_t *self = con->tunnel; - - if (*name == ':') - { - if (strcmp(name, ":method") == 0) - { - // req->method = http_method_enum(value); - } - else if (strcmp(name, ":path") == 0) - { - // req->url = value; - } - else if (strcmp(name, ":scheme") == 0) - { - // req->headers["Scheme"] = value; - } - else if (strcmp(name, ":authority") == 0) - { - // req->headers["Host"] = value; - } - } + http2_client_con_state_t *con = (http2_client_con_state_t *) userdata; + tunnel_t * self = con->tunnel; + + // Todo (http headers) should be saved somewhere + // if (*name == ':') + // { + // if (strcmp(name, ":method") == 0) + // { + // // req->method = http_method_enum(value); + // } + // else if (strcmp(name, ":path") == 0) + // { + // // req->url = value; + // } + // else if (strcmp(name, ":scheme") == 0) + // { + // // req->headers["Scheme"] = value; + // } + // else if (strcmp(name, ":authority") == 0) + // { + // // req->headers["Host"] = value; + // } + // } return 0; } -static int on_data_chunk_recv_callback(nghttp2_session *session, - uint8_t flags, int32_t stream_id, const uint8_t *data, - size_t len, void *userdata) +static int onDataChunkRecvCallback(nghttp2_session *session, uint8_t flags, int32_t stream_id, const uint8_t *data, + size_t len, void *userdata) { + (void) flags; if (userdata == NULL || len <= 0) + { return 0; - http2_client_con_state_t *con = (http2_client_con_state_t *)userdata; - tunnel_t *self = con->tunnel; + } + http2_client_con_state_t *con = (http2_client_con_state_t *) userdata; + tunnel_t * self = con->tunnel; - http2_client_child_con_state_t *stream = - nghttp2_session_get_stream_user_data(session, stream_id); - if (!stream) + http2_client_child_con_state_t *stream = nghttp2_session_get_stream_user_data(session, stream_id); + if (! stream) + { return 0; - // LOGD("on_data_chunk_recv_callback\n"); + } + // LOGD("onDataChunkRecvCallback\n"); // LOGD("stream_id=%d length=%d\n", stream_id, (int)len); // LOGD("down: %d\n", (int)len); - if (con->content_type == APPLICATION_GRPC) + if (con->content_type == kApplicationGrpc) { - shift_buffer_t *buf = popBuffer(buffer_pools[con->line->tid]); - shiftl(buf, lCap(buf) / 1.25); // use some unused space + shift_buffer_t *buf = popBuffer(getLineBufferPool(con->line)); + shiftl(buf, lCap(buf) / 2); // use some unused space setLen(buf, len); writeRaw(buf, data, len); bufferStreamPush(stream->chunkbs, buf); @@ -199,66 +210,69 @@ static int on_data_chunk_recv_callback(nghttp2_session *session, { shift_buffer_t *gheader_buf = bufferStreamRead(stream->chunkbs, GRPC_MESSAGE_HDLEN); grpc_message_hd msghd; - grpc_message_hd_unpack(&msghd, rawBuf(gheader_buf)); + grpcMessageHdUnpack(&msghd, rawBuf(gheader_buf)); stream->bytes_needed = msghd.length; - reuseBuffer(buffer_pools[con->line->tid], gheader_buf); + reuseBuffer(getLineBufferPool(con->line), gheader_buf); } if (stream->bytes_needed > 0 && bufferStreamLen(stream->chunkbs) >= stream->bytes_needed) { shift_buffer_t *gdata_buf = bufferStreamRead(stream->chunkbs, stream->bytes_needed); - stream->bytes_needed = 0; - context_t *stream_data = newContext(stream->line); - stream_data->payload = gdata_buf; - stream_data->src_io = con->io; + stream->bytes_needed = 0; + context_t *stream_data = newContext(stream->line); + stream_data->payload = gdata_buf; + stream_data->src_io = con->io; stream->tunnel->downStream(stream->tunnel, stream_data); if (nghttp2_session_get_stream_user_data(session, stream_id)) + { continue; + } } break; } } else { - shift_buffer_t *buf = popBuffer(buffer_pools[con->line->tid]); - shiftl(buf, lCap(buf) / 1.25); // use some unused space + shift_buffer_t *buf = popBuffer(getLineBufferPool(con->line)); + shiftl(buf, lCap(buf) / 2); // use some unused space setLen(buf, len); writeRaw(buf, data, len); context_t *stream_data = newContext(stream->line); - stream_data->payload = buf; - stream_data->src_io = con->io; + stream_data->payload = buf; + stream_data->src_io = con->io; stream->tunnel->downStream(stream->tunnel, stream_data); } return 0; } -static int on_frame_recv_callback(nghttp2_session *session, - const nghttp2_frame *frame, void *userdata) +static int onFrameRecvCallback(nghttp2_session *session, const nghttp2_frame *frame, void *userdata) { if (userdata == NULL) + { return 0; + } - // LOGD("on_frame_recv_callback\n"); - print_frame_hd(&frame->hd); - http2_client_con_state_t *con = (http2_client_con_state_t *)userdata; - tunnel_t *self = con->tunnel; + // LOGD("onFrameRecvCallback\n"); + printFrameHd(&frame->hd); + http2_client_con_state_t *con = (http2_client_con_state_t *) userdata; + tunnel_t * self = con->tunnel; switch (frame->hd.type) { case NGHTTP2_DATA: - con->state = H2_RECV_DATA; + con->state = kH2RecvData; break; case NGHTTP2_HEADERS: - con->state = H2_RECV_HEADERS; + con->state = kH2RecvHeaders; break; case NGHTTP2_SETTINGS: - con->state = H2_RECV_SETTINGS; + con->state = kH2RecvSettings; break; case NGHTTP2_PING: // LOGW("Http2Client: GOT PING"); con->no_ping_ack = false; - con->state = H2_RECV_PING; + con->state = kH2RecvPing; break; case NGHTTP2_RST_STREAM: case NGHTTP2_WINDOW_UPDATE: @@ -267,17 +281,18 @@ static int on_frame_recv_callback(nghttp2_session *session, default: break; } - if ((frame->hd.flags & HTTP2_FLAG_END_STREAM) == HTTP2_FLAG_END_STREAM) + if (frame->hd.flags & kHttP2FlagEndStream) { - http2_client_child_con_state_t *stream = - nghttp2_session_get_stream_user_data(session, frame->hd.stream_id); - if (!stream) + http2_client_child_con_state_t *stream = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id); + if (! stream) + { return 0; + } nghttp2_session_set_stream_user_data(con->session, stream->stream_id, NULL); - context_t *fc = newFinContext(stream->line); - tunnel_t *dest = stream->tunnel; - remove_stream(con, stream); - delete_http2_stream(stream); + context_t *fc = newFinContext(stream->line); + tunnel_t * dest = stream->tunnel; + removeStream(con, stream); + deleteHttp2Stream(stream); CSTATE_MUT(fc) = NULL; dest->downStream(dest, fc); @@ -289,9 +304,10 @@ static int on_frame_recv_callback(nghttp2_session *session, { if (frame->headers.cat == NGHTTP2_HCAT_RESPONSE) { - http2_client_child_con_state_t *stream = nghttp2_session_get_stream_user_data(con->session, frame->hd.stream_id); + http2_client_child_con_state_t *stream = + nghttp2_session_get_stream_user_data(con->session, frame->hd.stream_id); con->handshake_completed = true; - flush_write_queue(con); + flushWriteQueue(con); stream->tunnel->downStream(stream->tunnel, newEstContext(stream->line)); } } @@ -306,23 +322,25 @@ static inline void upStream(tunnel_t *self, context_t *c) if (c->payload != NULL) { http2_client_child_con_state_t *stream = CSTATE(c); - http2_client_con_state_t *con = stream->parent->chains_state[self->chain_index]; - stream->io = c->src_io; + http2_client_con_state_t * con = stream->parent->chains_state[self->chain_index]; + stream->io = c->src_io; - if (!con->handshake_completed) + if (! con->handshake_completed) { contextQueuePush(con->queue, c); return; } - con->state = H2_SEND_HEADERS; + con->state = kH2SendHeaders; // consumes payload while (trySendRequest(self, con, stream->stream_id, stream->io, c->payload)) - if (!isAlive(c->line)) + { + if (! isAlive(c->line)) { destroyContext(c); return; } + } c->payload = NULL; destroyContext(c); } @@ -330,16 +348,16 @@ static inline void upStream(tunnel_t *self, context_t *c) { if (c->init) { - http2_client_con_state_t *con = take_http2_connection(self, c->line->tid, NULL); - http2_client_child_con_state_t *stream = create_http2_stream(con, c->line, c->src_io); - CSTATE_MUT(c) = stream; + http2_client_con_state_t * con = takeHttp2Connection(self, c->line->tid, NULL); + http2_client_child_con_state_t *stream = createHttp2Stream(con, c->line, c->src_io); + CSTATE_MUT(c) = stream; nghttp2_session_set_stream_user_data(con->session, stream->stream_id, stream); - if (!con->init_sent) + if (! con->init_sent) { con->init_sent = true; self->up->upStream(self->up, newInitContext(con->line)); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { destroyContext(c); return; @@ -347,33 +365,33 @@ static inline void upStream(tunnel_t *self, context_t *c) } while (trySendRequest(self, con, 0, NULL, NULL)) - if (!isAlive(c->line)) + { if (! isAlive(c->line)) { destroyContext(c); return; } - +} destroyContext(c); } else if (c->fin) { http2_client_child_con_state_t *stream = CSTATE(c); - http2_client_con_state_t *con = stream->parent->chains_state[self->chain_index]; - if (con->content_type == APPLICATION_GRPC) + http2_client_con_state_t * con = stream->parent->chains_state[self->chain_index]; + if (con->content_type == kApplicationGrpc) { sendGrpcFinalData(self, con->line, stream->stream_id); } nghttp2_session_set_stream_user_data(con->session, stream->stream_id, NULL); - remove_stream(con, stream); + removeStream(con, stream); if (con->root.next == NULL && con->childs_added >= state->concurrency && isAlive(c->line)) { - context_t *con_fc = newFinContext(con->line); - tunnel_t *con_dest = con->tunnel->up; - delete_http2_connection(con); + context_t *con_fc = newFinContext(con->line); + tunnel_t * con_dest = con->tunnel->up; + deleteHttp2Connection(con); con_dest->upStream(con_dest, con_fc); } - delete_http2_stream(stream); + deleteHttp2Stream(stream); CSTATE_MUT(c) = NULL; destroyContext(c); @@ -384,20 +402,20 @@ static inline void upStream(tunnel_t *self, context_t *c) static inline void downStream(tunnel_t *self, context_t *c) { - http2_client_state_t *state = STATE(self); - http2_client_con_state_t *con = CSTATE(c); - con->io = c->src_io; + http2_client_state_t * state = STATE(self); + http2_client_con_state_t *con = CSTATE(c); + con->io = c->src_io; if (c->payload != NULL) { - con->state = H2_WANT_RECV; + con->state = kH2WantRecv; size_t len = bufLen(c->payload); - size_t ret = nghttp2_session_mem_recv2(con->session, (const uint8_t *)rawBuf(c->payload), len); + size_t ret = nghttp2_session_mem_recv2(con->session, (const uint8_t *) rawBuf(c->payload), len); assert(ret == len); reuseContextBuffer(c); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { destroyContext(c); return; @@ -405,24 +423,26 @@ static inline void downStream(tunnel_t *self, context_t *c) if (ret != len) { - delete_http2_connection(con); + deleteHttp2Connection(con); self->dw->downStream(self->dw, newFinContext(c->line)); destroyContext(c); return; } while (trySendRequest(self, con, 0, NULL, NULL)) - if (!isAlive(c->line)) + { + if (! isAlive(c->line)) { destroyContext(c); return; } + } if (con->root.next == NULL && con->childs_added >= state->concurrency && isAlive(c->line)) { - context_t *con_fc = newFinContext(con->line); - tunnel_t *con_dest = con->tunnel->up; - delete_http2_connection(con); + context_t *con_fc = newFinContext(con->line); + tunnel_t * con_dest = con->tunnel->up; + deleteHttp2Connection(con); con_dest->upStream(con_dest, con_fc); } @@ -433,37 +453,38 @@ static inline void downStream(tunnel_t *self, context_t *c) if (c->fin) { - delete_http2_connection(con); + deleteHttp2Connection(con); } destroyContext(c); } } - + tunnel_t *newHttp2Client(node_instance_context_t *instance_info) { - http2_client_state_t *state = malloc(sizeof(http2_client_state_t) + (workers_count * sizeof(thread_connection_pool_t))); + http2_client_state_t *state = + malloc(sizeof(http2_client_state_t) + (workers_count * sizeof(thread_connection_pool_t))); memset(state, 0, sizeof(http2_client_state_t)); cJSON *settings = instance_info->node_settings_json; nghttp2_session_callbacks_new(&(state->cbs)); - nghttp2_session_callbacks_set_on_header_callback(state->cbs, on_header_callback); - nghttp2_session_callbacks_set_on_data_chunk_recv_callback(state->cbs, on_data_chunk_recv_callback); - nghttp2_session_callbacks_set_on_frame_recv_callback(state->cbs, on_frame_recv_callback); + nghttp2_session_callbacks_set_on_header_callback(state->cbs, onHeaderCallback); + nghttp2_session_callbacks_set_on_data_chunk_recv_callback(state->cbs, onDataChunkRecvCallback); + nghttp2_session_callbacks_set_on_frame_recv_callback(state->cbs, onFrameRecvCallback); for (size_t i = 0; i < workers_count; i++) { state->thread_cpool[i] = (thread_connection_pool_t){.round_index = 0, .cons = vec_cons_with_capacity(8)}; } - if (!getStringFromJsonObject(&(state->host), settings, "host")) + if (! getStringFromJsonObject(&(state->host), settings, "host")) { LOGF("JSON Error: Http2Client->settings->host (string field) : The data was empty or invalid"); return NULL; } getStringFromJsonObjectOrDefault(&(state->path), settings, "path", "/"); - if (!getIntFromJsonObject(&(state->host_port), settings, "port")) + if (! getIntFromJsonObject(&(state->host_port), settings, "port")) { LOGF("JSON Error: Http2Client->settings->port (number field) : The data was empty or invalid"); return NULL; @@ -474,33 +495,36 @@ tunnel_t *newHttp2Client(node_instance_context_t *instance_info) char *content_type_buf = NULL; if (getStringFromJsonObject(&content_type_buf, settings, "content-type")) { - state->content_type = http_content_type_enum(content_type_buf); + state->content_type = httpContentTypeEnum(content_type_buf); free(content_type_buf); } getIntFromJsonObjectOrDefault(&(state->concurrency), settings, "concurrency", DEFAULT_CONCURRENCY); nghttp2_option_new(&(state->ngoptions)); - nghttp2_option_set_peer_max_concurrent_streams(state->ngoptions, 0xffffffffu); + nghttp2_option_set_peer_max_concurrent_streams(state->ngoptions, 0xffffffffU); nghttp2_option_set_no_closed_streams(state->ngoptions, 1); nghttp2_option_set_no_http_messaging(state->ngoptions, 1); // nghttp2_option_set_no_http_messaging use this with grpc? - tunnel_t *t = newTunnel(); - t->state = state; - t->upStream = &upStream; - t->downStream = &downStream; + tunnel_t *t = newTunnel(); + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; atomic_thread_fence(memory_order_release); return t; } -api_result_t apiHttp2Client(tunnel_t *self, char *msg) +api_result_t apiHttp2Client(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; + (void) (self); + (void) (msg); + return (api_result_t){0}; } tunnel_t *destroyHttp2Client(tunnel_t *self) { + (void) (self); return NULL; } diff --git a/tunnels/client/http2/http2_client.h b/tunnels/client/http2/http2_client.h index 76f0a1d0..45b236e6 100644 --- a/tunnels/client/http2/http2_client.h +++ b/tunnels/client/http2/http2_client.h @@ -1,15 +1,11 @@ #pragma once #include "api.h" -// +// // con <------> http2-client <------> http2 stream (con) -// // -tunnel_t *newHttp2Client(node_instance_context_t *instance_info); -api_result_t apiHttp2Client(tunnel_t *self, char *msg); -tunnel_t *destroyHttp2Client(tunnel_t *self); +tunnel_t * newHttp2Client(node_instance_context_t *instance_info); +api_result_t apiHttp2Client(tunnel_t *self,const char *msg); +tunnel_t * destroyHttp2Client(tunnel_t *self); tunnel_metadata_t getMetadataHttp2Client(); - - - diff --git a/tunnels/client/http2/types.h b/tunnels/client/http2/types.h index 2a2457a3..b0212182 100644 --- a/tunnels/client/http2/types.h +++ b/tunnels/client/http2/types.h @@ -1,11 +1,11 @@ #pragma once #include "api.h" -#include "nghttp2/nghttp2.h" #include "buffer_stream.h" -#include "http_def.h" -#include "http2_def.h" #include "grpc_def.h" +#include "http2_def.h" +#include "http_def.h" #include "loggers/network_logger.h" +#include "nghttp2/nghttp2.h" typedef enum { @@ -16,10 +16,8 @@ typedef enum kH2SendDataFrameHd, kH2SendData, kH2SendDone, - kH2WantSend, kH2WantRecv, - kH2RecvSettings, kH2RecvPing, kH2RecvHeaders, @@ -29,68 +27,65 @@ typedef enum typedef struct http2_client_child_con_state_s { struct http2_client_child_con_state_s *prev, *next; - int32_t stream_id; - nghttp2_stream *ng_stream; - - buffer_stream_t *chunkbs; //used for grpc - size_t bytes_needed; - - tunnel_t *tunnel; - line_t *parent; - line_t *line; - hio_t *io; + int32_t stream_id; + nghttp2_stream * ng_stream; + buffer_stream_t * chunkbs; // used for grpc + size_t bytes_needed; + tunnel_t * tunnel; + line_t * parent; + line_t * line; + hio_t * io; } http2_client_child_con_state_t; typedef struct http2_client_con_state_s { - nghttp2_session *session; - http2_session_state state; - context_queue_t *queue; - size_t childs_added; - int error; - int frame_type_when_stream_closed; - bool handshake_completed; - - enum http_method method; - enum http_content_type content_type; - const char *path; - const char *host; // authority - int host_port; - const char *scheme; - bool init_sent; - bool first_sent; - bool no_ping_ack; - htimer_t* ping_timer; - tunnel_t *tunnel; - line_t *line; - hio_t *io; + nghttp2_session * session; + http2_session_state state; + context_queue_t * queue; + size_t childs_added; + int error; + int frame_type_when_stream_closed; + bool handshake_completed; + enum http_method method; + enum http_content_type content_type; + const char * path; + const char * host; // authority + int host_port; + const char * scheme; + bool init_sent; + bool first_sent; + bool no_ping_ack; + htimer_t * ping_timer; + tunnel_t * tunnel; + line_t * line; + hio_t * io; http2_client_child_con_state_t root; } http2_client_con_state_t; -#define i_type vec_cons //NOLINT -#define i_key http2_client_con_state_t * //NOLINT -#define i_use_cmp //NOLINT +#define i_type vec_cons // NOLINT +#define i_key http2_client_con_state_t * // NOLINT +#define i_use_cmp // NOLINT #include "stc/vec.h" typedef struct thread_connection_pool_s { - size_t round_index; + size_t round_index; vec_cons cons; } thread_connection_pool_t; typedef struct http2_client_state_s { nghttp2_session_callbacks *cbs; - enum http_content_type content_type; - int concurrency; - char *path; - char *host; // authority - int host_port; - char *scheme; - int last_iid; - nghttp2_option *ngoptions; - thread_connection_pool_t thread_cpool[]; + enum http_content_type content_type; + int concurrency; + char * path; + char * host; // authority + int host_port; + char * scheme; + int last_iid; + nghttp2_option * ngoptions; + thread_connection_pool_t thread_cpool[]; } http2_client_state_t; diff --git a/tunnels/client/openssl/openssl_client.c b/tunnels/client/openssl/openssl_client.c index 9e4760aa..5ef60e4d 100644 --- a/tunnels/client/openssl/openssl_client.c +++ b/tunnels/client/openssl/openssl_client.c @@ -1,20 +1,15 @@ #include "openssl_client.h" #include "buffer_pool.h" #include "buffer_stream.h" -#include "managers/node_manager.h" #include "loggers/network_logger.h" -#include "utils/jsonutils.h" +#include "managers/node_manager.h" #include "openssl_globals.h" +#include "utils/jsonutils.h" #include #include #include #include -#define STATE(x) ((oss_client_state_t *)((x)->state)) -#define CSTATE(x) ((oss_client_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) - typedef struct oss_client_state_s { @@ -22,40 +17,39 @@ typedef struct oss_client_state_s // settings char *alpn; char *sni; - bool verify; + bool verify; } oss_client_state_t; typedef struct oss_client_con_state_s { - bool handshake_completed; - SSL *ssl; - BIO *rbio; - BIO *wbio; + bool handshake_completed; + SSL * ssl; + BIO * rbio; + BIO * wbio; context_queue_t *queue; } oss_client_con_state_t; enum sslstatus { - SSLSTATUS_OK, - SSLSTATUS_WANT_IO, - SSLSTATUS_FAIL + kSslstatusOk, + kSslstatusWantIo, + kSslstatusFail }; - -static enum sslstatus get_sslstatus(SSL *ssl, int n) +static enum sslstatus getSslStatus(SSL *ssl, int n) { switch (SSL_get_error(ssl, n)) { case SSL_ERROR_NONE: - return SSLSTATUS_OK; + return kSslstatusOk; case SSL_ERROR_WANT_WRITE: case SSL_ERROR_WANT_READ: - return SSLSTATUS_WANT_IO; + return kSslstatusWantIo; case SSL_ERROR_ZERO_RETURN: case SSL_ERROR_SYSCALL: default: - return SSLSTATUS_FAIL; + return kSslstatusFail; } } @@ -72,7 +66,7 @@ static void cleanup(tunnel_t *self, context_t *c) } } -static void flush_write_queue(tunnel_t *self, context_t *c) +static void flushWriteQueue(tunnel_t *self, context_t *c) { oss_client_con_state_t *cstate = CSTATE(c); @@ -80,8 +74,10 @@ static void flush_write_queue(tunnel_t *self, context_t *c) { self->upStream(self, contextQueuePop(cstate->queue)); - if (!isAlive(c->line)) + if (! isAlive(c->line)) + { return; + } } } @@ -93,19 +89,19 @@ static inline void upStream(tunnel_t *self, context_t *c) { oss_client_con_state_t *cstate = CSTATE(c); - if (!cstate->handshake_completed) + if (! cstate->handshake_completed) { contextQueuePush(cstate->queue, c); return; } enum sslstatus status; - size_t len = bufLen(c->payload); + size_t len = bufLen(c->payload); while (len > 0) { - int n = SSL_write(cstate->ssl, rawBuf(c->payload), len); - status = get_sslstatus(cstate->ssl, n); + int n = SSL_write(cstate->ssl, rawBuf(c->payload), len); + status = getSslStatus(cstate->ssl, n); if (n > 0) { @@ -115,44 +111,46 @@ static inline void upStream(tunnel_t *self, context_t *c) /* take the output of the SSL object and queue it for socket write */ do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *send_context = newContextFrom(c); - send_context->payload = buf; + send_context->payload = buf; self->up->upStream(self->up, send_context); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { reuseContextBuffer(c); destroyContext(c); return; } } - else if (!BIO_should_retry(cstate->wbio)) + else if (! BIO_should_retry(cstate->wbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); reuseContextBuffer(c); goto failed; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } - if (status == SSLSTATUS_FAIL) + if (status == kSslstatusFail) { reuseContextBuffer(c); goto failed; } if (n == 0) + { break; + } } assert(bufLen(c->payload) == 0); reuseContextBuffer(c); @@ -166,52 +164,53 @@ static inline void upStream(tunnel_t *self, context_t *c) CSTATE_MUT(c) = malloc(sizeof(oss_client_con_state_t)); memset(CSTATE(c), 0, sizeof(oss_client_con_state_t)); oss_client_con_state_t *cstate = CSTATE(c); - cstate->rbio = BIO_new(BIO_s_mem()); - cstate->wbio = BIO_new(BIO_s_mem()); - cstate->ssl = SSL_new(state->ssl_context); - cstate->queue = newContextQueue(buffer_pools[c->line->tid]); + cstate->rbio = BIO_new(BIO_s_mem()); + cstate->wbio = BIO_new(BIO_s_mem()); + cstate->ssl = SSL_new(state->ssl_context); + cstate->queue = newContextQueue(getContextBufferPool(c)); SSL_set_connect_state(cstate->ssl); /* sets ssl to work in client mode. */ SSL_set_bio(cstate->ssl, cstate->rbio, cstate->wbio); SSL_set_tlsext_host_name(cstate->ssl, state->sni); - context_t *clienthello_ctx = newContextFrom(c); + context_t *client_hello_ctx = newContextFrom(c); self->up->upStream(self->up, c); - if (!ISALIVE(clienthello_ctx)) + if (! isAlive(client_hello_ctx->line)) { - destroyContext(clienthello_ctx); + destroyContext(client_hello_ctx); return; } // printSSLState(cstate->ssl); int n = SSL_connect(cstate->ssl); // printSSLState(cstate->ssl); - enum sslstatus status = get_sslstatus(cstate->ssl, n); + enum sslstatus status = getSslStatus(cstate->ssl, n); /* Did SSL request to write bytes? */ - if (status == SSLSTATUS_WANT_IO) + if (status == kSslstatusWantIo) { - shift_buffer_t *buf = popBuffer(buffer_pools[clienthello_ctx->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(client_hello_ctx)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); - clienthello_ctx->payload = buf; - clienthello_ctx->first = true; - self->up->upStream(self->up, clienthello_ctx); - + client_hello_ctx->payload = buf; + client_hello_ctx->first = true; + self->up->upStream(self->up, client_hello_ctx); } - else if (!BIO_should_retry(cstate->rbio)) + else if (! BIO_should_retry(cstate->rbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[clienthello_ctx->line->tid], buf); + reuseBuffer(getContextBufferPool(client_hello_ctx), buf); goto failed; } else { - reuseBuffer(buffer_pools[clienthello_ctx->line->tid], buf); + reuseBuffer(getContextBufferPool(client_hello_ctx), buf); } } - if (status == SSLSTATUS_FAIL) + if (status == kSslstatusFail) + { goto failed; + } } else if (c->fin) { @@ -225,14 +224,13 @@ static inline void upStream(tunnel_t *self, context_t *c) failed:; context_t *fail_context_up = newFinContext(c->line); - fail_context_up->src_io = c->src_io; + fail_context_up->src_io = c->src_io; self->up->upStream(self->up, fail_context_up); context_t *fail_context = newFinContext(c->line); cleanup(self, c); destroyContext(c); self->dw->downStream(self->dw, fail_context); - return; } static inline void downStream(tunnel_t *self, context_t *c) @@ -241,7 +239,7 @@ static inline void downStream(tunnel_t *self, context_t *c) if (c->payload != NULL) { - int n; + int n; enum sslstatus status; // if (!cstate->handshake_completed) @@ -260,72 +258,73 @@ static inline void downStream(tunnel_t *self, context_t *c) shiftr(c->payload, n); len -= n; - if (!cstate->handshake_completed) + if (! cstate->handshake_completed) { // printSSLState(cstate->ssl); n = SSL_connect(cstate->ssl); // printSSLState(cstate->ssl); - status = get_sslstatus(cstate->ssl, n); + status = getSslStatus(cstate->ssl, n); /* Did SSL request to write bytes? */ - if (status == SSLSTATUS_WANT_IO) + if (status == kSslstatusWantIo) + { do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *req_cont = newContextFrom(c); - req_cont->payload = buf; + req_cont->payload = buf; self->up->upStream(self->up, req_cont); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { reuseContextBuffer(c); destroyContext(c); return; } } - else if (!BIO_should_retry(cstate->rbio)) + else if (! BIO_should_retry(cstate->rbio)) { // If BIO_should_retry() is false then the cause is an error condition. reuseContextBuffer(c); - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); goto failed; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); - - if (status == SSLSTATUS_FAIL) + } + if (status == kSslstatusFail) { - int x = SSL_get_verify_result(cstate->ssl); + SSL_get_verify_result(cstate->ssl); printSSLError(); reuseContextBuffer(c); goto failed; } /* Did SSL request to write bytes? */ - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *data_ctx = newContext(c->line); - data_ctx->payload = buf; + data_ctx->payload = buf; self->up->upStream(self->up, data_ctx); } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } - if (!SSL_is_init_finished(cstate->ssl)) + if (! SSL_is_init_finished(cstate->ssl)) { // reuseContextBuffer(c); // destroyContext(c); @@ -335,17 +334,17 @@ static inline void downStream(tunnel_t *self, context_t *c) { LOGD("OpensslClient: Tls handshake complete"); cstate->handshake_completed = true; - context_t *dw_est_ctx = newContextFrom(c); - dw_est_ctx->est = true; + context_t *dw_est_ctx = newContextFrom(c); + dw_est_ctx->est = true; self->dw->downStream(self->dw, dw_est_ctx); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { LOGW("OpensslClient: prev node instantly closed the est with fin"); reuseContextBuffer(c); destroyContext(c); return; } - flush_write_queue(self, c); + flushWriteQueue(self, c); // queue is flushed and we are done // reuseContextBuffer(c); // destroyContext(c); @@ -359,25 +358,25 @@ static inline void downStream(tunnel_t *self, context_t *c) /* The encrypted data is now in the input bio so now we can perform actual * read of unencrypted data. */ - // shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + // shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); // shiftl(buf, 8192 / 2); // setLen(buf, 0); do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); shiftl(buf, 8192 / 2); setLen(buf, 0); size_t avail = rCap(buf); - n = SSL_read(cstate->ssl, rawBufMut(buf), avail); + n = SSL_read(cstate->ssl, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *data_ctx = newContextFrom(c); - data_ctx->payload = buf; + data_ctx->payload = buf; self->dw->downStream(self->dw, data_ctx); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { reuseContextBuffer(c); destroyContext(c); @@ -386,14 +385,14 @@ static inline void downStream(tunnel_t *self, context_t *c) } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); - status = get_sslstatus(cstate->ssl, n); + status = getSslStatus(cstate->ssl, n); - if (status == SSLSTATUS_FAIL) + if (status == kSslstatusFail) { reuseContextBuffer(c); goto failed; @@ -411,7 +410,9 @@ static inline void downStream(tunnel_t *self, context_t *c) self->dw->downStream(self->dw, c); } else + { destroyContext(c); + } } return; @@ -424,12 +425,8 @@ failed:; cleanup(self, c); destroyContext(c); self->dw->downStream(self->dw, fail_context); - - return; } - - tunnel_t *newOpenSSLClient(node_instance_context_t *instance_info) { oss_client_state_t *state = malloc(sizeof(oss_client_state_t)); @@ -439,13 +436,13 @@ tunnel_t *newOpenSSLClient(node_instance_context_t *instance_info) memset(ssl_param, 0, sizeof(ssl_ctx_opt_t)); const cJSON *settings = instance_info->node_settings_json; - if (!(cJSON_IsObject(settings) && settings->child != NULL)) + if (! (cJSON_IsObject(settings) && settings->child != NULL)) { LOGF("JSON Error: OpenSSLClient->settings (object field) : The object was empty or invalid"); return NULL; } - if (!getStringFromJsonObject(&(state->sni), settings, "sni")) + if (! getStringFromJsonObject(&(state->sni), settings, "sni")) { LOGF("JSON Error: OpenSSLClient->settings->sni (string field) : The data was empty or invalid"); return NULL; @@ -456,12 +453,12 @@ tunnel_t *newOpenSSLClient(node_instance_context_t *instance_info) return NULL; } - if (!getBoolFromJsonObject(&(state->verify), settings, "verify")) + if (! getBoolFromJsonObject(&(state->verify), settings, "verify")) { state->verify = true; } - if (!getStringFromJsonObject((char **)&(state->alpn), settings, "alpn")) + if (! getStringFromJsonObject(&(state->alpn), settings, "alpn")) { LOGF("JSON Error: OpenSSLClient->settings->alpn (string field) : The data was empty or invalid"); return NULL; @@ -473,9 +470,9 @@ tunnel_t *newOpenSSLClient(node_instance_context_t *instance_info) } ssl_param->verify_peer = state->verify ? 1 : 0; - ssl_param->endpoint = SSL_CLIENT; + ssl_param->endpoint = kSslClient; // ssl_param->ca_path = "cacert.pem"; - state->ssl_context = ssl_ctx_new(ssl_param); + state->ssl_context = sslCtxNew(ssl_param); free(ssl_param); // SSL_CTX_load_verify_store(state->ssl_context,cacert_bytes); @@ -489,28 +486,31 @@ tunnel_t *newOpenSSLClient(node_instance_context_t *instance_info) struct { uint8_t len; - char alpn_data[]; - } *ossl_alpn = malloc(1 + alpn_len); + char alpn_data[]; + } *ossl_alpn = malloc(1 + alpn_len); ossl_alpn->len = alpn_len; memcpy(&(ossl_alpn->alpn_data[0]), state->alpn, alpn_len); - SSL_CTX_set_alpn_protos(state->ssl_context, (const unsigned char *)ossl_alpn, 1 + alpn_len); + SSL_CTX_set_alpn_protos(state->ssl_context, (const unsigned char *) ossl_alpn, 1 + alpn_len); free(ossl_alpn); - tunnel_t *t = newTunnel(); - t->state = state; - t->upStream = &upStream; - t->downStream = &downStream; + tunnel_t *t = newTunnel(); + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; atomic_thread_fence(memory_order_release); return t; } -api_result_t apiOpenSSLClient(tunnel_t *self, char *msg) +api_result_t apiOpenSSLClient(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; // TODO + (void) (self); + (void) (msg); + return (api_result_t){0}; // TODO(root): } tunnel_t *destroyOpenSSLClient(tunnel_t *self) { + (void) (self); return NULL; } diff --git a/tunnels/client/openssl/openssl_client.h b/tunnels/client/openssl/openssl_client.h index 10251780..0304f3e2 100644 --- a/tunnels/client/openssl/openssl_client.h +++ b/tunnels/client/openssl/openssl_client.h @@ -1,12 +1,11 @@ #pragma once #include "api.h" -// -// con <------> OpenSSL-server <------> TLS(con) -// +// +// con <------> OpenSSL-client <------> TLS(con) // -tunnel_t *newOpenSSLClient(node_instance_context_t *instance_info); -api_result_t apiOpenSSLClient(tunnel_t *self, char *msg); -tunnel_t *destroyOpenSSLClient(tunnel_t *self); +tunnel_t * newOpenSSLClient(node_instance_context_t *instance_info); +api_result_t apiOpenSSLClient(tunnel_t *self, const char *msg); +tunnel_t * destroyOpenSSLClient(tunnel_t *self); tunnel_metadata_t getMetadataOpenSSLClient(); diff --git a/tunnels/client/preconnect/helpers.h b/tunnels/client/preconnect/helpers.h index dcf54906..2eb33ef8 100644 --- a/tunnels/client/preconnect/helpers.h +++ b/tunnels/client/preconnect/helpers.h @@ -1,27 +1,23 @@ #pragma once +#include "loggers/network_logger.h" #include "types.h" #include "utils/mathutils.h" -#include "loggers/network_logger.h" -#define STATE(x) ((preconnect_client_state_t *)((x)->state)) -#define CSTATE(x) ((preconnect_client_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (((((x)->line->chains_state)[self->chain_index])) != NULL) -#define PRECONNECT_DELAY 100 +#define PRECONNECT_DELAY_SHORT 10 +#define PRECONNECT_DELAY_HIGH 750 -static void add_connection(thread_box_t *box, - preconnect_client_con_state_t *con) +static void addConnection(thread_box_t *box, preconnect_client_con_state_t *con) { - con->next = box->root.next; + con->next = box->root.next; box->root.next = con; - con->prev = &box->root; + con->prev = &box->root; if (con->next) { con->next->prev = con; } box->length += 1; } -static void remove_connection(thread_box_t *box, preconnect_client_con_state_t *con) +static void removeConnection(thread_box_t *box, preconnect_client_con_state_t *con) { con->prev->next = con->next; @@ -32,56 +28,58 @@ static void remove_connection(thread_box_t *box, preconnect_client_con_state_t * box->length -= 1; } -static preconnect_client_con_state_t *create_cstate(int tid) +static preconnect_client_con_state_t *createCstate(uint8_t tid) { preconnect_client_con_state_t *cstate = malloc(sizeof(preconnect_client_con_state_t)); memset(cstate, 0, sizeof(preconnect_client_con_state_t)); cstate->u = newLine(tid); - return cstate; } -static void destroy_cstate(preconnect_client_con_state_t *cstate) +static void destroyCstate(preconnect_client_con_state_t *cstate) { destroyLine(cstate->u); - free(cstate); } -static void do_connect(struct connect_arg *cg) +static void doConnect(struct connect_arg *cg) { - tunnel_t *self = cg->t; - preconnect_client_state_t *state = STATE(self); - preconnect_client_con_state_t *cstate = create_cstate(cg->tid); + tunnel_t * self = cg->t; + preconnect_client_state_t * state = STATE(self); + preconnect_client_con_state_t *cstate = createCstate(cg->tid); free(cg); (cstate->u->chains_state)[self->chain_index] = cstate; self->up->upStream(self->up, newInitContext(cstate->u)); } -static void connect_timer_finished(htimer_t *timer) +static void connectTimerFinished(htimer_t *timer) { - do_connect(hevent_userdata(timer)); + doConnect(hevent_userdata(timer)); htimer_del(timer); } -static void before_connect(hevent_t *ev) +static void beforeConnect(hevent_t *ev) { - struct connect_arg *cg = hevent_userdata(ev); - htimer_t *connect_timer = htimer_add(loops[cg->tid], connect_timer_finished, PRECONNECT_DELAY, 1); + struct connect_arg *cg = hevent_userdata(ev); + htimer_t * connect_timer = htimer_add(loops[cg->tid], connectTimerFinished, cg->delay, 1); hevent_set_userdata(connect_timer, cg); } -static void initiateConnect(tunnel_t *t) +static void initiateConnect(tunnel_t *self,bool delay) { - if (STATE(t)->unused_cons >= STATE(t)->min_unused_cons) + preconnect_client_state_t *state = STATE(self); + + if (state->unused_cons >= state->min_unused_cons) + { return; + } - int tid = 0; + uint8_t tid = 0; if (workers_count > 0) { - tid = atomic_fetch_add_explicit(&(STATE(t)->round_index), 1, memory_order_relaxed); + tid = atomic_fetch_add_explicit(&(state->round_index), 1, memory_order_relaxed); if (tid >= workers_count) { - atomic_store_explicit(&(STATE(t)->round_index), 0, memory_order_relaxed); + atomic_store_explicit(&(state->round_index), 0, memory_order_relaxed); tid = 0; } } @@ -89,11 +87,14 @@ static void initiateConnect(tunnel_t *t) hloop_t *worker_loop = loops[tid]; hevent_t ev; memset(&ev, 0, sizeof(ev)); - ev.loop = worker_loop; - ev.cb = before_connect; + ev.loop = worker_loop; + ev.cb = beforeConnect; + struct connect_arg *cg = malloc(sizeof(struct connect_arg)); - cg->t = t; - cg->tid = tid; - ev.userdata = cg; + cg->t = self; + cg->tid = tid; + cg->delay = delay ? PRECONNECT_DELAY_HIGH : PRECONNECT_DELAY_SHORT; + ev.userdata = cg; + hloop_post_event(worker_loop, &ev); } \ No newline at end of file diff --git a/tunnels/client/preconnect/preconnect_client.c b/tunnels/client/preconnect/preconnect_client.c index 0a22f51e..230ebceb 100644 --- a/tunnels/client/preconnect/preconnect_client.c +++ b/tunnels/client/preconnect/preconnect_client.c @@ -14,14 +14,14 @@ static inline void upStream(tunnel_t *self, context_t *c) switch (cstate->mode) { - case connected_direct: + case kConnectedDirect: self->up->upStream(self->up, c); break; - case connected_pair: + case kConnectedPair: self->up->upStream(self->up, switchLine(c, cstate->u)); break; - case notconnected: + case kNotconnected: default: LOGF("PreConnectClient: invalid value of connection state (memory error?)"); exit(1); @@ -31,8 +31,8 @@ static inline void upStream(tunnel_t *self, context_t *c) } else { - const unsigned int tid = c->line->tid; - thread_box_t * this_tb = &(state->workers[tid]); + const uint8_t tid = c->line->tid; + thread_box_t *this_tb = &(state->workers[tid]); if (c->init) { @@ -42,19 +42,19 @@ static inline void upStream(tunnel_t *self, context_t *c) atomic_fetch_add_explicit(&(state->active_cons), 1, memory_order_relaxed); preconnect_client_con_state_t *ucon = this_tb->root.next; - remove_connection(this_tb, ucon); + removeConnection(this_tb, ucon); ucon->d = c->line; - ucon->mode = connected_pair; + ucon->mode = kConnectedPair; CSTATE_MUT(c) = ucon; self->dw->downStream(self->dw, newEstContext(c->line)); - initiateConnect(self); + initiateConnect(self,false); } else { atomic_fetch_add_explicit(&(state->active_cons), 1, memory_order_relaxed); - preconnect_client_con_state_t *dcon = create_cstate(c->line->tid); + preconnect_client_con_state_t *dcon = createCstate(c->line->tid); CSTATE_MUT(c) = dcon; - dcon->mode = connected_direct; + dcon->mode = kConnectedDirect; self->up->upStream(self->up, c); return; } @@ -68,19 +68,19 @@ static inline void upStream(tunnel_t *self, context_t *c) switch (dcon->mode) { - case connected_direct: - destroy_cstate(dcon); + case kConnectedDirect: + destroyCstate(dcon); self->up->upStream(self->up, c); break; - case connected_pair:; + case kConnectedPair:; line_t *u_line = dcon->u; (dcon->u->chains_state)[self->chain_index] = NULL; context_t *fctx = switchLine(c, u_line); // created here to prevent destruction of line - destroy_cstate(dcon); + destroyCstate(dcon); self->up->upStream(self->up, fctx); break; - case notconnected: + case kNotconnected: default: LOGF("PreConnectClient: invalid value of connection state (memory error?)"); exit(1); @@ -101,15 +101,15 @@ static inline void downStream(tunnel_t *self, context_t *c) switch (cstate->mode) { - case connected_direct: + case kConnectedDirect: self->dw->downStream(self->dw, c); break; - case connected_pair: + case kConnectedPair: self->dw->downStream(self->dw, switchLine(c, cstate->d)); break; - case notconnected: + case kNotconnected: LOGE("PreConnectClient: this node is not purposed to handle downstream data before pairing"); default: LOGF("PreConnectClient: invalid value of connection state (memory error?)"); @@ -130,29 +130,35 @@ static inline void downStream(tunnel_t *self, context_t *c) switch (ucon->mode) { - case connected_direct: + case kConnectedDirect: atomic_fetch_add_explicit(&(state->active_cons), -1, memory_order_relaxed); - destroy_cstate(ucon); + destroyCstate(ucon); self->dw->downStream(self->dw, c); + initiateConnect(self,true); + break; - case connected_pair:; + case kConnectedPair:; atomic_fetch_add_explicit(&(state->active_cons), -1, memory_order_relaxed); line_t *d_line = ucon->d; (ucon->d->chains_state)[self->chain_index] = NULL; - destroy_cstate(ucon); + destroyCstate(ucon); self->dw->downStream(self->dw, switchLine(c, d_line)); + initiateConnect(self,false); + break; - case notconnected: + case kNotconnected: if (ucon->prev != NULL) { // fin after est atomic_fetch_add_explicit(&(state->unused_cons), -1, memory_order_relaxed); - remove_connection(this_tb, ucon); + removeConnection(this_tb, ucon); } - destroy_cstate(ucon); + destroyCstate(ucon); destroyContext(c); + initiateConnect(self,true); + break; default: @@ -161,35 +167,37 @@ static inline void downStream(tunnel_t *self, context_t *c) break; } - LOGD("PreConnectClient: disconnected, unused: %d active: %d", state->unused_cons, STATE(self)->active_cons); - initiateConnect(self); + LOGD("PreConnectClient: disconnected, unused: %d active: %d", state->unused_cons, state->active_cons); } else if (c->est) { - if (ucon->mode == notconnected) + if (ucon->mode == kNotconnected) { - add_connection(this_tb, ucon); + addConnection(this_tb, ucon); destroyContext(c); unsigned int unused = atomic_fetch_add_explicit(&(state->unused_cons), 1, memory_order_relaxed); LOGI("PreConnectClient: connected, unused: %d active: %d", unused + 1, state->active_cons); - initiateConnect(self); + initiateConnect(self,false); } else + { self->dw->downStream(self->dw, c); + } } } } -static void start_preconnect(htimer_t *timer) +static void startPreconnect(htimer_t *timer) { - tunnel_t *t = hevent_userdata(timer); + tunnel_t * self = hevent_userdata(timer); + preconnect_client_state_t *state = STATE(self); + for (int i = 0; i < workers_count; i++) { - const int cpt = STATE(t)->connection_per_thread; - + const int cpt = state->connection_per_thread; for (size_t ci = 0; ci < cpt; ci++) { - initiateConnect(t); + initiateConnect(self,true); } } @@ -206,7 +214,7 @@ tunnel_t *newPreConnectClient(node_instance_context_t *instance_info) getIntFromJsonObject(&(state->min_unused_cons), settings, "minimum-unused"); - state->min_unused_cons = min(max(workers_count * 2, state->min_unused_cons), 9999999); + state->min_unused_cons = min(max(workers_count * 4, state->min_unused_cons), 128); state->connection_per_thread = min(4, state->min_unused_cons / workers_count); tunnel_t *t = newTunnel(); @@ -214,23 +222,22 @@ tunnel_t *newPreConnectClient(node_instance_context_t *instance_info) t->upStream = &upStream; t->downStream = &downStream; - htimer_t *start_timer = htimer_add(loops[0], start_preconnect, start_delay_ms, 1); + htimer_t *start_timer = htimer_add(loops[0], startPreconnect, start_delay_ms, 1); hevent_set_userdata(start_timer, t); - atomic_thread_fence(memory_order_release); - return t; } -api_result_t apiPreConnectClient(tunnel_t *self, char *msg) +api_result_t apiPreConnectClient(tunnel_t *self, const char *msg) { (void) (self); (void) (msg); - return (api_result_t){0}; // TODO + return (api_result_t){0}; } tunnel_t *destroyPreConnectClient(tunnel_t *self) { + (void) (self); return NULL; } tunnel_metadata_t getMetadataPreConnectClient() diff --git a/tunnels/client/preconnect/preconnect_client.h b/tunnels/client/preconnect/preconnect_client.h index e85d6d33..e92d2dd0 100644 --- a/tunnels/client/preconnect/preconnect_client.h +++ b/tunnels/client/preconnect/preconnect_client.h @@ -1,15 +1,11 @@ #pragma once #include "api.h" -// +// // con <------> PreConnectClient <-------> con (established ahead of time) -// // -tunnel_t *newPreConnectClient(node_instance_context_t *instance_info); -api_result_t apiPreConnectClient(tunnel_t *self, const char *msg); -tunnel_t *destroyPreConnectClient(tunnel_t *self); +tunnel_t * newPreConnectClient(node_instance_context_t *instance_info); +api_result_t apiPreConnectClient(tunnel_t *self, const char *msg); +tunnel_t * destroyPreConnectClient(tunnel_t *self); tunnel_metadata_t getMetadataPreConnectClient(); - - - diff --git a/tunnels/client/preconnect/types.h b/tunnels/client/preconnect/types.h index 2ae43ef9..ee1e4c2c 100644 --- a/tunnels/client/preconnect/types.h +++ b/tunnels/client/preconnect/types.h @@ -5,42 +5,40 @@ struct connect_arg { - unsigned int tid; - tunnel_t *t; + uint8_t tid; + unsigned int delay; + tunnel_t * t; }; typedef enum { - notconnected, - connected_direct, - connected_pair + kNotconnected, + kConnectedDirect, + kConnectedPair } connection_state; typedef struct preconnect_client_con_state_s { struct preconnect_client_con_state_s *prev, *next; - line_t *u; - line_t *d; - connection_state mode; + line_t * u; + line_t * d; + connection_state mode; } preconnect_client_con_state_t; typedef struct thread_box_s { - size_t length; + size_t length; preconnect_client_con_state_t root; } thread_box_t; typedef struct preconnect_client_state_s { - atomic_uint active_cons; - atomic_uint unused_cons; - - atomic_uint round_index; - size_t connection_per_thread; - - // settings - int min_unused_cons; + atomic_uint active_cons; + atomic_uint unused_cons; + atomic_uint round_index; + size_t connection_per_thread; + int min_unused_cons; thread_box_t workers[]; } preconnect_client_state_t; diff --git a/tunnels/client/protobuf/protobuf_client.c b/tunnels/client/protobuf/protobuf_client.c index 882eaf8d..4ceccda6 100644 --- a/tunnels/client/protobuf/protobuf_client.c +++ b/tunnels/client/protobuf/protobuf_client.c @@ -11,12 +11,7 @@ // #include "packet.pb.h" #include "uleb128.h" -#define MAX_PACKET_SIZE (65536 * 16) - -#define STATE(x) ((protobuf_client_state_t *)((x)->state)) -#define CSTATE(x) ((protobuf_client_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) +#define MAX_PACKET_SIZE (65536 * 1) typedef struct protobuf_client_state_s { @@ -26,7 +21,7 @@ typedef struct protobuf_client_state_s typedef struct protobuf_client_con_state_s { buffer_stream_t *stream_buf; - size_t wanted; + bool first_sent; } protobuf_client_con_state_t; @@ -35,40 +30,15 @@ static void cleanup(protobuf_client_con_state_t *cstate) destroyBufferStream(cstate->stream_buf); free(cstate); } -static void downStream(tunnel_t *self, context_t *c); - -static void process(tunnel_t *self, context_t *cin) -{ - protobuf_client_con_state_t *cstate = CSTATE(cin); - buffer_stream_t *bstream = cstate->stream_buf; - if (bufferStreamLen(bstream) < cstate->wanted || cstate->wanted <= 0) { - return; -} - - context_t *c = newContextFrom(cin); - c->payload = bufferStreamRead(bstream, cstate->wanted); - self->dw->downStream(self->dw, c); - cstate->wanted = 0; - - if (bufferStreamLen(bstream) > 0) - { - context_t *c_left = newContextFrom(cin); - c_left->payload = bufferStreamRead(bstream, bufferStreamLen(bstream)); - self->downStream(self, c_left); - } -} static void upStream(tunnel_t *self, context_t *c) { - if (c->payload != NULL) { - size_t blen = bufLen(c->payload); - size_t calculated_bytes = size_uleb128(blen); - shiftl(c->payload, calculated_bytes); - write_uleb128(rawBufMut(c->payload), blen); - - shiftl(c->payload, 1); + size_t blen = bufLen(c->payload); + size_t calculated_bytes = sizeUleb128(blen); + shiftl(c->payload, calculated_bytes + 1); + writeUleb128(rawBufMut(c->payload) + 1, blen); writeUI8(c->payload, '\n'); } else @@ -76,9 +46,9 @@ static void upStream(tunnel_t *self, context_t *c) if (c->init) { protobuf_client_con_state_t *cstate = malloc(sizeof(protobuf_client_con_state_t)); - cstate->wanted = 0; - cstate->stream_buf = newBufferStream(buffer_pools[c->line->tid]); - CSTATE_MUT(c) = cstate; + cstate->first_sent = false; + cstate->stream_buf = newBufferStream(getContextBufferPool(c)); + CSTATE_MUT(c) = cstate; } else if (c->fin) { @@ -92,93 +62,103 @@ static void upStream(tunnel_t *self, context_t *c) static inline void downStream(tunnel_t *self, context_t *c) { + protobuf_client_con_state_t *cstate = CSTATE(c); if (c->payload != NULL) { - protobuf_client_con_state_t *cstate = CSTATE(c); - if (cstate->wanted > 0) + buffer_stream_t *bstream = cstate->stream_buf; + bufferStreamPush(cstate->stream_buf, c->payload); + c->payload = NULL; + + while (true) { - bufferStreamPush(cstate->stream_buf, c->payload); - c->payload = NULL; - process(self, c); - destroyContext(c); - return; - } - - - shift_buffer_t *buf = c->payload; - if (bufLen(buf) < 2) + if (bufferStreamLen(bstream) < 2) { - reuseContextBuffer(c); - cleanup(cstate); - CSTATE_MUT(c) = NULL; - self->dw->downStream(self->dw, newFinContext(c->line)); - self->up->upStream(self->up, newFinContext(c->line)); destroyContext(c); return; } + unsigned int read_len = (bufferStreamLen(bstream) >= 4 ? 4 : 2); + unsigned char uleb_encoded_buf[4]; + bufferStreamViewBytesAt(bstream, uleb_encoded_buf, 1, read_len); - shiftr(buf, 1); // first byte is \n (grpc byte array identifier? always \n? ) - size_t data_len = 0; - size_t bytes_passed = read_uleb128_to_uint64(rawBuf(buf), rawBuf(buf) + bufLen(buf), &data_len); - shiftr(buf, bytes_passed); - if (data_len > MAX_PACKET_SIZE) + size_t data_len = 0; + size_t bytes_passed = readUleb128ToUint64(uleb_encoded_buf, uleb_encoded_buf + read_len, &data_len); + if (data_len == 0) { - LOGE("ProtoBufServer: rejected, size too large %zu (%zu passed %d left)",data_len,bytes_passed,(int)(bufLen(buf))); - reuseContextBuffer(c); - cleanup(cstate); - CSTATE_MUT(c) = NULL; + if (uleb_encoded_buf[0] = 0x0) + { + LOGE("ProtoBufClient: rejected, invalid data"); + goto disconnect; + } - self->dw->downStream(self->dw, newFinContext(c->line)); - self->up->upStream(self->up, newFinContext(c->line)); + // keep waiting for more data to come destroyContext(c); return; } - if (data_len != bufLen(buf)) + if (data_len > MAX_PACKET_SIZE) + { + LOGE("ProtoBufClient: rejected, size too large %zu (%zu passed %lu left)", data_len, bytes_passed, + bufferStreamLen(bstream)); + goto disconnect; + } + if (! (bufferStreamLen(bstream) >= 1 + bytes_passed + data_len)) + { + destroyContext(c); + return; + } + context_t *upstream_ctx = newContextFrom(c); + upstream_ctx->payload = bufferStreamRead(cstate->stream_buf, 1 + bytes_passed + data_len); + shiftr(upstream_ctx->payload, 1 + bytes_passed); + if (! cstate->first_sent) + { + upstream_ctx->first = true; + cstate->first_sent = true; + } + self->dw->downStream(self->up, upstream_ctx); + if (! isAlive(c->line)) { - cstate->wanted = data_len; - bufferStreamPush(cstate->stream_buf, c->payload); - c->payload = NULL; - if (data_len >= bufLen(buf)) - { process(self, c); -} destroyContext(c); return; } - + } } else { if (c->fin) { - cleanup(CSTATE(c)); + cleanup(cstate); CSTATE_MUT(c) = NULL; } + self->dw->downStream(self->dw, c); } - - self->dw->downStream(self->dw, c); +disconnect: + cleanup(cstate); + CSTATE_MUT(c) = NULL; + self->up->upStream(self->up, newFinContext(c->line)); + self->dw->downStream(self->dw, newFinContext(c->line)); + destroyContext(c); } - tunnel_t *newProtoBufClient(node_instance_context_t *instance_info) { - - tunnel_t *t = newTunnel(); - - t->upStream = &upStream; - t->downStream = &downStream; + (void) instance_info; + tunnel_t *t = newTunnel(); + t->upStream = &upStream; + t->downStream = &downStream; atomic_thread_fence(memory_order_release); - return t; } api_result_t apiProtoBufClient(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; // TODO(root): + (void) (self); + (void) (msg); + return (api_result_t){0}; // TODO(root): } tunnel_t *destroyProtoBufClient(tunnel_t *self) { + (void) (self); return NULL; } tunnel_metadata_t getMetadataProtoBufClient() diff --git a/tunnels/client/protobuf/protobuf_client.h b/tunnels/client/protobuf/protobuf_client.h index dbe5a5bb..d63b1c8c 100644 --- a/tunnels/client/protobuf/protobuf_client.h +++ b/tunnels/client/protobuf/protobuf_client.h @@ -3,12 +3,9 @@ // ----> encode ----> // con (protocolbuffers) con -// <---- decode <---- +// <---- decode <---- -tunnel_t *newProtoBufClient(node_instance_context_t *instance_info); -api_result_t apiProtoBufClient(tunnel_t *self, const char *msg); -tunnel_t *destroyProtoBufClient(tunnel_t *self); +tunnel_t * newProtoBufClient(node_instance_context_t *instance_info); +api_result_t apiProtoBufClient(tunnel_t *self, const char *msg); +tunnel_t * destroyProtoBufClient(tunnel_t *self); tunnel_metadata_t getMetadataProtoBufClient(); - - - diff --git a/tunnels/client/reverse/helpers.h b/tunnels/client/reverse/helpers.h index 18064bd9..23b2bbb4 100644 --- a/tunnels/client/reverse/helpers.h +++ b/tunnels/client/reverse/helpers.h @@ -1,26 +1,25 @@ #pragma once +#include "loggers/network_logger.h" #include "types.h" #include "utils/mathutils.h" -#include "loggers/network_logger.h" -#define STATE(x) ((reverse_client_state_t *)((x)->state)) -#define CSTATE_D(x) ((reverse_client_con_state_t *)((((x)->line->chains_state)[state->chain_index_pi]))) -#define CSTATE_U(x) ((reverse_client_con_state_t *)((((x)->line->chains_state)[state->chain_index_pi]))) -#define CSTATE_D_MUT(x) ((x)->line->chains_state)[state->chain_index_pi] -#define CSTATE_U_MUT(x) ((x)->line->chains_state)[state->chain_index_pi] -#define ISALIVE(x) (((((x)->line->chains_state)[state->chain_index_pi])) != NULL) +#define CSTATE_D(x) ((reverse_client_con_state_t *) ((((x)->line->chains_state)[state->chain_index_pi]))) +#define CSTATE_U(x) ((reverse_client_con_state_t *) ((((x)->line->chains_state)[state->chain_index_pi]))) +#define CSTATE_D_MUT(x) ((x)->line->chains_state)[state->chain_index_pi] +#define CSTATE_U_MUT(x) ((x)->line->chains_state)[state->chain_index_pi] +#define IS_ALIVE(x) (((((x)->line->chains_state)[state->chain_index_pi])) != NULL) #define PRECONNECT_DELAY_SHORT 10 -#define PRECONNECT_DELAY_HIGH 1500 +#define PRECONNECT_DELAY_HIGH 750 -static reverse_client_con_state_t *createCstate(int tid) +static reverse_client_con_state_t *createCstate(uint8_t tid) { reverse_client_con_state_t *cstate = malloc(sizeof(reverse_client_con_state_t)); memset(cstate, 0, sizeof(reverse_client_con_state_t)); line_t *up = newLine(tid); line_t *dw = newLine(tid); - cstate->u = up; - cstate->d = dw; + cstate->u = up; + cstate->d = dw; return cstate; } @@ -29,13 +28,12 @@ static void destroyCstate(reverse_client_con_state_t *cstate) { destroyLine(cstate->u); destroyLine(cstate->d); - free(cstate); } static void doConnect(struct connect_arg *cg) { - tunnel_t *self = cg->t; - reverse_client_state_t *state = STATE(self); + tunnel_t * self = cg->t; + reverse_client_state_t * state = STATE(self); reverse_client_con_state_t *cstate = createCstate(cg->tid); free(cg); (cstate->u->chains_state)[state->chain_index_pi] = cstate; @@ -50,27 +48,30 @@ static void connectTimerFinished(htimer_t *timer) } static void beforeConnect(hevent_t *ev) { - struct connect_arg *cg = hevent_userdata(ev); - htimer_t *connect_timer = htimer_add(loops[cg->tid], connectTimerFinished, cg->delay, 1); + struct connect_arg *cg = hevent_userdata(ev); + htimer_t * connect_timer = htimer_add(loops[cg->tid], connectTimerFinished, cg->delay, 1); hevent_set_userdata(connect_timer, cg); } -static void initiateConnect(tunnel_t *t, int tid) +static void initiateConnect(tunnel_t *self, uint8_t tid,bool delay) { - if (STATE(t)->unused_cons[tid] >= STATE(t)->connection_per_thread) { + reverse_client_state_t * state = STATE(self); + + if (state->unused_cons[tid] >= state->connection_per_thread) + { return; -} - bool more_delay = STATE(t)->unused_cons[tid] <= 0; - // STATE(t)->unused_cons[tid] += 1; + } + // bool more_delay = state->unused_cons[tid] <= 0; + // state->unused_cons[tid] += 1; // int tid = 0; // if (workers_count > 0) // { - // tid = atomic_fetch_add_explicit(&(STATE(t)->round_index), 1, memory_order_relaxed); + // tid = atomic_fetch_add_explicit(&(state->round_index), 1, memory_order_relaxed); // if (tid >= workers_count) // { - // atomic_store_explicit(&(STATE(t)->round_index), 0, memory_order_relaxed); + // atomic_store_explicit(&(state->round_index), 0, memory_order_relaxed); // tid = 0; // } // } @@ -78,12 +79,12 @@ static void initiateConnect(tunnel_t *t, int tid) hloop_t *worker_loop = loops[tid]; hevent_t ev; memset(&ev, 0, sizeof(ev)); - ev.loop = worker_loop; - ev.cb = beforeConnect; + ev.loop = worker_loop; + ev.cb = beforeConnect; struct connect_arg *cg = malloc(sizeof(struct connect_arg)); - cg->t = t; - cg->tid = tid; - cg->delay = more_delay?PRECONNECT_DELAY_HIGH:PRECONNECT_DELAY_SHORT; - ev.userdata = cg; + cg->t = self; + cg->tid = tid; + cg->delay = delay ? PRECONNECT_DELAY_HIGH : PRECONNECT_DELAY_SHORT; + ev.userdata = cg; hloop_post_event(worker_loop, &ev); } \ No newline at end of file diff --git a/tunnels/client/reverse/reverse_client.c b/tunnels/client/reverse/reverse_client.c index ab8cd8a9..eb68f50b 100644 --- a/tunnels/client/reverse/reverse_client.c +++ b/tunnels/client/reverse/reverse_client.c @@ -1,7 +1,7 @@ #include "reverse_client.h" +#include "helpers.h" #include "loggers/network_logger.h" #include "types.h" -#include "helpers.h" static inline void upStream(tunnel_t *self, context_t *c) { @@ -10,10 +10,10 @@ static inline void upStream(tunnel_t *self, context_t *c) if (c->payload != NULL) { reverse_client_con_state_t *dcstate = CSTATE_D(c); - if (!dcstate->first_sent_u) + if (! dcstate->first_sent_u) { dcstate->first_sent_u = true; - c->first = true; + c->first = true; } self->up->upStream(self->up, switchLine(c, dcstate->u)); } @@ -22,14 +22,16 @@ static inline void upStream(tunnel_t *self, context_t *c) if (c->fin) { - const unsigned int tid = c->line->tid; - reverse_client_con_state_t *dcstate = CSTATE_D(c); - CSTATE_D_MUT(c) = NULL; + const unsigned int tid = c->line->tid; + reverse_client_con_state_t *dcstate = CSTATE_D(c); + CSTATE_D_MUT(c) = NULL; (dcstate->u->chains_state)[state->chain_index_pi] = NULL; - context_t *fc = switchLine(c, dcstate->u); - destroy_cstate(dcstate); - const unsigned int old_reverse_cons = atomic_fetch_add_explicit(&(state->reverse_cons), -1, memory_order_relaxed); - LOGD("ReverseClient: disconnected, tid: %d unused: %u active: %d", fc->line->tid, state->unused_cons[tid], old_reverse_cons - 1); + context_t *fc = switchLine(c, dcstate->u); + destroyCstate(dcstate); + const unsigned int old_reverse_cons = + atomic_fetch_add_explicit(&(state->reverse_cons), -1, memory_order_relaxed); + LOGD("ReverseClient: disconnected, tid: %d unused: %u active: %d", fc->line->tid, state->unused_cons[tid], + old_reverse_cons - 1); self->up->upStream(self->up, fc); } else if (c->est) @@ -46,7 +48,7 @@ static inline void upStream(tunnel_t *self, context_t *c) static inline void downStream(tunnel_t *self, context_t *c) { reverse_client_state_t *state = STATE(self); - unsigned int tid = c->line->tid; + uint8_t tid = c->line->tid; if (c->payload != NULL) { @@ -54,29 +56,31 @@ static inline void downStream(tunnel_t *self, context_t *c) if (ucstate->pair_connected) { - if (!ucstate->first_sent_d) + if (! ucstate->first_sent_d) { ucstate->first_sent_d = true; - context_t *turned = switchLine(c, ucstate->d); - turned->first = true; + context_t *turned = switchLine(c, ucstate->d); + turned->first = true; self->dw->downStream(self->dw, turned); } - else { + else + { self->dw->downStream(self->dw, switchLine(c, ucstate->d)); -} + } } else { ucstate->pair_connected = true; - if (state->unused_cons[tid] > 0) { + if (state->unused_cons[tid] > 0) + { state->unused_cons[tid] -= 1; -} + } atomic_fetch_add_explicit(&(state->reverse_cons), 1, memory_order_relaxed); self->dw->downStream(self->dw, newInitContext(ucstate->d)); - + if (CSTATE_U(c) == NULL) { - reuseBuffer(buffer_pools[c->line->tid], c->payload); + reuseBuffer(getContextBufferPool(c), c->payload); c->payload = NULL; destroyContext(c); return; @@ -85,22 +89,21 @@ static inline void downStream(tunnel_t *self, context_t *c) // first byte is 0xFF a signal from reverse server uint8_t check = 0x0; readUI8(c->payload, &check); - assert(check == (unsigned char)0xFF); + assert(check == (unsigned char) 0xFF); shiftr(c->payload, 1); if (bufLen(c->payload) <= 0) { - initiateConnect(self, tid); - reuseBuffer(buffer_pools[c->line->tid], c->payload); + initiateConnect(self, tid, false); + reuseBuffer(getContextBufferPool(c), c->payload); c->payload = NULL; destroyContext(c); return; } - - ucstate->first_sent_d = true; - c->first = true; - self->dw->downStream(self->dw, switchLine(c, ucstate->d)); - initiateConnect(self, tid); - + + ucstate->first_sent_d = true; + c->first = true; + self->dw->downStream(self->dw, switchLine(c, ucstate->d)); + initiateConnect(self, tid, false); } } else @@ -108,27 +111,30 @@ static inline void downStream(tunnel_t *self, context_t *c) if (c->fin) { - reverse_client_con_state_t *ucstate = CSTATE_U(c); - CSTATE_U_MUT(c) = NULL; + reverse_client_con_state_t *ucstate = CSTATE_U(c); + CSTATE_U_MUT(c) = NULL; (ucstate->d->chains_state)[state->chain_index_pi] = NULL; if (ucstate->pair_connected) { - const unsigned int old_reverse_cons = atomic_fetch_add_explicit(&(state->reverse_cons), -1, memory_order_relaxed); - LOGD("ReverseClient: disconnected, tid: %d unused: %u active: %d", tid, state->unused_cons[tid], old_reverse_cons - 1); + const unsigned int old_reverse_cons = + atomic_fetch_add_explicit(&(state->reverse_cons), -1, memory_order_relaxed); + LOGD("ReverseClient: disconnected, tid: %d unused: %u active: %d", tid, state->unused_cons[tid], + old_reverse_cons - 1); context_t *fc = switchLine(c, ucstate->d); - destroy_cstate(ucstate); + destroyCstate(ucstate); self->dw->downStream(self->dw, fc); } else { - destroy_cstate(ucstate); - if (state->unused_cons[tid] > 0) { + destroyCstate(ucstate); + if (state->unused_cons[tid] > 0) + { state->unused_cons[tid] -= 1; -} + } LOGD("ReverseClient: disconnected, tid: %d unused: %u active: %d", tid, state->unused_cons[tid], atomic_load_explicit(&(state->reverse_cons), memory_order_relaxed)); - initiateConnect(self, tid); + initiateConnect(self, tid, true); destroyContext(c); } @@ -140,7 +146,7 @@ static inline void downStream(tunnel_t *self, context_t *c) LOGI("ReverseClient: connected, tid: %d unused: %u active: %d", tid, state->unused_cons[tid], atomic_load_explicit(&(state->reverse_cons), memory_order_relaxed)); destroyContext(c); - initiateConnect(self, tid); + initiateConnect(self, tid, false); } else { @@ -149,17 +155,17 @@ static inline void downStream(tunnel_t *self, context_t *c) } } - static void startReverseCelint(htimer_t *timer) { - tunnel_t *t = hevent_userdata(timer); + tunnel_t * self = hevent_userdata(timer); + reverse_client_state_t *state = STATE(self); for (int i = 0; i < workers_count; i++) { - const int cpt = STATE(t)->connection_per_thread; + const int cpt = state->connection_per_thread; for (size_t ci = 0; ci < cpt; ci++) { - initiateConnect(t, i); + initiateConnect(self, i, true); } } @@ -178,19 +184,19 @@ tunnel_t *newReverseClient(node_instance_context_t *instance_info) // int total = max(16, state->cons_forward); // int total = max(1, state->cons_forward); - state->min_unused_cons = min(max(workers_count * 4, state->min_unused_cons), 128); + state->min_unused_cons = min(max(workers_count * 4, state->min_unused_cons), 128); state->connection_per_thread = min(4, state->min_unused_cons / workers_count); // we are always the first line creator so its easy to get the positon independent index here - line_t *l = newLine(0); - int index = reserveChainStateIndex(l); + line_t *l = newLine(0); + int index = reserveChainStateIndex(l); state->chain_index_pi = index; destroyLine(l); - tunnel_t *t = newTunnel(); - t->state = state; - t->upStream = &upStream; - t->downStream = &downStream; + tunnel_t *t = newTunnel(); + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; htimer_t *start_timer = htimer_add(loops[0], startReverseCelint, start_delay_ms, 1); hevent_set_userdata(start_timer, t); @@ -201,14 +207,17 @@ tunnel_t *newReverseClient(node_instance_context_t *instance_info) api_result_t apiReverseClient(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; // TODO(root): + (void) (self); + (void) (msg); + return (api_result_t){0}; // TODO(root): } tunnel_t *destroyReverseClient(tunnel_t *self) { + (void) (self); return NULL; } tunnel_metadata_t getMetadataReverseClient() { - return (tunnel_metadata_t){.version = 0001, .flags = TFLAG_ROUTE_STARTER}; + return (tunnel_metadata_t){.version = 0001, .flags = 0x0}; } \ No newline at end of file diff --git a/tunnels/client/reverse/reverse_client.h b/tunnels/client/reverse/reverse_client.h index 9482ec12..f3226e14 100644 --- a/tunnels/client/reverse/reverse_client.h +++ b/tunnels/client/reverse/reverse_client.h @@ -1,12 +1,9 @@ #pragma once #include "api.h" - // con 2 <------> Reverse(Client) <------> con 1 - - -tunnel_t *newReverseClient(node_instance_context_t *instance_info); -api_result_t apiReverseClient(tunnel_t *self, const char *msg); -tunnel_t *destroyReverseClient(tunnel_t *self); +tunnel_t * newReverseClient(node_instance_context_t *instance_info); +api_result_t apiReverseClient(tunnel_t *self, const char *msg); +tunnel_t * destroyReverseClient(tunnel_t *self); tunnel_metadata_t getMetadataReverseClient(); diff --git a/tunnels/client/reverse/types.h b/tunnels/client/reverse/types.h index bc23c696..8b4bc31f 100644 --- a/tunnels/client/reverse/types.h +++ b/tunnels/client/reverse/types.h @@ -5,17 +5,17 @@ struct connect_arg { - unsigned int tid; - int delay; - tunnel_t *t; + uint8_t tid; + unsigned int delay; + tunnel_t * t; }; typedef struct reverse_client_con_state_s { - bool pair_connected; - bool established; - bool first_sent_u; - bool first_sent_d; + bool pair_connected; + bool established; + bool first_sent_u; + bool first_sent_d; line_t *u; line_t *d; @@ -23,15 +23,11 @@ typedef struct reverse_client_con_state_s typedef struct reverse_client_state_s { - atomic_uint reverse_cons; - atomic_uint round_index; - - size_t chain_index_pi; - size_t connection_per_thread; - - // settings - int min_unused_cons; + atomic_uint reverse_cons; + atomic_uint round_index; + size_t chain_index_pi; + size_t connection_per_thread; + int min_unused_cons; unsigned int unused_cons[]; - } reverse_client_state_t; diff --git a/tunnels/client/wolfssl/CMakeLists.txt b/tunnels/client/wolfssl/CMakeLists.txt index 893294f7..24d52b5d 100644 --- a/tunnels/client/wolfssl/CMakeLists.txt +++ b/tunnels/client/wolfssl/CMakeLists.txt @@ -4,56 +4,62 @@ add_library(WolfSSLClient STATIC wolfssl_client.c ) -#cmake is not able to build fastest version of wolfssl yet (because all asm options are not provided in cmakelist), we used this: -# ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls --enable-intelasm --enable-aesni -# generate configure with autoreconf -i (sudo apt-get install autoconf) (sudo apt-get install libtool-bin) -# Note: before configure, add -# AC_DEFINE([NO_WOLFSSL_STUB], [1], [Description here]) -# to configure.ac ! - -# if compiling for ARM: ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls -# /src/.libs/libwolfssl.a +# This paragraph is disabled since wolfssl 5.7 update now has much better cmake interface +## ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls --enable-intelasm --enable-aesni +## generate configure with autoreconf -i (sudo apt-get install autoconf) (sudo apt-get install libtool-bin) +## Note: before configure, add +## AC_DEFINE([NO_WOLFSSL_STUB], [1], [Description here]) +## to configure.ac ! +## if compiling for ARM: ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls +## libs will be saved at: /src/.libs/libwolfssl.a #ww api target_include_directories(WolfSSLClient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../ww) target_link_libraries(WolfSSLClient ww) -# todo select correct processor -if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64") -target_link_libraries(WolfSSLClient libwolfssl_arm64.a) -else() -target_link_libraries(WolfSSLClient libwolfssl_amd64.a) -endif() -target_include_directories(WolfSSLClient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) -target_link_directories(WolfSSLClient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) +target_include_directories(WolfSSLClient PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) # add dependencies include(${CMAKE_BINARY_DIR}/cmake/CPM.cmake) - +# todo (WOLFSSL_CRYPTOCB) check this option doing anything useful and required or not (enables padding settings like openssl?) CPMAddPackage( NAME wolfssl VERSION 5.6.6-stable GITHUB_REPOSITORY wolfSSL/wolfssl OPTIONS + "WOLFSSL_REPRODUCIBLE_BUILD ON" + "WOLFSSL_ALPN ON" + "WOLFSSL_HARDEN ON" "WOLFSSL_OPENSSLEXTRA ON" "WOLFSSL_OPENSSLALL ON" + "WOLFSSL_SNI ON" + "WOLFSSL_SESSION_TICKET ON" "WOLFSSL_EXAMPLES OFF" "WOLFSSL_CRYPT_TESTS OFF" - "WOLFSSL_EXAMPLES OFF" - "WOLFSSL_EXAMPLES OFF" + "WOLFSSL_ASYNC_THREADS OFF" "BUILD_SHARED_LIBS OFF" ) - -target_compile_definitions(WolfSSLClient PRIVATE WolfSSLClient_VERSION=0.1) - - +target_compile_definitions(wolfssl PRIVATE NO_WOLFSSL_STUB=1) +target_compile_definitions(WolfSSLClient PRIVATE WolfSSLClient_VERSION=0.1) if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(WolfSSLClient PRIVATE DEBUG=1) endif() -target_include_directories(WolfSSLClient PRIVATE $) + + +# this code is used for linking with prebuilt .a (which you built with autoconf) +# target_link_directories(WolfSSLClient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) +# if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64") +# target_link_libraries(WolfSSLClient libwolfssl_arm64.a) +# else() +# target_link_libraries(WolfSSLClient libwolfssl_amd64.a) +# endif() +# target_include_directories(WolfSSLClient PRIVATE $) + +# this code is used for linking with cmake built wolfssl +target_link_libraries(WolfSSLClient wolfssl) diff --git a/tunnels/client/wolfssl/wolfssl_client.c b/tunnels/client/wolfssl/wolfssl_client.c index 9ec6fbd3..311c7c35 100644 --- a/tunnels/client/wolfssl/wolfssl_client.c +++ b/tunnels/client/wolfssl/wolfssl_client.c @@ -1,70 +1,64 @@ #include "wolfssl_client.h" #include "buffer_pool.h" #include "buffer_stream.h" +#include "loggers/network_logger.h" #include "managers/node_manager.h" #include "managers/socket_manager.h" -#include "loggers/network_logger.h" #include "utils/jsonutils.h" #include "wolfssl_globals.h" -#include #include #include #include #include +#include -#define STATE(x) ((wolfssl_client_state_t *)((x)->state)) -#define CSTATE(x) ((wolfssl_client_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) - -typedef struct wolfssl_client_state_s +typedef struct wssl_client_state_s { ssl_ctx_t ssl_context; // settings char *alpn; char *sni; - bool verify; + bool verify; -} wolfssl_client_state_t; +} wssl_client_state_t; -typedef struct wolfssl_client_con_state_s +typedef struct wssl_client_con_state_s { - bool handshake_completed; - SSL *ssl; - BIO *rbio; - BIO *wbio; + bool handshake_completed; + SSL * ssl; + BIO * rbio; + BIO * wbio; context_queue_t *queue; -} wolfssl_client_con_state_t; +} wssl_client_con_state_t; enum sslstatus { - SSLSTATUS_OK, - SSLSTATUS_WANT_IO, - SSLSTATUS_FAIL + kSslstatusOk, + kSslstatusWantIo, + kSslstatusFail }; - -static enum sslstatus get_sslstatus(SSL *ssl, int n) +static enum sslstatus getSslStatus(SSL *ssl, int n) { switch (SSL_get_error(ssl, n)) { case SSL_ERROR_NONE: - return SSLSTATUS_OK; + return kSslstatusOk; case SSL_ERROR_WANT_WRITE: case SSL_ERROR_WANT_READ: - return SSLSTATUS_WANT_IO; + return kSslstatusWantIo; case SSL_ERROR_ZERO_RETURN: case SSL_ERROR_SYSCALL: default: - return SSLSTATUS_FAIL; + return kSslstatusFail; } } static void cleanup(tunnel_t *self, context_t *c) { - wolfssl_client_con_state_t *cstate = CSTATE(c); + wssl_client_con_state_t *cstate = CSTATE(c); if (cstate != NULL) { SSL_free(cstate->ssl); /* free the SSL object and its BIO's */ @@ -75,40 +69,42 @@ static void cleanup(tunnel_t *self, context_t *c) } } -static void flush_write_queue(tunnel_t *self, context_t *c) +static void flushWriteQueue(tunnel_t *self, context_t *c) { - wolfssl_client_con_state_t *cstate = CSTATE(c); + wssl_client_con_state_t *cstate = CSTATE(c); while (contextQueueLen(cstate->queue) > 0) { self->upStream(self, contextQueuePop(cstate->queue)); - if (!isAlive(c->line)) + if (! isAlive(c->line)) + { return; + } } } static inline void upStream(tunnel_t *self, context_t *c) { - wolfssl_client_state_t *state = STATE(self); + wssl_client_state_t *state = STATE(self); if (c->payload != NULL) { - wolfssl_client_con_state_t *cstate = CSTATE(c); + wssl_client_con_state_t *cstate = CSTATE(c); - if (!cstate->handshake_completed) + if (! cstate->handshake_completed) { contextQueuePush(cstate->queue, c); return; } enum sslstatus status; - size_t len = bufLen(c->payload); + size_t len = bufLen(c->payload); while (len > 0) { - int n = SSL_write(cstate->ssl, rawBuf(c->payload), len); - status = get_sslstatus(cstate->ssl, n); + int n = SSL_write(cstate->ssl, rawBuf(c->payload), len); + status = getSslStatus(cstate->ssl, n); if (n > 0) { @@ -118,44 +114,46 @@ static inline void upStream(tunnel_t *self, context_t *c) /* take the output of the SSL object and queue it for socket write */ do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *send_context = newContextFrom(c); - send_context->payload = buf; + send_context->payload = buf; self->up->upStream(self->up, send_context); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { reuseContextBuffer(c); destroyContext(c); return; } } - else if (!BIO_should_retry(cstate->wbio)) + else if (! BIO_should_retry(cstate->wbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); reuseContextBuffer(c); goto failed; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } - if (status == SSLSTATUS_FAIL) + if (status == kSslstatusFail) { reuseContextBuffer(c); goto failed; } if (n == 0) + { break; + } } assert(bufLen(c->payload) == 0); reuseContextBuffer(c); @@ -166,55 +164,56 @@ static inline void upStream(tunnel_t *self, context_t *c) if (c->init) { - CSTATE_MUT(c) = malloc(sizeof(wolfssl_client_con_state_t)); - memset(CSTATE(c), 0, sizeof(wolfssl_client_con_state_t)); - wolfssl_client_con_state_t *cstate = CSTATE(c); - cstate->rbio = BIO_new(BIO_s_mem()); - cstate->wbio = BIO_new(BIO_s_mem()); - cstate->ssl = SSL_new(state->ssl_context); - cstate->queue = newContextQueue(buffer_pools[c->line->tid]); + CSTATE_MUT(c) = malloc(sizeof(wssl_client_con_state_t)); + memset(CSTATE(c), 0, sizeof(wssl_client_con_state_t)); + wssl_client_con_state_t *cstate = CSTATE(c); + cstate->rbio = BIO_new(BIO_s_mem()); + cstate->wbio = BIO_new(BIO_s_mem()); + cstate->ssl = SSL_new(state->ssl_context); + cstate->queue = newContextQueue(getContextBufferPool(c)); SSL_set_connect_state(cstate->ssl); /* sets ssl to work in client mode. */ SSL_set_bio(cstate->ssl, cstate->rbio, cstate->wbio); SSL_set_tlsext_host_name(cstate->ssl, state->sni); - context_t *clienthello_ctx = newContextFrom(c); + context_t *client_hello_ctx = newContextFrom(c); self->up->upStream(self->up, c); - if (!ISALIVE(clienthello_ctx)) + if (! isAlive(client_hello_ctx->line)) { - destroyContext(clienthello_ctx); + destroyContext(client_hello_ctx); return; } // printSSLState(cstate->ssl); int n = SSL_connect(cstate->ssl); // printSSLState(cstate->ssl); - enum sslstatus status = get_sslstatus(cstate->ssl, n); + enum sslstatus status = getSslStatus(cstate->ssl, n); /* Did SSL request to write bytes? */ - if (status == SSLSTATUS_WANT_IO) + if (status == kSslstatusWantIo) { - shift_buffer_t *buf = popBuffer(buffer_pools[clienthello_ctx->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(client_hello_ctx)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); - clienthello_ctx->payload = buf; - clienthello_ctx->first = true; - self->up->upStream(self->up, clienthello_ctx); - + client_hello_ctx->payload = buf; + client_hello_ctx->first = true; + self->up->upStream(self->up, client_hello_ctx); } - else if (!BIO_should_retry(cstate->rbio)) + else if (! BIO_should_retry(cstate->rbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[clienthello_ctx->line->tid], buf); + reuseBuffer(getContextBufferPool(client_hello_ctx), buf); goto failed; } else { - reuseBuffer(buffer_pools[clienthello_ctx->line->tid], buf); + reuseBuffer(getContextBufferPool(client_hello_ctx), buf); } } - if (status == SSLSTATUS_FAIL) + if (status == kSslstatusFail) + { goto failed; + } } else if (c->fin) { @@ -228,23 +227,22 @@ static inline void upStream(tunnel_t *self, context_t *c) failed:; context_t *fail_context_up = newFinContext(c->line); - fail_context_up->src_io = c->src_io; + fail_context_up->src_io = c->src_io; self->up->upStream(self->up, fail_context_up); context_t *fail_context = newFinContext(c->line); cleanup(self, c); destroyContext(c); self->dw->downStream(self->dw, fail_context); - return; } static inline void downStream(tunnel_t *self, context_t *c) { - wolfssl_client_con_state_t *cstate = CSTATE(c); + wssl_client_con_state_t *cstate = CSTATE(c); if (c->payload != NULL) { - int n; + int n; enum sslstatus status; // if (!cstate->handshake_completed) @@ -263,72 +261,73 @@ static inline void downStream(tunnel_t *self, context_t *c) shiftr(c->payload, n); len -= n; - if (!cstate->handshake_completed) + if (! cstate->handshake_completed) { // printSSLState(cstate->ssl); n = SSL_connect(cstate->ssl); // printSSLState(cstate->ssl); - status = get_sslstatus(cstate->ssl, n); + status = getSslStatus(cstate->ssl, n); /* Did SSL request to write bytes? */ - if (status == SSLSTATUS_WANT_IO) + if (status == kSslstatusWantIo) + { do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *req_cont = newContextFrom(c); - req_cont->payload = buf; + req_cont->payload = buf; self->up->upStream(self->up, req_cont); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { reuseContextBuffer(c); destroyContext(c); return; } } - else if (!BIO_should_retry(cstate->rbio)) + else if (! BIO_should_retry(cstate->rbio)) { // If BIO_should_retry() is false then the cause is an error condition. reuseContextBuffer(c); - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); goto failed; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); - - if (status == SSLSTATUS_FAIL) + } + if (status == kSslstatusFail) { - int x = SSL_get_verify_result(cstate->ssl); + SSL_get_verify_result(cstate->ssl); printSSLError(); reuseContextBuffer(c); goto failed; } /* Did SSL request to write bytes? */ - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); - size_t avail = rCap(buf); - n = BIO_read(cstate->wbio, rawBufMut(buf), avail); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); + size_t avail = rCap(buf); + n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *data_ctx = newContext(c->line); - data_ctx->payload = buf; + data_ctx->payload = buf; self->up->upStream(self->up, data_ctx); } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } - if (!SSL_is_init_finished(cstate->ssl)) + if (! SSL_is_init_finished(cstate->ssl)) { // reuseContextBuffer(c); // destroyContext(c); @@ -336,19 +335,19 @@ static inline void downStream(tunnel_t *self, context_t *c) } else { - LOGD("OpensslClient: Tls handshake complete"); + LOGD("WolfClient: Tls handshake complete"); cstate->handshake_completed = true; - context_t *dw_est_ctx = newContextFrom(c); - dw_est_ctx->est = true; + context_t *dw_est_ctx = newContextFrom(c); + dw_est_ctx->est = true; self->dw->downStream(self->dw, dw_est_ctx); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { - LOGW("OpensslClient: prev node instantly closed the est with fin"); + LOGW("WolfsslClient: prev node instantly closed the est with fin"); reuseContextBuffer(c); destroyContext(c); return; } - flush_write_queue(self, c); + flushWriteQueue(self, c); // queue is flushed and we are done // reuseContextBuffer(c); // destroyContext(c); @@ -362,25 +361,25 @@ static inline void downStream(tunnel_t *self, context_t *c) /* The encrypted data is now in the input bio so now we can perform actual * read of unencrypted data. */ - // shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + // shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); // shiftl(buf, 8192 / 2); // setLen(buf, 0); do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); shiftl(buf, 8192 / 2); setLen(buf, 0); size_t avail = rCap(buf); - n = SSL_read(cstate->ssl, rawBufMut(buf), avail); + n = SSL_read(cstate->ssl, rawBufMut(buf), avail); if (n > 0) { setLen(buf, n); context_t *data_ctx = newContextFrom(c); - data_ctx->payload = buf; + data_ctx->payload = buf; self->dw->downStream(self->dw, data_ctx); - if (!isAlive(c->line)) + if (! isAlive(c->line)) { reuseContextBuffer(c); destroyContext(c); @@ -389,14 +388,14 @@ static inline void downStream(tunnel_t *self, context_t *c) } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); - status = get_sslstatus(cstate->ssl, n); + status = getSslStatus(cstate->ssl, n); - if (status == SSLSTATUS_FAIL) + if (status == kSslstatusFail) { reuseContextBuffer(c); goto failed; @@ -414,7 +413,9 @@ static inline void downStream(tunnel_t *self, context_t *c) self->dw->downStream(self->dw, c); } else + { destroyContext(c); + } } return; @@ -427,43 +428,24 @@ failed:; cleanup(self, c); destroyContext(c); self->dw->downStream(self->dw, fail_context); - - return; -} - -static void wolfSSLUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c); -} -static void wolfSSLPacketUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c); // TODO : DTLS -} -static void wolfSSLDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c); -} -static void wolfSSLPacketDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c); } tunnel_t *newWolfSSLClient(node_instance_context_t *instance_info) { - wolfssl_client_state_t *state = malloc(sizeof(wolfssl_client_state_t)); - memset(state, 0, sizeof(wolfssl_client_state_t)); + wssl_client_state_t *state = malloc(sizeof(wssl_client_state_t)); + memset(state, 0, sizeof(wssl_client_state_t)); ssl_ctx_opt_t *ssl_param = malloc(sizeof(ssl_ctx_opt_t)); memset(ssl_param, 0, sizeof(ssl_ctx_opt_t)); const cJSON *settings = instance_info->node_settings_json; - if (!(cJSON_IsObject(settings) && settings->child != NULL)) + if (! (cJSON_IsObject(settings) && settings->child != NULL)) { LOGF("JSON Error: WolfSSLClient->settings (object field) : The object was empty or invalid"); return NULL; } - if (!getStringFromJsonObject(&(state->sni), settings, "sni")) + if (! getStringFromJsonObject(&(state->sni), settings, "sni")) { LOGF("JSON Error: WolfSSLClient->settings->sni (string field) : The data was empty or invalid"); return NULL; @@ -474,12 +456,12 @@ tunnel_t *newWolfSSLClient(node_instance_context_t *instance_info) return NULL; } - if (!getBoolFromJsonObject(&(state->verify), settings, "verify")) + if (! getBoolFromJsonObject(&(state->verify), settings, "verify")) { state->verify = true; } - if (!getStringFromJsonObject((char **)&(state->alpn), settings, "alpn")) + if (! getStringFromJsonObject(&(state->alpn), settings, "alpn")) { LOGF("JSON Error: WolfSSLClient->settings->alpn (string field) : The data was empty or invalid"); return NULL; @@ -491,9 +473,9 @@ tunnel_t *newWolfSSLClient(node_instance_context_t *instance_info) } ssl_param->verify_peer = state->verify ? 1 : 0; - ssl_param->endpoint = SSL_CLIENT; + ssl_param->endpoint = kSslClient; // ssl_param->ca_path = "cacert.pem"; - state->ssl_context = ssl_ctx_new(ssl_param); + state->ssl_context = sslCtxNew(ssl_param); free(ssl_param); // SSL_CTX_load_verify_store(state->ssl_context,cacert_bytes); @@ -507,31 +489,31 @@ tunnel_t *newWolfSSLClient(node_instance_context_t *instance_info) struct { uint8_t len; - char alpn_data[]; - } *ossl_alpn = malloc(1 + alpn_len); + char alpn_data[]; + } *ossl_alpn = malloc(1 + alpn_len); ossl_alpn->len = alpn_len; memcpy(&(ossl_alpn->alpn_data[0]), state->alpn, alpn_len); - SSL_CTX_set_alpn_protos(state->ssl_context, (const unsigned char *)ossl_alpn, 1 + alpn_len); + SSL_CTX_set_alpn_protos(state->ssl_context, (const unsigned char *) ossl_alpn, 1 + alpn_len); free(ossl_alpn); - tunnel_t *t = newTunnel(); - t->state = state; - - t->upStream = &wolfSSLUpStream; - t->packetUpStream = &wolfSSLPacketUpStream; - t->downStream = &wolfSSLDownStream; - t->packetDownStream = &wolfSSLPacketDownStream; + tunnel_t *t = newTunnel(); + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; atomic_thread_fence(memory_order_release); return t; } -api_result_t apiWolfSSLClient(tunnel_t *self, char *msg) +api_result_t apiWolfSSLClient(tunnel_t *self, const char *msg) { - (void)(self); (void)(msg); return (api_result_t){0}; // TODO + (void) (self); + (void) (msg); + return (api_result_t){0}; } tunnel_t *destroyWolfSSLClient(tunnel_t *self) { + (void) (self); return NULL; } diff --git a/tunnels/client/wolfssl/wolfssl_client.h b/tunnels/client/wolfssl/wolfssl_client.h index d43dd266..be0c065d 100644 --- a/tunnels/client/wolfssl/wolfssl_client.h +++ b/tunnels/client/wolfssl/wolfssl_client.h @@ -1,12 +1,11 @@ #pragma once #include "api.h" -// -// con <------> OpenSSL-server <------> TLS(con) -// +// +// con <------> WolfSSL-client <------> TLS(con) // -tunnel_t *newWolfSSLClient(node_instance_context_t *instance_info); -api_result_t apiWolfSSLClient(tunnel_t *self, char *msg); -tunnel_t *destroyWolfSSLClient(tunnel_t *self); +tunnel_t * newWolfSSLClient(node_instance_context_t *instance_info); +api_result_t apiWolfSSLClient(tunnel_t *self,const char *msg); +tunnel_t * destroyWolfSSLClient(tunnel_t *self); tunnel_metadata_t getMetadataWolfSSLClient(); diff --git a/tunnels/logger/logger_tunnel.c b/tunnels/logger/logger_tunnel.c index 318b2dec..e16ee8d0 100644 --- a/tunnels/logger/logger_tunnel.c +++ b/tunnels/logger/logger_tunnel.c @@ -2,11 +2,6 @@ #include "buffer_pool.h" #include "loggers/network_logger.h" -#define STATE(x) ((logger_tunnel_state_t *) ((x)->state)) -#define CSTATE(x) ((logger_tunnel_con_state_t *) ((((x)->line->chains_state)[self->chain_index]))) -#define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -#define ISALIVE(x) (CSTATE(x) != NULL) - #undef min static inline size_t min(size_t x, size_t y) { @@ -38,18 +33,16 @@ static inline void upStream(tunnel_t *self, context_t *c) { // send back something - { - context_t *reply = newContextFrom(c); - reply->payload = popBuffer(buffer_pools[c->line->tid]); - reuseContextBuffer(c); - destroyContext(c); - sprintf((char *) rawBuf(reply->payload), "%s", "salam"); - setLen(reply->payload, strlen("salam")); - self->dw->downStream(self->dw, reply); - } - // context_t *reply = newFinContext(c->line); - // destroyContext(c); - // self->dw->downStream(self->dw, reply); + // { + // context_t *reply = newContextFrom(c); + // reply->payload = popBuffer(getContextBufferPool(c)); + // reuseContextBuffer(c); + // destroyContext(c); + // sprintf((char *) rawBuf(reply->payload), "%s", "salam"); + // setLen(reply->payload, strlen("salam")); + // self->dw->downStream(self->dw, reply); + // } + } } else @@ -77,7 +70,9 @@ static inline void upStream(tunnel_t *self, context_t *c) self->up->upStream(self->up, c); } else + { destroyContext(c); + } } } } @@ -97,13 +92,13 @@ static inline void downStream(tunnel_t *self, context_t *c) { // send back something - { - context_t *reply = newContextFrom(c); - reply->payload = popBuffer(buffer_pools[c->line->tid]); - sprintf((char *) rawBuf(reply->payload), "%s", "salam"); - setLen(reply->payload, strlen("salam")); - self->up->upStream(self->up, reply); - } + // { + // context_t *reply = newContextFrom(c); + // reply->payload = popBuffer(getContextBufferPool(c)); + // sprintf((char *) rawBuf(reply->payload), "%s", "salam"); + // setLen(reply->payload, strlen("salam")); + // self->up->upStream(self->up, reply); + // } reuseContextBuffer(c); destroyContext(c); @@ -147,25 +142,26 @@ static inline void downStream(tunnel_t *self, context_t *c) tunnel_t *newLoggerTunnel(node_instance_context_t *instance_info) { - + (void) instance_info; tunnel_t *t = newTunnel(); t->upStream = &upStream; t->downStream = &downStream; return t; } -api_result_t apiLoggerTunnel(tunnel_t *self, char *msg) +api_result_t apiLoggerTunnel(tunnel_t *self, const char *msg) { (void) (self); (void) (msg); - return (api_result_t){0}; // TODO + return (api_result_t){0}; } tunnel_t *destroyLoggerTunnel(tunnel_t *self) { + (void) (self); return NULL; } tunnel_metadata_t getMetadataLoggerTunnel() { - return (tunnel_metadata_t){.version = 0001, .flags = 0x0}; + return (tunnel_metadata_t){.version = 0001, .flags = kNodeFlagChainHead}; } \ No newline at end of file diff --git a/tunnels/logger/logger_tunnel.h b/tunnels/logger/logger_tunnel.h index 9cd96cb9..ce051f5c 100644 --- a/tunnels/logger/logger_tunnel.h +++ b/tunnels/logger/logger_tunnel.h @@ -1,12 +1,12 @@ #pragma once #include "api.h" -// -// dw <------> networklogger(stdout + file) <------> up -// +// +// dw <------> networklogger <------> up +// // -tunnel_t *newLoggerTunnel(node_instance_context_t *instance_info); -api_result_t apiLoggerTunnel(tunnel_t *self, const char *msg); -tunnel_t *destroyLoggerTunnel(tunnel_t *self); +tunnel_t * newLoggerTunnel(node_instance_context_t *instance_info); +api_result_t apiLoggerTunnel(tunnel_t *self, const char *msg); +tunnel_t * destroyLoggerTunnel(tunnel_t *self); tunnel_metadata_t getMetadataLoggerTunnel(); diff --git a/tunnels/server/boringssl/boringssl_server.c b/tunnels/server/boringssl/boringssl_server.c index e6bd5d34..6474b993 100644 --- a/tunnels/server/boringssl/boringssl_server.c +++ b/tunnels/server/boringssl/boringssl_server.c @@ -12,7 +12,7 @@ // #define STATE(x) ((oss_server_state_t *)((x)->state)) // #define CSTATE(x) ((oss_server_con_state_t *)((((x)->line->chains_state)[self->chain_index]))) // #define CSTATE_MUT(x) ((x)->line->chains_state)[self->chain_index] -// #define ISALIVE(x) (CSTATE(x) != NULL) +// #define isAlive(x) (CSTATE(x) != NULL) // typedef struct oss_server_state_s // { @@ -131,7 +131,7 @@ // if (status == SSLSTATUS_WANT_IO) // do // { -// shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); +// shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); // size_t avail = rCap(buf); // n = BIO_read(cstate->wbio, rawBuf(buf), avail); // // assert(-1 == BIO_read(cstate->wbio, rawBuf(buf), avail)); @@ -152,12 +152,12 @@ // { // // If BIO_should_retry() is false then the cause is an error condition. // reuseContextBuffer(c); -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // goto failed; // } // else // { -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // } // } while (n > 0); @@ -196,7 +196,7 @@ // /* The encrypted data is now in the input bio so now we can perform actual // * read of unencrypted data. */ -// shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); +// shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); // shiftl(buf, 8192 / 2); // setLen(buf, 0); // do @@ -230,7 +230,7 @@ // } // else // { -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // } // status = get_sslstatus(cstate->ssl, n); @@ -240,7 +240,7 @@ // if (status == SSLSTATUS_WANT_IO) // do // { -// shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); +// shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); // size_t avail = rCap(buf); // n = BIO_read(cstate->wbio, rawBuf(buf), avail); @@ -261,7 +261,7 @@ // else if (!BIO_should_retry(cstate->wbio)) // { // // If BIO_should_retry() is false then the cause is an error condition. -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // reuseContextBuffer(c); // destroyContext(c); @@ -269,7 +269,7 @@ // } // else // { -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // } // } while (n > 0); @@ -362,7 +362,7 @@ // do // { -// shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); +// shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); // size_t avail = rCap(buf); // n = BIO_read(cstate->wbio, rawBuf(buf), avail); // if (n > 0) @@ -383,13 +383,13 @@ // else if (!BIO_should_retry(cstate->wbio)) // { // // If BIO_should_retry() is false then the cause is an error condition. -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // reuseContextBuffer(c); // goto failed_after_establishment; // } // else // { -// reuseBuffer(buffer_pools[c->line->tid], buf); +// reuseBuffer(getContextBufferPool(c), buf); // } // } while (n > 0); // } diff --git a/tunnels/server/header/header_server.c b/tunnels/server/header/header_server.c index 4cdb25a9..cef899cb 100644 --- a/tunnels/server/header/header_server.c +++ b/tunnels/server/header/header_server.c @@ -18,7 +18,9 @@ typedef struct header_server_state_s typedef struct header_server_con_state_s { - bool init_sent; + bool init_sent; + bool first_sent; + shift_buffer_t *buf; } header_server_con_state_t; @@ -28,19 +30,22 @@ static void upStream(tunnel_t *self, context_t *c) header_server_con_state_t *cstate = CSTATE(c); if (c->payload != NULL) { - if (c->first) + if (! cstate->init_sent) { - - shift_buffer_t *buf = c->payload; - if (bufLen(buf) < 2) + if (cstate->buf) { - reuseContextBuffer(c); - self->dw->downStream(self->dw, newFinContext(c->line)); + cstate->buf = appendBufferMerge(getContextBufferPool(c), cstate->buf, c->payload); + c->payload = cstate->buf; + } + if (bufLen(c->payload) < 2) + { + cstate->buf = c->payload; + c->payload = NULL; destroyContext(c); return; } - - uint16_t port = 0; + shift_buffer_t *buf = c->payload; + uint16_t port = 0; switch ((enum header_dynamic_value_status) state->data.status) { case kHdvsConstant: @@ -55,30 +60,42 @@ static void upStream(tunnel_t *self, context_t *c) destroyContext(c); return; } - - break; - - default: break; } cstate->init_sent = true; self->up->upStream(self->up, newInitContext(c->line)); - if (! isAlive(c->line)) + if (bufLen(buf) > 0) + { + if (! isAlive(c->line)) + { + reuseContextBuffer(c); + destroyContext(c); + return; + } + } + else { reuseContextBuffer(c); destroyContext(c); return; } } + if (! cstate->first_sent) + { + c->first = true; + cstate->first_sent = true; + } + self->up->upStream(self->up, c); + } else if (c->init) { cstate = malloc(sizeof(header_server_con_state_t)); cstate->init_sent = false; + cstate->first_sent = false; CSTATE_MUT(c) = cstate; destroyContext(c); - return; } else if (c->fin) { @@ -93,10 +110,7 @@ static void upStream(tunnel_t *self, context_t *c) { destroyContext(c); } - return; } - - self->up->upStream(self->up, c); } static inline void downStream(tunnel_t *self, context_t *c) diff --git a/tunnels/server/http2/helpers.h b/tunnels/server/http2/helpers.h index 492e2e77..0c8db90d 100644 --- a/tunnels/server/http2/helpers.h +++ b/tunnels/server/http2/helpers.h @@ -28,7 +28,7 @@ static nghttp2_nv makeNv2(const char *name, const char *value, int namelen, int static void printFrameHd(const nghttp2_frame_hd *hd) { LOGD("[frame] length=%d type=%x flags=%x stream_id=%d\n", (int) hd->length, (int) hd->type, (int) hd->flags, - hd->stream_id); + hd->stream_id); } static void addStream(http2_server_con_state_t *con, http2_server_child_con_state_t *stream) @@ -51,7 +51,7 @@ static void removeStream(http2_server_con_state_t *con, http2_server_child_con_s } } http2_server_child_con_state_t *createHttp2Stream(http2_server_con_state_t *con, line_t *this_line, - tunnel_t *target_tun, int32_t stream_id) + tunnel_t *target_tun, int32_t stream_id) { http2_server_child_con_state_t *stream; stream = malloc(sizeof(http2_server_child_con_state_t)); @@ -73,9 +73,10 @@ static void deleteHttp2Stream(http2_server_child_con_state_t *stream) stream->line->chains_state[stream->tunnel->chain_index - 1] = NULL; destroyBufferStream(stream->chunkbs); destroyLine(stream->line); - if (stream->request_path) { + if (stream->request_path) + { free(stream->request_path); -} + } free(stream); } @@ -116,4 +117,3 @@ static void deleteHttp2Connection(http2_server_con_state_t *con) con->line->chains_state[self->chain_index] = NULL; free(con); } - diff --git a/tunnels/server/http2/http2_server.c b/tunnels/server/http2/http2_server.c index 29d84183..afa0bd30 100644 --- a/tunnels/server/http2/http2_server.c +++ b/tunnels/server/http2/http2_server.c @@ -17,7 +17,7 @@ static int onHeaderCallback(nghttp2_session *session, const nghttp2_frame *frame } // LOGD("onHeaderCallback\n"); - print_frame_hd(&frame->hd); + printFrameHd(&frame->hd); const char *name = (const char *) _name; const char *value = (const char *) _value; // LOGD("%s: %s\n", name, value); @@ -81,7 +81,7 @@ static int onDataChunkRecvCallback(nghttp2_session *session, uint8_t flags, int3 if (con->content_type == kApplicationGrpc) { - shift_buffer_t *buf = popBuffer(buffer_pools[con->line->tid]); + shift_buffer_t *buf = popBuffer(getLineBufferPool(con->line)); shiftl(buf, lCap(buf) / 2); // use some unused space setLen(buf, len); writeRaw(buf, data, len); @@ -95,7 +95,7 @@ static int onDataChunkRecvCallback(nghttp2_session *session, uint8_t flags, int3 grpc_message_hd msghd; grpcMessageHdUnpack(&msghd, rawBuf(gheader_buf)); stream->bytes_needed = msghd.length; - reuseBuffer(buffer_pools[con->line->tid], gheader_buf); + reuseBuffer(getLineBufferPool(con->line), gheader_buf); } if (stream->bytes_needed > 0 && bufferStreamLen(stream->chunkbs) >= stream->bytes_needed) { @@ -121,7 +121,7 @@ static int onDataChunkRecvCallback(nghttp2_session *session, uint8_t flags, int3 } else { - shift_buffer_t *buf = popBuffer(buffer_pools[con->line->tid]); + shift_buffer_t *buf = popBuffer(getLineBufferPool(con->line)); shiftl(buf, lCap(buf) / 2); // use some unused space setLen(buf, len); writeRaw(buf, data, len); @@ -146,7 +146,7 @@ static int onFrameRecvCallback(nghttp2_session *session, const nghttp2_frame *fr return 0; } // LOGD("onFrameRecvCallback\n"); - print_frame_hd(&frame->hd); + printFrameHd(&frame->hd); http2_server_con_state_t *con = (http2_server_con_state_t *) userdata; tunnel_t * self = con->tunnel; @@ -187,7 +187,7 @@ static int onFrameRecvCallback(nghttp2_session *session, const nghttp2_frame *fr context_t *fc = newFinContext(stream->line); tunnel_t * dest = stream->tunnel; removeStream(con, stream); - delete_http2_stream(stream); + deleteHttp2Stream(stream); CSTATE_MUT(fc) = NULL; dest->upStream(dest, fc); @@ -392,7 +392,7 @@ static inline void downStream(tunnel_t *self, context_t *c) nghttp2_session_set_stream_user_data(con->session, stream->stream_id, NULL); removeStream(con, stream); - delete_http2_stream(stream); + deleteHttp2Stream(stream); CSTATE_MUT(c) = NULL; while (trySendResponse(self, con, 0, NULL, NULL)) diff --git a/tunnels/server/openssl/openssl_server.c b/tunnels/server/openssl/openssl_server.c index 75d5c604..eb67d4d7 100644 --- a/tunnels/server/openssl/openssl_server.c +++ b/tunnels/server/openssl/openssl_server.c @@ -236,7 +236,7 @@ static inline void upStream(tunnel_t *self, context_t *c) { do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); size_t avail = rCap(buf); n = BIO_read(cstate->wbio, rawBufMut(buf), avail); // assert(-1 == BIO_read(cstate->wbio, rawBuf(buf), avail)); @@ -257,12 +257,12 @@ static inline void upStream(tunnel_t *self, context_t *c) { // If BIO_should_retry() is false then the cause is an error condition. reuseContextBuffer(c); - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); goto disconnect; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } @@ -318,7 +318,7 @@ static inline void upStream(tunnel_t *self, context_t *c) do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); shiftl(buf, 8192 / 2); setLen(buf, 0); size_t avail = rCap(buf); @@ -344,7 +344,7 @@ static inline void upStream(tunnel_t *self, context_t *c) } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); @@ -357,7 +357,7 @@ static inline void upStream(tunnel_t *self, context_t *c) { do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); size_t avail = rCap(buf); n = BIO_read(cstate->wbio, rawBufMut(buf), avail); @@ -378,13 +378,13 @@ static inline void upStream(tunnel_t *self, context_t *c) else if (! BIO_should_retry(cstate->wbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); reuseContextBuffer(c); goto failed_after_establishment; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } @@ -410,7 +410,7 @@ static inline void upStream(tunnel_t *self, context_t *c) cstate->rbio = BIO_new(BIO_s_mem()); cstate->wbio = BIO_new(BIO_s_mem()); cstate->ssl = SSL_new(state->ssl_context); - cstate->fallback_buf = newBufferStream(buffer_pools[c->line->tid]); + cstate->fallback_buf = newBufferStream(getContextBufferPool(c)); SSL_set_accept_state(cstate->ssl); /* sets ssl to work in server mode. */ SSL_set_bio(cstate->ssl, cstate->rbio, cstate->wbio); if (state->anti_tit) @@ -510,7 +510,7 @@ static inline void downStream(tunnel_t *self, context_t *c) do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); size_t avail = rCap(buf); n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) @@ -530,13 +530,13 @@ static inline void downStream(tunnel_t *self, context_t *c) else if (! BIO_should_retry(cstate->wbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); reuseContextBuffer(c); goto failed_after_establishment; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } diff --git a/tunnels/server/preconnect/preconnect_server.c b/tunnels/server/preconnect/preconnect_server.c index ce7bb4e1..67459a24 100644 --- a/tunnels/server/preconnect/preconnect_server.c +++ b/tunnels/server/preconnect/preconnect_server.c @@ -14,7 +14,7 @@ typedef struct preconnect_server_con_state_s } preconnect_server_con_state_t; -static void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upstream) +static void upStream(tunnel_t *self, context_t *c) { if (c->payload != NULL) @@ -31,7 +31,7 @@ static void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upstream) return; } } - upstream(self->up, c); + self->up->upStream(self->up, c); } else if (c->init) { @@ -49,7 +49,7 @@ static void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upstream) CSTATE_MUT(c) = NULL; if (send_fin) { - upstream(self->up, c); + self->up->upStream(self->up, c); } else { @@ -60,7 +60,7 @@ static void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upstream) } } -static inline void downStream(tunnel_t *self, context_t *c, TunnelFlowRoutine downstream) +static inline void downStream(tunnel_t *self, context_t *c) { if (c->fin) @@ -69,25 +69,10 @@ static inline void downStream(tunnel_t *self, context_t *c, TunnelFlowRoutine do CSTATE_MUT(c) = NULL; } - downstream(self->dw, c); + self->dw->downStream(self->dw, c); } -static void preConnectServerUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c, self->up->upStream); -} -static void preConnectServerPacketUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c, self->up->packetUpStream); -} -static void preConnectServerDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c, self->dw->downStream); -} -static void preConnectServerPacketDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c, self->dw->packetDownStream); -} + tunnel_t *newPreConnectServer(node_instance_context_t *instance_info) { diff --git a/tunnels/server/protobuf/protobuf_server.c b/tunnels/server/protobuf/protobuf_server.c index a65f5e57..0381460d 100644 --- a/tunnels/server/protobuf/protobuf_server.c +++ b/tunnels/server/protobuf/protobuf_server.c @@ -21,7 +21,6 @@ typedef struct protobuf_server_state_s typedef struct protobuf_server_con_state_s { buffer_stream_t *stream_buf; - size_t wanted; bool first_sent; } protobuf_server_con_state_t; @@ -32,7 +31,7 @@ static void cleanup(protobuf_server_con_state_t *cstate) free(cstate); } -static inline void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upstream, TunnelFlowRoutine downstream) +static inline void upStream(tunnel_t *self, context_t *c) { protobuf_server_con_state_t *cstate = CSTATE(c); @@ -60,7 +59,8 @@ static inline void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upst { if (uleb_encoded_buf[0] = 0x0) { - // invalid + LOGE("ProtoBufServer: rejected, invalid data"); + goto disconnect; } @@ -70,7 +70,8 @@ static inline void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upst } if (data_len > MAX_PACKET_SIZE) { - // overflow + LOGE("ProtoBufServer: rejected, size too large %zu (%zu passed %lu left)", data_len, bytes_passed, + bufferStreamLen(bstream)); goto disconnect; } if (! (bufferStreamLen(bstream) >= 1 + bytes_passed + data_len)) @@ -86,7 +87,7 @@ static inline void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upst upstream_ctx->first = true; cstate->first_sent = true; } - upstream(self->up, upstream_ctx); + self->up->upStream(self->up, upstream_ctx); if (! isAlive(c->line)) { destroyContext(c); @@ -99,9 +100,8 @@ static inline void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upst if (c->init) { cstate = malloc(sizeof(protobuf_server_con_state_t)); - cstate->wanted = 0; cstate->first_sent = false; - cstate->stream_buf = newBufferStream(buffer_pools[c->line->tid]); + cstate->stream_buf = newBufferStream(getContextBufferPool(c)); CSTATE_MUT(c) = cstate; } else if (c->fin) @@ -109,27 +109,27 @@ static inline void upStream(tunnel_t *self, context_t *c, TunnelFlowRoutine upst cleanup(cstate); CSTATE_MUT(c) = NULL; } - upstream(self->up, c); + self->up->upStream(self->up, c); } return; disconnect: cleanup(cstate); CSTATE_MUT(c) = NULL; - upstream(self->up, newFinContext(c->line)); - downstream(self->dw, newFinContext(c->line)); + self->up->upStream(self->up, newFinContext(c->line)); + self->dw->downStream(self->dw, newFinContext(c->line)); destroyContext(c); } -static inline void downStream(tunnel_t *self, context_t *c, TunnelFlowRoutine downstream) +static inline void downStream(tunnel_t *self, context_t *c) { if (c->payload != NULL) { size_t blen = bufLen(c->payload); - size_t calculated_bytes = size_uleb128(blen); + size_t calculated_bytes = sizeUleb128(blen); shiftl(c->payload, calculated_bytes + 1); - write_uleb128(rawBufMut(c->payload) + 1, blen); + writeUleb128(rawBufMut(c->payload) + 1, blen); writeUI8(c->payload, '\n'); } else @@ -141,11 +141,9 @@ static inline void downStream(tunnel_t *self, context_t *c, TunnelFlowRoutine do CSTATE_MUT(c) = NULL; } } - downstream(self->dw, c); + self->dw->downStream(self->dw, c); } - - tunnel_t *newProtoBufServer(node_instance_context_t *instance_info) { diff --git a/tunnels/server/reverse/reverse_server.c b/tunnels/server/reverse/reverse_server.c index ee451f50..8c26ab49 100644 --- a/tunnels/server/reverse/reverse_server.c +++ b/tunnels/server/reverse/reverse_server.c @@ -35,7 +35,7 @@ static void flushWriteQueue(tunnel_t *self, reverse_server_con_state_t *cstate) else { cstate->signal_sent = true; - shift_buffer_t *buf = popBuffer(buffer_pools[cstate->d->tid]); + shift_buffer_t *buf = popBuffer(getLineBufferPool(cstate->d)); shiftl(buf, 1); writeUI8(buf, 0xFF); context_t *c = newContext(cstate->d); @@ -57,14 +57,14 @@ static inline void upStream(tunnel_t *self, context_t *c) else { // a real pair will not send that before it receives something - reuseBuffer(buffer_pools[c->line->tid], c->payload); + reuseBuffer(getContextBufferPool(c), c->payload); c->payload = NULL; destroyContext(c); } } else { - const unsigned int tid = c->line->tid; + const uint8_t tid = c->line->tid; thread_box_t * this_tb = &(state->threadlocal_pool[tid]); if (c->init) { @@ -76,7 +76,7 @@ static inline void upStream(tunnel_t *self, context_t *c) if (this_tb->u_count > 0) { reverse_server_con_state_t *ucstate = this_tb->u_cons_root.next; - remove_connection_u(this_tb, ucstate); + removeConnectionU(this_tb, ucstate); ucstate->d = c->line; ucstate->paired = true; CSTATE_D_MUT(c) = ucstate; @@ -86,9 +86,9 @@ static inline void upStream(tunnel_t *self, context_t *c) } else { - reverse_server_con_state_t *dcstate = create_cstate(false, c->line); + reverse_server_con_state_t *dcstate = createCstate(false, c->line); CSTATE_D_MUT(c) = dcstate; - add_connection_d(this_tb, dcstate); + addConnectionD(this_tb, dcstate); } destroyContext(c); } @@ -101,13 +101,13 @@ static inline void upStream(tunnel_t *self, context_t *c) { line_t *u_line = dcstate->u; (dcstate->u->chains_state)[state->chain_index_u] = NULL; - destroy_cstate(dcstate); + destroyCstate(dcstate); self->up->upStream(self->up, switchLine(c, u_line)); } else { - remove_connection_d(this_tb, dcstate); - destroy_cstate(dcstate); + removeConnectionD(this_tb, dcstate); + destroyCstate(dcstate); destroyContext(c); } } @@ -130,7 +130,7 @@ static inline void downStream(tunnel_t *self, context_t *c) } else { - const unsigned int tid = c->line->tid; + const uint8_t tid = c->line->tid; thread_box_t * this_tb = &(state->threadlocal_pool[tid]); if (c->init) { @@ -143,7 +143,7 @@ static inline void downStream(tunnel_t *self, context_t *c) { reverse_server_con_state_t *dcstate = this_tb->d_cons_root.next; - remove_connection_d(this_tb, dcstate); + removeConnectionD(this_tb, dcstate); dcstate->u = c->line; dcstate->paired = true; CSTATE_U_MUT(c) = dcstate; @@ -172,9 +172,9 @@ static inline void downStream(tunnel_t *self, context_t *c) else { LOGW("reverseServer: no peer left, waiting tid: %d", c->line->tid); - reverse_server_con_state_t *ucstate = create_cstate(true, c->line); + reverse_server_con_state_t *ucstate = createCstate(true, c->line); CSTATE_U_MUT(c) = ucstate; - add_connection_u(this_tb, ucstate); + addConnectionU(this_tb, ucstate); } destroyContext(c); } @@ -188,13 +188,13 @@ static inline void downStream(tunnel_t *self, context_t *c) line_t *d_line = ucstate->d; (ucstate->d->chains_state)[state->chain_index_d] = NULL; - destroy_cstate(ucstate); + destroyCstate(ucstate); self->dw->downStream(self->dw, switchLine(c, d_line)); } else { - remove_connection_u(this_tb, ucstate); - destroy_cstate(ucstate); + removeConnectionU(this_tb, ucstate); + destroyCstate(ucstate); destroyContext(c); } } @@ -230,5 +230,5 @@ tunnel_t *destroyReverseServer(tunnel_t *self) } tunnel_metadata_t getMetadataReverseServer() { - return (tunnel_metadata_t){.version = 0001, .flags = TFLAG_ROUTE_STARTER}; + return (tunnel_metadata_t){.version = 0001, .flags = kNodeFlagChainHead}; } \ No newline at end of file diff --git a/tunnels/server/trojan/auth/trojan_auth_server.c b/tunnels/server/trojan/auth/trojan_auth_server.c index 6a69cdba..a9fa08a3 100644 --- a/tunnels/server/trojan/auth/trojan_auth_server.c +++ b/tunnels/server/trojan/auth/trojan_auth_server.c @@ -84,8 +84,11 @@ static inline void upStream(tunnel_t *self, context_t *c) // gettimeofday(&tv1, NULL); { - // the payload must not come buffeered here (gfw can do this but not the client) + // beware! trojan auth will not use stream buffer, at least the auth chunk must come in first sequence + // the payload must not come buffeered here (gfw can do this and detect trojan authentication + // but the client is not supposed to send small segments) // so , if its incomplete we go to fallback! + // this is also mentioned in standard trojan docs (first packet also contains part of final payload) size_t len = bufLen(c->payload); if (len < (sizeof(sha224_hex_t) + CRLF_LEN)) { @@ -107,14 +110,14 @@ static inline void upStream(tunnel_t *self, context_t *c) if (find_result.ref == hmap_users_t_end(&(state->users)).ref) { // user not in database - LOGW("TrojanAuthServer: a trojan-user rejecetd because not found in database"); + LOGW("TrojanAuthServer: a trojan-user rejected because not found in database"); goto failed; } trojan_user_t *tuser = (find_result.ref->second); if (! tuser->user.enable) { // user disabled - LOGW("TrojanAuthServer: user \"%s\" rejecetd because not enabled", tuser->user.name); + LOGW("TrojanAuthServer: user \"%s\" rejected because not enabled", tuser->user.name); goto failed; } @@ -136,7 +139,6 @@ static inline void upStream(tunnel_t *self, context_t *c) self->up->upStream(self->up, c); } // gettimeofday(&tv2, NULL); - // double time_spent = (double)(tv2.tv_usec - tv1.tv_usec) / 1000000 + (double)(tv2.tv_sec - // tv1.tv_sec); LOGD("Auth: took %lf sec", time_spent); return; diff --git a/tunnels/server/trojan/socks/trojan_socks_server.c b/tunnels/server/trojan/socks/trojan_socks_server.c index 9810af79..90d36f9d 100644 --- a/tunnels/server/trojan/socks/trojan_socks_server.c +++ b/tunnels/server/trojan/socks/trojan_socks_server.c @@ -4,7 +4,7 @@ #include "loggers/network_logger.h" #include "utils/stringutils.h" #include "utils/userutils.h" - +#include "utils/sockutils.h" #define CRLF_LEN 2 @@ -29,7 +29,6 @@ typedef struct trojan_socks_server_con_state_s { bool init_sent; bool first_sent; - bool is_udp_forward; buffer_stream_t *udp_buf; @@ -79,14 +78,13 @@ static bool parseAddress(context_t *c) socket_context_t *dest_context = &(c->line->dest_ctx); enum trojan_cmd command = ((unsigned char *) rawBuf(c->payload))[0]; enum trojan_atyp address_type = ((unsigned char *) rawBuf(c->payload))[1]; - dest_context->acmd = (enum socket_address_cmd)(command); - dest_context->address_type = (enum socket_address_type)(address_type); + dest_context->address_type = (enum socket_address_type)(address_type); shiftr(c->payload, 2); switch (command) { case kTrojancmdConnect: - dest_context->protocol = IPPROTO_TCP; + dest_context->address_protocol = kSapTcp; switch (address_type) { case kTrojanatypIpV4: @@ -132,7 +130,7 @@ static bool parseAddress(context_t *c) } break; case kTrojancmdUdpAssociate: - dest_context->protocol = IPPROTO_UDP; + dest_context->address_protocol = kSapUdp; switch (address_type) { @@ -205,10 +203,10 @@ static bool processUdp(tunnel_t *self, trojan_socks_server_con_state_t *cstate, return true; } - uint8_t address_type = bufferStreamViewByteAt(bstream, 0); - uint16_t packet_size = 0; - uint16_t full_len = 0; - uint8_t domain_len = 0; + uint8_t address_type = bufferStreamViewByteAt(bstream, 0); + uint16_t packet_size = 0; + uint16_t full_len = 0; + uint8_t domain_len = 0; switch (address_type) { case kTrojanatypIpV4: @@ -301,7 +299,7 @@ static bool processUdp(tunnel_t *self, trojan_socks_server_con_state_t *cstate, { case kTrojanatypIpV4: dest_context->addr.sa.sa_family = AF_INET; - dest_context->address_type = kSatIPV4; + dest_context->address_type = kSatIPV4; memcpy(&(dest_context->addr.sin.sin_addr), rawBuf(c->payload), 4); shiftr(c->payload, 4); if (! cstate->first_sent) @@ -330,7 +328,7 @@ static bool processUdp(tunnel_t *self, trojan_socks_server_con_state_t *cstate, break; case kTrojanatypIpV6: - dest_context->address_type = kSatIPV6; + dest_context->address_type = kSatIPV6; dest_context->addr.sa.sa_family = AF_INET6; memcpy(&(dest_context->addr.sin.sin_addr), rawBuf(c->payload), 16); shiftr(c->payload, 16); @@ -376,7 +374,7 @@ static bool processUdp(tunnel_t *self, trojan_socks_server_con_state_t *cstate, { context_t *up_init_ctx = newContextFrom(c); up_init_ctx->init = true; - self->up->packetUpStream(self->up, up_init_ctx); + self->up->upStream(self->up, up_init_ctx); if (! isAlive(c->line)) { LOGW("TrojanSocksServer: next node instantly closed the init with fin"); @@ -385,7 +383,7 @@ static bool processUdp(tunnel_t *self, trojan_socks_server_con_state_t *cstate, cstate->init_sent = true; } - self->up->packetUpStream(self->up, c); + self->up->upStream(self->up, c); // line is alvie because caller is holding a context, but still fin could received // and state is gone @@ -408,7 +406,7 @@ static inline void upStream(tunnel_t *self, context_t *c) trojan_socks_server_con_state_t *cstate = CSTATE(c); socket_context_t * dest_context = &(c->line->dest_ctx); - if (dest_context->protocol == IPPROTO_TCP) + if (dest_context->address_protocol == kSapTcp) { context_t *up_init_ctx = newContextFrom(c); up_init_ctx->init = true; @@ -422,11 +420,9 @@ static inline void upStream(tunnel_t *self, context_t *c) } cstate->init_sent = true; } - else if (dest_context->protocol == IPPROTO_UDP) + else if (dest_context->address_protocol == kSapUdp) { // udp will not call init here since no dest_context addr is available right now - cstate->is_udp_forward = true; - // self->up->packetUpStream(self->up, up_init_ctx); } if (bufLen(c->payload) <= 0) @@ -435,7 +431,7 @@ static inline void upStream(tunnel_t *self, context_t *c) destroyContext(c); return; } - if (dest_context->protocol == IPPROTO_TCP) + if (dest_context->address_protocol == kSapTcp) { if (! cstate->first_sent) { @@ -445,7 +441,7 @@ static inline void upStream(tunnel_t *self, context_t *c) self->up->upStream(self->up, c); return; } - if (dest_context->protocol == IPPROTO_UDP) + if (dest_context->address_protocol == kSapUdp) { bufferStreamPush(cstate->udp_buf, c->payload); c->payload = NULL; @@ -496,7 +492,7 @@ static inline void upStream(tunnel_t *self, context_t *c) { trojan_socks_server_con_state_t *cstate = CSTATE(c); - if (cstate->is_udp_forward) + if (c->line->dest_ctx.address_protocol == kSapUdp) { bufferStreamPush(cstate->udp_buf, c->payload); c->payload = NULL; @@ -537,7 +533,7 @@ static inline void upStream(tunnel_t *self, context_t *c) CSTATE_MUT(c) = malloc(sizeof(trojan_socks_server_con_state_t)); memset(CSTATE(c), 0, sizeof(trojan_socks_server_con_state_t)); trojan_socks_server_con_state_t *cstate = CSTATE(c); - cstate->udp_buf = newBufferStream(buffer_pools[c->line->tid]); + cstate->udp_buf = newBufferStream(getContextBufferPool(c)); allocateDomainBuffer(&(c->line->dest_ctx)); destroyContext(c); } @@ -545,20 +541,12 @@ static inline void upStream(tunnel_t *self, context_t *c) { trojan_socks_server_con_state_t *cstate = CSTATE(c); bool init_sent = cstate->init_sent; - bool is_udp = cstate->is_udp_forward; destroyBufferStream(cstate->udp_buf); free(cstate); CSTATE_MUT(c) = NULL; if (init_sent) { - if (is_udp) - { - self->up->packetUpStream(self->up, c); - } - else - { - self->up->upStream(self->up, c); - } + self->up->upStream(self->up, c); } else { @@ -570,7 +558,7 @@ static inline void upStream(tunnel_t *self, context_t *c) static inline void downStream(tunnel_t *self, context_t *c) { - trojan_socks_server_con_state_t *cstate = CSTATE(c); + trojan_socks_server_con_state_t *cstate = CSTATE(c); if (c->fin) { @@ -580,44 +568,23 @@ static inline void downStream(tunnel_t *self, context_t *c) self->dw->downStream(self->dw, c); return; } - if (cstate->is_udp_forward && c->payload != NULL) + if (c->line->dest_ctx.address_protocol == kSapUdp && c->payload != NULL) { makeUdpPacketAddress(c); } self->dw->downStream(self->dw, c); } -static void trojanSocksServerUpStream(tunnel_t *self, context_t *c) -{ - upStream(self, c); -} -static void trojanSocksServerPacketUpStream(tunnel_t *self, context_t *c) -{ - if (c->init || c->first) - { - LOGE("TrojanSocksServer: trojan protocol is not meant to work on top of udp"); - } - upStream(self, c); -} -static void trojanSocksServerDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c); -} -static void trojanSocksServerPacketDownStream(tunnel_t *self, context_t *c) -{ - downStream(self, c); -} - tunnel_t *newTrojanSocksServer(node_instance_context_t *instance_info) { (void) instance_info; trojan_socks_server_state_t *state = malloc(sizeof(trojan_socks_server_state_t)); memset(state, 0, sizeof(trojan_socks_server_state_t)); - tunnel_t *t = newTunnel(); - t->state = state; - t->upStream = &upStream; - t->downStream = &downStream; + tunnel_t *t = newTunnel(); + t->state = state; + t->upStream = &upStream; + t->downStream = &downStream; atomic_thread_fence(memory_order_release); return t; } @@ -625,7 +592,9 @@ api_result_t apiTrojanSocksServer(tunnel_t *self, const char *msg) { (void) self; (void) msg; - (void)(self); (void)(msg); return (api_result_t){0}; // TODO(root): + (void) (self); + (void) (msg); + return (api_result_t){0}; // TODO(root): } tunnel_t *destroyTrojanSocksServer(tunnel_t *self) diff --git a/tunnels/server/wolfssl/CMakeLists.txt b/tunnels/server/wolfssl/CMakeLists.txt index 06a9372c..c50ffa56 100644 --- a/tunnels/server/wolfssl/CMakeLists.txt +++ b/tunnels/server/wolfssl/CMakeLists.txt @@ -4,55 +4,62 @@ add_library(WolfSSLServer STATIC wolfssl_server.c ) -#cmake is not able to build fastest version of wolfssl yet (because all asm options are not provided in cmakelist), we used this: -# ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls --enable-intelasm --enable-aesni -# generate configure with autoreconf -i (sudo apt-get install autoconf) (sudo apt-get install libtool-bin) -# Note: before configure, add -# AC_DEFINE([NO_WOLFSSL_STUB], [1], [Description here]) -# to configure.ac ! - -# if compiling for ARM: ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls -# /src/.libs/libwolfssl.a +# This paragraph is disabled since wolfssl 5.7 update now has much better cmake interface +## ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls --enable-intelasm --enable-aesni +## generate configure with autoreconf -i (sudo apt-get install autoconf) (sudo apt-get install libtool-bin) +## Note: before configure, add +## AC_DEFINE([NO_WOLFSSL_STUB], [1], [Description here]) +## to configure.ac ! +## if compiling for ARM: ./configure --enable-distro --enable-sp=rsa2048,asm --enable-harden --enable-static --enable-fast-rsa --enable-opensslall --enable-opensslextra --enable-tls13 --disable-oldtls +## libs will be saved at: /src/.libs/libwolfssl.a #ww api target_include_directories(WolfSSLServer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../ww) target_link_libraries(WolfSSLServer ww) -# todo select correct processor -if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64") -target_link_libraries(WolfSSLServer libwolfssl_arm64.a) -else() -target_link_libraries(WolfSSLServer libwolfssl_amd64.a) -endif() -target_include_directories(WolfSSLServer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) +target_include_directories(WolfSSLServer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) # add dependencies include(${CMAKE_BINARY_DIR}/cmake/CPM.cmake) - +# todo (WOLFSSL_CRYPTOCB) check this option doing anything useful and required or not (enables padding settings like openssl?) CPMAddPackage( NAME wolfssl VERSION 5.6.6-stable GITHUB_REPOSITORY wolfSSL/wolfssl OPTIONS + "WOLFSSL_REPRODUCIBLE_BUILD ON" + "WOLFSSL_ALPN ON" + "WOLFSSL_HARDEN ON" "WOLFSSL_OPENSSLEXTRA ON" "WOLFSSL_OPENSSLALL ON" + "WOLFSSL_SNI ON" + "WOLFSSL_SESSION_TICKET ON" "WOLFSSL_EXAMPLES OFF" "WOLFSSL_CRYPT_TESTS OFF" - "WOLFSSL_EXAMPLES OFF" - "WOLFSSL_EXAMPLES OFF" + "WOLFSSL_ASYNC_THREADS OFF" "BUILD_SHARED_LIBS OFF" ) - +target_compile_definitions(wolfssl PRIVATE NO_WOLFSSL_STUB=1) target_compile_definitions(WolfSSLServer PRIVATE WolfSSLServer_VERSION=0.1) - - if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(WolfSSLServer PRIVATE DEBUG=1) endif() -target_include_directories(WolfSSLServer PRIVATE $) + + +# this code is used for linking with prebuilt .a (which you built with autoconf) +# target_link_directories(WolfSSLServer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../shared/wolfssl) +# if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64") +# target_link_libraries(WolfSSLServer libwolfssl_arm64.a) +# else() +# target_link_libraries(WolfSSLServer libwolfssl_amd64.a) +# endif() +# target_include_directories(WolfSSLServer PRIVATE $) + +# this code is used for linking with cmake built wolfssl +target_link_libraries(WolfSSLServer wolfssl) diff --git a/tunnels/server/wolfssl/wolfssl_server.c b/tunnels/server/wolfssl/wolfssl_server.c index e654d09c..09c52e7b 100644 --- a/tunnels/server/wolfssl/wolfssl_server.c +++ b/tunnels/server/wolfssl/wolfssl_server.c @@ -236,7 +236,7 @@ static inline void upStream(tunnel_t *self, context_t *c) { do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); size_t avail = rCap(buf); n = BIO_read(cstate->wbio, rawBufMut(buf), avail); // assert(-1 == BIO_read(cstate->wbio, rawBuf(buf), avail)); @@ -257,12 +257,12 @@ static inline void upStream(tunnel_t *self, context_t *c) { // If BIO_should_retry() is false then the cause is an error condition. reuseContextBuffer(c); - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); goto disconnect; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } @@ -318,7 +318,7 @@ static inline void upStream(tunnel_t *self, context_t *c) do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); shiftl(buf, 8192 / 2); setLen(buf, 0); size_t avail = rCap(buf); @@ -344,7 +344,7 @@ static inline void upStream(tunnel_t *self, context_t *c) } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); @@ -357,7 +357,7 @@ static inline void upStream(tunnel_t *self, context_t *c) { do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); size_t avail = rCap(buf); n = BIO_read(cstate->wbio, rawBufMut(buf), avail); @@ -378,13 +378,13 @@ static inline void upStream(tunnel_t *self, context_t *c) else if (! BIO_should_retry(cstate->wbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); reuseContextBuffer(c); goto failed_after_establishment; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } @@ -410,7 +410,7 @@ static inline void upStream(tunnel_t *self, context_t *c) cstate->rbio = BIO_new(BIO_s_mem()); cstate->wbio = BIO_new(BIO_s_mem()); cstate->ssl = SSL_new(state->ssl_context); - cstate->fallback_buf = newBufferStream(buffer_pools[c->line->tid]); + cstate->fallback_buf = newBufferStream(getContextBufferPool(c)); SSL_set_accept_state(cstate->ssl); /* sets ssl to work in server mode. */ SSL_set_bio(cstate->ssl, cstate->rbio, cstate->wbio); // if (state->anti_tit) @@ -507,7 +507,7 @@ static inline void downStream(tunnel_t *self, context_t *c) do { - shift_buffer_t *buf = popBuffer(buffer_pools[c->line->tid]); + shift_buffer_t *buf = popBuffer(getContextBufferPool(c)); size_t avail = rCap(buf); n = BIO_read(cstate->wbio, rawBufMut(buf), avail); if (n > 0) @@ -527,13 +527,13 @@ static inline void downStream(tunnel_t *self, context_t *c) else if (! BIO_should_retry(cstate->wbio)) { // If BIO_should_retry() is false then the cause is an error condition. - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); reuseContextBuffer(c); goto failed_after_establishment; } else { - reuseBuffer(buffer_pools[c->line->tid], buf); + reuseBuffer(getContextBufferPool(c), buf); } } while (n > 0); } @@ -685,7 +685,7 @@ tunnel_t *newWolfSSLServer(node_instance_context_t *instance_info) ssl_param->verify_peer = 0; // no mtls ssl_param->endpoint = kSslServer; - state->ssl_context = ssl_ctx_new(ssl_param); + state->ssl_context = sslCtxNew(ssl_param); // int brotli_alg = TLSEXT_comp_cert_brotli; // SSL_set1_cert_comp_preference(state->ssl_context,&brotli_alg,1); // SSL_compress_certs(state->ssl_context,TLSEXT_comp_cert_brotli); @@ -700,7 +700,7 @@ tunnel_t *newWolfSSLServer(node_instance_context_t *instance_info) return NULL; } - SSL_CTX_set_alpn_select_cb(state->ssl_context, on_alpn_select, NULL); + SSL_CTX_set_alpn_select_cb(state->ssl_context, onAlpnSelect, NULL); tunnel_t *t = newTunnel(); t->state = state; @@ -718,9 +718,6 @@ api_result_t apiWolfSSLServer(tunnel_t *self, const char *msg) { (void) self; (void) msg; - - (void) (self); - (void) (msg); return (api_result_t){0}; } diff --git a/tunnels/shared/protobuf/uleb128.h b/tunnels/shared/protobuf/uleb128.h index c1000d34..c9c9627b 100644 --- a/tunnels/shared/protobuf/uleb128.h +++ b/tunnels/shared/protobuf/uleb128.h @@ -39,7 +39,7 @@ static inline size_t readUleb128ToUint64(const unsigned char *restrict buffer_st return p - buffer_start; } -// writes and moves to right, use size_uleb128 to calculate the len before write +// writes and moves to right, use sizeUleb128 to calculate the len before write static inline void writeUleb128(unsigned char *p, size_t val) { unsigned char c; diff --git a/tunnels/shared/trojan/sha2.c b/tunnels/shared/trojan/sha2.c index b85f30c2..45773c7a 100644 --- a/tunnels/shared/trojan/sha2.c +++ b/tunnels/shared/trojan/sha2.c @@ -542,9 +542,9 @@ void sha224(const uint8 *message, uint64 len, uint8 *digest) { sha224_ctx ctx; - sha224_init(&ctx); - sha224_update(&ctx, message, len); - sha224_final(&ctx, digest); + sha224Init(&ctx); + sha224Update(&ctx, message, len); + sha224Final(&ctx, digest); } void sha224Init(sha224_ctx *ctx) @@ -653,9 +653,9 @@ void sha256(const uint8 *message, uint64 len, uint8 *digest) { sha256_ctx ctx; - sha256_init(&ctx); - sha256_update(&ctx, message, len); - sha256_final(&ctx, digest); + sha256Init(&ctx); + sha256Update(&ctx, message, len); + sha256Final(&ctx, digest); } void sha256Init(sha256_ctx *ctx) @@ -765,9 +765,9 @@ void sha384(const uint8 *message, uint64 len, uint8 *digest) { sha384_ctx ctx; - sha384_init(&ctx); - sha384_update(&ctx, message, len); - sha384_final(&ctx, digest); + sha384Init(&ctx); + sha384Update(&ctx, message, len); + sha384Final(&ctx, digest); } void sha384Init(sha384_ctx *ctx) @@ -875,9 +875,9 @@ void sha512(const uint8 *message, uint64 len, uint8 *digest) { sha512_ctx ctx; - sha512_init(&ctx); - sha512_update(&ctx, message, len); - sha512_final(&ctx, digest); + sha512Init(&ctx); + sha512Update(&ctx, message, len); + sha512Final(&ctx, digest); } void sha512Init(sha512_ctx *ctx) @@ -1020,12 +1020,12 @@ static void test_sha224_long_message(uint8 *digest) memset(message, 'a', sizeof(message)); - sha224_init(&ctx); + sha224Init(&ctx); for (i = 0; i < 10000000; i++) { - sha224_update(&ctx, message, sizeof(message)); + sha224Update(&ctx, message, sizeof(message)); } - sha224_final(&ctx, digest); + sha224Final(&ctx, digest); } static void test_sha256_long_message(uint8 *digest) @@ -1036,12 +1036,12 @@ static void test_sha256_long_message(uint8 *digest) memset(message, 'a', sizeof(message)); - sha256_init(&ctx); + sha256Init(&ctx); for (i = 0; i < 10000000; i++) { - sha256_update(&ctx, message, sizeof(message)); + sha256Update(&ctx, message, sizeof(message)); } - sha256_final(&ctx, digest); + sha256Final(&ctx, digest); } static void test_sha384_long_message(uint8 *digest) @@ -1052,12 +1052,12 @@ static void test_sha384_long_message(uint8 *digest) memset(message, 'a', sizeof(message)); - sha384_init(&ctx); + sha384Init(&ctx); for (i = 0; i < 10000000; i++) { - sha384_update(&ctx, message, sizeof(message)); + sha384Update(&ctx, message, sizeof(message)); } - sha384_final(&ctx, digest); + sha384Final(&ctx, digest); } static void test_sha512_long_message(uint8 *digest) @@ -1068,12 +1068,12 @@ static void test_sha512_long_message(uint8 *digest) memset(message, 'a', sizeof(message)); - sha512_init(&ctx); + sha512Init(&ctx); for (i = 0; i < 10000000; i++) { - sha512_update(&ctx, message, sizeof(message)); + sha512Update(&ctx, message, sizeof(message)); } - sha512_final(&ctx, digest); + sha512Final(&ctx, digest); } #endif /* TEST_VECTORS_LONG */ diff --git a/tunnels/shared/wolfssl/libwolfssl_arm64.a b/tunnels/shared/wolfssl/libwolfssl_arm64.a index c8b54875610eed610dfdb26b26b5b97ea6bcdfed..4fa4acac14c9b07c910d618f59da64664eab8052 100644 GIT binary patch delta 743898 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 ?-*x)IxxrGdhmjE1gV%694Av628Vs~j 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®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

Q1c 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

5oYIxezb<}q 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 delta 740722 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

!g*e`k`$T%Vfk@04?Uo2P6G6M@ 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 iQ?X4``zdK*Q%N{(9`YK7(cUrX7QOhf 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ⓈFvon2TVe6e``>>Ql_ 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 diff --git a/tunnels/shared/wolfssl/wolfssl_globals.h b/tunnels/shared/wolfssl/wolfssl_globals.h index 1bd2b2ff..66717454 100644 --- a/tunnels/shared/wolfssl/wolfssl_globals.h +++ b/tunnels/shared/wolfssl/wolfssl_globals.h @@ -2,11 +2,11 @@ #include "loggers/network_logger.h" #include "cacert.h" +#include #include #include #include #include -#include enum { kSslServer = 0, @@ -15,7 +15,7 @@ enum static int wolfssl_lib_initialized = false; -static void opensslGlobalInit() +static void wolfSslGlobalInit() { if (wolfssl_lib_initialized == 0) { @@ -50,7 +50,7 @@ typedef void *ssl_ctx_t; ///> SSL_CTX static ssl_ctx_t sslCtxNew(ssl_ctx_opt_t *param) { - opensslGlobalInit(); + wolfSslGlobalInit(); #if OPENSSL_VERSION_NUMBER < 0x10100000L SSL_CTX *ctx = SSL_CTX_new(SSLv23_method()); @@ -152,7 +152,7 @@ static ssl_ctx_t sslCtxNew(ssl_ctx_opt_t *param) static void printSSLState(const SSL *ssl) // NOLINT (ssl in unused problem) { - const char *current_state = SSL_state_string_long(s); + const char *current_state = SSL_state_string_long(ssl); LOGD("%s", current_state); } diff --git a/ww/CMakeLists.txt b/ww/CMakeLists.txt index 4b162826..3033cd2e 100644 --- a/ww/CMakeLists.txt +++ b/ww/CMakeLists.txt @@ -11,6 +11,7 @@ add_library(ww STATIC buffer_pool.c http_def.c cacert.c + sync_dns.c utils/utils.c managers/socket_manager.c managers/node_manager.c diff --git a/ww/buffer_pool.c b/ww/buffer_pool.c index 2ed667e1..4e297713 100644 --- a/ww/buffer_pool.c +++ b/ww/buffer_pool.c @@ -7,76 +7,74 @@ #include "loggers/network_logger.h" #endif -#define LOW_MEMORY 0 // no preallocation (very small) -#define MED1_MEMORY 1 // APPROX 10MB per thread -#define MED2_MEMORY 2 // APPROX 20MB per thread -#define HIG1_MEMORY 3 // APPROX 28MB per thread -#define HIG2_MEMORY 4 // APPROX 36MB per thread -#define MEMORY_PROFILE HIG2_MEMORY +#define LOW_MEMORY 0 // no preallocation (very small) +#define MED1_MEMORY 1 // APPROX 10MB per thread +#define MED2_MEMORY 2 // APPROX 20MB per thread +#define HIG1_MEMORY 3 // APPROX 28MB per thread +#define HIG2_MEMORY 4 // APPROX 36MB per thread + +#define MEMORY_PROFILE HIG2_MEMORY // todo (cmake) #define EVP_READ_BUFSIZE (1U << 15) // 32K -#define BUFFERPOOL_CONTAINER_LEN (50 + (250 * MEMORY_PROFILE)) +#define BUFFERPOOL_CONTAINER_LEN ((16 * 4) + ((16 * 16) * MEMORY_PROFILE)) #define BUFFER_SIZE ((MEMORY_PROFILE < MED2_MEMORY) ? 0 : EVP_READ_BUFSIZE) -static void firstCharge(buffer_pool_t *state) +static void firstCharge(buffer_pool_t *pool) { - // state->chunks = 1; - state->available = malloc(2 * BUFFERPOOL_CONTAINER_LEN * sizeof(shift_buffer_t *)); - for (size_t i = 0; i < BUFFERPOOL_CONTAINER_LEN; i++) { - state->available[i] = newShiftBuffer(BUFFER_SIZE); + pool->available[i] = newShiftBuffer(BUFFER_SIZE); } - state->len = BUFFERPOOL_CONTAINER_LEN; + pool->len = BUFFERPOOL_CONTAINER_LEN; } -static void reCharge(buffer_pool_t *state) +static void reCharge(buffer_pool_t *pool) { - const size_t increase = min((2 * BUFFERPOOL_CONTAINER_LEN - state->len), BUFFERPOOL_CONTAINER_LEN); - for (size_t i = state->len; i < (state->len + increase); i++) + const size_t increase = min((2 * BUFFERPOOL_CONTAINER_LEN - pool->len), BUFFERPOOL_CONTAINER_LEN); + for (size_t i = pool->len; i < (pool->len + increase); i++) { - state->available[i] = newShiftBuffer(BUFFER_SIZE); + pool->available[i] = newShiftBuffer(BUFFER_SIZE); } - state->len += increase; + pool->len += increase; #ifdef DEBUG - LOGD("BufferPool: allocated %d new buffers, %zu are in use", increase, state->in_use); + LOGD("BufferPool: allocated %d new buffers, %zu are in use", increase, pool->in_use); #endif } -static void giveMemBackToOs(buffer_pool_t *state) +static void giveMemBackToOs(buffer_pool_t *pool) { - const size_t decrease = min(state->len, BUFFERPOOL_CONTAINER_LEN); + const size_t decrease = min(pool->len, BUFFERPOOL_CONTAINER_LEN); - for (size_t i = state->len - decrease; i < state->len; i++) + for (size_t i = pool->len - decrease; i < pool->len; i++) { - destroyShiftBuffer(state->available[i]); + destroyShiftBuffer(pool->available[i]); } - state->len -= decrease; + pool->len -= decrease; #ifdef DEBUG - LOGD("BufferPool: freed %d buffers, %zu are in use", decrease, state->in_use); + LOGD("BufferPool: freed %d buffers, %zu are in use", decrease, pool->in_use); #endif malloc_trim(0); // y tho? } -shift_buffer_t *popBuffer(buffer_pool_t *state) +shift_buffer_t *popBuffer(buffer_pool_t *pool) { // return newShiftBuffer(BUFFER_SIZE); - if (state->len <= 0) + if (pool->len <= 0) { - reCharge(state); + reCharge(pool); } - --(state->len); - shift_buffer_t *result = state->available[state->len]; + --(pool->len); + shift_buffer_t *result = pool->available[pool->len]; #ifdef DEBUG - state->in_use += 1; + pool->in_use += 1; #endif return result; } -void reuseBuffer(buffer_pool_t *state, shift_buffer_t *b) +void reuseBuffer(buffer_pool_t *pool, shift_buffer_t *b) { // destroyShiftBuffer(b); // return; @@ -86,27 +84,43 @@ void reuseBuffer(buffer_pool_t *state, shift_buffer_t *b) return; } #ifdef DEBUG - state->in_use -= 1; + pool->in_use -= 1; #endif reset(b, BUFFER_SIZE); - state->available[state->len] = b; - ++(state->len); - if (state->len > BUFFERPOOL_CONTAINER_LEN + (BUFFERPOOL_CONTAINER_LEN / 2)) + pool->available[pool->len] = b; + ++(pool->len); + if (pool->len > (BUFFERPOOL_CONTAINER_LEN + (BUFFERPOOL_CONTAINER_LEN / 2))) { - giveMemBackToOs(state); + giveMemBackToOs(pool); } } -buffer_pool_t *createBufferPool() +shift_buffer_t *appendBufferMerge(buffer_pool_t *pool, shift_buffer_t *restrict b1, shift_buffer_t *restrict b2) { - buffer_pool_t *state = malloc(sizeof(buffer_pool_t)); - memset(state, 0, sizeof(buffer_pool_t)); + unsigned int b1_length = bufLen(b1); + unsigned int b2_length = bufLen(b2); + if (b1_length >= b2_length) + { + appendBuffer(b1, b2); + reuseBuffer(pool, b2); + return b1; + } + shiftl(b2, b1_length); + memcpy(rawBufMut(b2), rawBuf(b1), b1_length); + reuseBuffer(pool, b1); + return b2; +} - state->available = 0; - state->len = 0; +buffer_pool_t *createBufferPool() +{ + const int container_len = 2 * BUFFERPOOL_CONTAINER_LEN * sizeof(shift_buffer_t *); + buffer_pool_t *pool = malloc(sizeof(buffer_pool_t) + container_len); #ifdef DEBUG - state->in_use = 0; + memset(pool, 0xEE, sizeof(buffer_pool_t) + container_len); + pool->in_use = 0; #endif - firstCharge(state); - return state; + memset(pool, 0, sizeof(buffer_pool_t)); + pool->len = 0; + firstCharge(pool); + return pool; } diff --git a/ww/buffer_pool.h b/ww/buffer_pool.h index 42500344..be7b373e 100644 --- a/ww/buffer_pool.h +++ b/ww/buffer_pool.h @@ -6,31 +6,31 @@ #endif struct buffer_pool_s { - shift_buffer_t **available; - unsigned int len; + unsigned int len; #ifdef DEBUG atomic_size_t in_use; #endif + shift_buffer_t *available[]; }; typedef struct buffer_pool_s buffer_pool_t; buffer_pool_t * createBufferPool(); -shift_buffer_t *popBuffer(buffer_pool_t *state); -void reuseBuffer(buffer_pool_t *state, shift_buffer_t *b); - +shift_buffer_t *popBuffer(buffer_pool_t *pool); +void reuseBuffer(buffer_pool_t *pool, shift_buffer_t *b); +shift_buffer_t *appendBufferMerge(buffer_pool_t *pool, shift_buffer_t *restrict b1, shift_buffer_t *restrict b2); // [not used] when you change the owner thread of a buffer, you should // notify the original buffer pool that 1 buffer is lost form it // this however, is not used #ifdef DEBUG -static inline void notifyDetached(buffer_pool_t *state) +static inline void notifyDetached(buffer_pool_t *pool) { - state->in_use -= 1; + pool->in_use -= 1; } #else -static inline void notifyDetached(buffer_pool_t *state) +static inline void notifyDetached(buffer_pool_t *pool) { - (void) state; + (void) pool; } #endif diff --git a/ww/library_loader.h b/ww/library_loader.h index 3c664c26..b853be31 100644 --- a/ww/library_loader.h +++ b/ww/library_loader.h @@ -8,7 +8,7 @@ typedef struct tunnel_lib_s { hash_t hash_name; struct tunnel_s *(*creation_proc)(node_instance_context_t *instance_info); - api_result_t (*api_proc)(struct tunnel_s *instance, char *msg); + api_result_t (*api_proc)(struct tunnel_s *instance,const char *msg); struct tunnel_s *(*destroy_proc)(struct tunnel_s *instance); tunnel_metadata_t (*getmetadata_proc)(); diff --git a/ww/managers/node_manager.c b/ww/managers/node_manager.c index a524efff..6647aaa3 100644 --- a/ww/managers/node_manager.c +++ b/ww/managers/node_manager.c @@ -64,12 +64,14 @@ void runNode(node_t *n1, size_t chain_index) static void runNodes() { +begin:; c_foreach(p1, map_node_t, state->node_map) { node_t *n1 = p1.ref->second; if (n1 != NULL && n1->instance == NULL && n1->route_starter == true) { runNode(n1, 0); + goto begin; } } } @@ -138,7 +140,7 @@ static void cycleProcess() bool found = false; c_foreach(n1, map_node_t, state->node_map) { - if ((n1.ref->second->metadata.flags & TFLAG_ROUTE_STARTER) == TFLAG_ROUTE_STARTER) + if ((n1.ref->second->metadata.flags & kNodeFlagChainHead) == kNodeFlagChainHead) { found = true; n1.ref->second->route_starter = true; @@ -146,18 +148,61 @@ static void cycleProcess() } if (! found) { - LOGW("Node Map has detecetd 0 listener nodes..."); + LOGW("NodeMap: detecetd 0 chainhead nodes, the"); } } } +void registerNode(node_t *new_node, cJSON *node_settings) +{ + new_node->hash_name = CALC_HASH_BYTES(new_node->name, strlen(new_node->name)); + new_node->hash_type = CALC_HASH_BYTES(new_node->type, strlen(new_node->type)); + if (new_node->next) + { + new_node->hash_next = CALC_HASH_BYTES(new_node->next, strlen(new_node->next)); + } + // load lib + tunnel_lib_t lib = loadTunnelLibByHash(new_node->hash_type); + if (lib.hash_name == 0) + { + LOGF("NodeManager: node creation failure: library \"%s\" (hash: %lx) could not be loaded ", new_node->type, + new_node->hash_type); + exit(1); + } + else + { + LOGD("%-18s: library \"%s\" loaded successfully", new_node->name, new_node->type); + } + new_node->metadata = lib.getmetadata_proc(); + struct tunnel_lib_s *heap_lib = malloc(sizeof(struct tunnel_lib_s)); + memset(heap_lib, 0, sizeof(struct tunnel_lib_s)); + *heap_lib = lib; + new_node->lib = heap_lib; + + node_instance_context_t new_node_ctx = {0}; + + new_node_ctx.node_json = NULL; + new_node_ctx.node_settings_json = node_settings; + new_node_ctx.node = new_node; + new_node_ctx.node_file_handle = state->config_file; + new_node->instance_context = new_node_ctx; + map_node_t *map = &(state->node_map); + + if (map_node_t_contains(map, new_node->hash_name)) + { + LOGF("NodeManager: duplicate node \"%s\" (hash: %lx) ", new_node->name, new_node->hash_name); + exit(1); + } + map_node_t_insert(map, new_node->hash_name, new_node); +} + + static void startParsingFiles() { cJSON *nodes_json = state->config_file->nodes; cJSON *node_json = NULL; cJSON_ArrayForEach(node_json, nodes_json) { - node_t *new_node = malloc(sizeof(node_t)); memset(new_node, 0, sizeof(node_t)); if (! getStringFromJsonObject(&(new_node->name), node_json, "name")) @@ -166,7 +211,6 @@ static void startParsingFiles() state->config_file->file_path); exit(1); } - new_node->hash_name = CALC_HASH_BYTES(new_node->name, strlen(new_node->name)); if (! getStringFromJsonObject(&(new_node->type), node_json, "type")) { @@ -174,53 +218,9 @@ static void startParsingFiles() state->config_file->file_path); exit(1); } - new_node->hash_type = CALC_HASH_BYTES(new_node->type, strlen(new_node->type)); - - if (getStringFromJsonObject(&(new_node->next), node_json, "next")) - { - new_node->hash_next = CALC_HASH_BYTES(new_node->next, strlen(new_node->next)); - } - int int_ver = 0; - if (getIntFromJsonObject(&int_ver, node_json, "version")) - { - new_node->version = int_ver; - } - - // load lib - tunnel_lib_t lib = loadTunnelLibByHash(new_node->hash_type); - if (lib.hash_name == 0) - { - LOGF("NodeManager: node creation failure: library \"%s\" (hash: %lx) could not be loaded ", new_node->type, - new_node->hash_type); - exit(1); - } - else - { - LOGD("%-18s: library \"%s\" loaded successfully", new_node->name, new_node->type); - } - new_node->metadata = lib.getmetadata_proc(); - struct tunnel_lib_s *heap_lib = malloc(sizeof(struct tunnel_lib_s)); - memset(heap_lib, 0, sizeof(struct tunnel_lib_s)); - *heap_lib = lib; - new_node->lib = heap_lib; - - cJSON *js_settings = cJSON_GetObjectItemCaseSensitive(node_json, "settings"); - - node_instance_context_t new_node_ctx = {0}; - - new_node_ctx.node_json = node_json; - new_node_ctx.node_settings_json = js_settings; - new_node_ctx.self_node_handle = new_node; - new_node_ctx.self_file_handle = state->config_file; - new_node->instance_context = new_node_ctx; - map_node_t *map = &(state->node_map); - - if (map_node_t_contains(map, new_node->hash_name)) - { - LOGF("NodeManager: duplicate node \"%s\" (hash: %lx) ", new_node->name, new_node->hash_name); - exit(1); - } - map_node_t_insert(map, new_node->hash_name, new_node); + getStringFromJsonObject(&(new_node->next), node_json, "next"); + getIntFromJsonObjectOrDefault(&(new_node->version), node_json, "version", 0); + registerNode(new_node, cJSON_GetObjectItemCaseSensitive(node_json, "settings")); } cycleProcess(); pathWalk(); diff --git a/ww/managers/node_manager.h b/ww/managers/node_manager.h index 1a2d2166..88b98372 100644 --- a/ww/managers/node_manager.h +++ b/ww/managers/node_manager.h @@ -24,6 +24,7 @@ struct node_manager_s; void runNode(node_t *n1, size_t chain_index); node_t * getNode(hash_t hash_node_name); +void registerNode(node_t *new_node, cJSON *node_settings); void runConfigFile(config_file_t *config_file); struct node_manager_s *getNodeManager(); void setNodeManager(struct node_manager_s *state); diff --git a/ww/node.h b/ww/node.h index 70af2c11..f0884d9c 100644 --- a/ww/node.h +++ b/ww/node.h @@ -4,37 +4,42 @@ typedef struct node_instance_context_s { - struct cJSON *node_json; - struct cJSON *node_settings_json; // node_json -> settings - struct node_s *self_node_handle; - struct config_file_s *self_file_handle; - size_t chain_index; + struct cJSON * node_json; + struct cJSON * node_settings_json; // node_json -> settings + struct config_file_s *node_file_handle; + struct node_s * node; + size_t chain_index; } node_instance_context_t; +enum node_flags +{ + kNodeFlagNone = (1 << 0), + // this node can be a chain head (begin of the chain) + kNodeFlagChainHead = (1 << 1) + +}; typedef struct tunnel_metadata_s { - int32_t version; - int32_t flags; + int32_t version; + enum node_flags flags; } tunnel_metadata_t; -#define TFLAG_ROUTE_STARTER (1 << 0) - typedef struct node_s { - char *name; + char * name; hash_t hash_name; - char *type; + char * type; hash_t hash_type; - char *next; + char * next; hash_t hash_next; - size_t version; + uint32_t version; //------------ evaluated: - size_t refrenced; - bool route_starter; + uint32_t refrenced; + bool route_starter; - tunnel_metadata_t metadata; - struct tunnel_lib_s *lib; + tunnel_metadata_t metadata; + struct tunnel_lib_s * lib; node_instance_context_t instance_context; - struct tunnel_s *instance; + struct tunnel_s * instance; } node_t; diff --git a/ww/shiftbuffer.c b/ww/shiftbuffer.c index 9642403a..fed94eff 100644 --- a/ww/shiftbuffer.c +++ b/ww/shiftbuffer.c @@ -3,6 +3,7 @@ #include // for assert #include //cel,log2,pow +extern bool isShallow(shift_buffer_t *self); extern unsigned int lCap(shift_buffer_t *self); extern unsigned int rCap(shift_buffer_t *self); extern unsigned int bufLen(shift_buffer_t *self); @@ -139,3 +140,11 @@ void expand(shift_buffer_t *self, unsigned int increase) free(old_buf); } } + +void appendBuffer(shift_buffer_t *restrict root, shift_buffer_t *restrict buf) +{ + unsigned int root_length = bufLen(root); + unsigned int append_length = bufLen(buf); + setLen(root, root_length + append_length); + memcpy(rawBufMut(root) + root_length, rawBuf(buf), append_length); +} diff --git a/ww/shiftbuffer.h b/ww/shiftbuffer.h index ae3353af..afc0267d 100644 --- a/ww/shiftbuffer.h +++ b/ww/shiftbuffer.h @@ -27,6 +27,7 @@ shift_buffer_t *newShallowShiftBuffer(shift_buffer_t *owner); void reset(shift_buffer_t *self, unsigned int cap); void unShallow(shift_buffer_t *self); void expand(shift_buffer_t *self, unsigned int increase); +void appendBuffer(shift_buffer_t * restrict root, shift_buffer_t * restrict buf); inline bool isShallow(shift_buffer_t *self) { @@ -107,10 +108,9 @@ inline void readUI16(shift_buffer_t *self, uint16_t *dest) memcpy(dest, rawBuf(self), sizeof(uint16_t)); } - /* Call setLen to know how much memory you own before any kind of writing -*/ +*/ inline unsigned char *rawBufMut(shift_buffer_t *self) { @@ -146,4 +146,3 @@ inline void writeUI8(shift_buffer_t *self, uint8_t data) { writeRaw(self, &data, sizeof(uint8_t)); } - diff --git a/ww/sync_dns.c b/ww/sync_dns.c index b520358d..144c3fee 100644 --- a/ww/sync_dns.c +++ b/ww/sync_dns.c @@ -13,7 +13,7 @@ bool resolveContextSync(socket_context_t *sctx) #endif /* resolve domain */ { - if (sockaddr_set_ip_port(&(sctx->addr), sctx->domain, old_port) != 0) + if (sockaddr_set_ipport(&(sctx->addr), sctx->domain, old_port) != 0) { LOGE("SyncDns: resolve failed %s", sctx->domain); return false; diff --git a/ww/tunnel.c b/ww/tunnel.c index 3142e487..e1639888 100644 --- a/ww/tunnel.c +++ b/ww/tunnel.c @@ -1,16 +1,26 @@ #include "tunnel.h" #include "string.h" // memset -extern line_t * newLine(uint16_t tid); -extern uint8_t reserveChainStateIndex(line_t *l); -extern void destroyLine(line_t *l); -extern void destroyContext(context_t *c); -extern context_t *newContext(line_t *line); -extern context_t *newContextFrom(context_t *source); -extern context_t *newEstContext(line_t *line); -extern context_t *newFinContext(line_t *line); -extern context_t *newInitContext(line_t *line); -extern context_t *switchLine(context_t *c, line_t *line); +extern line_t * newLine(uint8_t tid); +extern uint8_t reserveChainStateIndex(line_t *l); +extern void destroyLine(line_t *l); +extern void destroyContext(context_t *c); +extern void internalUnRefLine(line_t *l); +extern bool isAlive(line_t *line); +extern void reuseContextBuffer(context_t *c); +extern bool isFullyAuthenticated(line_t *line); +extern bool isAuthenticated(line_t *line); +extern void markAuthenticated(line_t *line); +extern void markAuthenticationNodePresence(line_t *line); +extern context_t * newContext(line_t *line); +extern context_t * newContextFrom(context_t *source); +extern context_t * newEstContext(line_t *line); +extern context_t * newFinContext(line_t *line); +extern context_t * newInitContext(line_t *line); +extern context_t * switchLine(context_t *c, line_t *line); +extern buffer_pool_t *geBufferPool(uint8_t tid); +extern buffer_pool_t *getLineBufferPool(line_t *l); +extern buffer_pool_t *getContextBufferPool(context_t *c); // `from` upstreams to `to` void chainUp(tunnel_t *from, tunnel_t *to) @@ -21,7 +31,7 @@ void chainUp(tunnel_t *from, tunnel_t *to) void chainDown(tunnel_t *from, tunnel_t *to) { assert(to->dw == NULL); // 2 nodes cannot chain to 1 exact node - to->dw = from; + to->dw = from; } // `from` <-> `to` void chain(tunnel_t *from, tunnel_t *to) @@ -29,7 +39,6 @@ void chain(tunnel_t *from, tunnel_t *to) chainUp(from, to); chainDown(from, to); to->chain_index = from->chain_index + 1; - } tunnel_t *newTunnel() diff --git a/ww/tunnel.h b/ww/tunnel.h index 55897c8d..461127ca 100644 --- a/ww/tunnel.h +++ b/ww/tunnel.h @@ -14,14 +14,13 @@ typedef struct line_s { - hloop_t *loop; - uint16_t tid; - uint16_t refc; - uint16_t lcid; - uint8_t auth_cur; - uint8_t auth_max; - bool alive; - + uint8_t tid; + uint16_t refc; + uint8_t lcid; + uint8_t auth_cur; + uint8_t auth_max; + bool alive; + hloop_t * loop; socket_context_t src_ctx; socket_context_t dest_ctx; void * chains_state[]; @@ -67,7 +66,7 @@ void chainUp(tunnel_t *from, tunnel_t *to); void defaultUpStream(tunnel_t *self, context_t *c); void defaultDownStream(tunnel_t *self, context_t *c); -inline line_t *newLine(uint16_t tid) +inline line_t *newLine(uint8_t tid) { size_t size = sizeof(line_t) + (sizeof(void *) * MAX_CHAIN_LEN); line_t *result = malloc(size); @@ -93,7 +92,7 @@ inline uint8_t reserveChainStateIndex(line_t *l) l->lcid -= 1; return result; } -static inline void internalUnRefLine(line_t *l) +inline void internalUnRefLine(line_t *l) { l->refc -= 1; // check line @@ -204,9 +203,22 @@ inline bool isFullyAuthenticated(line_t *line) return line->auth_cur >= line->auth_max; } + +inline buffer_pool_t *geBufferPool(uint8_t tid) +{ + return buffer_pools[tid]; +} +inline buffer_pool_t *getLineBufferPool(line_t *l) +{ + return buffer_pools[l->tid]; +} +inline buffer_pool_t *getContextBufferPool(context_t *c) +{ + return buffer_pools[c->line->tid]; +} inline void reuseContextBuffer(context_t *c) { assert(c->payload != NULL); - reuseBuffer(buffer_pools[c->line->tid], c->payload); + reuseBuffer(getContextBufferPool(c), c->payload); c->payload = NULL; -} +} \ No newline at end of file diff --git a/ww/utils/sockutils.h b/ww/utils/sockutils.h index d7448154..07c24005 100644 --- a/ww/utils/sockutils.h +++ b/ww/utils/sockutils.h @@ -2,22 +2,22 @@ #include "basic_types.h" #include "hv/hsocket.h" -inline void socketAddrCopy(const sockaddr_u *restrict dest, const sockaddr_u *restrict source) +inline void sockAddrCopy(sockaddr_u *restrict dest, const sockaddr_u *restrict source) { if (source->sa.sa_family == AF_INET) { - memcpy(dest->sin.sin_addr.s_addr, source->sin.sin_addr.s_addr, sizeof(source->sin.sin_addr.s_addr)); + memcpy(&(dest->sin.sin_addr.s_addr), &(source->sin.sin_addr.s_addr), sizeof(source->sin.sin_addr.s_addr)); return; } - memcpy(dest->sin6.sin6_addr.s6_addr, source->sin6.sin6_addr.s6_addr, sizeof(source->sin6.sin6_addr.s6_addr)); + memcpy(&(dest->sin6.sin6_addr.s6_addr), &(source->sin6.sin6_addr.s6_addr), sizeof(source->sin6.sin6_addr.s6_addr)); } -inline bool socketCmpIPV4(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2) +inline bool sockAddrCmpIPV4(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2) { return (addr1->sin.sin_addr.s_addr == addr2->sin.sin_addr.s_addr); } -inline bool socketCmpIPV6(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2) +inline bool sockAddrCmpIPV6(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2) { int r = memcmp(addr1->sin6.sin6_addr.s6_addr, addr2->sin6.sin6_addr.s6_addr, sizeof(addr1->sin6.sin6_addr.s6_addr)); if (r != 0) @@ -35,9 +35,14 @@ inline bool socketCmpIPV6(const sockaddr_u *restrict addr1, const sockaddr_u *re return true; } -bool socketCmpIP(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2); -void copySocketContextAddr(socket_context_t *dest, const socket_context_t *source); -void copySocketContextPort(socket_context_t *dest, socket_context_t *source); +bool socketCmpIP(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2); +void copySocketContextAddr(socket_context_t *dest, const socket_context_t *source); +void copySocketContextPort(socket_context_t *dest, socket_context_t *source); +inline void setSocketContextPort(socket_context_t *dest, uint16_t port) +{ + dest->addr.sin.sin_port = port; +} + enum socket_address_type getHostAddrType(char *host); inline void allocateDomainBuffer(socket_context_t *scontext) @@ -51,10 +56,10 @@ inline void allocateDomainBuffer(socket_context_t *scontext) } } // len is max 255 since it is 8bit -inline void setSocketContextDomain(socket_context_t *restrict scontext, char *restrict domain, uint8_t len) +inline void setSocketContextDomain(socket_context_t *restrict scontext,const char *restrict domain, uint8_t len) { assert(scontext->domain != NULL); - domain[len] = 0x0; memcpy(scontext->domain, domain, len); + scontext->domain[len] = 0x0; scontext->domain_len = len; } \ No newline at end of file diff --git a/ww/utils/utils.c b/ww/utils/utils.c index 5342e4a8..b2e1dff8 100644 --- a/ww/utils/utils.c +++ b/ww/utils/utils.c @@ -12,11 +12,12 @@ #include #include -extern void socketAddrCopy(const sockaddr_u *restrict dest, const sockaddr_u *restrict source); -extern bool socketCmpIPV4(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2); -extern bool socketCmpIPV6(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2); +extern void sockAddrCopy(sockaddr_u *restrict dest, const sockaddr_u *restrict source); +extern bool sockAddrCmpIPV4(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2); +extern bool sockAddrCmpIPV6(const sockaddr_u *restrict addr1, const sockaddr_u *restrict addr2); extern void allocateDomainBuffer(socket_context_t *scontext); -extern void setSocketContextDomain(socket_context_t *restrict scontext, char *restrict domain, uint8_t len); +extern void setSocketContextDomain(socket_context_t *restrict scontext, const char *restrict domain, uint8_t len); +extern void setSocketContextPort(socket_context_t *dest, uint16_t port); char *readFile(const char *const path) { @@ -170,12 +171,12 @@ bool socketCmpIP(const sockaddr_u *restrict addr1, const sockaddr_u *restrict ad } if (addr1->sa.sa_family == AF_INET) { - return socketCmpIPV4(addr1, addr2); + return sockAddrCmpIPV4(addr1, addr2); } if (addr1->sa.sa_family == AF_INET6) { - return socketCmpIPV6(addr1, addr2); + return sockAddrCmpIPV6(addr1, addr2); } assert(! "unknown sa_family"); @@ -186,7 +187,7 @@ bool socketCmpIP(const sockaddr_u *restrict addr1, const sockaddr_u *restrict ad void copySocketContextAddr(socket_context_t *dest, const socket_context_t *const source) { dest->address_protocol = source->address_protocol; - dest->address_type = source->address_type; + dest->address_type = source->address_type; switch (dest->address_type) { case kSatIPV4: @@ -221,9 +222,8 @@ void copySocketContextAddr(socket_context_t *dest, const socket_context_t *const if (source->domain_resolved) { dest->domain_resolved = true; - socketAddrCopy(&(dest->addr), &(source->addr)); + sockAddrCopy(&(dest->addr), &(source->addr)); } - } break; diff --git a/ww/ww.c b/ww/ww.c index 2dd4ef8f..cf37145a 100644 --- a/ww/ww.c +++ b/ww/ww.c @@ -9,26 +9,26 @@ #include "managers/socket_manager.h" unsigned int workers_count = 0; -hthread_t *workers = NULL; -struct hloop_s **loops = NULL; -struct buffer_pool_s **buffer_pools = NULL; +hthread_t * workers = NULL; +struct hloop_s ** loops = NULL; +struct buffer_pool_s ** buffer_pools = NULL; struct socket_manager_s *socekt_manager = NULL; -struct node_manager_s *node_manager = NULL; -logger_t *core_logger = NULL; -logger_t *network_logger = NULL; -logger_t *dns_logger = NULL; +struct node_manager_s * node_manager = NULL; +logger_t * core_logger = NULL; +logger_t * network_logger = NULL; +logger_t * dns_logger = NULL; struct ww_runtime_state_s { unsigned int workers_count; - hthread_t *workers; - struct hloop_s **loops; - struct buffer_pool_s **buffer_pools; + hthread_t * workers; + struct hloop_s ** loops; + struct buffer_pool_s ** buffer_pools; struct socket_manager_s *socekt_manager; - struct node_manager_s *node_manager; - logger_t *core_logger; - logger_t *network_logger; - logger_t *dns_logger; + struct node_manager_s * node_manager; + logger_t * core_logger; + logger_t * network_logger; + logger_t * dns_logger; }; void setWW(struct ww_runtime_state_s *state) @@ -76,7 +76,7 @@ _Noreturn void runMainThread() exit(0); } -static HTHREAD_ROUTINE(worker_thread) //NOLINT +static HTHREAD_ROUTINE(worker_thread) // NOLINT { hloop_t *loop = (hloop_t *) userdata; hloop_run(loop); @@ -107,7 +107,12 @@ void createWW(ww_construction_data_t runtime_data) } workers_count = workers_count; - workers = (hthread_t *) malloc(sizeof(hthread_t) * workers_count); + if (workers_count <= 0 || workers_count > 255) + { + fprintf(stderr, "workers count was not in valid range, value: %u range:[1,255]", workers_count); + } + + workers = (hthread_t *) malloc(sizeof(hthread_t) * workers_count); loops = (hloop_t **) malloc(sizeof(hloop_t *) * workers_count); for (int i = 1; i < workers_count; ++i)