wget2: DNS caching

| wget2 2.2.1

Loading...
Searching...
No Matches
DNS caching

## Data Structures
struct | cache_entry
struct | wget_dns_cache_st

## Functions
int | wget_dns_cache_init (wget_dns_cache **cache)
void | wget_dns_cache_free (wget_dns_cache **cache)
struct addrinfo * | wget_dns_cache_get (wget_dns_cache *cache, const char *host, uint16_t port)
int | wget_dns_cache_add (wget_dns_cache *cache, const char *host, uint16_t port, struct addrinfo **addrinfo)

## Detailed Description

DNS cache management functions.

## Function Documentation

## ◆ wget_dns_cache_init()

int wget_dns_cache_init | ( | wget_dns_cache ** | cache | ) |

Parameters

  [out] | cache | Pointer to return newly allocated and initialized wget_dns_cache instance

Returns
  WGET_E_SUCCESS if OK, WGET_E_MEMORY if out-of-memory or WGET_E_INVALID if the mutex initialization failed.

Allocates and initializes a wget_dns_cache instance.

## ◆ wget_dns_cache_free()

void wget_dns_cache_free | ( | wget_dns_cache ** | cache | ) |

Parameters

  [in/out] | cache Pointer to wget_dns_cache instance that will be freed and NULLified.

Free the resources allocated by wget_dns_cache_init().

## ◆ wget_dns_cache_get()

struct addrinfo * wget_dns_cache_get | ( | wget_dns_cache * | cache,
|  | const char * | host,
|  | uint16_t | port )

Parameters

  [in] | cache | A wget_dns_cache instance, created by wget_dns_cache_init().
  [in] | host | Hostname to look up
  [in] | port | Port to look up

Returns
  The cached addrinfo structure or NULL if not found

## ◆ wget_dns_cache_add()

int wget_dns_cache_add | ( | wget_dns_cache * | cache,
|  | const char * | host,
|  | uint16_t | port,
|  | struct addrinfo ** | addrinfo )

Parameters

  [in] | cache | A wget_dns_cache instance, created by wget_dns_cache_init().
  [in] | host | Hostname part of the key
  [in] | port | Port part of the key
  | [in/out] | addrinfo Addrinfo structure to cache, returns cached addrinfo

Returns
  WGET_E_SUCCESS on success, else a WGET_E_* error value

This functions adds `addrinfo` to the given DNS cache `cache`.

If an entry for [host,port] already exists, `addrinfo` is free'd and replaced by the cached entry. Do not free `addrinfo` yourself - this will be done when the whole cache is freed.