---
name: "radcli_request_done"
section: "3"
platform: "linux"
package: "radcli"
version: "2.0.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/radcli_request_done"
---

# radcli\_request\_done(3)

Report r's outcome once radcli\_ctx\_dispatch() has resolved it a pure state query, performing no I/O of its own.

## NAME

radcli\_request\_done - Report r's outcome once radcli\_ctx\_dispatch() has resolved it  a pure state query, performing no I/O of its own.

## SYNOPSIS

```
#include <radcli/>

int radcli_request_done(
    radcli_request  *r
);
```

## DESCRIPTION

Since REQ-NET2-SEND-016/013, r shares ctx's request socket/session with every other concurrently in-flight RADCLI\_REQUEST\_SENDONLY request, and radcli\_ctx\_dispatch() is what actually drives it to completion (draining replies, retransmitting, expiring on timeout)  this call never performs I/O itself, so polling it any number of times between radcli\_ctx\_dispatch() calls is free. The terminal result is reported once; the reply then stays readable with radcli\_request\_code()/\_attrs().

## PARAMETERS

- **r**

  a request radcli\_request\_perform(r, RADCLI\_REQUEST\_SENDONLY) returned RADCLI\_OK for.

## RETURN VALUE

RADCLI\_AGAIN if still waiting (call radcli\_ctx\_get\_poll()/ radcli\_ctx\_dispatch() and try again), RADCLI\_OK if a validated reply was received (read it with radcli\_request\_code()/\_attrs(), same as radcli\_request\_perform()), RADCLI\_TIMEOUT if retries are exhausted, or RADCLI\_ERROR on failure, if r was never sent with RADCLI\_REQUEST\_SENDONLY, or if its terminal result was already returned.

## SEE ALSO

[*radcli\_aaa*(3)](/radcli_aaa/3.md), [*radcli\_request\_attrs*(3)](/radcli_request_attrs/3.md), [*radcli\_request\_code*(3)](/radcli_request_code/3.md), [*radcli\_request\_free*(3)](/radcli_request_free/3.md), [*radcli\_request\_new*(3)](/radcli_request_new/3.md), [*radcli\_request\_perform*(3)](/radcli_request_perform/3.md), [*radcli\_request\_server*(3)](/radcli_request_server/3.md)
