< prev index next >

src/java.base/unix/classes/sun/net/dns/ResolverConfigurationImpl.java

Print this page
rev 52979 : 8215281: Use String.isEmpty() when applicable in java.base
Reviewed-by: TBD


  51     private static final int TIMEOUT = 300000;
  52 
  53     // Resolver options
  54     private final Options opts;
  55 
  56     // Parse /etc/resolv.conf to get the values for a particular
  57     // keyword.
  58     //
  59     private LinkedList<String> resolvconf(String keyword,
  60                                           int maxperkeyword,
  61                                           int maxkeywords)
  62     {
  63         LinkedList<String> ll = new LinkedList<>();
  64 
  65         try {
  66             BufferedReader in =
  67                 new BufferedReader(new FileReader("/etc/resolv.conf"));
  68             String line;
  69             while ((line = in.readLine()) != null) {
  70                 int maxvalues = maxperkeyword;
  71                 if (line.length() == 0)
  72                    continue;
  73                 if (line.charAt(0) == '#' || line.charAt(0) == ';')
  74                     continue;
  75                 if (!line.startsWith(keyword))
  76                     continue;
  77                 String value = line.substring(keyword.length());
  78                 if (value.length() == 0)
  79                     continue;
  80                 if (value.charAt(0) != ' ' && value.charAt(0) != '\t')
  81                     continue;
  82                 StringTokenizer st = new StringTokenizer(value, " \t");
  83                 while (st.hasMoreTokens()) {
  84                     String val = st.nextToken();
  85                     if (val.charAt(0) == '#' || val.charAt(0) == ';') {
  86                         break;
  87                     }
  88                     if ("nameserver".equals(keyword)) {
  89                         if (val.indexOf(':') >= 0 &&
  90                             val.indexOf('.') < 0 && // skip for IPv4 literals with port
  91                             val.indexOf('[') < 0 &&
  92                             val.indexOf(']') < 0 ) {
  93                             // IPv6 literal, in non-BSD-style.
  94                             val = "[" + val + "]";
  95                         }
  96                     }
  97                     ll.add(val);
  98                     if (--maxvalues == 0) {


 164                         ll = resolvconf("search", 6, 1);
 165                         if (ll.size() > 0) {
 166                             return ll;
 167                         }
 168 
 169                         return null;
 170 
 171                     } /* run */
 172 
 173                 });
 174         if (sl != null) {
 175             return sl;
 176         }
 177 
 178         // No search keyword so use local domain
 179 
 180 
 181         // LOCALDOMAIN has absolute priority on Solaris
 182 
 183         String localDomain = localDomain0();
 184         if (localDomain != null && localDomain.length() > 0) {
 185             sl = new LinkedList<>();
 186             sl.add(localDomain);
 187             return sl;
 188         }
 189 
 190         // try domain keyword in /etc/resolv.conf
 191 
 192         sl = java.security.AccessController.doPrivileged(
 193                  new java.security.PrivilegedAction<>() {
 194                     public LinkedList<String> run() {
 195                         LinkedList<String> ll;
 196 
 197                         ll = resolvconf("domain", 1, 1);
 198                         if (ll.size() > 0) {
 199                             return ll;
 200                         }
 201                         return null;
 202 
 203                     } /* run */
 204                 });
 205         if (sl != null) {
 206             return sl;
 207         }
 208 
 209         // no local domain so try fallback (RPC) domain or
 210         // hostName
 211 
 212         sl = new LinkedList<>();
 213         String domain = fallbackDomain0();
 214         if (domain != null && domain.length() > 0) {
 215             sl.add(domain);
 216         }
 217 
 218         return sl;
 219     }
 220 
 221 
 222     // ----
 223 
 224     ResolverConfigurationImpl() {
 225         opts = new OptionsImpl();
 226     }
 227 
 228     @SuppressWarnings("unchecked")
 229     public List<String> searchlist() {
 230         synchronized (lock) {
 231             loadConfig();
 232 
 233             // List is mutable so return a shallow copy
 234             return (List<String>)searchlist.clone();




  51     private static final int TIMEOUT = 300000;
  52 
  53     // Resolver options
  54     private final Options opts;
  55 
  56     // Parse /etc/resolv.conf to get the values for a particular
  57     // keyword.
  58     //
  59     private LinkedList<String> resolvconf(String keyword,
  60                                           int maxperkeyword,
  61                                           int maxkeywords)
  62     {
  63         LinkedList<String> ll = new LinkedList<>();
  64 
  65         try {
  66             BufferedReader in =
  67                 new BufferedReader(new FileReader("/etc/resolv.conf"));
  68             String line;
  69             while ((line = in.readLine()) != null) {
  70                 int maxvalues = maxperkeyword;
  71                 if (line.isEmpty())
  72                    continue;
  73                 if (line.charAt(0) == '#' || line.charAt(0) == ';')
  74                     continue;
  75                 if (!line.startsWith(keyword))
  76                     continue;
  77                 String value = line.substring(keyword.length());
  78                 if (value.isEmpty())
  79                     continue;
  80                 if (value.charAt(0) != ' ' && value.charAt(0) != '\t')
  81                     continue;
  82                 StringTokenizer st = new StringTokenizer(value, " \t");
  83                 while (st.hasMoreTokens()) {
  84                     String val = st.nextToken();
  85                     if (val.charAt(0) == '#' || val.charAt(0) == ';') {
  86                         break;
  87                     }
  88                     if ("nameserver".equals(keyword)) {
  89                         if (val.indexOf(':') >= 0 &&
  90                             val.indexOf('.') < 0 && // skip for IPv4 literals with port
  91                             val.indexOf('[') < 0 &&
  92                             val.indexOf(']') < 0 ) {
  93                             // IPv6 literal, in non-BSD-style.
  94                             val = "[" + val + "]";
  95                         }
  96                     }
  97                     ll.add(val);
  98                     if (--maxvalues == 0) {


 164                         ll = resolvconf("search", 6, 1);
 165                         if (ll.size() > 0) {
 166                             return ll;
 167                         }
 168 
 169                         return null;
 170 
 171                     } /* run */
 172 
 173                 });
 174         if (sl != null) {
 175             return sl;
 176         }
 177 
 178         // No search keyword so use local domain
 179 
 180 
 181         // LOCALDOMAIN has absolute priority on Solaris
 182 
 183         String localDomain = localDomain0();
 184         if (localDomain != null && !localDomain.isEmpty()) {
 185             sl = new LinkedList<>();
 186             sl.add(localDomain);
 187             return sl;
 188         }
 189 
 190         // try domain keyword in /etc/resolv.conf
 191 
 192         sl = java.security.AccessController.doPrivileged(
 193                  new java.security.PrivilegedAction<>() {
 194                     public LinkedList<String> run() {
 195                         LinkedList<String> ll;
 196 
 197                         ll = resolvconf("domain", 1, 1);
 198                         if (ll.size() > 0) {
 199                             return ll;
 200                         }
 201                         return null;
 202 
 203                     } /* run */
 204                 });
 205         if (sl != null) {
 206             return sl;
 207         }
 208 
 209         // no local domain so try fallback (RPC) domain or
 210         // hostName
 211 
 212         sl = new LinkedList<>();
 213         String domain = fallbackDomain0();
 214         if (domain != null && !domain.isEmpty()) {
 215             sl.add(domain);
 216         }
 217 
 218         return sl;
 219     }
 220 
 221 
 222     // ----
 223 
 224     ResolverConfigurationImpl() {
 225         opts = new OptionsImpl();
 226     }
 227 
 228     @SuppressWarnings("unchecked")
 229     public List<String> searchlist() {
 230         synchronized (lock) {
 231             loadConfig();
 232 
 233             // List is mutable so return a shallow copy
 234             return (List<String>)searchlist.clone();


< prev index next >