public Record [ ] run ( ) { if ( done ) reset ( ) ; if ( name . isAbsolute ( ) ) resolve ( name , null ) ; else if ( searchPath == null ) resolve ( name , Name . root ) ; else { if ( name . labels ( ) > defaultNdots ) resolve ( name , Name . root ) ; if ( done ) return answers ; for ( int i = 0 ; i < searchPath . length ; i ++ ) { resolve ( name , searchPath [ i ] ) ; if ( done ) return answers ; else if ( foundAlias ) break ; } } if ( ! done ) { if ( badresponse ) { result = TRY_AGAIN ; error = badresponse_error ; done = true ; } else if ( timedout ) { result = TRY_AGAIN ; error = "timed out" ; done = true ; } else if ( networkerror ) { result = TRY_AGAIN ; error = "network error" ; done = true ; } else if ( nxdomain ) { result = HOST_NOT_FOUND ; done = true ; } else if ( referral ) { result = UNRECOVERABLE ; error = "referral" ; done = true ; } else if ( nametoolong ) { result = UNRECOVERABLE ; error = "name too long" ; done = true ; } } return answers ; }
Performs the lookup using the specified Cache Resolver and search path .