---
name: "ares_cancel"
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_cancel"
---

# ares\_cancel(3)

Cancel a resolve

## NAME

ares\_cancel - Cancel a resolve

## SYNOPSIS

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

## DESCRIPTION

The **[ares\_cancel(3)](/ares_cancel/3.md)** function cancels all lookups/requests made on the the name service channel identified by *channel*.  **[ares\_cancel(3)](/ares_cancel/3.md)** invokes the callbacks for each pending query on the channel, passing a status of **ARES\_ECANCELLED**. These calls give the callbacks a chance to clean up any state which might have been stored in their arguments. If such a callback invocation adds a new request to the channel, that request will *not* be cancelled by the current invocation of **[ares\_cancel(3)](/ares_cancel/3.md)**.

## REENTRANCY

A callback invoked by [**ares\_cancel**(3)](/ares_cancel/3.md) may call c-ares functions on the same channel. The channel lock is recursive, and each query is unlinked from the library's internal structures before its callback runs, so a reentrant call cannot encounter a query that is part-way through being torn down.

This includes starting new lookups, as described above, and reconfiguring the server list with [**ares\_set\_servers\_csv**(3)](/ares_set_servers_csv/3.md) and related functions.

## AVAILABILITY

The reentrancy guarantee described above applies as of c-ares version 1.35.0, and c-ares version 1.34.9 on the 1.34 branch.

## SEE ALSO

[**ares\_init**(3)](/ares_init/3.md) [**ares\_destroy**(3)](/ares_destroy/3.md)

## NOTES

This function was added in c-ares 1.2.0

c-ares 1.6.0 and earlier pass a status of **ARES\_ETIMEOUT** instead of **ARES\_ECANCELLED**.
