diff --git a/CMakeLists.txt b/CMakeLists.txt index aac8c5f04426ca81f1fac40998d1037ab873d5dd..3d1a9555e59e8c781a2ea134b60473007c8ba3f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 3.0) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.9-49") +set(CELLFRAME_SDK_NATIVE_VERSION "2.9-50") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") message("Cellframe modules: ${CELLFRAME_MODULES}") diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c index 0f669463b7dd1d43f2f6036f34b0e53b3392b6ea..59dd701d623573d569cc02b69ed6f14c95cdc517 100644 --- a/dap-sdk/net/core/dap_events_socket.c +++ b/dap-sdk/net/core/dap_events_socket.c @@ -1520,7 +1520,7 @@ void dap_events_socket_worker_poll_update_unsafe(dap_events_socket_t * a_esocket } } #elif defined (DAP_EVENTS_CAPS_POLL) - if( a_esocket->worker){ + if( a_esocket->worker && a_esocket->is_initalized){ if (a_esocket->poll_index < a_esocket->worker->poll_count ){ struct pollfd * l_poll = &a_esocket->worker->poll[a_esocket->poll_index]; l_poll->events = a_esocket->poll_base_flags | POLLERR ; @@ -1709,7 +1709,7 @@ void dap_events_socket_set_writable_unsafe( dap_events_socket_t *a_esocket, bool }else log_it(L_WARNING,"Trying to set readable/writable event, queue or timer thats you shouldnt do"); #else - if( a_esocket->worker ) + if( a_esocket->worker) dap_events_socket_worker_poll_update_unsafe(a_esocket); else if( a_esocket->proc_thread) dap_proc_thread_esocket_update_poll_flags(a_esocket->proc_thread,a_esocket ); diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c index 9d706da25f9151b2e1d2a34499a12043e4d96133..4320297355e5d9871176e03a54f6d01594d7d950 100644 --- a/dap-sdk/net/core/dap_worker.c +++ b/dap-sdk/net/core/dap_worker.c @@ -1102,7 +1102,7 @@ static bool s_socket_all_check_activity( void * a_arg) pthread_rwlock_rdlock(&l_worker->esocket_rwlock); HASH_ITER(hh_worker, l_worker->esockets, l_es, tmp ) { pthread_rwlock_unlock(&l_worker->esocket_rwlock); - if ( l_es->type == DESCRIPTOR_TYPE_SOCKET_CLIENT || l_es->type == DESCRIPTOR_TYPE_SOCKET_UDP ){ + if (l_es->type == DESCRIPTOR_TYPE_SOCKET_CLIENT){ if ( !(l_es->flags & DAP_SOCK_SIGNAL_CLOSE) && ( l_curtime >= (l_es->last_time_active + s_connection_timeout) ) && !l_es->no_close ) { log_it( L_INFO, "Socket %u timeout (diff %u ), closing...", l_es->socket, l_curtime - (time_t)l_es->last_time_active - s_connection_timeout ); diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index 03a5b5ae660e7ed7898e32a9a6446eb1e8986566..3db15516cfd0618fd36ff0cb48b729535fe12ed8 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -338,7 +338,8 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger, dap_chain_datum_token_t pthread_rwlock_unlock(&PVT(a_ledger)->tokens_rwlock); if (l_token_item) { - log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker); + if(s_debug_more) + log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker); return -3; } diff --git a/modules/global-db/dap_chain_global_db_driver_mdbx.c b/modules/global-db/dap_chain_global_db_driver_mdbx.c index 91151f0b2cb3ad35243ce8275fbe8cd1819f908f..ad31e9f059fc39cc2c972a9f374c7b684de29117 100644 --- a/modules/global-db/dap_chain_global_db_driver_mdbx.c +++ b/modules/global-db/dap_chain_global_db_driver_mdbx.c @@ -36,6 +36,8 @@ #include "dap_chain_global_db_driver_mdbx.h" +#ifdef DAP_CHAIN_GDB_ENGINE_MDBX + #define LOG_TAG "dap_chain_global_db_mdbx" static char *s_cdb_path = NULL; @@ -203,3 +205,4 @@ static int s_driver_callback_apply_store_obj(pdap_store_obj_t a_store_obj) return ret; } +#endif diff --git a/modules/global-db/dap_chain_global_db_driver_pgsql.c b/modules/global-db/dap_chain_global_db_driver_pgsql.c index e5297dbfa8b747af6d6b007e7186e8bfe7cc60f7..cf692542c7220a3e6d322c8c6c5519edaefcea61 100644 --- a/modules/global-db/dap_chain_global_db_driver_pgsql.c +++ b/modules/global-db/dap_chain_global_db_driver_pgsql.c @@ -27,7 +27,6 @@ #include <string.h> #include <pthread.h> #include <errno.h> -#include <pwd.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> @@ -39,9 +38,11 @@ #include "dap_file_utils.h" #include "dap_chain_global_db_driver_pgsql.h" +#ifdef DAP_CHAIN_GDB_ENGINE_PGSQL +#include <pwd.h> + #define LOG_TAG "db_pgsql" -#ifdef DAP_CHAIN_GDB_ENGINE_PGSQL struct dap_pgsql_conn_pool_item { PGconn *conn; int busy; @@ -223,7 +224,7 @@ int dap_db_driver_pgsql_start_transaction(void) */ int dap_db_driver_pgsql_end_transaction(void) { - if (s_trans_conn) + if (!s_trans_conn) return -1; PGresult *l_res = PQexec(s_trans_conn, "COMMIT"); if (PQresultStatus(l_res) != PGRES_COMMAND_OK) { @@ -292,6 +293,11 @@ int dap_db_driver_pgsql_apply_store_obj(dap_store_obj_t *a_store_obj) DAP_DELETE(a_store_obj->value); DAP_DELETE(a_store_obj->key); if (PQresultStatus(l_res) != PGRES_COMMAND_OK) { + if (s_trans_conn) { //we shouldn't fail within a transaacion + dap_db_driver_pgsql_end_transaction(); + dap_db_driver_pgsql_start_transaction(); + l_conn = s_pgsql_get_connection(); + } if (s_pgsql_create_group_table(a_store_obj->group, l_conn) == 0) { PQclear(l_res); l_res = PQexecParams(l_conn, l_query_str, 2, NULL, l_param_vals, l_param_lens, l_param_formats, 0); @@ -313,7 +319,8 @@ int dap_db_driver_pgsql_apply_store_obj(dap_store_obj_t *a_store_obj) // execute delete request l_res = PQexec(l_conn, l_query_str); if (PQresultStatus(l_res) != PGRES_COMMAND_OK) { - if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) { + const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE); + if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) { log_it(L_ERROR, "Delete object failed with message: \"%s\"", PQresultErrorMessage(l_res)); l_ret = -4; } @@ -378,7 +385,8 @@ dap_store_obj_t *dap_db_driver_pgsql_read_store_obj(const char *a_group, const c PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1); DAP_DELETE(l_query_str); if (PQresultStatus(l_res) != PGRES_TUPLES_OK) { - if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) + const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE); + if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) log_it(L_ERROR, "Read objects failed with message: \"%s\"", PQresultErrorMessage(l_res)); PQclear(l_res); s_pgsql_free_connection(l_conn); @@ -418,7 +426,8 @@ dap_store_obj_t *dap_db_driver_pgsql_read_last_store_obj(const char *a_group) PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1); DAP_DELETE(l_query_str); if (PQresultStatus(l_res) != PGRES_TUPLES_OK) { - if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) + const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE); + if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) log_it(L_ERROR, "Read last object failed with message: \"%s\"", PQresultErrorMessage(l_res)); PQclear(l_res); s_pgsql_free_connection(l_conn); @@ -461,7 +470,8 @@ dap_store_obj_t *dap_db_driver_pgsql_read_cond_store_obj(const char *a_group, ui PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1); DAP_DELETE(l_query_str); if (PQresultStatus(l_res) != PGRES_TUPLES_OK) { - if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) + const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE); + if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) log_it(L_ERROR, "Conditional read objects failed with message: \"%s\"", PQresultErrorMessage(l_res)); PQclear(l_res); s_pgsql_free_connection(l_conn); @@ -528,7 +538,8 @@ size_t dap_db_driver_pgsql_read_count_store(const char *a_group, uint64_t a_id) PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1); DAP_DELETE(l_query_str); if (PQresultStatus(l_res) != PGRES_TUPLES_OK) { - if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) + const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE); + if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) log_it(L_ERROR, "Count objects failed with message: \"%s\"", PQresultErrorMessage(l_res)); PQclear(l_res); s_pgsql_free_connection(l_conn); @@ -553,7 +564,8 @@ bool dap_db_driver_pgsql_is_obj(const char *a_group, const char *a_key) PGresult *l_res = PQexecParams(l_conn, l_query_str, 0, NULL, NULL, NULL, NULL, 1); DAP_DELETE(l_query_str); if (PQresultStatus(l_res) != PGRES_TUPLES_OK) { - if (strcmp(PQresultErrorField(l_res, PG_DIAG_SQLSTATE), PGSQL_INVALID_TABLE)) + const char *l_err = PQresultErrorField(l_res, PG_DIAG_SQLSTATE); + if (!l_err || strcmp(l_err, PGSQL_INVALID_TABLE)) log_it(L_ERROR, "Existance check of object failed with message: \"%s\"", PQresultErrorMessage(l_res)); PQclear(l_res); s_pgsql_free_connection(l_conn); diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 5cca4191f17e4e981847683065d2626ed67b4d5b..3c9cb9e875601a5f08362e93c40a163b1a0d313e 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -4328,7 +4328,7 @@ int cmd_gdb_import(int argc, char ** argv, void *arg_func, char ** a_str_reply) if (dap_chain_global_db_driver_appy(l_group_store, l_records_count)) { log_it(L_CRITICAL, "An error occured on importing group %s...", l_group_name); } - dap_store_obj_free(l_group_store, l_records_count); + //dap_store_obj_free(l_group_store, l_records_count); } json_object_put(l_json); return 0;