MCPcopy Create free account
hub / github.com/ElementsProject/lightning / wallet_peer_save

Function wallet_peer_save

wallet/wallet.c:2952–2997  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2950}
2951
2952static void wallet_peer_save(struct wallet *w, struct peer *peer)
2953{
2954 const char *addr =
2955 fmt_wireaddr_internal(tmpctx, &peer->addr);
2956 struct db_stmt *stmt =
2957 db_prepare_v2(w->db, SQL("SELECT id FROM peers WHERE node_id = ?"));
2958
2959 db_bind_node_id(stmt, &peer->id);
2960 db_query_prepared(stmt);
2961
2962 if (db_step(stmt)) {
2963 /* So we already knew this peer, just return its dbid */
2964 peer_set_dbid(peer, db_col_u64(stmt, "id"));
2965 tal_free(stmt);
2966
2967 /* Since we're at it update the wireaddr, feature bits */
2968 stmt = db_prepare_v2(
2969 w->db, SQL("UPDATE peers SET address = ?, feature_bits = ? WHERE id = ?"));
2970 db_bind_text(stmt, addr);
2971 db_bind_talarr(stmt, peer->their_features);
2972 db_bind_u64(stmt, peer->dbid);
2973 db_exec_prepared_v2(take(stmt));
2974
2975 } else {
2976 /* Unknown peer, create it from scratch */
2977 tal_free(stmt);
2978 stmt = db_prepare_v2(w->db,
2979 SQL("INSERT INTO peers (node_id, address, feature_bits) VALUES (?, ?, ?);")
2980 );
2981 db_bind_node_id(stmt, &peer->id);
2982 db_bind_text(stmt, addr);
2983 db_bind_talarr(stmt, peer->their_features);
2984 db_exec_prepared_v2(stmt);
2985 peer_set_dbid(peer, db_last_insert_id_v2(take(stmt)));
2986 }
2987
2988 if (peer->last_known_addr) {
2989 u8 *wire = tal_arr(tmpctx, u8, 0);
2990 towire_wireaddr(&wire, peer->last_known_addr);
2991 stmt = db_prepare_v2(w->db,
2992 SQL("UPDATE peers SET last_known_address = ? WHERE id = ?;"));
2993 db_bind_talarr(stmt, wire);
2994 db_bind_u64(stmt, peer->dbid);
2995 db_exec_prepared_v2(take(stmt));
2996 }
2997}
2998
2999bool channel_exists_by_id(struct wallet *w, u64 dbid) {
3000 struct db_stmt *stmt;

Callers 1

wallet_channel_insertFunction · 0.85

Calls 13

fmt_wireaddr_internalFunction · 0.85
db_bind_node_idFunction · 0.85
db_query_preparedFunction · 0.85
db_stepFunction · 0.85
db_col_u64Function · 0.85
tal_freeFunction · 0.85
db_bind_textFunction · 0.85
db_bind_talarrFunction · 0.85
db_bind_u64Function · 0.85
db_exec_prepared_v2Function · 0.85
db_last_insert_id_v2Function · 0.85
towire_wireaddrFunction · 0.85

Tested by

no test coverage detected