Performs the lookup, using the specified Cache, Resolver, and search path. @return The answers, or null if none are found.
()
| 534 | * @return The answers, or null if none are found. |
| 535 | */ |
| 536 | public Record [] |
| 537 | run() { |
| 538 | if (done) |
| 539 | reset(); |
| 540 | if (name.isAbsolute()) |
| 541 | resolve(name, null); |
| 542 | else if (searchPath == null) |
| 543 | resolve(name, Name.root); |
| 544 | else { |
| 545 | if (name.labels() > defaultNdots) |
| 546 | resolve(name, Name.root); |
| 547 | if (done) |
| 548 | return answers; |
| 549 | |
| 550 | for (int i = 0; i < searchPath.length; i++) { |
| 551 | resolve(name, searchPath[i]); |
| 552 | if (done) |
| 553 | return answers; |
| 554 | else if (foundAlias) |
| 555 | break; |
| 556 | } |
| 557 | } |
| 558 | if (!done) { |
| 559 | if (badresponse) { |
| 560 | result = TRY_AGAIN; |
| 561 | error = badresponse_error; |
| 562 | done = true; |
| 563 | } else if (timedout) { |
| 564 | result = TRY_AGAIN; |
| 565 | error = "timed out"; |
| 566 | done = true; |
| 567 | } else if (networkerror) { |
| 568 | result = TRY_AGAIN; |
| 569 | error = "network error"; |
| 570 | done = true; |
| 571 | } else if (nxdomain) { |
| 572 | result = HOST_NOT_FOUND; |
| 573 | done = true; |
| 574 | } else if (referral) { |
| 575 | result = UNRECOVERABLE; |
| 576 | error = "referral"; |
| 577 | done = true; |
| 578 | } else if (nametoolong) { |
| 579 | result = UNRECOVERABLE; |
| 580 | error = "name too long"; |
| 581 | done = true; |
| 582 | } |
| 583 | } |
| 584 | return answers; |
| 585 | } |
| 586 | |
| 587 | private void |
| 588 | checkDone() { |
no test coverage detected