From c82bfa5a72f1a285899c38a514db53f928d74d39 Mon Sep 17 00:00:00 2001 From: Orne Brocaar <info@brocaar.com> Date: Mon, 16 Oct 2023 10:51:29 +0100 Subject: [PATCH] api: Ignore unknown fields (Rust JSON decode). The JSON encoding should only be used for debugging purposes! However this change avoids showing errors in case there are unknown fields in the JSON payload. This would happen when for example the MQTT Forwarder and ChirpStack uses a different API version (which in case of Protobuf would be fine, as long as the major version remains the same). --- api/rust/build.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/rust/build.rs b/api/rust/build.rs index a9cce990..13b1eadc 100644 --- a/api/rust/build.rs +++ b/api/rust/build.rs @@ -41,6 +41,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { let descriptor_set = std::fs::read(out_dir.join("common").join("proto_descriptor.bin"))?; pbjson_build::Builder::new() .register_descriptors(&descriptor_set)? + .ignore_unknown_fields() .out_dir(out_dir.join("common")) .build(&[".common"])?; } @@ -65,6 +66,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { let descriptor_set = std::fs::read(out_dir.join("gw").join("proto_descriptor.bin"))?; pbjson_build::Builder::new() .register_descriptors(&descriptor_set)? + .ignore_unknown_fields() .out_dir(out_dir.join("gw")) .extern_path(".common", "crate::common") .build(&[".gw"])?; @@ -94,6 +96,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { let descriptor_set = std::fs::read(out_dir.join("internal").join("proto_descriptor.bin"))?; pbjson_build::Builder::new() .register_descriptors(&descriptor_set)? + .ignore_unknown_fields() .out_dir(out_dir.join("internal")) .extern_path(".common", "crate::common") .build(&[".internal"])?; @@ -126,6 +129,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { pbjson_build::Builder::new() .emit_fields() .register_descriptors(&descriptor_set)? + .ignore_unknown_fields() .out_dir(out_dir.join("integration")) .extern_path(".common", "crate::common") .extern_path(".gw", "crate::gw") @@ -149,6 +153,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { let descriptor_set = std::fs::read(out_dir.join("meta").join("proto_descriptor.bin"))?; pbjson_build::Builder::new() .register_descriptors(&descriptor_set)? + .ignore_unknown_fields() .out_dir(out_dir.join("meta")) .extern_path(".common", "crate::common") .extern_path(".gw", "crate::gw")