1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-10 19:45:04 -05:00

quiche: register debug callback once and earlier

The quiche debug callback is global and can only be initialized once, so
make sure we don't do it multiple times (e.g. if multiple requests are
executed).

In addition this initializes the callback before the connection is
created, so we get logs for the handshake as well.

Closes #4236
This commit is contained in:
Alessandro Ghedini 2019-08-17 15:04:33 +01:00 committed by Daniel Stenberg
parent ea28a6cb2f
commit e54affa82c
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -137,6 +137,14 @@ static const struct Curl_handler Curl_handler_h3_quiche = {
PROTOPT_SSL | PROTOPT_STREAM /* flags */
};
#ifdef DEBUG_QUICHE
static void quiche_debug_log(const char *line, void *argp)
{
(void)argp;
fprintf(stderr, "%s\n", line);
}
#endif
CURLcode Curl_quic_connect(struct connectdata *conn, curl_socket_t sockfd,
int sockindex,
const struct sockaddr *addr, socklen_t addrlen)
@ -144,6 +152,16 @@ CURLcode Curl_quic_connect(struct connectdata *conn, curl_socket_t sockfd,
CURLcode result;
struct quicsocket *qs = &conn->hequic[sockindex];
struct Curl_easy *data = conn->data;
#ifdef DEBUG_QUICHE
/* initialize debug log callback only once */
static int debug_log_init = 0;
if(!debug_log_init) {
quiche_enable_debug_logging(quiche_debug_log, NULL);
debug_log_init = 1;
}
#endif
(void)addr;
(void)addrlen;
@ -505,14 +523,6 @@ int Curl_quic_ver(char *p, size_t len)
return msnprintf(p, len, " quiche/%s", quiche_version());
}
#ifdef DEBUG_QUICHE
static void debug_log(const char *line, void *argp)
{
(void)argp;
fprintf(stderr, "%s\n", line);
}
#endif
/* Index where :authority header field will appear in request header
field list. */
#define AUTHORITY_DST_IDX 3
@ -534,10 +544,6 @@ static CURLcode http_request(struct connectdata *conn, const void *mem,
CURLcode result = CURLE_OK;
struct Curl_easy *data = conn->data;
#ifdef DEBUG_QUICHE
quiche_enable_debug_logging(debug_log, NULL);
#endif
stream->h3req = TRUE; /* senf off! */
/* Calculate number of headers contained in [mem, mem + len). Assumes a