mirror of
https://github.com/cesanta/mongoose.git
synced 2025-01-02 03:27:52 +08:00
f443c64341
Until I read the doc and find how to limit the retention, otherwise it just eats all my ram and cpu and things start to fall apart. PUBLISHED_FROM=eb33fb44736f07b992270689217aca4af70513ff
65 lines
1.7 KiB
Plaintext
65 lines
1.7 KiB
Plaintext
=== Asynchronouns DNS resolver
|
|
|
|
==== struct mg_resolve_async_opts
|
|
|
|
[source,c]
|
|
----
|
|
struct mg_resolve_async_opts {
|
|
const char *nameserver_url;
|
|
int max_retries; /* defaults to 2 if zero */
|
|
int timeout; /* in seconds; defaults to 5 if zero */
|
|
int accept_literal; /* pseudo-resolve literal ipv4 and ipv6 addrs */
|
|
int only_literal; /* only resolves literal addrs; sync cb invocation */
|
|
struct mg_connection **dns_conn; /* return DNS connection */
|
|
};
|
|
----
|
|
Options for `mg_resolve_async_opt`.
|
|
|
|
==== mg_resolve_async()
|
|
|
|
[source,c]
|
|
----
|
|
int mg_resolve_async(struct mg_mgr *mgr, const char *name, int query,
|
|
mg_resolve_callback_t cb, void *data);
|
|
----
|
|
See `mg_resolve_async_opt()`
|
|
|
|
==== mg_resolve_async_opt()
|
|
|
|
[source,c]
|
|
----
|
|
int mg_resolve_async_opt(struct mg_mgr *mgr, const char *name, int query,
|
|
mg_resolve_callback_t cb, void *data,
|
|
struct mg_resolve_async_opts opts);
|
|
----
|
|
Resolved a DNS name asynchronously.
|
|
|
|
Upon successful resolution, the user callback will be invoked
|
|
with the full DNS response message and a pointer to the user's
|
|
context `data`.
|
|
|
|
In case of timeout while performing the resolution the callback
|
|
will receive a NULL `msg`.
|
|
|
|
The DNS answers can be extracted with `mg_next_record` and
|
|
`mg_dns_parse_record_data`:
|
|
|
|
[source,c]
|
|
----
|
|
struct in_addr ina;
|
|
struct mg_dns_resource_record *rr = mg_next_record(msg, MG_DNS_A_RECORD,
|
|
NULL);
|
|
mg_dns_parse_record_data(msg, rr, &ina, sizeof(ina));
|
|
----
|
|
|
|
==== mg_resolve_from_hosts_file()
|
|
|
|
[source,c]
|
|
----
|
|
int mg_resolve_from_hosts_file(const char *host, union socket_address *usa);
|
|
----
|
|
Resolve a name from `/etc/hosts`.
|
|
|
|
Returns 0 on success, -1 on failure.
|
|
|