1
0
mirror of https://github.com/moparisthebest/curl synced 2025-03-11 07:39:50 -04:00

Curl_conncache_foreach: allow callback to break loop

... and have it take a proper 'struct connectdata *' as first argument
This commit is contained in:
Daniel Stenberg 2012-12-11 20:13:29 +01:00
parent 2897ce7dc2
commit 1649e680f6
2 changed files with 9 additions and 4 deletions

View File

@ -180,10 +180,13 @@ void Curl_conncache_remove_conn(struct conncache *connc,
/* This function iterates the entire connection cache and calls the /* This function iterates the entire connection cache and calls the
function func() with the connection pointer as the first argument function func() with the connection pointer as the first argument
and the supplied 'param' argument as the other */ and the supplied 'param' argument as the other,
Return 0 from func() to continue the loop, return 1 to abort it.
*/
void Curl_conncache_foreach(struct conncache *connc, void Curl_conncache_foreach(struct conncache *connc,
void *param, void *param,
void (*func)(void *conn, void *param)) int (*func)(struct connectdata *conn, void *param))
{ {
struct curl_hash_iterator iter; struct curl_hash_iterator iter;
struct curl_llist_element *curr; struct curl_llist_element *curr;
@ -208,7 +211,8 @@ void Curl_conncache_foreach(struct conncache *connc,
conn = curr->ptr; conn = curr->ptr;
curr = curr->next; curr = curr->next;
func(conn, param); if(1 == func(conn, param))
return;
} }
he = Curl_hash_next_element(&iter); he = Curl_hash_next_element(&iter);

View File

@ -48,7 +48,8 @@ void Curl_conncache_remove_conn(struct conncache *connc,
void Curl_conncache_foreach(struct conncache *connc, void Curl_conncache_foreach(struct conncache *connc,
void *param, void *param,
void (*func)(void *, void *)); int (*func)(struct connectdata *conn,
void *param));
struct connectdata * struct connectdata *
Curl_conncache_find_first_connection(struct conncache *connc); Curl_conncache_find_first_connection(struct conncache *connc);