lightningd: centralize refcounting behaviour for peers.

It's mildly neater this way.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2018-08-02 16:19:55 +09:30
parent 0ebad456b1
commit 8bffd2b604
4 changed files with 15 additions and 9 deletions

View File

@@ -116,7 +116,7 @@ struct peer *new_peer(struct lightningd *ld, u64 dbid,
return peer;
}
void delete_peer(struct peer *peer)
static void delete_peer(struct peer *peer)
{
assert(list_empty(&peer->channels));
assert(!peer->uncommitted_channel);
@@ -127,6 +127,16 @@ void delete_peer(struct peer *peer)
tal_free(peer);
}
/* Last one out deletes peer. */
void maybe_delete_peer(struct peer *peer)
{
if (peer->uncommitted_channel)
return;
if (!list_empty(&peer->channels))
return;
delete_peer(peer);
}
struct peer *find_peer_by_dbid(struct lightningd *ld, u64 dbid)
{
struct peer *p;