This version uses the first entry of search if no domain is found.
When edited, it creates or replaces domain entry. It does not update
search entries at all.

Signed-off-by: Damien PIQUET <piqu...@gmail.com>
---
 data/PVE/INotify.pm |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/data/PVE/INotify.pm b/data/PVE/INotify.pm
index 850668a..35c71b9 100644
--- a/data/PVE/INotify.pm
+++ b/data/PVE/INotify.pm
@@ -532,13 +532,18 @@ sub read_etc_resolv_conf {
     my ($filename, $fh) = @_;
 
     my $res = {};
+    my $search;
 
     my $nscount = 0;
     while (my $line = <$fh>) {
        chomp $line;
-       if ($line =~ m/^(search|domain)\s+(\S+)\s*/) {
-           $res->{search} = $2;
-       } elsif ($line =~ 
m/^nameserver\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*/) {
+       if ($line =~ m/^search\s+(.+)/) {
+           $search = $1;
+       }
+       elsif ($line =~ m/^domain\s+(.+)/) {
+           $res->{search} = $1;
+       }
+       elsif ($line =~ 
m/^nameserver\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*/) {
            $nscount++;
            if ($nscount <= 3) {
                $res->{"dns$nscount"} = $1;
@@ -546,6 +551,11 @@ sub read_etc_resolv_conf {
        }
     }
 
+    if (!defined $res->{search} && $search) {
+       $search =~ m/(\S+)/;
+       $res->{search} = $1;
+    }
+
     return $res;
 }
 
@@ -554,7 +564,7 @@ sub update_etc_resolv_conf {
 
     my $data = "";
 
-    $data = "search $resolv->{search}\n"
+    $data = "domain $resolv->{search}\n"
        if $resolv->{search};
 
     my $written = {};
@@ -567,7 +577,7 @@ sub update_etc_resolv_conf {
     }
 
     while (my $line = <$fh>) {
-       next if $line =~ m/^(search|domain|nameserver)\s+/;
+       next if $line =~ m/^(domain|nameserver)\s+/;
        $data .= $line
     }
     
-- 
1.7.10.4

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to