Когда я компилирую образ OpenWrt с помощью make menuconfig, я устанавливаю флажок libcurl, а затем флажок для добавления поддержки HTTP/2 и убеждаюсь, что также отмечена библиотека nghttp2. В моем коде, который делает запросы, я установил CURLOPT_HTTP_VERSION на CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, потому что мой сервер использует HTTP/2 во всех запросах браузера и это через https.
Для тестирования я скомпилировал curl на машине Ubuntu с поддержкой HTTP/2 и сделал запрос POST на тот же URL, который я запрашиваю в OpenWrt, и запрос использовал HTTP/2. Есть ли что-то, что известно о неправильности HTTP/2 в OpenWrt? Или это проблема, с которой сталкивались другие люди и которую они исправили? Полезных отладочных данных нет, я уже все перерыл и немного растерялся.
Я использую mbedTLS в качестве бэкэнда TLS/SSL, если это будет полезно.
Отредактировано с дополнительной информацией: запустил этот фрагмент:
printf("%d\n", curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_HTTP2);
и он напечатал 0
, а затем побежал:
printf("%d\n", curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_SSL);
и он напечатал 4
. Так что даже если я компилирую свой образ с включенной libcurl, проверенной поддержкой http2 и проверенной поддержкой SSL, на самом деле включается только SSL. Однако есть .so
и для mbedtls, и для libnghttp2.
Любая помощь в этом вопросе будет полезна.