multi.h: add CURLMNWC_CLEAR_ALL
No binary (build failed)
—
(log yok)
| @@ -27,30 +27,33 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_NETWORK_CHANGED, | |
| # DESCRIPTION | |
| - | Pass a long with a bitmask to tell libcurl how the multi |
| - | handle should react. The following values in the mask are |
| - | defined. All bits not mentioned are reserved for future |
| - | extensions. |
| - | |
| - | This option can be set at any time and repeatedly. Each call only |
| - | affects the *currently* cached connections and DNS information. |
| - | Any connection created or DNS information added afterwards is |
| - | cached the usual way again. Phrasing it another way: the option is |
| - | not persisted but setting it serves as a "trigger" |
| + | Pass a long with a bitmask to tell libcurl how the multi handle should react. |
| + | The following values in the mask are defined. All bits not mentioned are |
| + | reserved for future extensions. |
| + | |
| + | This option can be set at any time and repeatedly. Each call only affects the |
| + | *currently* cached connections and DNS information. Any connection created or |
| + | DNS information added afterwards is cached the usual way again. Phrasing it |
| + | another way: the option is not persisted but setting it serves as a "trigger" |
| to clear the caches. | |
| - | The call affects only the connection and DNS cache of the multi handle |
| - | itself and not the ones owned by SHARE handles. |
| + | The call affects only the connection and DNS cache of the multi handle itself |
| + | and not the ones owned by SHARE handles. |
| + | |
| + | ## CURLMNWC_CLEAR_ALL |
| + | |
| + | Clear everything. (Added in 8.20.0) |
| ## CURLMNWC_CLEAR_CONNS | |
| - | No longer reuse any existing connection in the multi handle's |
| - | connection cache. This closes all connections that are not in use. |
| - | Ongoing transfers continue on the connections they operate on. |
| + | No longer reuse any existing connection in the multi handle's connection |
| + | cache. This closes all connections that are not in use. Ongoing transfers |
| + | continue on the connections they operate on. |
| ## CURLMNWC_CLEAR_DNS | |
| - | Clear the multi handle's DNS cache. |
| + | Clear the multi handle's DNS cache. Ongoing transfers keep using their already |
| + | resolved addresses, but future name resolutions are performed again. |
| # DEFAULT | |
| @@ -561,6 +561,7 @@ CURLMINFO_XFERS_PENDING 8.16.0 | |
| CURLMINFO_XFERS_RUNNING 8.16.0 | |
| CURLMNOTIFY_EASY_DONE 8.17.0 | |
| CURLMNOTIFY_INFO_READ 8.17.0 | |
| + | CURLMNWC_CLEAR_ALL 8.20.0 |
| CURLMNWC_CLEAR_CONNS 8.16.0 | |
| CURLMNWC_CLEAR_DNS 8.16.0 | |
| CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0 | |
| @@ -408,15 +408,19 @@ typedef enum { | |
| /* Definition of bits for the CURLMOPT_NETWORK_CHANGED argument: */ | |
| + | /* - CURLMNWC_CLEAR_ALL tells libcurl to clear "everything" that could be |
| + | associated with this network, including both connections and DNS data. */ |
| + | #define CURLMNWC_CLEAR_ALL (1L << 0) |
| + | |
| /* - CURLMNWC_CLEAR_CONNS tells libcurl to prevent further reuse of existing | |
| - | connections. Connections that are idle are closed. Ongoing transfers |
| - | do continue with the connection they have. */ |
| - | #define CURLMNWC_CLEAR_CONNS (1L << 0) |
| - | |
| - | /* - CURLMNWC_CLEAR_DNS tells libcurl to prevent further reuse of existing |
| - | connections. Connections that are idle are closed. Ongoing transfers |
| - | do continue with the connection they have. */ |
| - | #define CURLMNWC_CLEAR_DNS (1L << 0) |
| + | connections. Connections that are idle are closed. Ongoing transfers do |
| + | continue with the connection they have. */ |
| + | #define CURLMNWC_CLEAR_CONNS (1L << 1) |
| + | |
| + | /* - CURLMNWC_CLEAR_DNS tells libcurl to clear the DNS cache associated with |
| + | this multi handle. Ongoing transfers keep using their already resolved |
| + | addresses, but future name resolutions are performed again. */ |
| + | #define CURLMNWC_CLEAR_DNS (1L << 2) |
| /* | |
| * Name: curl_multi_setopt() | |
| @@ -3328,6 +3328,11 @@ CURLMcode curl_multi_setopt(CURLM *m, CURLMoption option, ...) | |
| } | |
| case CURLMOPT_NETWORK_CHANGED: { | |
| long val = va_arg(param, long); | |
| + | if(val & CURLMNWC_CLEAR_ALL) |
| + | /* In the beginning, all values available to set were 1 by mistake. We |
| + | converted this to mean "all", thus setting all the bits |
| + | automatically */ |
| + | val = CURLMNWC_CLEAR_DNS | CURLMNWC_CLEAR_CONNS; |
| if(val & CURLMNWC_CLEAR_DNS) { | |
| Curl_dnscache_clear(multi->admin); | |
| } | |