@@ -50,48 +50,28 @@ where
50
50
51
51
// shadow variable for ownership release after length-restricted reads
52
52
let mut read_cursor = read_cursor;
53
- loop {
54
- let message_length_result = Readable :: read ( read_cursor) ;
55
- let message_length: BigSize = if let Ok ( message_length) = message_length_result {
56
- message_length
57
- } else if let Err ( msgs:: DecodeError :: ShortRead ) = message_length_result {
58
- break ;
59
- } else {
60
- return Err ( message_length_result. err ( ) . unwrap ( ) . into ( ) ) ;
61
- } ;
62
- // let mut restricted_cursor = FixedLengthReader::new(&read_cursor, message_length.0);
63
- let mut restricted_cursor = read_cursor. take ( message_length. 0 ) ;
64
-
65
- let message_type: u16 = Readable :: read ( & mut restricted_cursor) ?;
66
-
67
- let update_result = match message_type {
68
- msgs:: ChannelAnnouncement :: TYPE => {
69
- let channel_announcement: msgs:: UnsignedChannelAnnouncement =
70
- Readable :: read ( & mut restricted_cursor) . unwrap ( ) ;
71
- network_graph
72
- . update_channel_from_unsigned_announcement ( & channel_announcement, & chain_source)
73
- }
74
- msgs:: NodeAnnouncement :: TYPE => {
75
- let node_announcement: msgs:: UnsignedNodeAnnouncement =
76
- Readable :: read ( & mut restricted_cursor) ?;
77
- network_graph. update_node_from_unsigned_announcement ( & node_announcement)
78
- }
79
- msgs:: ChannelUpdate :: TYPE => {
80
- let channel_update: msgs:: UnsignedChannelUpdate =
81
- Readable :: read ( & mut restricted_cursor) ?;
82
- network_graph. update_channel_unsigned ( & channel_update)
83
- }
84
- _ => {
85
- let error_string = format ! ( "Unexpected graph sync message type: {}" , message_type) ;
86
- return Err ( GraphSyncError :: ProcessingError ( error_string) ) ;
87
- }
88
- } ;
89
53
90
- // propagate the error
91
- let _update = update_result?;
92
-
93
- read_cursor = restricted_cursor. into_inner ( ) ;
94
- }
54
+ let announcement_count: BigSize = Readable :: read ( read_cursor) ?;
55
+ for _ in 0 ..announcement_count. 0 {
56
+ let message_length: BigSize = Readable :: read ( read_cursor) ?;
57
+ let mut restricted_cursor = read_cursor. take ( message_length. 0 ) ;
58
+ let channel_announcement: msgs:: UnsignedChannelAnnouncement =
59
+ Readable :: read ( & mut restricted_cursor) . unwrap ( ) ;
60
+ network_graph. update_channel_from_unsigned_announcement ( & channel_announcement, & chain_source) ?;
61
+
62
+ read_cursor = restricted_cursor. into_inner ( ) ;
63
+ }
64
+
65
+ let update_count: BigSize = Readable :: read ( read_cursor) ?;
66
+ for _ in 0 ..update_count. 0 {
67
+ let message_length: BigSize = Readable :: read ( read_cursor) ?;
68
+ let mut restricted_cursor = read_cursor. take ( message_length. 0 ) ;
69
+ let channel_update: msgs:: UnsignedChannelUpdate =
70
+ Readable :: read ( & mut restricted_cursor) . unwrap ( ) ;
71
+ network_graph. update_channel_unsigned ( & channel_update) ?;
72
+
73
+ read_cursor = restricted_cursor. into_inner ( ) ;
74
+ }
95
75
96
76
Ok ( ( ) )
97
77
}
0 commit comments