← Commit list

57a94fec47

Daniel Stenberg
Daniel Stenberg
2026-03-22
SUCCESS Duration: 282s

Subject

multi.h: add CURLMNWC_CLEAR_ALL

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

docs/libcurl/opts/CURLMOPT_NETWORK_CHANGED.md+19 -16
@@ -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
docs/libcurl/symbols-in-versions+1 -0
@@ -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
include/curl/multi.h+12 -8
@@ -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()
lib/multi.c+5 -0
@@ -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);
}