@ -278,6 +278,7 @@ static bool channelseq(struct wallet_channel *c1, struct wallet_channel *c2)
struct channel_info * ci1 = p1 - > channel_info , * ci2 = p2 - > channel_info ;
struct channel_info * ci1 = p1 - > channel_info , * ci2 = p2 - > channel_info ;
struct changed_htlc * lc1 = p1 - > last_sent_commit , * lc2 = p2 - > last_sent_commit ;
struct changed_htlc * lc1 = p1 - > last_sent_commit , * lc2 = p2 - > last_sent_commit ;
CHECK ( c1 - > id = = c2 - > id ) ;
CHECK ( c1 - > id = = c2 - > id ) ;
CHECK ( c1 - > first_blocknum = = c2 - > first_blocknum ) ;
CHECK ( c1 - > peer - > dbid = = c2 - > peer - > dbid ) ;
CHECK ( c1 - > peer - > dbid = = c2 - > peer - > dbid ) ;
CHECK ( p1 - > their_shachain . id = = p2 - > their_shachain . id ) ;
CHECK ( p1 - > their_shachain . id = = p2 - > their_shachain . id ) ;
CHECK_MSG ( pubkey_eq ( & p1 - > id , & p2 - > id ) , " NodeIDs do not match " ) ;
CHECK_MSG ( pubkey_eq ( & p1 - > id , & p2 - > id ) , " NodeIDs do not match " ) ;
@ -374,6 +375,7 @@ static bool test_channel_crud(const tal_t *ctx)
ci . feerate_per_kw [ LOCAL ] = ci . feerate_per_kw [ REMOTE ] = 31337 ;
ci . feerate_per_kw [ LOCAL ] = ci . feerate_per_kw [ REMOTE ] = 31337 ;
mempat ( & p . id , sizeof ( p . id ) ) ;
mempat ( & p . id , sizeof ( p . id ) ) ;
mempat ( scriptpubkey , tal_len ( scriptpubkey ) ) ;
mempat ( scriptpubkey , tal_len ( scriptpubkey ) ) ;
c1 . first_blocknum = 1 ;
c1 . peer = & p ;
c1 . peer = & p ;
p . id = pk ;
p . id = pk ;
p . our_msatoshi = NULL ;
p . our_msatoshi = NULL ;
@ -392,7 +394,7 @@ static bool test_channel_crud(const tal_t *ctx)
CHECK ( ! wallet_err ) ;
CHECK ( ! wallet_err ) ;
/* Variant 1: insert with null for scid, funding_tx_id, channel_info, last_tx */
/* Variant 1: insert with null for scid, funding_tx_id, channel_info, last_tx */
wallet_channel_save ( w , & c1 , 1 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
@ -407,7 +409,7 @@ static bool test_channel_crud(const tal_t *ctx)
/* Variant 2: update with scid set */
/* Variant 2: update with scid set */
c1 . peer - > scid = talz ( w , struct short_channel_id ) ;
c1 . peer - > scid = talz ( w , struct short_channel_id ) ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
@ -424,7 +426,7 @@ static bool test_channel_crud(const tal_t *ctx)
c1 . peer - > our_msatoshi = & msat ;
c1 . peer - > our_msatoshi = & msat ;
c1 . peer - > last_was_revoke = ! c1 . peer - > last_was_revoke ;
c1 . peer - > last_was_revoke = ! c1 . peer - > last_was_revoke ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
@ -433,7 +435,7 @@ static bool test_channel_crud(const tal_t *ctx)
/* Variant 4: update with funding_tx_id */
/* Variant 4: update with funding_tx_id */
c1 . peer - > funding_txid = hash ;
c1 . peer - > funding_txid = hash ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
@ -442,7 +444,7 @@ static bool test_channel_crud(const tal_t *ctx)
/* Variant 5: update with channel_info */
/* Variant 5: update with channel_info */
p . channel_info = & ci ;
p . channel_info = & ci ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
@ -451,7 +453,7 @@ static bool test_channel_crud(const tal_t *ctx)
/* Variant 6: update with last_commit_sent */
/* Variant 6: update with last_commit_sent */
p . last_sent_commit = & last_commit ;
p . last_sent_commit = & last_commit ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
@ -461,7 +463,7 @@ static bool test_channel_crud(const tal_t *ctx)
/* Variant 7: update with last_tx (taken from BOLT #3) */
/* Variant 7: update with last_tx (taken from BOLT #3) */
p . last_tx = bitcoin_tx_from_hex ( w , " 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b8003a00f0000000000002200208c48d15160397c9731df9bc3b236656efb6665fbfe92b4a6878e88a499f741c4c0c62d0000000000160014ccf1af2f2aabee14bb40fa3851ab2301de843110ae8f6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e040047304402206a2679efa3c7aaffd2a447fd0df7aba8792858b589750f6a1203f9259173198a022008d52a0e77a99ab533c36206cb15ad7aeb2aa72b93d4b571e728cb5ec2f6fe260147304402206d6cb93969d39177a09d5d45b583f34966195b77c7e585cf47ac5cce0c90cefb022031d71ae4e33a4e80df7f981d696fbdee517337806a3c7138b7491e2cbb077a0e01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 " , strlen ( " 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b8003a00f0000000000002200208c48d15160397c9731df9bc3b236656efb6665fbfe92b4a6878e88a499f741c4c0c62d0000000000160014ccf1af2f2aabee14bb40fa3851ab2301de843110ae8f6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e040047304402206a2679efa3c7aaffd2a447fd0df7aba8792858b589750f6a1203f9259173198a022008d52a0e77a99ab533c36206cb15ad7aeb2aa72b93d4b571e728cb5ec2f6fe260147304402206d6cb93969d39177a09d5d45b583f34966195b77c7e585cf47ac5cce0c90cefb022031d71ae4e33a4e80df7f981d696fbdee517337806a3c7138b7491e2cbb077a0e01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 " ) ) ;
p . last_tx = bitcoin_tx_from_hex ( w , " 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b8003a00f0000000000002200208c48d15160397c9731df9bc3b236656efb6665fbfe92b4a6878e88a499f741c4c0c62d0000000000160014ccf1af2f2aabee14bb40fa3851ab2301de843110ae8f6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e040047304402206a2679efa3c7aaffd2a447fd0df7aba8792858b589750f6a1203f9259173198a022008d52a0e77a99ab533c36206cb15ad7aeb2aa72b93d4b571e728cb5ec2f6fe260147304402206d6cb93969d39177a09d5d45b583f34966195b77c7e585cf47ac5cce0c90cefb022031d71ae4e33a4e80df7f981d696fbdee517337806a3c7138b7491e2cbb077a0e01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 " , strlen ( " 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b8003a00f0000000000002200208c48d15160397c9731df9bc3b236656efb6665fbfe92b4a6878e88a499f741c4c0c62d0000000000160014ccf1af2f2aabee14bb40fa3851ab2301de843110ae8f6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e040047304402206a2679efa3c7aaffd2a447fd0df7aba8792858b589750f6a1203f9259173198a022008d52a0e77a99ab533c36206cb15ad7aeb2aa72b93d4b571e728cb5ec2f6fe260147304402206d6cb93969d39177a09d5d45b583f34966195b77c7e585cf47ac5cce0c90cefb022031d71ae4e33a4e80df7f981d696fbdee517337806a3c7138b7491e2cbb077a0e01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 " ) ) ;
p . last_sig = sig ;
p . last_sig = sig ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,
@ -471,7 +473,7 @@ static bool test_channel_crud(const tal_t *ctx)
/* Variant 8: update and add remote_shutdown_scriptpubkey */
/* Variant 8: update and add remote_shutdown_scriptpubkey */
p . remote_shutdown_scriptpubkey = scriptpubkey ;
p . remote_shutdown_scriptpubkey = scriptpubkey ;
p . local_shutdown_idx = 1337 ;
p . local_shutdown_idx = 1337 ;
wallet_channel_save ( w , & c1 , 0 ) ;
wallet_channel_save ( w , & c1 ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( ! wallet_err , tal_fmt ( w , " Insert into DB: %s " , wallet_err ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( c2 = wallet_channel_load ( w , c1 . id ) , tal_fmt ( w , " Load from DB " ) ) ;
CHECK_MSG ( ! wallet_err ,
CHECK_MSG ( ! wallet_err ,