ARES\_CANCEL(3) Library Functions Manual ARES\_CANCEL(3)

# [NAME](#NAME)

ares\_cancel - Cancel a resolve

# [SYNOPSIS](#SYNOPSIS)

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

# [DESCRIPTION](#DESCRIPTION)

The [**ares\_cancel(3)**](/man/os/c-ares/ares_cancel.3) function cancels all lookups/requests made on the the name service channel identified by *channel*. [**ares\_cancel(3)**](/man/os/c-ares/ares_cancel.3) 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)**](/man/os/c-ares/ares_cancel.3).

# [REENTRANCY](#REENTRANCY)

A callback invoked by [**ares\_cancel**(3)](/man/os/c-ares/ares_cancel.3) 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)](/man/os/c-ares/ares_set_servers_csv.3) and related functions.

# [AVAILABILITY](#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](#SEE_ALSO)

[**ares\_init**(3)](/man/os/c-ares/ares_init.3) [**ares\_destroy**(3)](/man/os/c-ares/ares_destroy.3)

# [NOTES](#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**.

31 March 2004

---

Document: ares_cancel(3) from c-ares 1.34.9-r0 (Chainguard OS)
Source: https://github.com/c-ares/c-ares
