Skip to content

Commit dfa0694

Browse files
committed
impl From<SocketAddr> for NetAddress
1 parent 9e80b90 commit dfa0694

File tree

3 files changed

+24
-37
lines changed

3 files changed

+24
-37
lines changed

lightning-net-tokio/src/lib.rs

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ use tokio::io::{AsyncReadExt, AsyncWrite, AsyncWriteExt};
8181
use lightning::ln::peer_handler;
8282
use lightning::ln::peer_handler::SocketDescriptor as LnSocketTrait;
8383
use lightning::ln::peer_handler::CustomMessageHandler;
84-
use lightning::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler, NetAddress};
84+
use lightning::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler};
8585
use lightning::util::logger::Logger;
8686

8787
use std::task;
@@ -211,20 +211,6 @@ impl Connection {
211211
}
212212
}
213213

214-
fn get_addr_from_stream(stream: &StdTcpStream) -> Option<NetAddress> {
215-
match stream.peer_addr() {
216-
Ok(SocketAddr::V4(sockaddr)) => Some(NetAddress::IPv4 {
217-
addr: sockaddr.ip().octets(),
218-
port: sockaddr.port(),
219-
}),
220-
Ok(SocketAddr::V6(sockaddr)) => Some(NetAddress::IPv6 {
221-
addr: sockaddr.ip().octets(),
222-
port: sockaddr.port(),
223-
}),
224-
Err(_) => None,
225-
}
226-
}
227-
228214
/// Process incoming messages and feed outgoing messages on the provided socket generated by
229215
/// accepting an incoming connection.
230216
///
@@ -236,7 +222,7 @@ pub fn setup_inbound<CMH, RMH, L, UMH>(peer_manager: Arc<peer_handler::PeerManag
236222
RMH: RoutingMessageHandler + 'static + Send + Sync,
237223
L: Logger + 'static + ?Sized + Send + Sync,
238224
UMH: CustomMessageHandler + 'static + Send + Sync {
239-
let remote_addr = get_addr_from_stream(&stream);
225+
let remote_addr = stream.peer_addr().ok().map(|sock_addr| sock_addr.into());
240226
let (reader, write_receiver, read_receiver, us) = Connection::new(stream);
241227
#[cfg(debug_assertions)]
242228
let last_us = Arc::clone(&us);
@@ -278,7 +264,7 @@ pub fn setup_outbound<CMH, RMH, L, UMH>(peer_manager: Arc<peer_handler::PeerMana
278264
RMH: RoutingMessageHandler + 'static + Send + Sync,
279265
L: Logger + 'static + ?Sized + Send + Sync,
280266
UMH: CustomMessageHandler + 'static + Send + Sync {
281-
let remote_addr = get_addr_from_stream(&stream);
267+
let remote_addr = stream.peer_addr().ok().map(|sock_addr| sock_addr.into());
282268
let (reader, mut write_receiver, read_receiver, us) = Connection::new(stream);
283269
#[cfg(debug_assertions)]
284270
let last_us = Arc::clone(&us);

lightning-net/src/lib.rs

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@
4646

4747
use core::hash;
4848
use std::io::{Read, Write};
49-
use std::net::{IpAddr, Shutdown, SocketAddr, TcpStream};
49+
use std::net::{Shutdown, SocketAddr, TcpStream};
5050
use std::sync::atomic::{AtomicU64, Ordering};
5151
use std::sync::Arc;
5252
use std::thread::{self, JoinHandle};
5353

5454
use crossbeam_channel::{select, Receiver, Sender, TryRecvError, TrySendError};
5555

5656
use bitcoin::secp256k1::PublicKey;
57-
use lightning::ln::msgs::{ChannelMessageHandler, NetAddress, RoutingMessageHandler};
57+
use lightning::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler};
5858
use lightning::ln::peer_handler::{
5959
CustomMessageHandler, PeerHandleError, PeerManager, SocketDescriptor,
6060
};
@@ -132,7 +132,7 @@ where
132132

133133
// Generate a new ID that represents this connection
134134
let conn_id = next_connection_id();
135-
let socket_addr = stream.peer_addr().unwrap();
135+
let remote_addr = stream.peer_addr().ok().map(|sock_addr| sock_addr.into());
136136

137137
// Init TcpReader, TcpWriter, TcpDisconnectooor
138138
let writer_stream = stream.try_clone().unwrap();
@@ -174,10 +174,10 @@ where
174174
// In all cases, return the result of the call into the PeerManager.
175175
match conn_type {
176176
ConnectionType::Inbound => {
177-
peer_manager.new_inbound_connection(descriptor.clone(), Some(to_net(socket_addr)))
177+
peer_manager.new_inbound_connection(descriptor.clone(), remote_addr)
178178
}
179179
ConnectionType::Outbound(their_node_id) => peer_manager
180-
.new_outbound_connection(their_node_id, descriptor.clone(), Some(to_net(socket_addr)))
180+
.new_outbound_connection(their_node_id, descriptor.clone(), remote_addr)
181181
.map(|initial_data| {
182182
// PeerManager accepted the outbound connection; queue up the
183183
// initial WriteData WriterCommand.
@@ -209,21 +209,6 @@ where
209209
})
210210
}
211211

212-
// NOTE: It would be nice to have a `impl From<SocketAddr> for NetAddress` in
213-
// the `lightning` crate
214-
fn to_net(socket_addr: SocketAddr) -> NetAddress {
215-
match socket_addr.ip() {
216-
IpAddr::V4(ip) => NetAddress::IPv4 {
217-
addr: ip.octets(),
218-
port: socket_addr.port(),
219-
},
220-
IpAddr::V6(ip) => NetAddress::IPv6 {
221-
addr: ip.octets(),
222-
port: socket_addr.port(),
223-
},
224-
}
225-
}
226-
227212
/// Commands that can be sent to the Reader.
228213
enum ReaderCommand {
229214
ResumeRead,

lightning/src/ln/msgs.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,22 @@ impl NetAddress {
469469
pub(crate) const MAX_LEN: u16 = 37;
470470
}
471471

472+
#[cfg(not(feature = "no-std"))]
473+
impl From<std::net::SocketAddr> for NetAddress {
474+
fn from(socket_addr: std::net::SocketAddr) -> NetAddress {
475+
match socket_addr.ip() {
476+
std::net::IpAddr::V4(ip) => NetAddress::IPv4 {
477+
addr: ip.octets(),
478+
port: socket_addr.port(),
479+
},
480+
std::net::IpAddr::V6(ip) => NetAddress::IPv6 {
481+
addr: ip.octets(),
482+
port: socket_addr.port(),
483+
},
484+
}
485+
}
486+
}
487+
472488
impl Writeable for NetAddress {
473489
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), io::Error> {
474490
match self {

0 commit comments

Comments
 (0)