Browse Source

net: `getaddrs_max` is now `Option<u32>`, handle `outbound_connections` overflows, remove the u8::MAX limit

epiphany 9 months ago
parent
commit
3ca62d4bbb

+ 1 - 1
src/net/protocol/protocol_address.rs

@@ -294,7 +294,7 @@ impl ProtocolBase for ProtocolAddress {
         // Send get_address message.
         // We ask for a maximum of u8::MAX addresses from a single node
         let get_addrs = GetAddrsMessage {
-            max: getaddrs_max.unwrap_or(outbound_connections).min(u8::MAX as usize) as u32,
+            max: getaddrs_max.unwrap_or(outbound_connections.min(u32::MAX as usize) as u32),
             transports: allowed_transports,
         };
         self.channel.send(&get_addrs).await?;

+ 1 - 1
src/net/protocol/protocol_seed.rs

@@ -117,7 +117,7 @@ impl ProtocolBase for ProtocolSeed {
         // Send get address message
         // We ask for a maximum of u8::MAX addresses from a single node
         let get_addr = GetAddrsMessage {
-            max: getaddrs_max.unwrap_or(outbound_connections).min(u8::MAX as usize) as u32,
+            max: getaddrs_max.unwrap_or(outbound_connections.min(u32::MAX as usize) as u32),
             transports: allowed_transports,
         };
         self.channel.send(&get_addr).await?;

+ 1 - 1
src/net/session/direct_session.rs

@@ -436,7 +436,7 @@ impl PeerDiscovery {
                 });
 
                 let get_addrs = GetAddrsMessage {
-                    max: getaddrs_max.unwrap_or(1).min(u8::MAX as usize) as u32,
+                    max: getaddrs_max.unwrap_or(1),
                     transports: allowed_transports,
                 };
 

+ 1 - 1
src/net/session/outbound_session.rs

@@ -579,7 +579,7 @@ impl PeerDiscoveryBase for PeerDiscovery {
                 });
 
                 let get_addrs = GetAddrsMessage {
-                    max: getaddrs_max.unwrap_or(outbound_connections).min(u8::MAX as usize) as u32,
+                    max: getaddrs_max.unwrap_or(outbound_connections.min(u32::MAX as usize) as u32),
                     transports: allowed_transports,
                 };
 

+ 2 - 2
src/net/settings.rs

@@ -103,7 +103,7 @@ pub struct Settings {
     /// Maximum number of addresses (with preferred transports) to receive from
     /// seeds and peers.
     /// If undefined, `outbound_connections` will be used instead.
-    pub getaddrs_max: Option<usize>,
+    pub getaddrs_max: Option<u32>,
     /// P2P datastore path
     pub p2p_datastore: Option<String>,
     /// Hostlist storage path
@@ -295,7 +295,7 @@ pub struct SettingsOpt {
     /// seeds and peers.
     /// If undefined, `outbound_connections` will be used instead.
     #[structopt(skip)]
-    pub getaddrs_max: Option<usize>,
+    pub getaddrs_max: Option<u32>,
 
     /// P2P datastore path
     #[serde(default)]