From 0f72ea94146d8253fb985f4d266abdfa93f62284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Thir=C3=A9?= Date: Thu, 30 Jan 2025 18:02:48 +0100 Subject: [PATCH] Octez/P2P: Avoid duplication for decoding errors --- src/lib_p2p/p2p_conn.ml | 2 +- src/lib_p2p/p2p_connect_handler.ml | 2 +- src/lib_p2p/p2p_socket.ml | 20 +++++++++++++------- src/lib_p2p/test/test_p2p_socket.ml | 2 +- src/lib_p2p_services/p2p_errors.ml | 17 ----------------- src/lib_p2p_services/p2p_errors.mli | 2 -- 6 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/lib_p2p/p2p_conn.ml b/src/lib_p2p/p2p_conn.ml index f21d1885e739..69512fd7d6ce 100644 --- a/src/lib_p2p/p2p_conn.ml +++ b/src/lib_p2p/p2p_conn.ml @@ -105,7 +105,7 @@ let rec worker_loop (t : ('msg, 'peer, 'conn) t) callback = worker_loop t callback | Ok (_, Disconnect) | Error (P2p_errors.Connection_closed :: _) -> Error_monad.cancel_with_exceptions t.canceler - | Error (P2p_errors.Decoding_error _ :: _) -> + | Error (Tezos_base.Data_encoding_wrapper.Decoding_error _ :: _) -> let* () = t.greylister ~motive:"decoding error" in Error_monad.cancel_with_exceptions t.canceler | Error (Canceled :: _) -> Lwt.return_unit diff --git a/src/lib_p2p/p2p_connect_handler.ml b/src/lib_p2p/p2p_connect_handler.ml index 6e346f62780b..0c629a1c8e85 100644 --- a/src/lib_p2p/p2p_connect_handler.ml +++ b/src/lib_p2p/p2p_connect_handler.ml @@ -393,7 +393,7 @@ let raw_authenticate t ?point_info canceler scheduled_conn point = | Tezos_base.Data_encoding_wrapper.Encoding_error _ | Tezos_base.Data_encoding_wrapper .Unexpected_size_of_encoded_value - | P2p_errors.Decoding_error _ + | Tezos_base.Data_encoding_wrapper.Decoding_error _ | P2p_errors.Invalid_chunks_size _ -> P2p_pool.greylist_addr t.pool (fst point) | _ -> ()) diff --git a/src/lib_p2p/p2p_socket.ml b/src/lib_p2p/p2p_socket.ml index bf121b7bd30d..f901b652da6e 100644 --- a/src/lib_p2p/p2p_socket.ml +++ b/src/lib_p2p/p2p_socket.ml @@ -223,10 +223,12 @@ module Connection_message = struct in let buf = Bytes.unsafe_to_string buf in match Data_encoding.Binary.read encoding buf pos len with - | Error re -> tzfail (P2p_errors.Decoding_error re) + | Error re -> tzfail (Tezos_base.Data_encoding_wrapper.Decoding_error re) | Ok (next_pos, message) -> if next_pos <> pos + len then - tzfail (P2p_errors.Decoding_error Data_encoding.Binary.Extra_bytes) + tzfail + (Tezos_base.Data_encoding_wrapper.Decoding_error + Data_encoding.Binary.Extra_bytes) else (* TODO: https://gitlab.com/tezos/tezos/-/issues/4604 @@ -275,10 +277,12 @@ module Metadata = struct let length = String.length buf in let encoding = metadata_config.P2p_params.conn_meta_encoding in match Data_encoding.Binary.read encoding buf 0 length with - | Error re -> tzfail (P2p_errors.Decoding_error re) + | Error re -> tzfail (Tezos_base.Data_encoding_wrapper.Decoding_error re) | Ok (read_len, message) -> if read_len <> length then - tzfail (P2p_errors.Decoding_error Data_encoding.Binary.Extra_bytes) + tzfail + (Tezos_base.Data_encoding_wrapper.Decoding_error + Data_encoding.Binary.Extra_bytes) else return message end @@ -358,10 +362,12 @@ module Ack = struct let buf = Bytes.unsafe_to_string buf in let length = String.length buf in match Data_encoding.Binary.read encoding buf 0 length with - | Error re -> tzfail (P2p_errors.Decoding_error re) + | Error re -> tzfail (Tezos_base.Data_encoding_wrapper.Decoding_error re) | Ok (read_len, message) -> if read_len <> length then - tzfail (P2p_errors.Decoding_error Data_encoding.Binary.Extra_bytes) + tzfail + (Tezos_base.Data_encoding_wrapper.Decoding_error + Data_encoding.Binary.Extra_bytes) else return message end @@ -490,7 +496,7 @@ module Reader = struct Events.(emit read_error) (st.conn.info.P2p_connection.Info.peer_id, err) in - tzfail (P2p_errors.Decoding_error err) + tzfail (Tezos_base.Data_encoding_wrapper.Decoding_error err) | Await decode_next_buf -> let* buf = Crypto.read_chunk diff --git a/src/lib_p2p/test/test_p2p_socket.ml b/src/lib_p2p/test/test_p2p_socket.ml index 5a24b3560794..da4e26ac14b6 100644 --- a/src/lib_p2p/test/test_p2p_socket.ml +++ b/src/lib_p2p/test/test_p2p_socket.ml @@ -71,7 +71,7 @@ let is_connection_closed = function false let is_decoding_error = function - | Error (Tezos_p2p_services.P2p_errors.Decoding_error _ :: _) -> true + | Error (Tezos_base.Data_encoding_wrapper.Decoding_error _ :: _) -> true | Ok _ -> false | Error err -> Tezt.Log.info "Error: %a" pp_print_trace err ; diff --git a/src/lib_p2p_services/p2p_errors.ml b/src/lib_p2p_services/p2p_errors.ml index 330d4bc2d9ed..ce0e1a7841b7 100644 --- a/src/lib_p2p_services/p2p_errors.ml +++ b/src/lib_p2p_services/p2p_errors.ml @@ -71,8 +71,6 @@ type error += type error += Rejected_no_common_protocol of {announced : Network_version.t} -type error += Decoding_error of Data_encoding.Binary.read_error - type error += Myself of P2p_connection.Id.t type error += Not_enough_proof_of_work of P2p_peer.Id.t @@ -172,21 +170,6 @@ let () = (function | Rejected_no_common_protocol {announced} -> Some announced | _ -> None) (fun announced -> Rejected_no_common_protocol {announced}) ; - (* Decoding error *) - register_error_kind - `Permanent - ~id:"node.p2p_socket.decoding_error" - ~title:"Decoding error" - ~description:"An error occurred while decoding." - ~pp:(fun ppf re -> - Format.fprintf - ppf - "An error occurred while decoding: %a." - Data_encoding.Binary.pp_read_error - re) - Data_encoding.(obj1 @@ req "read_error" Binary.read_error_encoding) - (function Decoding_error re -> Some re | _ -> None) - (fun re -> Decoding_error re) ; (* Myself *) register_error_kind `Permanent diff --git a/src/lib_p2p_services/p2p_errors.mli b/src/lib_p2p_services/p2p_errors.mli index cf5f670d53da..4caec506fbfe 100644 --- a/src/lib_p2p_services/p2p_errors.mli +++ b/src/lib_p2p_services/p2p_errors.mli @@ -48,8 +48,6 @@ type error += type error += Rejected_no_common_protocol of {announced : Network_version.t} -type error += Decoding_error of Data_encoding.Binary.read_error - type error += Myself of P2p_connection.Id.t type error += Not_enough_proof_of_work of P2p_peer.Id.t -- GitLab