@@ -3281,23 +3281,33 @@ where
3281
3281
} = args;
3282
3282
// The top-level caller should hold the total_consistency_lock read lock.
3283
3283
debug_assert!(self.total_consistency_lock.try_write().is_err());
3284
- log_trace!(WithContext::from(&self.logger, Some(path.hops.first().unwrap().pubkey), None),
3285
- "Attempting to send payment with payment hash {} along path with next hop {}",
3286
- payment_hash, path.hops.first().unwrap().short_channel_id);
3287
3284
let prng_seed = self.entropy_source.get_secure_random_bytes();
3288
3285
let session_priv = SecretKey::from_slice(&session_priv_bytes[..]).expect("RNG is busted");
3289
3286
3290
3287
let (onion_packet, htlc_msat, htlc_cltv) = onion_utils::create_payment_onion(
3291
3288
&self.secp_ctx, &path, &session_priv, total_value, recipient_onion, cur_height,
3292
3289
payment_hash, keysend_preimage, prng_seed
3293
- )?;
3290
+ ).map_err(|e| {
3291
+ let logger = WithContext::from(&self.logger, Some(path.hops.first().unwrap().pubkey), None);
3292
+ log_error!(logger, "Failed to build an onion for path for payment hash {}", payment_hash);
3293
+ e
3294
+ })?;
3294
3295
3295
3296
let err: Result<(), _> = loop {
3296
3297
let (counterparty_node_id, id) = match self.short_to_chan_info.read().unwrap().get(&path.hops.first().unwrap().short_channel_id) {
3297
- None => return Err(APIError::ChannelUnavailable{err: "No channel available with first hop!".to_owned()}),
3298
+ None => {
3299
+ let logger = WithContext::from(&self.logger, Some(path.hops.first().unwrap().pubkey), None);
3300
+ log_error!(logger, "Failed to find first-hop for payment hash {}", payment_hash);
3301
+ return Err(APIError::ChannelUnavailable{err: "No channel available with first hop!".to_owned()})
3302
+ },
3298
3303
Some((cp_id, chan_id)) => (cp_id.clone(), chan_id.clone()),
3299
3304
};
3300
3305
3306
+ let logger = WithContext::from(&self.logger, Some(counterparty_node_id), Some(id));
3307
+ log_trace!(logger,
3308
+ "Attempting to send payment with payment hash {} along path with next hop {}",
3309
+ payment_hash, path.hops.first().unwrap().short_channel_id);
3310
+
3301
3311
let per_peer_state = self.per_peer_state.read().unwrap();
3302
3312
let peer_state_mutex = per_peer_state.get(&counterparty_node_id)
3303
3313
.ok_or_else(|| APIError::ChannelUnavailable{err: "No peer matching the path's first hop found!".to_owned() })?;
0 commit comments