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

Function wallet_peer_save

wallet/wallet.c:2970–3015  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2968}
2969
2970static void wallet_peer_save(struct wallet *w, struct peer *peer)
2971{
2972 const char *addr =
2973 fmt_wireaddr_internal(tmpctx, &peer->addr);
2974 struct db_stmt *stmt =
2975 db_prepare_v2(w->db, SQL("SELECT id FROM peers WHERE node_id = ?"));
2976
2977 db_bind_node_id(stmt, &peer->id);
2978 db_query_prepared(stmt);
2979
2980 if (db_step(stmt)) {
2981 /* So we already knew this peer, just return its dbid */
2982 peer_set_dbid(peer, db_col_u64(stmt, "id"));
2983 tal_free(stmt);
2984
2985 /* Since we're at it update the wireaddr, feature bits */
2986 stmt = db_prepare_v2(
2987 w->db, SQL("UPDATE peers SET address = ?, feature_bits = ? WHERE id = ?"));
2988 db_bind_text(stmt, addr);
2989 db_bind_talarr(stmt, peer->their_features);
2990 db_bind_u64(stmt, peer->dbid);
2991 db_exec_prepared_v2(take(stmt));
2992
2993 } else {
2994 /* Unknown peer, create it from scratch */
2995 tal_free(stmt);
2996 stmt = db_prepare_v2(w->db,
2997 SQL("INSERT INTO peers (node_id, address, feature_bits) VALUES (?, ?, ?);")
2998 );
2999 db_bind_node_id(stmt, &peer->id);
3000 db_bind_text(stmt, addr);
3001 db_bind_talarr(stmt, peer->their_features);
3002 db_exec_prepared_v2(stmt);
3003 peer_set_dbid(peer, db_last_insert_id_v2(take(stmt)));
3004 }
3005
3006 if (peer->last_known_addr) {
3007 u8 *wire = tal_arr(tmpctx, u8, 0);
3008 towire_wireaddr(&wire, peer->last_known_addr);
3009 stmt = db_prepare_v2(w->db,
3010 SQL("UPDATE peers SET last_known_address = ? WHERE id = ?;"));
3011 db_bind_talarr(stmt, wire);
3012 db_bind_u64(stmt, peer->dbid);
3013 db_exec_prepared_v2(take(stmt));
3014 }
3015}
3016
3017bool channel_exists_by_id(struct wallet *w, u64 dbid) {
3018 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