Skip to content

Commit 1b2d5ac

Browse files
committed
askrene: don't create duplicate layers if xpay creates layer before we load them.
Signed-off-by: Rusty Russell <[email protected]>
1 parent 1380d36 commit 1b2d5ac

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

plugins/askrene/layer.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,9 +547,19 @@ static void populate_layer(struct askrene *askrene,
547547
const char *layername TAKES,
548548
const u8 *data)
549549
{
550-
struct layer *layer = new_layer(askrene, layername, true);
550+
struct layer *layer;
551551
size_t len = tal_bytelen(data);
552552

553+
/* FIXME: They can race us, creating a layer while we're loading! */
554+
layer = find_layer(askrene, layername);
555+
if (layer) {
556+
/* We promised to take this! */
557+
if (taken(layername))
558+
tal_free(layername);
559+
} else {
560+
layer = new_layer(askrene, layername, true);
561+
}
562+
553563
plugin_log(askrene->plugin, LOG_DBG,
554564
"Loaded level %s (%zu bytes)",
555565
layer->name, len);

0 commit comments

Comments
 (0)