|
Network.DNS.PollResolver | Portability | Haskell 2-pre | Stability | provisional | Maintainer | simons@cryp.to |
|
|
|
|
|
Description |
This module provides a poll-based I/O scheduler for
Network.DNS.ADNS. See the test.hs program included in
the distribution for an example of how to use this
resolver. Link your program with the threaded
runtime-system when you use this module. In GHC, this is
accomplished by specifying -threaded on the
command-line.
|
|
Synopsis |
|
|
|
|
Resolver API
|
|
|
A Resolver is an IO computation which -- given the
name and type of the record to query -- returns an MVar
that will eventually contain the Answer from the Domain
Name System.
|
|
|
Run the given IO computation with an Initialized
Resolver. Note that resolver functions can be shared,
and should be shared between any number of IO
threads. You may use multiple resolvers, of course, but
doing so defeats the purpose of an asynchronous resolver.
|
|
|
Resolve a hostname's A records.
|
|
|
Get the PTR records assigned to a host address. Note
that although the API allows for a record to have more
than one PTR entry, this will actually not happen
because the GNU adns library can't handle this case and
will return sINCONSISTENT.
|
|
|
Resolve the mail exchangers for a hostname. The returned
list may contain more than one entry per hostname, in
case the host has several A records. The records are
returned in the order you should try to contact them as
determined by the priority in the RRMX response.
|
|
|
Convenience wrapper that will modify any of the
revolveXXX functions above to return Maybe rather
than Either. The idea is that Nothing signifies any
sort of failure; Just [] signifies sNXDOMAIN; and
everything else signifies sOK.
So if you aren't interested in getting accurate Status
codes in case of failures. Wrap your DNS queries as
follows:
queryA :: Resolver -> HostName -> IO (Maybe [HostAddress])
queryA = query resolveA
|
|
|
Use this function to disable DNS resolving. It will
always return (Answer sSYSTEMFAIL Nothing (Just
host) (-1) []).
|
|
Implementation
|
|
|
The internal state of the resolver is stored in an
MVar so that it is shared (and synchronized) between
any number of concurrent IO threads.
| Constructors | |
|
|
|
Submit a DNS query to the resolver and check whether we
have a running resolveLoop thread already. If we don't,
start one with forkIO. Make sure you link the threaded
RTS so that the main loop will not block other threads.
|
|
|
Loop until all open queries have been resolved. Uses
poll internally to avoid busy-polling the ADNS sockets.
|
|
Produced by Haddock version 2.4.2 |