---
name: "ares_destroy"
section: "3"
platform: "linux"
package: "c-ares"
version: "1.34.9-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ares_destroy"
---

# ares\_destroy(3)

Destroy a resolver channel

## NAME

ares\_destroy - Destroy a resolver channel

## SYNOPSIS

```
#include <ares.h>
void ares_destroy(ares_channel_t *channel)
```

## DESCRIPTION

The **[ares\_destroy(3)](/ares_destroy/3.md)** function destroys the name service channel identified by *channel*, freeing all memory and closing all sockets used by the channel.

**[ares\_destroy(3)](/ares_destroy/3.md)** invokes the callbacks for each pending query on the channel, passing a status of *ARES\_EDESTRUCTION*. These calls give the callbacks a chance to clean up any state which might have been stored in their arguments. A callback must not add new requests to a channel being destroyed. Such a request is refused: the request is not started, and its callback is invoked with a status of *ARES\_EDESTRUCTION* so that any state attached to its argument can be released. A request made from within that notification is refused without a further notification, so that a callback which responds to failure by retrying cannot recurse without bound; its argument is not handed back. This applies as of c-ares version 1.35.0, and c-ares version 1.34.9 on the 1.34 branch.

There is no ability to make this function thread-safe.  No additional calls using this channel may be made once this function is called.

## SEE ALSO

[**ares\_init**(3)](/ares_init/3.md), [**ares\_cancel**(3)](/ares_cancel/3.md), [**ares\_threadsafety**(3)](/ares_threadsafety/3.md)
