http: add CURLINFO_HTTP_VERSION and %{http_version} #799

Closed
wants to merge 1 commit into
from

Projects

None yet

4 participants

@gevaerts
Contributor

Adds access to the effectively used http version to both libcurl and curl.

Initial attempt, almost certainly not final yet.

@jay
Member
jay commented May 11, 2016 edited

I like this idea, I have read of it a few times, as recently as last month. What do you think about using the existing CURL_HTTP_VERSION_X_X enumerations for getinfo, and then for the tool something like:

verstring = ((ver == CURL_HTTP_VERSION_2_0) ? "2.0" :
             (ver == CURL_HTTP_VERSION_1_1) ? "1.1" :
             (ver == CURL_HTTP_VERSION_1_0) ? "1.0" : "0");
@gevaerts
Contributor

I've updated the patch to use CURL_HTTP_VERSION now.

@bagder bagder added the HTTP label May 11, 2016
@bagder
Member
bagder commented May 11, 2016

👍 to merge first thing after the pending release

@bagder
Member
bagder commented May 17, 2016

Note that the travis-ci test failure is because the new symbol is not properly added to docs/libcurl/symbols-in-versions

@gevaerts
Contributor

I've added it to symbols-in-versions now.

@bagder
Member
bagder commented May 19, 2016

Ganesh Nikam just posted a version of this patch on the mailing list:

https://curl.haxx.se/mail/lib-2016-05/0131.html

He included a little example in his man page that could be merged into this patch to make it perfect I think!

@ganeshnikam18 ganeshnikam18 commented on the diff May 19, 2016
src/tool_writeout.c
@@ -278,6 +280,26 @@ void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
&longinfo))
fprintf(stream, "%ld", longinfo);
break;
+ case VAR_HTTP_VERSION:
+ if(CURLE_OK ==
+ curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION,
+ &longinfo)) {
+ char *version = "0";
+ switch (longinfo) {
+ case CURL_HTTP_VERSION_1_0:
+ version = "1.0";
+ break;
+ case CURL_HTTP_VERSION_1_1:
+ version = "1.1";
+ break;
+ case CURL_HTTP_VERSION_2_0:
+ version = "2";
@ganeshnikam18
ganeshnikam18 May 19, 2016

I think the string "2.0" would be better here instead of "2".

@gevaerts
gevaerts May 19, 2016 Contributor

The consensus seems to be that it's http 2, not 2.0. See e.g. https://http2.github.io/faq/#is-it-http20-or-http2

@bagder
bagder May 19, 2016 Member

The protocol is named HTTP/2 and there's no ".0" in the name or the version. I think we avoid a lot of problems by sticking to the official name.

@gevaerts gevaerts http: add CURLINFO_HTTP_VERSION and %{http_version}
Adds access to the effectively used http version to both libcurl and curl.
7e4ae76
@bagder bagder added a commit that closed this pull request May 30, 2016
@gevaerts @bagder gevaerts + bagder http: add CURLINFO_HTTP_VERSION and %{http_version}
Adds access to the effectively used http version to both libcurl and
curl.

Closes #799
071c561
@bagder bagder closed this in 071c561 May 30, 2016
@gevaerts gevaerts deleted the gevaerts:http_version branch Dec 21, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment