---
name: "curl_multi_setopt"
section: "3"
platform: "macos"
package: "curl"
version: "166.0.0.0.1"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curl_multi_setopt"
---

# curl\_multi\_setopt(3)

set options for a curl multi handle

## NAME

curl\_multi\_setopt - set options for a curl multi handle

## SYNOPSIS

```
#include <curl/curl.h>
CURLMcode curl_multi_setopt(CURLM *multi_handle, CURLMoption option, parameter);
```

## DESCRIPTION

*[curl\_multi\_setopt(3)](/curl_multi_setopt/3.md)* is used to tell a libcurl multi handle how to behave. By using the appropriate options to *[curl\_multi\_setopt(3)](/curl_multi_setopt/3.md)*, you can change libcurl's behavior when using that multi handle. All options are set with the *option* followed by the *parameter*. That parameter can be a **long**, a **function pointer**, an **object pointer** or a **curl\_off\_t** type, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly. You can only set one option in each function call.

## OPTIONS

- CURLMOPT\_CHUNK\_LENGTH\_PENALTY\_SIZE

  See *[CURLMOPT\_CHUNK\_LENGTH\_PENALTY\_SIZE(3)](/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE/3.md)*

- CURLMOPT\_CONTENT\_LENGTH\_PENALTY\_SIZE

  See *[CURLMOPT\_CONTENT\_LENGTH\_PENALTY\_SIZE(3)](/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE/3.md)*

- CURLMOPT\_MAX\_HOST\_CONNECTIONS

  See *[CURLMOPT\_MAX\_HOST\_CONNECTIONS(3)](/CURLMOPT_MAX_HOST_CONNECTIONS/3.md)*

- CURLMOPT\_MAX\_PIPELINE\_LENGTH

  See *[CURLMOPT\_MAX\_PIPELINE\_LENGTH(3)](/CURLMOPT_MAX_PIPELINE_LENGTH/3.md)*

- CURLMOPT\_MAX\_TOTAL\_CONNECTIONS

  See *[CURLMOPT\_MAX\_TOTAL\_CONNECTIONS(3)](/CURLMOPT_MAX_TOTAL_CONNECTIONS/3.md)*

- CURLMOPT\_MAXCONNECTS

  See *[CURLMOPT\_MAXCONNECTS(3)](/CURLMOPT_MAXCONNECTS/3.md)*

- CURLMOPT\_PIPELINING

  See *[CURLMOPT\_PIPELINING(3)](/CURLMOPT_PIPELINING/3.md)*

- CURLMOPT\_PIPELINING\_SITE\_BL

  See *[CURLMOPT\_PIPELINING\_SITE\_BL(3)](/CURLMOPT_PIPELINING_SITE_BL/3.md)*

- CURLMOPT\_PIPELINING\_SERVER\_BL

  See *[CURLMOPT\_PIPELINING\_SERVER\_BL(3)](/CURLMOPT_PIPELINING_SERVER_BL/3.md)*

- CURLMOPT\_PUSHFUNCTION

  See *[CURLMOPT\_PUSHFUNCTION(3)](/CURLMOPT_PUSHFUNCTION/3.md)*

- CURLMOPT\_PUSHDATA

  See *[CURLMOPT\_PUSHDATA(3)](/CURLMOPT_PUSHDATA/3.md)*

- CURLMOPT\_SOCKETFUNCTION

  See *[CURLMOPT\_SOCKETFUNCTION(3)](/CURLMOPT_SOCKETFUNCTION/3.md)*

- CURLMOPT\_SOCKETDATA

  See *[CURLMOPT\_SOCKETDATA(3)](/CURLMOPT_SOCKETDATA/3.md)*

- CURLMOPT\_TIMERFUNCTION

  See *[CURLMOPT\_TIMERFUNCTION(3)](/CURLMOPT_TIMERFUNCTION/3.md)*

- CURLMOPT\_TIMERDATA

  See *[CURLMOPT\_TIMERDATA(3)](/CURLMOPT_TIMERDATA/3.md)*

- CURLMOPT\_MAX\_CONCURRENT\_STREAMS

  See *[CURLMOPT\_MAX\_CONCURRENT\_STREAMS(3)](/CURLMOPT_MAX_CONCURRENT_STREAMS/3.md)*

## EXAMPLE

```
#define MAX_PARALLEL 45
int main(void)
{
  CURLM *multi;
  /* Limit the amount of simultaneous connections curl should allow: */
  curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, (long)MAX_PARALLEL);
}
```

## AVAILABILITY

Added in 7.15.4

## RETURN VALUE

The standard CURLMcode for multi interface error codes. Note that it returns a CURLM\_UNKNOWN\_OPTION if you try setting an option that this version of libcurl does not know of.

## SEE ALSO

[**curl\_multi\_cleanup**(3)](/curl_multi_cleanup/3.md), [**curl\_multi\_info\_read**(3)](/curl_multi_info_read/3.md), [**curl\_multi\_init**(3)](/curl_multi_init/3.md), [**curl\_multi\_socket**(3)](/curl_multi_socket/3.md)
