From 1a2df1518ad8653f248e8e9de47f28448d2dc399 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 12 Aug 2019 10:04:50 +0200 Subject: [PATCH] curl_version_info: offer quic (and h3) library info Closes #4216 --- docs/libcurl/curl_version_info.3 | 9 +++++++++ include/curl/curl.h | 3 ++- lib/version.c | 11 ++++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3 index 07cdf0c47..0c4006740 100644 --- a/docs/libcurl/curl_version_info.3 +++ b/docs/libcurl/curl_version_info.3 @@ -78,6 +78,15 @@ typedef struct { (MAJOR << 24) | (MINOR << 12) | PATCH */ const char *brotli_version; /* human readable string. */ + /* when 'age is CURLVERSION_SIXTH or alter (7.66.0 or later), these fields + also exist */ + unsigned int nghttp2_ver_num; /* Numeric nghttp2 version + (MAJOR << 16) | (MINOR << 8) | PATCH */ + const char *nghttp2_version; /* human readable string. */ + + char *quic_version; /* human readable quic (+ HTTP/3) library + + version or NULL */ + } curl_version_info_data; .fi diff --git a/include/curl/curl.h b/include/curl/curl.h index 9429355a9..9131f117d 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -2762,7 +2762,8 @@ typedef struct { unsigned int nghttp2_ver_num; /* Numeric nghttp2 version (MAJOR << 16) | (MINOR << 8) | PATCH */ const char *nghttp2_version; /* human readable string. */ - + char *quic_version; /* human readable quic (+ HTTP/3) library + + version or NULL */ } curl_version_info_data; #define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ diff --git a/lib/version.c b/lib/version.c index c1b5a1c51..5a969b943 100644 --- a/lib/version.c +++ b/lib/version.c @@ -395,7 +395,8 @@ static curl_version_info_data version_info = { 0, /* brotli_ver_num */ NULL, /* brotli version */ 0, /* nghttp2 version number */ - NULL /* nghttp2 version string */ + NULL, /* nghttp2 version string */ + NULL /* quic library string */ }; curl_version_info_data *curl_version_info(CURLversion stamp) @@ -479,6 +480,14 @@ curl_version_info_data *curl_version_info(CURLversion stamp) } #endif +#ifdef ENABLE_QUIC + { + static char quicbuffer[80]; + Curl_quic_ver(quicbuffer, sizeof(quicbuffer)); + version_info.quic_version = quicbuffer; + } +#endif + (void)stamp; /* avoid compiler warnings, we don't use this */ initialized = true;