Channel-scoped error can be lost while channeld exits
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 68/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- c
- Lĩnh vực
- networking
Hướng nghiên cứu
Bắt đầu trong connectd/multiplex.c, tại read_body_from_peer_done, và lần theo cách các thông báo WIRE_ERROR theo phạm vi channel được định tuyến khi tồn tại một subdaemon tương ứng. Sử dụng yêu cầu BOLT #1 được liên kết trong issue để định hướng hành vi mong đợi. Được coi là hoàn tất khi quá trình xác thực end-to-end trong regtest cho thấy lightningd làm channel thất bại và broadcast commitment.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
On master f80895bac, channeld sent a warning through peer_failed_warn_nodisconnect and began exiting. connectd then decrypted the peer's channel-scoped WIRE_ERROR and queued it to that subdaemon after lightningd had begun killing it. channeld never received the error, so the channel remained open.
BOLT #1 requires a receiving node, upon receiving a channel-scoped error, to:
MUST fail the channel referred to by
channel_id, if that channel is with the sending node.
Forwarding WIRE_ERROR directly from connectd to lightningd when a matching subdaemon exists fixes the race. End-to-end regtest validation confirmed that lightningd failed the channel, and broadcasted the commitment:
diff --git a/connectd/multiplex.c b/connectd/multiplex.c
index 1051645f..696e9e1b 100644
--- a/connectd/multiplex.c
+++ b/connectd/multiplex.c
@@ -1493,6 +1493,15 @@ static struct io_plan *read_body_from_peer_done(struct io_conn *peer_conn,
/* If we don't find a subdaemon for this, create a new one. */
subd = find_subd(peer, &channel_id);
+ if (subd && type == WIRE_ERROR) {
+ daemon_conn_send(peer->daemon->master,
+ take(towire_connectd_peer_spoke(NULL, &peer->id,
+ peer->counter,
+ type,
+ &channel_id,
+ is_peer_error(tmpctx, decrypted))));
+ return next_read(peer_conn, peer);
+ }
if (!subd) {
enum peer_wire t = fromwire_peektype(decrypted);
- Ngôn ngữ chính
- C
- Star
- 3.1k
- Fork
- 1k
- Merge trung bình
- 3 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 30
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ElementsProject/lightning
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
ElementsProject/lightning#9634 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
plugins/recover: missing comma in nodes_for_gossip concatenates two bootstrap addresses into invalid addressCó thể đã có người làm @bhuvan-somisetty đã nhận 2 ngày trước. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
ElementsProject/lightning#9630 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
common/json_parse: json_to_bitcoin_amount fails to detect overflow and accepts negative/empty inputsCó thể đã có người làm @bhuvan-somisetty đã nhận 7 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
ElementsProject/lightning#9617 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
ElementsProject/lightning#9616 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
ElementsProject/lightning#9593 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của ElementsProject/lightning
Issue tương tự
-
[raylib] update to 6.2Đang mởcategory:port-update
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
Maintainer thường phản hồi trong vòng 8 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày