Skip to content

lightning-net crate #1469

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ updates:
directory: "/lightning-invoice"
schedule:
interval: "daily"
- package-ecosystem: "cargo"
directory: "/lightning-net"
schedule:
interval: "daily"
- package-ecosystem: "cargo"
directory: "/lightning-net-tokio"
schedule:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
platform: [ ubuntu-latest ]
toolchain: [ stable,
beta,
# 1.41.1 is MSRV for Rust-Lightning, lightning-invoice, and lightning-persister
# 1.41.1 is MSRV for Rust-Lightning, lightning-invoice, lightning-persister, lightning-net, and lightning-background-processor
1.41.1,
# 1.45.2 is MSRV for lightning-net-tokio, lightning-block-sync, and coverage generation
1.45.2,
Expand Down Expand Up @@ -74,6 +74,7 @@ jobs:
cargo build --verbose --color always -p lightning
cargo build --verbose --color always -p lightning-invoice
cargo build --verbose --color always -p lightning-persister
cargo build --verbose --color always -p lightning-net
- name: Build on Rust ${{ matrix.toolchain }} with all Log-Limiting features
if: matrix.test-log-variants
run: |
Expand Down Expand Up @@ -142,13 +143,15 @@ jobs:
cargo test --verbose --color always -p lightning
cargo test --verbose --color always -p lightning-invoice
cargo build --verbose --color always -p lightning-persister
cargo build --verbose --color always -p lightning-net
cargo build --verbose --color always -p lightning-background-processor
- name: Test C Bindings Modifications on Rust ${{ matrix.toolchain }}
if: "! matrix.build-net-tokio"
run: |
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always -p lightning
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always -p lightning-invoice
RUSTFLAGS="--cfg=c_bindings" cargo build --verbose --color always -p lightning-persister
RUSTFLAGS="--cfg=c_bindings" cargo build --verbose --color always -p lightning-net
RUSTFLAGS="--cfg=c_bindings" cargo build --verbose --color always -p lightning-background-processor
- name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features
if: "matrix.build-net-tokio && !matrix.coverage"
Expand Down
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ members = [
"lightning",
"lightning-block-sync",
"lightning-invoice",
"lightning-net",
"lightning-net-tokio",
"lightning-persister",
"lightning-background-processor",
Expand Down
20 changes: 3 additions & 17 deletions lightning-net-tokio/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ use tokio::io::{AsyncReadExt, AsyncWrite, AsyncWriteExt};
use lightning::ln::peer_handler;
use lightning::ln::peer_handler::SocketDescriptor as LnSocketTrait;
use lightning::ln::peer_handler::CustomMessageHandler;
use lightning::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler, NetAddress};
use lightning::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler};
use lightning::util::logger::Logger;

use std::task;
Expand Down Expand Up @@ -211,20 +211,6 @@ impl Connection {
}
}

fn get_addr_from_stream(stream: &StdTcpStream) -> Option<NetAddress> {
match stream.peer_addr() {
Ok(SocketAddr::V4(sockaddr)) => Some(NetAddress::IPv4 {
addr: sockaddr.ip().octets(),
port: sockaddr.port(),
}),
Ok(SocketAddr::V6(sockaddr)) => Some(NetAddress::IPv6 {
addr: sockaddr.ip().octets(),
port: sockaddr.port(),
}),
Err(_) => None,
}
}

/// Process incoming messages and feed outgoing messages on the provided socket generated by
/// accepting an incoming connection.
///
Expand All @@ -236,7 +222,7 @@ pub fn setup_inbound<CMH, RMH, L, UMH>(peer_manager: Arc<peer_handler::PeerManag
RMH: RoutingMessageHandler + 'static + Send + Sync,
L: Logger + 'static + ?Sized + Send + Sync,
UMH: CustomMessageHandler + 'static + Send + Sync {
let remote_addr = get_addr_from_stream(&stream);
let remote_addr = stream.peer_addr().ok().map(|sock_addr| sock_addr.into());
let (reader, write_receiver, read_receiver, us) = Connection::new(stream);
#[cfg(debug_assertions)]
let last_us = Arc::clone(&us);
Expand Down Expand Up @@ -278,7 +264,7 @@ pub fn setup_outbound<CMH, RMH, L, UMH>(peer_manager: Arc<peer_handler::PeerMana
RMH: RoutingMessageHandler + 'static + Send + Sync,
L: Logger + 'static + ?Sized + Send + Sync,
UMH: CustomMessageHandler + 'static + Send + Sync {
let remote_addr = get_addr_from_stream(&stream);
let remote_addr = stream.peer_addr().ok().map(|sock_addr| sock_addr.into());
let (reader, mut write_receiver, read_receiver, us) = Connection::new(stream);
#[cfg(debug_assertions)]
let last_us = Arc::clone(&us);
Expand Down
24 changes: 24 additions & 0 deletions lightning-net/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[package]
name = "lightning-net"
version = "0.0.106"
authors = ["Max Fang <[email protected]>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning/"
description = """
Implementation of the rust-lightning network stack for a synchronous runtime.
For Rust-Lightning clients which wish to make direct connections to Lightning
P2P nodes, this is a simple alternative to implementing the required network
stack for those who do not want to use async Rust or Tokio.
"""
edition = "2018"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
bitcoin = "0.28.1"
lightning = { version = "0.0.106", path = "../lightning" }

[dev-dependencies]
crossbeam-channel = "0.5.4"
Loading