Displaying 6 results from an estimated 6 matches for "headers_copy".
2020 Jul 15
0
[PATCH nbdkit v2] curl: Implement header and cookie scripts.
...er;
+extern const char *user_agent;
+
+/* The per-connection handle. */
+struct curl_handle {
+ CURL *c;
+ bool accept_range;
+ int64_t exportsize;
+ char errbuf[CURL_ERROR_SIZE];
+ char *write_buf;
+ uint32_t write_count;
+ const char *read_buf;
+ uint32_t read_count;
+ struct curl_slist *headers_copy;
+};
+
+/* scripts.c */
+extern int do_scripts (struct curl_handle *h);
+extern void scripts_unload (void);
+
+#endif /* NBDKIT_CURLDEFS_H */
diff --git a/plugins/curl/curl.c b/plugins/curl/curl.c
index 50eef1a8..8731a506 100644
--- a/plugins/curl/curl.c
+++ b/plugins/curl/curl.c
@@ -48,9 +48,11 @@...
2020 Jul 15
2
[PATCH nbdkit v2] curl: Implement header and cookie scripts.
Evolution of this patch series:
https://www.redhat.com/archives/libguestfs/2020-July/thread.html#00073
Instead of auth-script, this implements header-script and
cookie-script. It can be used for similar purposes but the
implementation is somewhat saner.
Rich.
2023 Feb 22
1
[PATCH nbdkit] curl: Try to share as much as possible between handles in the pool
...Share settings with other handles. */
+ curl_easy_setopt (ch->c, CURLOPT_SHARE, share);
+
/* Various options we always set.
*
* NB: Both here and below constants must be explicitly long because
@@ -519,3 +563,30 @@ free_handle (struct curl_handle *ch)
curl_slist_free_all (ch->headers_copy);
free (ch);
}
+
+static void
+lock_cb (CURL *handle, curl_lock_data data, curl_lock_access access,
+ void *userptr)
+{
+ assert (data < ARRAY_SIZE (lockarray));
+
+ switch (access) {
+ case CURL_LOCK_ACCESS_SHARED:
+ pthread_rwlock_rdlock (&lockarray[data]);
+ break;
+...
2023 Feb 22
2
[PATCH nbdkit] curl: Try to share as much as possible between handles in the pool
I'm mainly posting this to the list as a back-up. It does work, it
does _not_ improve performance in any noticable way. However I'm
having lots of trouble getting HTTP/2 to work (with or without this
patch) and that's stopping me from testing anything properly.
Rich.
2023 Feb 22
1
[PATCH nbdkit] curl: Try to share as much as possible between handles in the pool
...*/
> + curl_easy_setopt (ch->c, CURLOPT_SHARE, share);
> +
> /* Various options we always set.
> *
> * NB: Both here and below constants must be explicitly long because
> @@ -519,3 +563,30 @@ free_handle (struct curl_handle *ch)
> curl_slist_free_all (ch->headers_copy);
> free (ch);
> }
> +
> +static void
> +lock_cb (CURL *handle, curl_lock_data data, curl_lock_access access,
> + void *userptr)
> +{
> + assert (data < ARRAY_SIZE (lockarray));
> +
> + switch (access) {
> + case CURL_LOCK_ACCESS_SHARED:
> +...
2020 Jul 20
1
Re: [PATCH nbdkit v2] curl: Implement header and cookie scripts.
...n calling CURLOPT_HTTPHEADER we have to keep the list around
> + * because unfortunately curl doesn't take a copy. Since we don't
> + * know which other threads might be using it, we must make a copy
> + * of the global list (headers_from_script) per handle
> + * (h->headers_copy). For CURLOPT_COOKIE, curl internally takes a
> + * copy so we don't need to do this.
The comment on memory life cycles is very helpful (and I suspect you
went through several iterations before figuring out an arrangement that
works)
> +
> +/* This is called with the lock held...