diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2024-09-09 08:38:13 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2024-09-09 08:38:13 (GMT) |
commit | e3ce461fec70fd638b415edef4ce3aa9d939d772 (patch) | |
tree | b6e40f94525b7a66cd80cca7ea6c2ca999322df5 /src/common/curl.c | |
parent | cd583c040d6730d24fdbf4558bd6fdff98303c5b (diff) |
Collect the quantity of data received or sent with cURL.
Diffstat (limited to 'src/common/curl.c')
-rw-r--r-- | src/common/curl.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/common/curl.c b/src/common/curl.c index 2cf7f3a..e9fb92f 100644 --- a/src/common/curl.c +++ b/src/common/curl.c @@ -28,6 +28,12 @@ #include <string.h> +#include "../core/global.h" + + + +/* Mémorise un volume de données transférées. */ +static int track_curl_data_transfers(CURL *, curl_infotype, char *, size_t, void *); /* Mémorise les données reçues en réponse à une requête. */ static size_t receive_data_from_internet(void *, size_t, size_t, sized_binary_t *); @@ -36,6 +42,48 @@ static size_t receive_data_from_internet(void *, size_t, size_t, sized_binary_t /****************************************************************************** * * +* Paramètres : handle = gestionnaire de la requête cURL concernée. * +* type = type de transfert réalisé. * +* data = pointeur vers les données manipulées. * +* size = quantité de données transférées. * +* unused = adresse non utilisée ici. * +* * +* Description : Mémorise un volume de données transférées. * +* * +* Retour : CURLE_OK. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static int track_curl_data_transfers(CURL *handle, curl_infotype type, char *data, size_t size, void *unused) +{ + switch (type) + { + case CURLINFO_HEADER_IN: + case CURLINFO_DATA_IN: + /*case CURLINFO_SSL_DATA_IN:*/ + update_network_stats(size, 0); + break; + + case CURLINFO_HEADER_OUT: + case CURLINFO_DATA_OUT: + /*case CURLINFO_SSL_DATA_OUT:*/ + update_network_stats(0, size); + break; + + default: + break; + + } + + return 0; + +} + + +/****************************************************************************** +* * * Paramètres : contents = contenu nouveau en arrivance d'Internet. * * size = taille d'un élément reçu. * * nmemb = quantité de ces éléments. * @@ -100,6 +148,9 @@ bool send_http_get_request(const char *url, char * const headers[], size_t hcoun req = curl_easy_init(); if (req == NULL) goto exit; + curl_easy_setopt(req, CURLOPT_DEBUGFUNCTION, track_curl_data_transfers); + curl_easy_setopt(req, CURLOPT_VERBOSE, 1L); + curl_easy_setopt(req, CURLOPT_URL, url); /* Entêtes à transmettre */ @@ -179,6 +230,9 @@ bool send_http_post_request(const char *url, char * const headers[], size_t hcou req = curl_easy_init(); if (req == NULL) goto exit; + curl_easy_setopt(req, CURLOPT_DEBUGFUNCTION, track_curl_data_transfers); + curl_easy_setopt(req, CURLOPT_VERBOSE, 1L); + curl_easy_setopt(req, CURLOPT_URL, url); /* Entêtes à transmettre */ |