From 27594cb2e54d8056e88e22c684d6f7dd5a6c65c9 Mon Sep 17 00:00:00 2001 From: joshua-mir <43032097+joshua-mir@users.noreply.github.com> Date: Thu, 3 Jan 2019 12:17:26 +0100 Subject: [PATCH 1/8] fix #10125 fix service transaction version detection if --identity is enabled, change test to match how --identity actually works --- ethcore/sync/src/chain/propagator.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index 689ccfc02b1..f3249b0f65e 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -45,13 +45,12 @@ fn accepts_service_transaction(client_id: &str) -> bool { // Parity versions starting from this will accept service-transactions const SERVICE_TRANSACTIONS_VERSION: (u32, u32) = (1u32, 6u32); // Parity client string prefix - const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/v"; - const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/v"; - - let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) { - client_id[LEGACY_CLIENT_ID_PREFIX.len()..].split('.') - } else if client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { - client_id[PARITY_CLIENT_ID_PREFIX.len()..].split('.') + const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/"; + const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; + + let idx = client_id.find("/v").unwrap_or(client_version.len()); + let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { + client_id[idx.len()..].split('.') } else { return false; }; @@ -599,7 +598,7 @@ mod tests { io.peers_info.insert(3, "Parity/v1.5".to_owned()); // and peer#4 is Parity, accepting service transactions insert_dummy_peer(&mut sync, 4, block_hash); - io.peers_info.insert(4, "Parity-Ethereum/v2.7.3-ABCDEFGH".to_owned()); + io.peers_info.insert(4, "Parity-Ethereum/ABCDEFGH/v2.7.3".to_owned()); // and new service transaction is propagated to peers SyncPropagator::propagate_new_transactions(&mut sync, &mut io, || true); From aff41cb2aeade614c697441446fdb74a60c27419 Mon Sep 17 00:00:00 2001 From: joshua-mir <43032097+joshua-mir@users.noreply.github.com> Date: Thu, 3 Jan 2019 12:23:17 +0100 Subject: [PATCH 2/8] fix wrong var --- ethcore/sync/src/chain/propagator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index f3249b0f65e..8e56877b7b6 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -48,7 +48,7 @@ fn accepts_service_transaction(client_id: &str) -> bool { const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/"; const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; - let idx = client_id.find("/v").unwrap_or(client_version.len()); + let idx = client_id.find("/v").unwrap_or(client_id.len()); let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { client_id[idx.len()..].split('.') } else { From 855868daa48902624d112df524ad2284fbcd1e5b Mon Sep 17 00:00:00 2001 From: joshua-mir <43032097+joshua-mir@users.noreply.github.com> Date: Thu, 3 Jan 2019 12:32:54 +0100 Subject: [PATCH 3/8] get the index of v, not / --- ethcore/sync/src/chain/propagator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index 8e56877b7b6..07793669173 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -48,7 +48,7 @@ fn accepts_service_transaction(client_id: &str) -> bool { const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/"; const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; - let idx = client_id.find("/v").unwrap_or(client_id.len()); + let idx = client_id.find("/v").unwrap_or(client_id.len()) + 1; let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { client_id[idx.len()..].split('.') } else { From 0144441137683ec7e6f59b1a2d31e459b0203db8 Mon Sep 17 00:00:00 2001 From: joshua-mir <43032097+joshua-mir@users.noreply.github.com> Date: Thu, 3 Jan 2019 12:34:10 +0100 Subject: [PATCH 4/8] idx, not idx.len() --- ethcore/sync/src/chain/propagator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index 07793669173..ffa433b3ff5 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -50,7 +50,7 @@ fn accepts_service_transaction(client_id: &str) -> bool { let idx = client_id.find("/v").unwrap_or(client_id.len()) + 1; let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { - client_id[idx.len()..].split('.') + client_id[idx..].split('.') } else { return false; }; From 22e5ad6e1607d9eb26da7fa020750d2114786196 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 3 Jan 2019 14:33:15 +0100 Subject: [PATCH 5/8] Update ethcore/sync/src/chain/propagator.rs Co-Authored-By: joshua-mir <43032097+joshua-mir@users.noreply.github.com> --- ethcore/sync/src/chain/propagator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index ffa433b3ff5..ad03ad219e0 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -48,7 +48,7 @@ fn accepts_service_transaction(client_id: &str) -> bool { const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/"; const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; - let idx = client_id.find("/v").unwrap_or(client_id.len()) + 1; + let idx = client_id.rfind("/v").map(|idx| idx + 1).unwrap_or(client_id.len()); let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { client_id[idx..].split('.') } else { From dcf362fb57f7205cc8404f0b960007d2b3de8202 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 3 Jan 2019 14:51:51 +0100 Subject: [PATCH 6/8] Update ethcore/sync/src/chain/propagator.rs Co-Authored-By: joshua-mir <43032097+joshua-mir@users.noreply.github.com> --- ethcore/sync/src/chain/propagator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index ad03ad219e0..eb0627bac32 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -48,7 +48,7 @@ fn accepts_service_transaction(client_id: &str) -> bool { const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/"; const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; - let idx = client_id.rfind("/v").map(|idx| idx + 1).unwrap_or(client_id.len()); + let idx = client_id.rfind("/v").map(|idx| idx + 2).unwrap_or(client_id.len()); let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { client_id[idx..].split('.') } else { From 9373b3b76d17b15cc6515d197a133b42c19d4706 Mon Sep 17 00:00:00 2001 From: joshua-mir <43032097+joshua-mir@users.noreply.github.com> Date: Thu, 3 Jan 2019 14:57:34 +0100 Subject: [PATCH 7/8] change version prefix to a const --- ethcore/sync/src/chain/propagator.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index eb0627bac32..96e873c6527 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -47,8 +47,9 @@ fn accepts_service_transaction(client_id: &str) -> bool { // Parity client string prefix const LEGACY_CLIENT_ID_PREFIX: &'static str = "Parity/"; const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; + const VERSION_PREFIX: &'static str = "/v"; - let idx = client_id.rfind("/v").map(|idx| idx + 2).unwrap_or(client_id.len()); + let idx = client_id.rfind(VERSION_PREFIX).map(|idx| idx + VERSION_PREFIX.len()).unwrap_or(client_id.len()); let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { client_id[idx..].split('.') } else { From 3eee8cdb3ed78a3de0cb9329e2e098c1dad68146 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 3 Jan 2019 15:59:35 +0100 Subject: [PATCH 8/8] space Co-Authored-By: joshua-mir <43032097+joshua-mir@users.noreply.github.com> --- ethcore/sync/src/chain/propagator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/sync/src/chain/propagator.rs b/ethcore/sync/src/chain/propagator.rs index 96e873c6527..89918411164 100644 --- a/ethcore/sync/src/chain/propagator.rs +++ b/ethcore/sync/src/chain/propagator.rs @@ -49,7 +49,7 @@ fn accepts_service_transaction(client_id: &str) -> bool { const PARITY_CLIENT_ID_PREFIX: &'static str = "Parity-Ethereum/"; const VERSION_PREFIX: &'static str = "/v"; - let idx = client_id.rfind(VERSION_PREFIX).map(|idx| idx + VERSION_PREFIX.len()).unwrap_or(client_id.len()); + let idx = client_id.rfind(VERSION_PREFIX).map(|idx| idx + VERSION_PREFIX.len()).unwrap_or(client_id.len()); let splitted = if client_id.starts_with(LEGACY_CLIENT_ID_PREFIX) || client_id.starts_with(PARITY_CLIENT_ID_PREFIX) { client_id[idx..].split('.') } else {