Browse Source

fix: BGP и чат больше не затирают адреса друг друга в node_addresses

- BGP DELETE: +AND socket_id != 0 — не трогает чат-адреса (invite/JOIN/WELCOME)
- Чат invite DELETE: +AND socket_id=0 — не трогает BGP-адреса
topo_upd
Evgeny 3 months ago
parent
commit
39a376e255
  1. 4
      src/topo_node_sqlite.c
  2. 4
      tools/chatgui/transport/chat_core.c

4
src/topo_node_sqlite.c

@ -139,9 +139,9 @@ int topo_node_sqlite_node_put(sqlite3* db, struct TOPO_NODEQ* nq) {
if (i > 0) pos += snprintf(del_sql + pos, sizeof(del_sql) - (size_t)pos, ",");
pos += snprintf(del_sql + pos, sizeof(del_sql) - (size_t)pos, "%d", (int)sock_ids[i]);
}
pos += snprintf(del_sql + pos, sizeof(del_sql) - (size_t)pos, ")");
pos += snprintf(del_sql + pos, sizeof(del_sql) - (size_t)pos, ") AND socket_id != 0");
} else {
snprintf(del_sql, sizeof(del_sql), "DELETE FROM node_addresses WHERE node_id=?");
snprintf(del_sql, sizeof(del_sql), "DELETE FROM node_addresses WHERE node_id=? AND socket_id != 0");
}
sqlite3_stmt* del_stmt = NULL;
if (sqlite3_prepare_v2(db, del_sql, -1, &del_stmt, NULL) == SQLITE_OK) {

4
tools/chatgui/transport/chat_core.c

@ -647,11 +647,11 @@ void chat_core_connect_from_invite(struct chat_invite* inv) {
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: [ADDR_SYNC] save_invite_addr node=0x%016llx addr_count=%d", CC_ID, (unsigned long long)node_id, inv->addr_count);
sqlite3_stmt* ds = NULL;
if (sqlite3_prepare_v2(g_cc.db,
"DELETE FROM node_addresses WHERE node_id=?", -1, &ds, NULL) == SQLITE_OK) {
"DELETE FROM node_addresses WHERE node_id=? AND socket_id=0", -1, &ds, NULL) == SQLITE_OK) {
sqlite3_bind_int64(ds, 1, (sqlite3_int64)node_id);
sqlite3_step(ds);
int deleted = sqlite3_changes(g_cc.db);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: [ADDR_SYNC] invite DELETE ALL for node=0x%016llx: %d rows deleted", CC_ID, (unsigned long long)node_id, deleted);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: [ADDR_SYNC] invite DELETE socket_id=0 for node=0x%016llx: %d rows deleted", CC_ID, (unsigned long long)node_id, deleted);
sqlite3_finalize(ds);
}
sqlite3_stmt* is = NULL;

Loading…
Cancel
Save