From 0737914af5a94acb0fe6620efaaea3957c298354 Mon Sep 17 00:00:00 2001 From: Christian Ramseyer Date: Fri, 21 Apr 2017 21:20:36 +0200 Subject: [PATCH] Fix potential Postgres insert failure (#306) Some devices can contain random non-utf8 data in syscontact and syslocation, making the insert fail with "ERROR: invalid byte sequence for encoding "UTF8" on discovery. Work around this with Encode::decode. --- lib/App/Netdisco/Core/Discover.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/App/Netdisco/Core/Discover.pm b/lib/App/Netdisco/Core/Discover.pm index ca9646be..99d5e8ff 100644 --- a/lib/App/Netdisco/Core/Discover.pm +++ b/lib/App/Netdisco/Core/Discover.pm @@ -144,7 +144,7 @@ sub store_device { my @properties = qw/ snmp_ver - description uptime contact name location + description uptime name layers ports mac ps1_type ps2_type ps1_status ps2_status fan slots @@ -157,6 +157,9 @@ sub store_device { $device->set_column( model => Encode::decode('UTF-8', $snmp->model) ); $device->set_column( serial => Encode::decode('UTF-8', $snmp->serial) ); + $device->set_column( contact => Encode::decode('UTF-8', $snmp->contact) ); + $device->set_column( location => Encode::decode('UTF-8', $snmp->location) ); + $device->set_column( snmp_class => $snmp->class ); $device->set_column( last_discover => \'now()' );