From 79babf18f63c0d533d67e69724308aa9598e4c35 Mon Sep 17 00:00:00 2001 From: Joe Shaw Date: Thu, 13 Jun 2024 11:36:08 -0400 Subject: [PATCH] add adaptive buffer support for geo + device detection lookups Write out the required buffer size to the nwritten_out value if the buffer is too small to fit the value. --- lib/src/wiggle_abi/device_detection_impl.rs | 1 + lib/src/wiggle_abi/geo_impl.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/src/wiggle_abi/device_detection_impl.rs b/lib/src/wiggle_abi/device_detection_impl.rs index 5222829d..7fbf8aa7 100644 --- a/lib/src/wiggle_abi/device_detection_impl.rs +++ b/lib/src/wiggle_abi/device_detection_impl.rs @@ -44,6 +44,7 @@ impl FastlyDeviceDetection for Session { }; if result.len() > buf_len as usize { + nwritten_out.write(buf_len)?; return Err(Error::BufferLengthError { buf: "device_detection_lookup", len: "device_detection_lookup_max_len", diff --git a/lib/src/wiggle_abi/geo_impl.rs b/lib/src/wiggle_abi/geo_impl.rs index 5f2e4b02..906dcf25 100644 --- a/lib/src/wiggle_abi/geo_impl.rs +++ b/lib/src/wiggle_abi/geo_impl.rs @@ -39,6 +39,7 @@ impl FastlyGeo for Session { let result = self.geolocation_lookup(&ip_addr).unwrap_or_default(); if result.len() > buf_len as usize { + nwritten_out.write(buf_len)?; return Err(Error::BufferLengthError { buf: "geolocation_lookup", len: "geolocation_lookup_max_len",