Skip to content

Commit 74dd0bd

Browse files
authored
fix: push header before limit check in get_headers_response (#318)
1 parent 8110624 commit 74dd0bd

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

crates/net/network/src/eth_requests.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,19 @@ where
104104

105105
for _ in 0..limit {
106106
if let Some(header) = self.client.header_by_hash_or_number(block).unwrap_or_default() {
107+
let number = header.number();
108+
let parent_hash = header.parent_hash();
109+
110+
total_bytes += header.length();
111+
headers.push(header);
112+
113+
if headers.len() >= MAX_HEADERS_SERVE || total_bytes > SOFT_RESPONSE_LIMIT {
114+
break
115+
}
116+
107117
match direction {
108118
HeadersDirection::Rising => {
109-
if let Some(next) = (header.number() + 1).checked_add(skip) {
119+
if let Some(next) = number.checked_add(skip) {
110120
block = next.into()
111121
} else {
112122
break
@@ -117,24 +127,17 @@ where
117127
// prevent under flows for block.number == 0 and `block.number - skip <
118128
// 0`
119129
if let Some(next) =
120-
header.number().checked_sub(1).and_then(|num| num.checked_sub(skip))
130+
number.checked_sub(1).and_then(|num| num.checked_sub(skip))
121131
{
122132
block = next.into()
123133
} else {
124134
break
125135
}
126136
} else {
127-
block = header.parent_hash().into()
137+
block = parent_hash.into()
128138
}
129139
}
130140
}
131-
132-
total_bytes += header.length();
133-
headers.push(header);
134-
135-
if headers.len() >= MAX_HEADERS_SERVE || total_bytes > SOFT_RESPONSE_LIMIT {
136-
break
137-
}
138141
} else {
139142
break
140143
}

0 commit comments

Comments
 (0)