diff options
author | Mark Wells <mark@freeside.biz> | 2013-04-05 12:13:45 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2013-04-05 12:14:23 -0700 |
commit | fd67c768f2f59f7883197889ef02bb3e1fb2b0c7 (patch) | |
tree | 11fe85c259de4302e87236e3950c61ed43461a19 /FS/FS/svc_hardware.pm | |
parent | ce27e05645c490fb75c21395b4f6f79d8f4e81e7 (diff) |
speed up service search
Diffstat (limited to 'FS/FS/svc_hardware.pm')
-rw-r--r-- | FS/FS/svc_hardware.pm | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/FS/FS/svc_hardware.pm b/FS/FS/svc_hardware.pm index 96502e41e..b28cc9ef5 100644 --- a/FS/FS/svc_hardware.pm +++ b/FS/FS/svc_hardware.pm @@ -105,9 +105,13 @@ sub search_sql { my ($class, $string) = @_; my @where = (); - my $ip = NetAddr::IP->new($string); - if ( $ip ) { - push @where, $class->search_sql_field('ip_addr', $ip->addr); + if ( $string =~ /^[\d\.:]+$/ ) { + # if the string isn't an IP address, this will waste several seconds + # attempting a DNS lookup. so try to filter those out. + my $ip = NetAddr::IP->new($string); + if ( $ip ) { + push @where, $class->search_sql_field('ip_addr', $ip->addr); + } } if ( $string =~ /^(\w+)$/ ) { |