diff --git a/NEWS b/NEWS index 509865594..b41747167 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,8 @@ ver 0.24 (not yet released) * remove Haiku support ver 0.23.10 (not yet released) +* encoder + - flac: fix failure when libFLAC is built without Ogg support * Windows - log to stdout by default, don't require "log_file" setting diff --git a/python/build/libs.py b/python/build/libs.py index 3409c63f6..0a502c84a 100644 --- a/python/build/libs.py +++ b/python/build/libs.py @@ -43,13 +43,15 @@ opus = AutotoolsProject( ) flac = AutotoolsProject( - 'http://downloads.xiph.org/releases/flac/flac-1.3.4.tar.xz', - '8ff0607e75a322dd7cd6ec48f4f225471404ae2730d0ea945127b1355155e737', + 'http://downloads.xiph.org/releases/flac/flac-1.4.0.tar.xz', + 'af41c0733c93c237c3e52f64dd87e3b0d9af38259f1c7d11e8cbf583c48c2506', 'lib/libFLAC.a', [ '--disable-shared', '--enable-static', + '--disable-stack-smash-protection', '--disable-xmms-plugin', '--disable-cpplibs', '--disable-doxygen-docs', + '--disable-programs', ], subdirs=['include', 'src/libFLAC'], ) @@ -445,7 +447,7 @@ jack = JackProject( ) boost = BoostProject( - 'https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2', - '475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39', + 'https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2', + '1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0', 'include/boost/version.hpp', ) diff --git a/src/encoder/plugins/FlacEncoderPlugin.cxx b/src/encoder/plugins/FlacEncoderPlugin.cxx index 0c320f19c..83768bf6c 100644 --- a/src/encoder/plugins/FlacEncoderPlugin.cxx +++ b/src/encoder/plugins/FlacEncoderPlugin.cxx @@ -41,6 +41,7 @@ class FlacEncoder final : public Encoder { FLAC__StreamEncoder *const fse; const unsigned compression; + const bool oggflac; PcmBuffer expand_buffer; @@ -127,7 +128,7 @@ flac_encoder_init(const ConfigBlock &block) } static void -flac_encoder_setup(FLAC__StreamEncoder *fse, unsigned compression, +flac_encoder_setup(FLAC__StreamEncoder *fse, unsigned compression, bool oggflac, const AudioFormat &audio_format) { unsigned bits_per_sample; @@ -162,7 +163,7 @@ flac_encoder_setup(FLAC__StreamEncoder *fse, unsigned compression, throw FormatRuntimeError("error setting flac sample rate to %d", audio_format.sample_rate); - if (!FLAC__stream_encoder_set_ogg_serial_number(fse, + if (oggflac && !FLAC__stream_encoder_set_ogg_serial_number(fse, GenerateSerial())) throw FormatRuntimeError("error setting ogg serial number"); } @@ -170,11 +171,12 @@ flac_encoder_setup(FLAC__StreamEncoder *fse, unsigned compression, FlacEncoder::FlacEncoder(AudioFormat _audio_format, FLAC__StreamEncoder *_fse, unsigned _compression, bool _oggflac, bool _oggchaining) :Encoder(_oggchaining), audio_format(_audio_format), fse(_fse), - compression(_compression) + compression(_compression), + oggflac(_oggflac) { /* this immediately outputs data through callback */ - auto init_status = _oggflac ? + auto init_status = oggflac ? FLAC__stream_encoder_init_ogg_stream(fse, nullptr, WriteCallback, nullptr, nullptr, nullptr, @@ -213,7 +215,7 @@ PreparedFlacEncoder::Open(AudioFormat &audio_format) throw std::runtime_error("FLAC__stream_encoder_new() failed"); try { - flac_encoder_setup(fse, compression, audio_format); + flac_encoder_setup(fse, compression, oggflac, audio_format); } catch (...) { FLAC__stream_encoder_delete(fse); throw; @@ -226,7 +228,7 @@ void FlacEncoder::SendTag(const Tag &tag) { /* re-initialize encoder since flac_encoder_finish resets everything */ - flac_encoder_setup(fse, compression, audio_format); + flac_encoder_setup(fse, compression, oggflac, audio_format); FLAC__StreamMetadata *metadata = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); FLAC__StreamMetadata_VorbisComment_Entry entry; diff --git a/src/input/plugins/CurlInputPlugin.cxx b/src/input/plugins/CurlInputPlugin.cxx index 1513101e2..1c314c364 100644 --- a/src/input/plugins/CurlInputPlugin.cxx +++ b/src/input/plugins/CurlInputPlugin.cxx @@ -437,6 +437,8 @@ CurlInputStream::InitEasy() request->SetVerifyPeer(verify_peer); request->SetVerifyHost(verify_host); request->SetOption(CURLOPT_HTTPHEADER, request_headers.Get()); + request->SetProxyVerifyPeer(verify_peer); + request->SetProxyVerifyHost(verify_host); } void diff --git a/src/lib/curl/Request.hxx b/src/lib/curl/Request.hxx index e36ddce6b..49552a26f 100644 --- a/src/lib/curl/Request.hxx +++ b/src/lib/curl/Request.hxx @@ -122,6 +122,14 @@ public: easy.SetVerifyPeer(value); } + void SetProxyVerifyHost(bool value) { + easy.SetOption(CURLOPT_PROXY_SSL_VERIFYHOST, value ? 2L : 0L); + } + + void SetProxyVerifyPeer(bool value) { + easy.SetOption(CURLOPT_PROXY_SSL_VERIFYPEER, value); + } + void SetNoBody(bool value=true) { easy.SetNoBody(value); }