@@ -6194,12 +6194,14 @@ where
6194
6194
fn internal_open_channel(&self, counterparty_node_id: &PublicKey, msg: &msgs::OpenChannel) -> Result<(), MsgHandleErrInternal> {
6195
6195
// Note that the ChannelManager is NOT re-persisted on disk after this, so any changes are
6196
6196
// likely to be lost on restart!
6197
- if msg.chain_hash != self.chain_hash {
6198
- return Err(MsgHandleErrInternal::send_err_msg_no_close("Unknown genesis block hash".to_owned(), msg.temporary_channel_id.clone()));
6197
+ if msg.common_fields.chain_hash != self.chain_hash {
6198
+ return Err(MsgHandleErrInternal::send_err_msg_no_close("Unknown genesis block hash".to_owned(),
6199
+ msg.common_fields.temporary_channel_id.clone()));
6199
6200
}
6200
6201
6201
6202
if !self.default_configuration.accept_inbound_channels {
6202
- return Err(MsgHandleErrInternal::send_err_msg_no_close("No inbound channels accepted".to_owned(), msg.temporary_channel_id.clone()));
6203
+ return Err(MsgHandleErrInternal::send_err_msg_no_close("No inbound channels accepted".to_owned(),
6204
+ msg.common_fields.temporary_channel_id.clone()));
6203
6205
}
6204
6206
6205
6207
// Get the number of peers with channels, but without funded ones. We don't care too much
@@ -6212,7 +6214,9 @@ where
6212
6214
let peer_state_mutex = per_peer_state.get(counterparty_node_id)
6213
6215
.ok_or_else(|| {
6214
6216
debug_assert!(false);
6215
- MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.temporary_channel_id.clone())
6217
+ MsgHandleErrInternal::send_err_msg_no_close(
6218
+ format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id),
6219
+ msg.common_fields.temporary_channel_id.clone())
6216
6220
})?;
6217
6221
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
6218
6222
let peer_state = &mut *peer_state_lock;
@@ -6226,34 +6230,36 @@ where
6226
6230
{
6227
6231
return Err(MsgHandleErrInternal::send_err_msg_no_close(
6228
6232
"Have too many peers with unfunded channels, not accepting new ones".to_owned(),
6229
- msg.temporary_channel_id.clone()));
6233
+ msg.common_fields. temporary_channel_id.clone()));
6230
6234
}
6231
6235
6232
6236
let best_block_height = self.best_block.read().unwrap().height();
6233
6237
if Self::unfunded_channel_count(peer_state, best_block_height) >= MAX_UNFUNDED_CHANS_PER_PEER {
6234
6238
return Err(MsgHandleErrInternal::send_err_msg_no_close(
6235
6239
format!("Refusing more than {} unfunded channels.", MAX_UNFUNDED_CHANS_PER_PEER),
6236
- msg.temporary_channel_id.clone()));
6240
+ msg.common_fields. temporary_channel_id.clone()));
6237
6241
}
6238
6242
6239
- let channel_id = msg.temporary_channel_id;
6243
+ let channel_id = msg.common_fields. temporary_channel_id;
6240
6244
let channel_exists = peer_state.has_channel(&channel_id);
6241
6245
if channel_exists {
6242
- return Err(MsgHandleErrInternal::send_err_msg_no_close("temporary_channel_id collision for the same peer!".to_owned(), msg.temporary_channel_id.clone()));
6246
+ return Err(MsgHandleErrInternal::send_err_msg_no_close(
6247
+ "temporary_channel_id collision for the same peer!".to_owned(),
6248
+ msg.common_fields.temporary_channel_id.clone()));
6243
6249
}
6244
6250
6245
6251
// If we're doing manual acceptance checks on the channel, then defer creation until we're sure we want to accept.
6246
6252
if self.default_configuration.manually_accept_inbound_channels {
6247
6253
let channel_type = channel::channel_type_from_open_channel(
6248
6254
&msg, &peer_state.latest_features, &self.channel_type_features()
6249
6255
).map_err(|e|
6250
- MsgHandleErrInternal::from_chan_no_close(e, msg.temporary_channel_id)
6256
+ MsgHandleErrInternal::from_chan_no_close(e, msg.common_fields. temporary_channel_id)
6251
6257
)?;
6252
6258
let mut pending_events = self.pending_events.lock().unwrap();
6253
6259
pending_events.push_back((events::Event::OpenChannelRequest {
6254
- temporary_channel_id: msg.temporary_channel_id.clone(),
6260
+ temporary_channel_id: msg.common_fields. temporary_channel_id.clone(),
6255
6261
counterparty_node_id: counterparty_node_id.clone(),
6256
- funding_satoshis: msg.funding_satoshis,
6262
+ funding_satoshis: msg.common_fields. funding_satoshis,
6257
6263
push_msat: msg.push_msat,
6258
6264
channel_type,
6259
6265
}, None));
@@ -6273,17 +6279,21 @@ where
6273
6279
&self.default_configuration, best_block_height, &self.logger, /*is_0conf=*/false)
6274
6280
{
6275
6281
Err(e) => {
6276
- return Err(MsgHandleErrInternal::from_chan_no_close(e, msg.temporary_channel_id));
6282
+ return Err(MsgHandleErrInternal::from_chan_no_close(e, msg.common_fields. temporary_channel_id));
6277
6283
},
6278
6284
Ok(res) => res
6279
6285
};
6280
6286
6281
6287
let channel_type = channel.context.get_channel_type();
6282
6288
if channel_type.requires_zero_conf() {
6283
- return Err(MsgHandleErrInternal::send_err_msg_no_close("No zero confirmation channels accepted".to_owned(), msg.temporary_channel_id.clone()));
6289
+ return Err(MsgHandleErrInternal::send_err_msg_no_close(
6290
+ "No zero confirmation channels accepted".to_owned(),
6291
+ msg.common_fields.temporary_channel_id.clone()));
6284
6292
}
6285
6293
if channel_type.requires_anchors_zero_fee_htlc_tx() {
6286
- return Err(MsgHandleErrInternal::send_err_msg_no_close("No channels with anchor outputs accepted".to_owned(), msg.temporary_channel_id.clone()));
6294
+ return Err(MsgHandleErrInternal::send_err_msg_no_close(
6295
+ "No channels with anchor outputs accepted".to_owned(),
6296
+ msg.common_fields.temporary_channel_id.clone()));
6287
6297
}
6288
6298
6289
6299
let outbound_scid_alias = self.create_and_insert_outbound_scid_alias();
@@ -6305,28 +6315,28 @@ where
6305
6315
let peer_state_mutex = per_peer_state.get(counterparty_node_id)
6306
6316
.ok_or_else(|| {
6307
6317
debug_assert!(false);
6308
- MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.temporary_channel_id)
6318
+ MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.common_fields. temporary_channel_id)
6309
6319
})?;
6310
6320
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
6311
6321
let peer_state = &mut *peer_state_lock;
6312
- match peer_state.channel_by_id.entry(msg.temporary_channel_id) {
6322
+ match peer_state.channel_by_id.entry(msg.common_fields. temporary_channel_id) {
6313
6323
hash_map::Entry::Occupied(mut phase) => {
6314
6324
match phase.get_mut() {
6315
6325
ChannelPhase::UnfundedOutboundV1(chan) => {
6316
6326
try_chan_phase_entry!(self, chan.accept_channel(&msg, &self.default_configuration.channel_handshake_limits, &peer_state.latest_features), phase);
6317
6327
(chan.context.get_value_satoshis(), chan.context.get_funding_redeemscript().to_v0_p2wsh(), chan.context.get_user_id())
6318
6328
},
6319
6329
_ => {
6320
- return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got an unexpected accept_channel message from peer with counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id));
6330
+ return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got an unexpected accept_channel message from peer with counterparty_node_id {}", counterparty_node_id), msg.common_fields. temporary_channel_id));
6321
6331
}
6322
6332
}
6323
6333
},
6324
- hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id))
6334
+ hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.common_fields. temporary_channel_id))
6325
6335
}
6326
6336
};
6327
6337
let mut pending_events = self.pending_events.lock().unwrap();
6328
6338
pending_events.push_back((events::Event::FundingGenerationReady {
6329
- temporary_channel_id: msg.temporary_channel_id,
6339
+ temporary_channel_id: msg.common_fields. temporary_channel_id,
6330
6340
counterparty_node_id: *counterparty_node_id,
6331
6341
channel_value_satoshis: value,
6332
6342
output_script,
@@ -8713,7 +8723,7 @@ where
8713
8723
fn handle_open_channel_v2(&self, counterparty_node_id: &PublicKey, msg: &msgs::OpenChannelV2) {
8714
8724
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
8715
8725
"Dual-funded channels not supported".to_owned(),
8716
- msg.temporary_channel_id.clone())), *counterparty_node_id);
8726
+ msg.common_fields. temporary_channel_id.clone())), *counterparty_node_id);
8717
8727
}
8718
8728
8719
8729
fn handle_accept_channel(&self, counterparty_node_id: &PublicKey, msg: &msgs::AcceptChannel) {
@@ -8729,7 +8739,7 @@ where
8729
8739
fn handle_accept_channel_v2(&self, counterparty_node_id: &PublicKey, msg: &msgs::AcceptChannelV2) {
8730
8740
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
8731
8741
"Dual-funded channels not supported".to_owned(),
8732
- msg.temporary_channel_id.clone())), *counterparty_node_id);
8742
+ msg.common_fields. temporary_channel_id.clone())), *counterparty_node_id);
8733
8743
}
8734
8744
8735
8745
fn handle_funding_created(&self, counterparty_node_id: &PublicKey, msg: &msgs::FundingCreated) {
@@ -12033,14 +12043,15 @@ mod tests {
12033
12043
check_added_monitors!(nodes[0], 1);
12034
12044
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
12035
12045
}
12036
- open_channel_msg.temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12046
+ open_channel_msg.common_fields. temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12037
12047
}
12038
12048
12039
12049
// A MAX_UNFUNDED_CHANS_PER_PEER + 1 channel will be summarily rejected
12040
- open_channel_msg.temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12050
+ open_channel_msg.common_fields.temporary_channel_id = ChannelId::temporary_from_entropy_source(
12051
+ &nodes[0].keys_manager);
12041
12052
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
12042
12053
assert_eq!(get_err_msg(&nodes[1], &nodes[0].node.get_our_node_id()).channel_id,
12043
- open_channel_msg.temporary_channel_id);
12054
+ open_channel_msg.common_fields. temporary_channel_id);
12044
12055
12045
12056
// Further, because all of our channels with nodes[0] are inbound, and none of them funded,
12046
12057
// it doesn't count as a "protected" peer, i.e. it counts towards the MAX_NO_CHANNEL_PEERS
@@ -12088,11 +12099,11 @@ mod tests {
12088
12099
for i in 0..super::MAX_UNFUNDED_CHANNEL_PEERS - 1 {
12089
12100
nodes[1].node.handle_open_channel(&peer_pks[i], &open_channel_msg);
12090
12101
get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, peer_pks[i]);
12091
- open_channel_msg.temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12102
+ open_channel_msg.common_fields. temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12092
12103
}
12093
12104
nodes[1].node.handle_open_channel(&last_random_pk, &open_channel_msg);
12094
12105
assert_eq!(get_err_msg(&nodes[1], &last_random_pk).channel_id,
12095
- open_channel_msg.temporary_channel_id);
12106
+ open_channel_msg.common_fields. temporary_channel_id);
12096
12107
12097
12108
// Of course, however, outbound channels are always allowed
12098
12109
nodes[1].node.create_channel(last_random_pk, 100_000, 0, 42, None, None).unwrap();
@@ -12128,14 +12139,14 @@ mod tests {
12128
12139
for _ in 0..super::MAX_UNFUNDED_CHANS_PER_PEER {
12129
12140
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
12130
12141
get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id());
12131
- open_channel_msg.temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12142
+ open_channel_msg.common_fields. temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12132
12143
}
12133
12144
12134
12145
// Once we have MAX_UNFUNDED_CHANS_PER_PEER unfunded channels, new inbound channels will be
12135
12146
// rejected.
12136
12147
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
12137
12148
assert_eq!(get_err_msg(&nodes[1], &nodes[0].node.get_our_node_id()).channel_id,
12138
- open_channel_msg.temporary_channel_id);
12149
+ open_channel_msg.common_fields. temporary_channel_id);
12139
12150
12140
12151
// but we can still open an outbound channel.
12141
12152
nodes[1].node.create_channel(nodes[0].node.get_our_node_id(), 100_000, 0, 42, None, None).unwrap();
@@ -12144,7 +12155,7 @@ mod tests {
12144
12155
// but even with such an outbound channel, additional inbound channels will still fail.
12145
12156
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
12146
12157
assert_eq!(get_err_msg(&nodes[1], &nodes[0].node.get_our_node_id()).channel_id,
12147
- open_channel_msg.temporary_channel_id);
12158
+ open_channel_msg.common_fields. temporary_channel_id);
12148
12159
}
12149
12160
12150
12161
#[test]
@@ -12180,7 +12191,7 @@ mod tests {
12180
12191
_ => panic!("Unexpected event"),
12181
12192
}
12182
12193
get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, random_pk);
12183
- open_channel_msg.temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12194
+ open_channel_msg.common_fields. temporary_channel_id = ChannelId::temporary_from_entropy_source(&nodes[0].keys_manager);
12184
12195
}
12185
12196
12186
12197
// If we try to accept a channel from another peer non-0conf it will fail.
@@ -12202,7 +12213,7 @@ mod tests {
12202
12213
_ => panic!("Unexpected event"),
12203
12214
}
12204
12215
assert_eq!(get_err_msg(&nodes[1], &last_random_pk).channel_id,
12205
- open_channel_msg.temporary_channel_id);
12216
+ open_channel_msg.common_fields. temporary_channel_id);
12206
12217
12207
12218
// ...however if we accept the same channel 0conf it should work just fine.
12208
12219
nodes[1].node.handle_open_channel(&last_random_pk, &open_channel_msg);
@@ -12347,7 +12358,7 @@ mod tests {
12347
12358
12348
12359
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100_000, 0, 0, None, None).unwrap();
12349
12360
let open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
12350
- assert!(open_channel_msg.channel_type.as_ref().unwrap().supports_anchors_zero_fee_htlc_tx());
12361
+ assert!(open_channel_msg.common_fields. channel_type.as_ref().unwrap().supports_anchors_zero_fee_htlc_tx());
12351
12362
12352
12363
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
12353
12364
let events = nodes[1].node.get_and_clear_pending_events();
@@ -12362,7 +12373,7 @@ mod tests {
12362
12373
nodes[0].node.handle_error(&nodes[1].node.get_our_node_id(), &error_msg);
12363
12374
12364
12375
let open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
12365
- assert!(!open_channel_msg.channel_type.unwrap().supports_anchors_zero_fee_htlc_tx());
12376
+ assert!(!open_channel_msg.common_fields. channel_type.unwrap().supports_anchors_zero_fee_htlc_tx());
12366
12377
12367
12378
// Since nodes[1] should not have accepted the channel, it should
12368
12379
// not have generated any events.
0 commit comments