diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm
index e7204188..6940b8f4 100644
--- a/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm
+++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm
@@ -53,7 +53,11 @@ ajax '/ajax/content/device/ports' => require_login sub {
}
# filter for port status if asked
- my %port_state = map {$_ => 1} (param('port_state') || ());
+ my %port_state = map {$_ => 1}
+ (ref [] eq ref param('port_state') ? @{param('port_state')}
+ : param('port_state') ? param('port_state') : ());
+
+ return unless scalar keys %port_state;
if (exists $port_state{free}) {
if (scalar keys %port_state == 1) {
diff --git a/Netdisco/share/views/ajax/device/ports.tt b/Netdisco/share/views/ajax/device/ports.tt
index 5f4a42db..1e2dcf9d 100644
--- a/Netdisco/share/views/ajax/device/ports.tt
+++ b/Netdisco/share/views/ajax/device/ports.tt
@@ -22,7 +22,7 @@
[% ELSIF row.stp == 'blocking' %]
- [% ELSIF row.has_column('is_free') AND row.is_free %]
+ [% ELSIF row.has_column_loaded('is_free') AND row.is_free %]
[% ELSIF row.up_admin == 'up' AND row.up == 'down' %]