{"id":18598,"date":"2022-04-10T18:28:23","date_gmt":"2022-04-10T16:28:23","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=18598"},"modified":"2022-04-10T23:03:40","modified_gmt":"2022-04-10T21:03:40","slug":"msh3-as-the-third-h3-backend","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2022\/04\/10\/msh3-as-the-third-h3-backend\/","title":{"rendered":"msh3 as the third h3 backend"},"content":{"rendered":"\n<p>With the brand new merged support for the msh3 library, curl now supports no less than <strong>three<\/strong> different HTTP\/3 backends. It was merged into curl&#8217;s git repository on April 10.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"521\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/08\/IETF-Badge-HTTP3@3x-1200x521.png\" alt=\"\" class=\"wp-image-14407\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/08\/IETF-Badge-HTTP3@3x-1200x521.png 1200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/08\/IETF-Badge-HTTP3@3x-450x196.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/08\/IETF-Badge-HTTP3@3x-200x87.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/08\/IETF-Badge-HTTP3@3x-768x334.png 768w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/08\/IETF-Badge-HTTP3@3x.png 1383w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n\n<p>When you build curl, you have the option to build it with <a href=\"https:\/\/curl.se\/docs\/http3.html\">HTTP\/3 support<\/a> enabled. The HTTP\/3 support in curl is still considered experimental so it is still not enabled by default.<\/p>\n\n\n\n<p>The HTTP\/3 support in curl depends on the presence and support from third party libraries. You need to select and enable a specific HTTP\/3 backend when you build curl. It has previously been doing HTTP\/3 using either <a href=\"https:\/\/github.com\/cloudflare\/quiche\">quiche<\/a> or <a href=\"https:\/\/github.com\/ngtcp2\/ngtcp2\">ngtcp2 + nghttp3<\/a>. Starting now, there is yet another option to consider: <a href=\"https:\/\/github.com\/nibanks\/msh3\">the msh3 library<\/a>.<\/p>\n\n\n\n<p>The msh3 library itself uses <a href=\"https:\/\/github.com\/microsoft\/msquic\">msquic<\/a> for doing QUIC. This is a multi platform library that uses Schannel for TLS when on Windows and OpenSSL\/quictls for other platforms. The Schannel part probably makes solution this particularly interesting for curl users on Windows.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With the brand new merged support for the msh3 library, curl now supports no less than three different HTTP\/3 backends. It was merged into curl&#8217;s git repository on April 10. When you build curl, you have the option to build it with HTTP\/3 support enabled. The HTTP\/3 support in curl is still considered experimental so &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2022\/04\/10\/msh3-as-the-third-h3-backend\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">msh3 as the third h3 backend<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":11900,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[33,436],"class_list":["post-18598","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curl","tag-curl-and-libcurl","tag-http3"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/18598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=18598"}],"version-history":[{"count":13,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/18598\/revisions"}],"predecessor-version":[{"id":18984,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/18598\/revisions\/18984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media\/11900"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=18598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=18598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=18598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}