Quando compilo uma imagem OpenWrt com make menuconfig, estou marcando a caixa libcurl e, em seguida, marcando a caixa para adicionar suporte HTTP/2 e certificando-me de que a biblioteca nghttp2 também esteja marcada. No meu código que faz as solicitações, tenho CURLOPT_HTTP_VERSION definido como CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE porque meu servidor usa HTTP/2 em todas as solicitações do navegador e é via https.
Para teste, compilei o curl em uma máquina Ubuntu com suporte HTTP/2 e fiz uma solicitação POST para a mesma URL que estou solicitando no OpenWrt, e a solicitação usou HTTP/2. Há algo que está errado com o HTTP/2 no OpenWrt? Ou este é um problema que outras pessoas tiveram e resolveram? Não há dados de depuração que sejam úteis, já vasculhei tudo isso e estou meio perdido.
Estou usando mbedTLS como meu backend TLS/SSL, caso isso seja útil.
Editado com mais informações: executei este trecho:
printf("%d\n", curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_HTTP2);
e imprimiu 0
e depois executou:
printf("%d\n", curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_SSL);
e imprimiu 4
. Portanto, embora eu esteja compilando minha imagem com libcurl incluído, suporte http2 verificado e suporte SSL verificado, apenas SSL está realmente sendo incluído. No entanto, existe um .so
para mbedtls E libnghttp2.
Qualquer ajuda com isso seria útil.