rtmp: drop support
No binary (build failed)
—
(log yok)
| @@ -369,14 +369,6 @@ POP3: | |
| lib/pop3.*\ | |
| }" | |
| - | RTMP: |
| - | - all: |
| - | - changed-files: |
| - | - any-glob-to-all-files: "{\ |
| - | CMake/FindLibrtmp.cmake,\ |
| - | lib/curl_rtmp.*\ |
| - | }" |
| - | |
| RTSP: | |
| - all: | |
| - changed-files: | |
| @@ -53,7 +53,6 @@ my %remove = ( | |
| '#define HAVE_LDAP_SSL 1' => 1, | |
| '#define HAVE_LIBBROTLIDEC 1' => 1, | |
| '#define HAVE_LIBPSL_H 1' => 1, | |
| - | '#define HAVE_LIBRTMP_RTMP_H 1' => 1, |
| '#define HAVE_LIBSOCKET 1' => 1, | |
| '#define HAVE_LIBSSH' => 1, | |
| '#define HAVE_LIBSSH2 1' => 1, | |
| @@ -74,7 +74,7 @@ jobs: | |
| sudo rm -f /etc/apt/sources.list.d/{azure-cli.sources,microsoft-prod.list,ondrej-ubuntu-php-noble.sources} | |
| sudo apt-get -o Dpkg::Use-Pty=0 update | |
| sudo apt-get -o Dpkg::Use-Pty=0 install libpsl-dev libbrotli-dev libidn2-dev libssh2-1-dev libssh-dev \ | |
| - | libnghttp2-dev libldap-dev libkrb5-dev librtmp-dev libgnutls28-dev libwolfssl-dev |
| + | libnghttp2-dev libldap-dev libkrb5-dev libgnutls28-dev libwolfssl-dev |
| HOMEBREW_NO_AUTO_UPDATE=1 /home/linuxbrew/.linuxbrew/bin/brew install c-ares gsasl libnghttp3 libngtcp2 mbedtls rustls-ffi | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| @@ -110,7 +110,7 @@ jobs: | |
| export PKG_CONFIG_PATH; PKG_CONFIG_PATH="$(brew --prefix c-ares)/lib/pkgconfig:$(brew --prefix mbedtls)/lib/pkgconfig:$(brew --prefix rustls-ffi)/lib/pkgconfig:$(brew --prefix gsasl)/lib/pkgconfig" | |
| cmake -B _bld1 -G Ninja -DCURL_DISABLE_TYPECHECK=ON -DCURL_WERROR=ON -DENABLE_DEBUG=ON \ | |
| -DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON -DCURL_USE_WOLFSSL=ON \ | |
| - | -DUSE_LIBRTMP=ON -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON -DUSE_ECH=ON -DENABLE_ARES=ON \ |
| + | -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON -DUSE_ECH=ON -DENABLE_ARES=ON \ |
| -DCURL_DISABLE_VERBOSE_STRINGS=ON | |
| cmake --build _bld1 | |
| cmake --build _bld1 --target testdeps | |
| @@ -121,7 +121,7 @@ jobs: | |
| cmake -B _bld2 -G Ninja -DCURL_DISABLE_TYPECHECK=ON -DCURL_WERROR=ON \ | |
| -DCURL_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR="$(brew --prefix openssl)" -DUSE_NGTCP2=ON \ | |
| -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON \ | |
| - | -DUSE_LIBRTMP=ON -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON |
| + | -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON |
| cmake --build _bld2 | |
| cmake --build _bld2 --target testdeps | |
| cmake --build _bld2 --target curl-examples-build | |
| @@ -69,7 +69,7 @@ jobs: | |
| sha256sum freexian-archive-keyring_2022.06.08_all.deb && dpkg -i freexian-archive-keyring_2022.06.08_all.deb | |
| echo 'deb http://deb.freexian.com/extended-lts stretch-lts main contrib non-free' | tee /etc/apt/sources.list.d/extended-lts.list | |
| apt-get -o Dpkg::Use-Pty=0 update | |
| - | apt-get -o Dpkg::Use-Pty=0 install -y --no-install-suggests --no-install-recommends make automake autoconf libtool ninja-build gcc pkg-config libpsl-dev libzstd-dev zlib1g-dev libc-ares-dev libkrb5-dev libldap2-dev librtmp-dev stunnel4 |
| + | apt-get -o Dpkg::Use-Pty=0 install -y --no-install-suggests --no-install-recommends make automake autoconf libtool ninja-build gcc pkg-config libpsl-dev libzstd-dev zlib1g-dev libc-ares-dev libkrb5-dev libldap2-dev stunnel4 |
| # GitHub's actions/checkout needs newer glibc and libstdc++. The latter also depends on | |
| # gcc-8-base, but it does not actually seem used in our situation and is not available in | |
| # the main repo, so force the install. | |
| @@ -95,7 +95,7 @@ jobs: | |
| - name: 'CM build-only configure (out-of-tree)' | |
| run: | | |
| ~/cmake/bin/cmake -B bld-1 -G Ninja -DCMAKE_UNITY_BUILD=ON -DCURL_WERROR=ON -DBUILD_SHARED_LIBS=ON \ | |
| - | -DCURL_ENABLE_SSL=OFF -DENABLE_ARES=OFF -DCURL_ZSTD=OFF -DCURL_USE_GSSAPI=OFF -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF -DUSE_LIBRTMP=ON |
| + | -DCURL_ENABLE_SSL=OFF -DENABLE_ARES=OFF -DCURL_ZSTD=OFF -DCURL_USE_GSSAPI=OFF -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF |
| - name: 'CM build-only build' | |
| run: | | |
| @@ -119,7 +119,7 @@ jobs: | |
| - name: 'CM configure (out-of-tree, c-ares, zstd, gssapi)' | |
| run: | | |
| ~/cmake/bin/cmake -B bld-cares -G Ninja -DCMAKE_UNITY_BUILD=ON -DCURL_WERROR=ON -DBUILD_SHARED_LIBS=ON \ | |
| - | -DCURL_ENABLE_SSL=OFF -DENABLE_ARES=ON -DCURL_USE_GSSAPI=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF -DUSE_LIBRTMP=ON \ |
| + | -DCURL_ENABLE_SSL=OFF -DENABLE_ARES=ON -DCURL_USE_GSSAPI=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF \ |
| -DCURL_LIBCURL_VERSIONED_SYMBOLS=ON | |
| - name: 'CM configure log' | |
| @@ -158,7 +158,7 @@ jobs: | |
| cd bld-am | |
| ../configure --prefix="$PWD"/../curl-install-am --enable-unity --enable-warnings --enable-werror --disable-shared \ | |
| --disable-dependency-tracking --enable-option-checking=fatal \ | |
| - | --without-ssl --enable-ares --without-libssh2 --with-zstd --with-gssapi --with-librtmp |
| + | --without-ssl --enable-ares --without-libssh2 --with-zstd --with-gssapi |
| - name: 'AM configure log' | |
| if: ${{ !cancelled() }} | |
| @@ -232,7 +232,7 @@ jobs: | |
| --with-openssl --enable-debug --disable-unity | |
| --disable-dict --disable-gopher --disable-ldap --disable-telnet | |
| --disable-imap --disable-pop3 --disable-smtp | |
| - | --without-librtmp --disable-rtsp |
| + | --disable-rtsp |
| --without-libssh2 --without-libssh | |
| --disable-tftp --disable-ftp --disable-file --disable-smb | |
| @@ -249,14 +249,14 @@ jobs: | |
| generate: -DCURL_USE_OPENSSL=ON -DENABLE_DEBUG=ON -DENABLE_ARES=ON | |
| - name: 'openssl i686' | |
| - | install_packages: gcc-14-i686-linux-gnu libssl-dev:i386 librtmp-dev:i386 libssh2-1-dev:i386 libidn2-dev:i386 libc-ares-dev:i386 zlib1g-dev:i386 |
| + | install_packages: gcc-14-i686-linux-gnu libssl-dev:i386 libssh2-1-dev:i386 libidn2-dev:i386 libc-ares-dev:i386 zlib1g-dev:i386 |
| configure: >- | |
| PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig | |
| CC=i686-linux-gnu-gcc-14 | |
| CPPFLAGS=-I/usr/include/i386-linux-gnu | |
| LDFLAGS=-L/usr/lib/i386-linux-gnu | |
| --host=i686-linux-gnu | |
| - | --with-openssl --with-librtmp --with-libssh2 --with-libidn2 --enable-ares --enable-debug |
| + | --with-openssl --with-libssh2 --with-libidn2 --enable-ares --enable-debug |
| - name: '!ssl !http !smtp !imap' | |
| image: ubuntu-24.04-arm | |
| @@ -275,7 +275,7 @@ jobs: | |
| -DCURL_DISABLE_LDAP=ON -DUSE_LIBIDN2=OFF -DCURL_USE_LIBSSH2=OFF | |
| - name: 'clang-tidy' | |
| - | install_packages: clang-20 clang-tidy-20 libssl-dev libidn2-dev libssh2-1-dev libnghttp2-dev libldap-dev libkrb5-dev librtmp-dev libgnutls28-dev |
| + | install_packages: clang-20 clang-tidy-20 libssl-dev libidn2-dev libssh2-1-dev libnghttp2-dev libldap-dev libkrb5-dev libgnutls28-dev |
| install_steps: skiprun mbedtls-latest-intel rustls wolfssl-opensslextra-intel | |
| install_steps_brew: gsasl | |
| CC: clang-20 | |
| @@ -283,7 +283,7 @@ jobs: | |
| PKG_CONFIG_PATH: /home/runner/wolfssl-opensslextra/lib/pkgconfig:/home/runner/mbedtls/lib/pkgconfig:/home/runner/rustls/lib/pkgconfig:/home/linuxbrew/.linuxbrew/opt/gsasl/lib/pkgconfig | |
| generate: >- | |
| -DCURL_USE_OPENSSL=ON -DCURL_USE_WOLFSSL=ON -DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON | |
| - | -DCURL_USE_GSASL=ON -DUSE_LIBRTMP=ON |
| + | -DCURL_USE_GSASL=ON |
| -DUSE_ECH=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON | |
| -DCURL_CLANG_TIDY=ON -DCLANG_TIDY=/usr/bin/clang-tidy-20 | |
| @@ -240,7 +240,7 @@ jobs: | |
| -DCURL_ENABLE_SSL=OFF -DHTTP_ONLY=ON | |
| -DCURL_DISABLE_NTLM=ON -DCURL_DISABLE_ALTSVC=ON -DENABLE_UNIX_SOCKETS=OFF | |
| -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF -DUSE_NGHTTP2=OFF | |
| - | -DCURL_USE_GSSAPI=OFF -DUSE_LIBIDN2=OFF -DCURL_USE_LIBPSL=OFF -DUSE_LIBRTMP=OFF |
| + | -DCURL_USE_GSSAPI=OFF -DUSE_LIBIDN2=OFF -DCURL_USE_LIBPSL=OFF |
| -DCURL_BROTLI=OFF -DCURL_ZLIB=OFF -DCURL_ZSTD=OFF | |
| -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF | |
| @@ -265,19 +265,19 @@ jobs: | |
| compiler: clang | |
| generate: -DENABLE_DEBUG=ON -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl -DCURL_BROTLI=OFF -DCURL_ZSTD=OFF -DCURL_USE_LIBSSH2=OFF | |
| tflags: '--test-event --min=1300' | |
| - | - name: 'OpenSSL gsasl rtmp AppleIDN SecTrust +examples' |
| + | - name: 'OpenSSL gsasl AppleIDN SecTrust +examples' |
| compiler: clang | |
| - | install: libnghttp3 libngtcp2 gsasl rtmpdump |
| - | generate: -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl -DCURL_USE_GSASL=ON -DUSE_LIBRTMP=ON -DUSE_APPLE_IDN=ON -DUSE_NGTCP2=ON -DCURL_DISABLE_VERBOSE_STRINGS=ON -DUSE_APPLE_SECTRUST=ON |
| + | install: libnghttp3 libngtcp2 gsasl |
| + | generate: -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl -DCURL_USE_GSASL=ON -DUSE_APPLE_IDN=ON -DUSE_NGTCP2=ON -DCURL_DISABLE_VERBOSE_STRINGS=ON -DUSE_APPLE_SECTRUST=ON |
| - name: 'MultiSSL AppleIDN clang-tidy +examples' | |
| image: macos-26 | |
| compiler: clang | |
| - | install: llvm gnutls nettle libressl krb5 mbedtls gsasl rustls-ffi rtmpdump libssh fish |
| + | install: llvm gnutls nettle libressl krb5 mbedtls gsasl rustls-ffi libssh fish |
| install_steps: skiprun | |
| chkprefill: _chkprefill | |
| generate: >- | |
| -DCURL_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/libressl -DCURL_DEFAULT_SSL_BACKEND=openssl | |
| - | -DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON -DENABLE_ARES=ON -DCURL_USE_GSASL=ON -DUSE_LIBRTMP=ON |
| + | -DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON -DENABLE_ARES=ON -DCURL_USE_GSASL=ON |
| -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON -DUSE_APPLE_IDN=ON -DUSE_SSLS_EXPORT=ON | |
| -DCURL_USE_GSSAPI=ON -DGSS_ROOT_DIR=/opt/homebrew/opt/krb5 | |
| -DCURL_BROTLI=ON -DCURL_ZSTD=ON | |
| @@ -1,106 +0,0 @@ | |
| - | #*************************************************************************** |
| - | # _ _ ____ _ |
| - | # Project ___| | | | _ \| | |
| - | # / __| | | | |_) | | |
| - | # | (__| |_| | _ <| |___ |
| - | # \___|\___/|_| \_\_____| |
| - | # |
| - | # Copyright (C) Daniel Stenberg, <[email protected]>, et al. |
| - | # |
| - | # This software is licensed as described in the file COPYING, which |
| - | # you should have received as part of this distribution. The terms |
| - | # are also available at https://curl.se/docs/copyright.html. |
| - | # |
| - | # You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| - | # copies of the Software, and permit persons to whom the Software is |
| - | # furnished to do so, under the terms of the COPYING file. |
| - | # |
| - | # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| - | # KIND, either express or implied. |
| - | # |
| - | # SPDX-License-Identifier: curl |
| - | # |
| - | ########################################################################### |
| - | # Find the librtmp library |
| - | # |
| - | # Input variables: |
| - | # |
| - | # - `LIBRTMP_INCLUDE_DIR`: Absolute path to librtmp include directory. |
| - | # - `LIBRTMP_LIBRARY`: Absolute path to `librtmp` library. |
| - | # |
| - | # Defines: |
| - | # |
| - | # - `LIBRTMP_FOUND`: System has librtmp. |
| - | # - `LIBRTMP_VERSION`: Version of librtmp. |
| - | # - `CURL::librtmp`: librtmp library target. |
| - | |
| - | set(_librtmp_pc_requires "librtmp") |
| - | |
| - | if(CURL_USE_PKGCONFIG AND |
| - | NOT DEFINED LIBRTMP_INCLUDE_DIR AND |
| - | NOT DEFINED LIBRTMP_LIBRARY) |
| - | find_package(PkgConfig QUIET) |
| - | pkg_check_modules(_librtmp ${_librtmp_pc_requires}) |
| - | endif() |
| - | |
| - | if(_librtmp_FOUND AND _librtmp_INCLUDE_DIRS) |
| - | set(Librtmp_FOUND TRUE) |
| - | set(LIBRTMP_FOUND TRUE) |
| - | set(LIBRTMP_VERSION ${_librtmp_VERSION}) |
| - | message(STATUS "Found Librtmp (via pkg-config): ${_librtmp_INCLUDE_DIRS} (found version \"${LIBRTMP_VERSION}\")") |
| - | else() |
| - | find_path(LIBRTMP_INCLUDE_DIR NAMES "librtmp/rtmp.h") |
| - | find_library(LIBRTMP_LIBRARY NAMES "rtmp") |
| - | |
| - | unset(LIBRTMP_VERSION CACHE) |
| - | if(LIBRTMP_INCLUDE_DIR AND EXISTS "${LIBRTMP_INCLUDE_DIR}/librtmp/rtmp.h") |
| - | set(_version_regex "#[\t ]*define[\t ]+RTMP_LIB_VERSION[\t ]+0x([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F]).*") |
| - | file(STRINGS "${LIBRTMP_INCLUDE_DIR}/librtmp/rtmp.h" _version_str REGEX "${_version_regex}") |
| - | string(REGEX REPLACE "${_version_regex}" "\\1" _version_str1 "${_version_str}") |
| - | string(REGEX REPLACE "${_version_regex}" "\\2" _version_str2 "${_version_str}") |
| - | math(EXPR _version_str1 "0x${_version_str1}" OUTPUT_FORMAT DECIMAL) |
| - | math(EXPR _version_str2 "0x${_version_str2}" OUTPUT_FORMAT DECIMAL) |
| - | set(LIBRTMP_VERSION "${_version_str1}.${_version_str2}") |
| - | unset(_version_regex) |
| - | unset(_version_str1) |
| - | unset(_version_str2) |
| - | endif() |
| - | |
| - | include(FindPackageHandleStandardArgs) |
| - | find_package_handle_standard_args(Librtmp |
| - | REQUIRED_VARS |
| - | LIBRTMP_INCLUDE_DIR |
| - | LIBRTMP_LIBRARY |
| - | VERSION_VAR |
| - | LIBRTMP_VERSION |
| - | ) |
| - | |
| - | if(LIBRTMP_FOUND) |
| - | set(_librtmp_INCLUDE_DIRS ${LIBRTMP_INCLUDE_DIR}) |
| - | set(_librtmp_LIBRARIES ${LIBRTMP_LIBRARY}) |
| - | endif() |
| - | |
| - | mark_as_advanced(LIBRTMP_INCLUDE_DIR LIBRTMP_LIBRARY) |
| - | |
| - | # Necessary when linking a static librtmp |
| - | find_package(OpenSSL) |
| - | if(OpenSSL_FOUND) |
| - | list(APPEND _librtmp_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) |
| - | endif() |
| - | endif() |
| - | |
| - | if(LIBRTMP_FOUND) |
| - | if(WIN32) |
| - | list(APPEND _librtmp_LIBRARIES "winmm") |
| - | endif() |
| - | |
| - | if(NOT TARGET CURL::librtmp) |
| - | add_library(CURL::librtmp INTERFACE IMPORTED) |
| - | set_target_properties(CURL::librtmp PROPERTIES |
| - | INTERFACE_LIBCURL_PC_MODULES "${_librtmp_pc_requires}" |
| - | INTERFACE_COMPILE_OPTIONS "${_librtmp_CFLAGS}" |
| - | INTERFACE_INCLUDE_DIRECTORIES "${_librtmp_INCLUDE_DIRS}" |
| - | INTERFACE_LINK_DIRECTORIES "${_librtmp_LIBRARY_DIRS}" |
| - | INTERFACE_LINK_LIBRARIES "${_librtmp_LIBRARIES}") |
| - | endif() |
| - | endif() |
| @@ -91,10 +91,6 @@ if("@USE_LIBPSL@") | |
| find_dependency(Libpsl MODULE) | |
| list(APPEND _curl_libs CURL::libpsl) | |
| endif() | |
| - | if("@USE_LIBRTMP@") |
| - | find_dependency(Librtmp MODULE) |
| - | list(APPEND _curl_libs CURL::librtmp) |
| - | endif() |
| if("@USE_LIBSSH@") | |
| find_dependency(Libssh MODULE) | |
| list(APPEND _curl_libs CURL::libssh) | |
| @@ -1346,12 +1346,6 @@ if(CURL_USE_LIBUV) | |
| set(HAVE_UV_H ON) | |
| endif() | |
| - | option(USE_LIBRTMP "Enable librtmp from rtmpdump" OFF) |
| - | if(USE_LIBRTMP) |
| - | find_package(Librtmp MODULE REQUIRED) |
| - | list(APPEND CURL_LIBS CURL::librtmp) |
| - | endif() |
| - | |
| option(ENABLE_UNIX_SOCKETS "Enable Unix domain sockets support" ON) | |
| if(ENABLE_UNIX_SOCKETS) | |
| if(WIN32 OR DOS) | |
| @@ -1981,7 +1975,6 @@ curl_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH) | |
| curl_add_if("IPFS" NOT CURL_DISABLE_IPFS) | |
| curl_add_if("IPNS" NOT CURL_DISABLE_IPFS) | |
| curl_add_if("RTSP" NOT CURL_DISABLE_RTSP) | |
| - | curl_add_if("RTMP" USE_LIBRTMP) |
| curl_add_if("MQTT" NOT CURL_DISABLE_MQTT) | |
| curl_add_if("MQTTS" NOT CURL_DISABLE_MQTT AND _ssl_enabled) | |
| curl_add_if("WS" NOT CURL_DISABLE_WEBSOCKETS) | |
| @@ -2343,7 +2336,6 @@ if(NOT CURL_DISABLE_INSTALL) | |
| # USE_GNUTLS | |
| # USE_GSASL | |
| # USE_LIBPSL | |
| - | # USE_LIBRTMP |
| # USE_LIBSSH | |
| # USE_LIBSSH2 | |
| # USE_LIBUV | |
| @@ -2380,7 +2372,6 @@ if(NOT CURL_DISABLE_INSTALL) | |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibgsasl.cmake" | |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibidn2.cmake" | |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibpsl.cmake" | |
| - | "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibrtmp.cmake" |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibssh.cmake" | |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibssh2.cmake" | |
| "${CMAKE_CURRENT_SOURCE_DIR}/CMake/FindLibuv.cmake" | |
| @@ -40,7 +40,6 @@ CMAKE_DIST = \ | |
| CMake/FindLibgsasl.cmake \ | |
| CMake/FindLibidn2.cmake \ | |
| CMake/FindLibpsl.cmake \ | |
| - | CMake/FindLibrtmp.cmake \ |
| CMake/FindLibssh.cmake \ | |
| CMake/FindLibssh2.cmake \ | |
| CMake/FindLibuv.cmake \ | |
| @@ -8,8 +8,8 @@ SPDX-License-Identifier: curl | |
| curl is a command-line tool for transferring data from or to a server using | |
| URLs. It supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, | |
| - | HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTMP, RTMPS, |
| - | RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. |
| + | HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, |
| + | SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. |
| Learn how to use curl by reading [the | |
| man page](https://curl.se/docs/manpage.html) or [everything | |
| @@ -165,7 +165,6 @@ curl_unix_sockets_msg="no (--enable-unix-sockets)" | |
| curl_ldaps_msg="no (--enable-ldaps)" | |
| curl_ipfs_msg="no (--enable-ipfs)" | |
| curl_rtsp_msg="no (--enable-rtsp)" | |
| - | curl_rtmp_msg="no (--with-librtmp)" |
| curl_psl_msg="no (--with-libpsl)" | |
| curl_altsvc_msg="enabled (--disable-alt-svc)" | |
| curl_headers_msg="enabled (--disable-headers-api)" | |
| @@ -2689,86 +2688,6 @@ if test "$CURL_DISABLE_LDAPS" != "1"; then | |
| curl_ldaps_msg="enabled" | |
| fi | |
| - | dnl ********************************************************************** |
| - | dnl Check for the presence of LIBRTMP libraries and headers |
| - | dnl ********************************************************************** |
| - | |
| - | dnl Default to compiler & linker defaults for LIBRTMP files & libraries. |
| - | OPT_LIBRTMP=off |
| - | AC_ARG_WITH(librtmp,dnl |
| - | AS_HELP_STRING([--with-librtmp=PATH],[Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) |
| - | AS_HELP_STRING([--without-librtmp], [disable LIBRTMP]), |
| - | OPT_LIBRTMP=$withval) |
| - | |
| - | if test "x$OPT_LIBRTMP" != "xno"; then |
| - | dnl backup the pre-librtmp variables |
| - | CLEANLDFLAGS="$LDFLAGS" |
| - | CLEANLDFLAGSPC="$LDFLAGSPC" |
| - | CLEANCPPFLAGS="$CPPFLAGS" |
| - | CLEANLIBS="$LIBS" |
| - | |
| - | case "$OPT_LIBRTMP" in |
| - | yes) |
| - | dnl --with-librtmp (without path) used |
| - | CURL_CHECK_PKGCONFIG(librtmp) |
| - | |
| - | if test "$PKGCONFIG" != "no"; then |
| - | LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` |
| - | LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` |
| - | CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` |
| - | version=`$PKGCONFIG --modversion librtmp` |
| - | DIR_RTMP=`echo $LD_RTMP | $SED -e 's/^-L//'` |
| - | else |
| - | dnl To avoid link errors, we do not allow --librtmp without |
| - | dnl a pkgconfig file |
| - | AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.]) |
| - | fi |
| - | ;; |
| - | off) |
| - | dnl no --with-librtmp option given, just check default places |
| - | LIB_RTMP="-lrtmp" |
| - | ;; |
| - | *) |
| - | dnl use the given --with-librtmp spot |
| - | LIB_RTMP="-lrtmp" |
| - | PREFIX_RTMP=$OPT_LIBRTMP |
| - | ;; |
| - | esac |
| - | |
| - | dnl if given with a prefix, we set -L and -I based on that |
| - | if test -n "$PREFIX_RTMP"; then |
| - | LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff |
| - | CPP_RTMP=-I${PREFIX_RTMP}/include |
| - | DIR_RTMP=${PREFIX_RTMP}/lib$libsuff |
| - | fi |
| - | |
| - | LDFLAGS="$LDFLAGS $LD_RTMP" |
| - | LDFLAGSPC="$LDFLAGSPC $LD_RTMP" |
| - | CPPFLAGS="$CPPFLAGS $CPP_RTMP" |
| - | LIBS="$LIB_RTMP $LIBS" |
| - | |
| - | AC_CHECK_LIB(rtmp, RTMP_Init, |
| - | [ |
| - | AC_CHECK_HEADERS(librtmp/rtmp.h, |
| - | curl_rtmp_msg="enabled (librtmp)" |
| - | AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use]) |
| - | USE_LIBRTMP=1 |
| - | LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE librtmp" |
| - | ) |
| - | ], |
| - | dnl not found, revert back to clean variables |
| - | LDFLAGS=$CLEANLDFLAGS |
| - | LDFLAGSPC=$CLEANLDFLAGSPC |
| - | CPPFLAGS=$CLEANCPPFLAGS |
| - | LIBS=$CLEANLIBS |
| - | ) |
| - | |
| - | if test "x$OPT_LIBRTMP" != "xoff" && |
| - | test "$USE_LIBRTMP" != "1"; then |
| - | AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!]) |
| - | fi |
| - | fi |
| - | |
| dnl ********************************************************************** | |
| dnl Check for linker switch for versioned symbols | |
| dnl ********************************************************************** | |
| @@ -5409,9 +5328,6 @@ fi | |
| if test "$CURL_DISABLE_RTSP" != "1"; then | |
| SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" | |
| fi | |
| - | if test "$USE_LIBRTMP" = "1"; then |
| - | SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" |
| - | fi |
| if test "$CURL_DISABLE_WEBSOCKETS" != "1"; then | |
| SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS" | |
| if test "$SSL_ENABLED" = "1"; then | |
| @@ -5523,7 +5439,6 @@ AC_MSG_NOTICE([Configured to build curl/libcurl: | |
| LDAPS: ${curl_ldaps_msg} | |
| IPFS/IPNS: ${curl_ipfs_msg} | |
| RTSP: ${curl_rtsp_msg} | |
| - | RTMP: ${curl_rtmp_msg} |
| PSL: ${curl_psl_msg} | |
| Alt-svc: ${curl_altsvc_msg} | |
| Headers API: ${curl_headers_msg} | |
| @@ -16,18 +16,6 @@ how your use case cannot be satisfied properly using a workaround. | |
| In March 2026, we drop support for all c-ares versions before 1.16.0. | |
| - | ## RTMP |
| - | |
| - | RTMP in curl is powered by the 3rd party library librtmp. |
| - | |
| - | - RTMP is barely used by curl users (2.2% in the 2025 survey) |
| - | - librtmp has no test cases, makes no proper releases and has not had a single |
| - | commit within the last year |
| - | - librtmp parses the URL itself and requires non-compliant URLs for this |
| - | - we have no RTMP tests |
| - | |
| - | Support for RTMP in libcurl gets removed in April 2026. |
| - | |
| ## TLS-SRP Authentication | |
| Transport Layer Security Secure Remote Password is a TLS feature that does not | |
| @@ -73,3 +61,5 @@ After curl 8.19.0 NTLM support becomes opt-in. | |
| - Support for Windows XP (removed in 8.19.0) | |
| - OpenSSL-QUIC (removed in 8.19.0) | |
| - CMake 3.17 and older (removed in 8.20.0) | |
| + | - RTMP (removed in 8.20.0) |
| + | |
| @@ -21,8 +21,8 @@ The curl project produces two products: | |
| ### libcurl | |
| A client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, GOPHER, | |
| - | GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTMP, |
| - | RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. |
| + | GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, |
| + | RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. |
| libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, | |
| Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password | |
| @@ -493,3 +493,7 @@ We drop support for krb-ftp, Heimdal, wolfSSH and the winbuild build system. | |
| Add support for Apple SecTrust, native CA certs on Apple systems. | |
| December 15: the website served 78 TB over the last month. | |
| + | |
| + | ## 2026 |
| + | |
| + | April: removed support for RTMP |
| @@ -367,7 +367,6 @@ Details via CMake | |
| - `USE_APPLE_IDN`: Use Apple built-in IDN support. Default: `OFF` | |
| - `USE_APPLE_SECTRUST`: Use Apple OS-native certificate verification. Default: `OFF` | |
| - `USE_LIBIDN2`: Use libidn2 for IDN support. Default: `ON` | |
| - | - `USE_LIBRTMP`: Enable librtmp from rtmpdump. Default: `OFF` |
| - `USE_NGHTTP2`: Use nghttp2 library. Default: `ON` | |
| - `USE_NGTCP2`: Use ngtcp2 and nghttp3 libraries for HTTP/3 support. Default: `OFF` | |
| - `USE_QUICHE`: Use quiche library for HTTP/3 support. Default: `OFF` | |
| @@ -418,8 +417,6 @@ Details via CMake | |
| - `LIBIDN2_LIBRARY`: Absolute path to `libidn2` library. | |
| - `LIBPSL_INCLUDE_DIR`: Absolute path to libpsl include directory. | |
| - `LIBPSL_LIBRARY`: Absolute path to `libpsl` library. | |
| - | - `LIBRTMP_INCLUDE_DIR`: Absolute path to librtmp include directory. |
| - | - `LIBRTMP_LIBRARY`: Absolute path to `librtmp` library. |
| - `LIBSSH_INCLUDE_DIR`: Absolute path to libssh include directory. | |
| - `LIBSSH_LIBRARY`: Absolute path to `libssh` library. | |
| - `LIBSSH_USE_STATIC_LIBS`: Configure for static libssh libraries. (experimental) | |
| @@ -623,7 +623,6 @@ disabling support for some features (run `./configure --help` to see them all): | |
| - `--without-ngtcp2` (HTTP/2 using ngtcp2) | |
| - `--without-zstd` (Zstd on-the-fly decompression) | |
| - `--without-libidn2` (internationalized domain names) | |
| - | - `--without-librtmp` (RTMP) |
| - `--without-ssl` (SSL/TLS) | |
| - `--without-zlib` (gzip/deflate on-the-fly decompression) | |
| @@ -141,9 +141,8 @@ curl supports the following schemes on URLs specified to transfer. They are | |
| matched case insensitively: | |
| `dict`, `file`, `ftp`, `ftps`, `gopher`, `gophers`, `http`, `https`, `imap`, | |
| - | `imaps`, `ldap`, `ldaps`, `mqtt`, `pop3`, `pop3s`, `rtmp`, `rtmpe`, `rtmps`, |
| - | `rtmpt`, `rtmpte`, `rtmpts`, `rtsp`, `smb`, `smbs`, `smtp`, `smtps`, `telnet`, |
| - | `tftp` |
| + | `imaps`, `ldap`, `ldaps`, `mqtt`, `pop3`, `pop3s`, `rtsp`, `smb`, `smbs`, |
| + | `smtp`, `smtps`, `telnet`, `tftp` |
| When the URL is specified to identify a proxy, curl recognizes the following | |
| schemes: | |
| @@ -209,10 +208,9 @@ only if the URL starts with a scheme. | |
| If the port number is not specified in the URL, curl uses a default port | |
| number based on the provide scheme: | |
| - | DICT 2628, FTP 21, FTPS 990, GOPHER 70, GOPHERS 70, HTTP 80, HTTPS 443, |
| - | IMAP 143, IMAPS 993, LDAP 389, LDAPS 636, MQTT 1883, POP3 110, POP3S 995, |
| - | RTMP 1935, RTMPS 443, RTMPT 80, RTSP 554, SCP 22, SFTP 22, SMB 445, SMBS 445, |
| - | SMTP 25, SMTPS 465, TELNET 23, TFTP 69 |
| + | DICT 2628, FTP 21, FTPS 990, GOPHER 70, GOPHERS 70, HTTP 80, HTTPS 443, IMAP |
| + | 143, IMAPS 993, LDAP 389, LDAPS 636, MQTT 1883, POP3 110, POP3S 995, RTSP 554, |
| + | SCP 22, SFTP 22, SMB 445, SMBS 445, SMTP 25, SMTPS 465, TELNET 23, TFTP 69 |
| # Scheme specific behaviors | |
| @@ -381,15 +379,3 @@ machine's fully qualified domain name, which you might have obtained from an | |
| external function such as gethostname or getaddrinfo. | |
| The default smtp port is 25. Some servers use port 587 as an alternative. | |
| - | |
| - | ## RTMP |
| - | |
| - | There is no official URL spec for RTMP so libcurl uses the URL syntax supported |
| - | by the underlying librtmp library. It has a syntax where it wants a |
| - | traditional URL, followed by a space and a series of space-separated |
| - | `name=value` pairs. |
| - | |
| - | While space is not typically a "legal" letter, libcurl accepts them. When a |
| - | user wants to pass in a `#` (hash) character it is treated as a fragment and |
| - | it gets cut off by libcurl if provided literally. You have to escape it by |
| - | providing it as backslash and its ASCII value in hexadecimal: `\23`. |
| @@ -4,8 +4,8 @@ | |
| **curl** is a tool for transferring data from or to a server using URLs. It | |
| supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, | |
| - | IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, |
| - | SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. |
| + | IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, |
| + | SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. |
| curl is powered by libcurl for all transfer-related features. See | |
| *libcurl(3)* for details. | |
| @@ -30,9 +30,6 @@ supported (yet). | |
| ## POP3(S) | |
| Downloading from a pop3 server means getting an email. With or without using | |
| TLS. | |
| - | ## RTMP(S) |
| - | The **Realtime Messaging Protocol** is primarily used to serve streaming media |
| - | and curl can download it. |
| ## RTSP | |
| curl supports RTSP 1.0 downloads. | |
| ## SCP | |
| @@ -42,8 +42,8 @@ set, it returns error. | |
| These are the available protocols: | |
| DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, | |
| - | MQTT, MQTTS, POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, |
| - | SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS |
| + | MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, |
| + | TFTP, WS, WSS |
| You can set "ALL" as a short-cut to enable all protocols. Note that by setting | |
| all, you may enable protocols that were not supported the day you write this | |
| @@ -81,6 +81,10 @@ int main(int argc, char **argv) | |
| } | |
| ~~~ | |
| + | # HISTORY |
| + | |
| + | RTMP and its related protocol schemes are not supported since curl 8.20.0 |
| + | |
| # %AVAILABILITY% | |
| # RETURN VALUE | |
| @@ -46,8 +46,8 @@ By default libcurl allows HTTP, HTTPS, FTP and FTPS on redirects (since | |
| These are the available protocols: | |
| DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, | |
| - | MQTT, MQTTS, POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, |
| - | SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS |
| + | MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, |
| + | TFTP, WS, WSS |
| You can set "ALL" as a short-cut to enable all protocols. Note that by setting | |
| all, you may enable protocols that were not supported the day you write this | |
| @@ -970,12 +970,12 @@ CURLPROTO_LDAPS 7.19.4 | |
| CURLPROTO_MQTT 7.71.0 | |
| CURLPROTO_POP3 7.20.0 | |
| CURLPROTO_POP3S 7.20.0 | |
| - | CURLPROTO_RTMP 7.21.0 |
| - | CURLPROTO_RTMPE 7.21.0 |
| - | CURLPROTO_RTMPS 7.21.0 |
| - | CURLPROTO_RTMPT 7.21.0 |
| - | CURLPROTO_RTMPTE 7.21.0 |
| - | CURLPROTO_RTMPTS 7.21.0 |
| + | CURLPROTO_RTMP 7.21.0 8.20.0 |
| + | CURLPROTO_RTMPE 7.21.0 8.20.0 |
| + | CURLPROTO_RTMPS 7.21.0 8.20.0 |
| + | CURLPROTO_RTMPT 7.21.0 8.20.0 |
| + | CURLPROTO_RTMPTE 7.21.0 8.20.0 |
| + | CURLPROTO_RTMPTS 7.21.0 8.20.0 |
| CURLPROTO_RTSP 7.20.0 | |
| CURLPROTO_SCP 7.19.4 | |
| CURLPROTO_SFTP 7.19.4 | |
| @@ -171,7 +171,6 @@ LIB_CFILES = \ | |
| curl_memrchr.c \ | |
| curl_ntlm_core.c \ | |
| curl_range.c \ | |
| - | curl_rtmp.c \ |
| curl_sasl.c \ | |
| curl_sha512_256.c \ | |
| curl_share.c \ | |
| @@ -305,7 +304,6 @@ LIB_HFILES = \ | |
| curl_ntlm_core.h \ | |
| curl_printf.h \ | |
| curl_range.h \ | |
| - | curl_rtmp.h \ |
| curl_sasl.h \ | |
| curl_setup.h \ | |
| curl_sha256.h \ | |
| @@ -706,9 +706,6 @@ ${SIZEOF_TIME_T_CODE} | |
| /* if AmiSSL is in use */ | |
| #cmakedefine USE_AMISSL 1 | |
| - | /* if librtmp/rtmpdump is in use */ |
| - | #cmakedefine USE_LIBRTMP 1 |
| - | |
| /* if GSASL is in use */ | |
| #cmakedefine USE_GSASL 1 | |
| @@ -1,248 +0,0 @@ | |
| - | /*************************************************************************** |
| - | * _ _ ____ _ |
| - | * Project ___| | | | _ \| | |
| - | * / __| | | | |_) | | |
| - | * | (__| |_| | _ <| |___ |
| - | * \___|\___/|_| \_\_____| |
| - | * |
| - | * Copyright (C) Daniel Stenberg, <[email protected]>, et al. |
| - | * Copyright (C) Howard Chu, <[email protected]> |
| - | * |
| - | * This software is licensed as described in the file COPYING, which |
| - | * you should have received as part of this distribution. The terms |
| - | * are also available at https://curl.se/docs/copyright.html. |
| - | * |
| - | * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| - | * copies of the Software, and permit persons to whom the Software is |
| - | * furnished to do so, under the terms of the COPYING file. |
| - | * |
| - | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| - | * KIND, either express or implied. |
| - | * |
| - | * SPDX-License-Identifier: curl |
| - | * |
| - | ***************************************************************************/ |
| - | #include "curl_setup.h" |
| - | |
| - | #include "curl_rtmp.h" |
| - | #include "urldata.h" |
| - | |
| - | #ifdef USE_LIBRTMP |
| - | |
| - | #include "url.h" |
| - | #include "curlx/nonblock.h" |
| - | #include "progress.h" /* for Curl_pgrsSetUploadSize */ |
| - | #include "transfer.h" |
| - | #include "bufref.h" |
| - | |
| - | #include <librtmp/rtmp.h> |
| - | |
| - | #if defined(USE_WINSOCK) || defined(LWIP_SO_SNDRCVTIMEO_NONSTANDARD) |
| - | #define SET_RCVTIMEO(tv, s) int tv = s * 1000 |
| - | #else |
| - | #define SET_RCVTIMEO(tv, s) struct timeval tv = { s, 0 } |
| - | #endif |
| - | |
| - | #define DEF_BUFTIME (2 * 60 * 60 * 1000) /* 2 hours */ |
| - | |
| - | /* meta key for storing RTMP* at connection */ |
| - | #define CURL_META_RTMP_CONN "meta:proto:rtmp:conn" |
| - | |
| - | static Curl_recv rtmp_recv; |
| - | static Curl_send rtmp_send; |
| - | |
| - | static void rtmp_conn_dtor(void *key, size_t klen, void *entry) |
| - | { |
| - | RTMP *r = entry; |
| - | (void)key; |
| - | (void)klen; |
| - | RTMP_Close(r); |
| - | RTMP_Free(r); |
| - | } |
| - | |
| - | static CURLcode rtmp_setup_connection(struct Curl_easy *data, |
| - | struct connectdata *conn) |
| - | { |
| - | RTMP *r = RTMP_Alloc(); |
| - | if(!r || |
| - | Curl_conn_meta_set(conn, CURL_META_RTMP_CONN, r, rtmp_conn_dtor)) |
| - | return CURLE_OUT_OF_MEMORY; |
| - | |
| - | RTMP_Init(r); |
| - | RTMP_SetBufferMS(r, DEF_BUFTIME); |
| - | if(!RTMP_SetupURL(r, CURL_UNCONST(Curl_bufref_ptr(&data->state.url)))) |
| - | /* rtmp_conn_dtor() performs the cleanup */ |
| - | return CURLE_URL_MALFORMAT; |
| - | return CURLE_OK; |
| - | } |
| - | |
| - | static CURLcode rtmp_connect(struct Curl_easy *data, bool *done) |
| - | { |
| - | struct connectdata *conn = data->conn; |
| - | RTMP *r = Curl_conn_meta_get(conn, CURL_META_RTMP_CONN); |
| - | SET_RCVTIMEO(tv, 10); |
| - | |
| - | if(!r) |
| - | return CURLE_FAILED_INIT; |
| - | |
| - | if(conn->sock[FIRSTSOCKET] > INT_MAX) { |
| - | /* The socket value is invalid for rtmp. */ |
| - | return CURLE_FAILED_INIT; |
| - | } |
| - | |
| - | r->m_sb.sb_socket = (int)conn->sock[FIRSTSOCKET]; |
| - | |
| - | /* We have to know if it is a write before we send the |
| - | * connect request packet |
| - | */ |
| - | if(data->state.upload) |
| - | r->Link.protocol |= RTMP_FEATURE_WRITE; |
| - | |
| - | /* For plain streams, use the buffer toggle trick to keep data flowing */ |
| - | if(!(r->Link.lFlags & RTMP_LF_LIVE) && |
| - | !(r->Link.protocol & RTMP_FEATURE_HTTP)) |
| - | r->Link.lFlags |= RTMP_LF_BUFX; |
| - | |
| - | (void)curlx_nonblock(r->m_sb.sb_socket, FALSE); |
| - | setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, |
| - | (char *)&tv, sizeof(tv)); |
| - | |
| - | if(!RTMP_Connect1(r, NULL)) |
| - | return CURLE_FAILED_INIT; |
| - | |
| - | /* Clients must send a periodic BytesReceived report to the server */ |
| - | r->m_bSendCounter = TRUE; |
| - | |
| - | *done = TRUE; |
| - | conn->recv[FIRSTSOCKET] = rtmp_recv; |
| - | conn->send[FIRSTSOCKET] = rtmp_send; |
| - | return CURLE_OK; |
| - | } |
| - | |
| - | static CURLcode rtmp_do(struct Curl_easy *data, bool *done) |
| - | { |
| - | struct connectdata *conn = data->conn; |
| - | RTMP *r = Curl_conn_meta_get(conn, CURL_META_RTMP_CONN); |
| - | |
| - | if(!r || !RTMP_ConnectStream(r, 0)) |
| - | return CURLE_FAILED_INIT; |
| - | |
| - | if(data->state.upload) { |
| - | Curl_pgrsSetUploadSize(data, data->state.infilesize); |
| - | Curl_xfer_setup_send(data, FIRSTSOCKET); |
| - | } |
| - | else |
| - | Curl_xfer_setup_recv(data, FIRSTSOCKET, -1); |
| - | *done = TRUE; |
| - | return CURLE_OK; |
| - | } |
| - | |
| - | static CURLcode rtmp_done(struct Curl_easy *data, CURLcode status, |
| - | bool premature) |
| - | { |
| - | (void)data; |
| - | (void)status; |
| - | (void)premature; |
| - | |
| - | return CURLE_OK; |
| - | } |
| - | |
| - | static CURLcode rtmp_disconnect(struct Curl_easy *data, |
| - | struct connectdata *conn, |
| - | bool dead_connection) |
| - | { |
| - | RTMP *r = Curl_conn_meta_get(conn, CURL_META_RTMP_CONN); |
| - | (void)data; |
| - | (void)dead_connection; |
| - | if(r) |
| - | Curl_conn_meta_remove(conn, CURL_META_RTMP_CONN); |
| - | return CURLE_OK; |
| - | } |
| - | |
| - | static CURLcode rtmp_recv(struct Curl_easy *data, int sockindex, char *buf, |
| - | size_t len, size_t *pnread) |
| - | { |
| - | struct connectdata *conn = data->conn; |
| - | RTMP *r = Curl_conn_meta_get(conn, CURL_META_RTMP_CONN); |
| - | CURLcode result = CURLE_OK; |
| - | ssize_t rv; |
| - | |
| - | (void)sockindex; |
| - | *pnread = 0; |
| - | if(!r) |
| - | return CURLE_FAILED_INIT; |
| - | |
| - | rv = RTMP_Read(r, buf, curlx_uztosi(len)); |
| - | if(!curlx_sztouz(rv, pnread)) { |
| - | if(r->m_read.status == RTMP_READ_COMPLETE || |
| - | r->m_read.status == RTMP_READ_EOF) { |
| - | data->req.size = data->req.bytecount; |
| - | } |
| - | else |
| - | result = CURLE_RECV_ERROR; |
| - | } |
| - | |
| - | return result; |
| - | } |
| - | |
| - | static CURLcode rtmp_send(struct Curl_easy *data, int sockindex, |
| - | const uint8_t *buf, size_t len, bool eos, |
| - | size_t *pnwritten) |
| - | { |
| - | struct connectdata *conn = data->conn; |
| - | RTMP *r = Curl_conn_meta_get(conn, CURL_META_RTMP_CONN); |
| - | ssize_t rv; |
| - | |
| - | (void)sockindex; |
| - | (void)eos; |
| - | *pnwritten = 0; |
| - | if(!r) |
| - | return CURLE_FAILED_INIT; |
| - | |
| - | rv = RTMP_Write(r, (const char *)buf, curlx_uztosi(len)); |
| - | if(!curlx_sztouz(rv, pnwritten)) |
| - | return CURLE_SEND_ERROR; |
| - | |
| - | return CURLE_OK; |
| - | } |
| - | |
| - | void Curl_rtmp_version(char *version, size_t len) |
| - | { |
| - | char suff[2]; |
| - | if(RTMP_LIB_VERSION & 0xff) { |
| - | suff[0] = (RTMP_LIB_VERSION & 0xff) + 'a' - 1; |
| - | suff[1] = '\0'; |
| - | } |
| - | else |
| - | suff[0] = '\0'; |
| - | |
| - | curl_msnprintf(version, len, "librtmp/%d.%d%s", |
| - | RTMP_LIB_VERSION >> 16, (RTMP_LIB_VERSION >> 8) & 0xff, |
| - | suff); |
| - | } |
| - | |
| - | /* |
| - | * RTMP protocol handler.h, based on https://rtmpdump.mplayerhq.hu/ |
| - | */ |
| - | |
| - | const struct Curl_protocol Curl_protocol_rtmp = { |
| - | rtmp_setup_connection, /* setup_connection */ |
| - | rtmp_do, /* do_it */ |
| - | rtmp_done, /* done */ |
| - | ZERO_NULL, /* do_more */ |
| - | rtmp_connect, /* connect_it */ |
| - | ZERO_NULL, /* connecting */ |
| - | ZERO_NULL, /* doing */ |
| - | ZERO_NULL, /* proto_pollset */ |
| - | ZERO_NULL, /* doing_pollset */ |
| - | ZERO_NULL, /* domore_pollset */ |
| - | ZERO_NULL, /* perform_pollset */ |
| - | rtmp_disconnect, /* disconnect */ |
| - | ZERO_NULL, /* write_resp */ |
| - | ZERO_NULL, /* write_resp_hd */ |
| - | ZERO_NULL, /* connection_is_dead */ |
| - | ZERO_NULL, /* attach connection */ |
| - | ZERO_NULL, /* follow */ |
| - | }; |
| - | |
| - | #endif /* USE_LIBRTMP */ |
| @@ -1,31 +0,0 @@ | |
| - | #ifndef HEADER_CURL_RTMP_H |
| - | #define HEADER_CURL_RTMP_H |
| - | /*************************************************************************** |
| - | * _ _ ____ _ |
| - | * Project ___| | | | _ \| | |
| - | * / __| | | | |_) | | |
| - | * | (__| |_| | _ <| |___ |
| - | * \___|\___/|_| \_\_____| |
| - | * |
| - | * Copyright (C) Howard Chu, <[email protected]> |
| - | * |
| - | * This software is licensed as described in the file COPYING, which |
| - | * you should have received as part of this distribution. The terms |
| - | * are also available at https://curl.se/docs/copyright.html. |
| - | * |
| - | * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| - | * copies of the Software, and permit persons to whom the Software is |
| - | * furnished to do so, under the terms of the COPYING file. |
| - | * |
| - | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| - | * KIND, either express or implied. |
| - | * |
| - | * SPDX-License-Identifier: curl |
| - | * |
| - | ***************************************************************************/ |
| - | #ifdef USE_LIBRTMP |
| - | extern const struct Curl_protocol Curl_protocol_rtmp; |
| - | void Curl_rtmp_version(char *version, size_t len); |
| - | #endif |
| - | |
| - | #endif /* HEADER_CURL_RTMP_H */ |
| @@ -35,7 +35,6 @@ | |
| #include "curl_ldap.h" | |
| #include "mqtt.h" | |
| #include "pop3.h" | |
| - | #include "curl_rtmp.h" |
| #include "rtsp.h" | |
| #include "smb.h" | |
| #include "smtp.h" | |
| @@ -267,84 +266,6 @@ const struct Curl_scheme Curl_scheme_pop3s = { | |
| PORT_POP3S, /* defport */ | |
| }; | |
| - | const struct Curl_scheme Curl_scheme_rtmp = { |
| - | "rtmp", /* scheme */ |
| - | #ifndef USE_LIBRTMP |
| - | ZERO_NULL, |
| - | #else |
| - | &Curl_protocol_rtmp, |
| - | #endif |
| - | CURLPROTO_RTMP, /* protocol */ |
| - | CURLPROTO_RTMP, /* family */ |
| - | PROTOPT_NONE, /* flags */ |
| - | PORT_RTMP, /* defport */ |
| - | }; |
| - | |
| - | const struct Curl_scheme Curl_scheme_rtmpt = { |
| - | "rtmpt", /* scheme */ |
| - | #ifndef USE_LIBRTMP |
| - | ZERO_NULL, |
| - | #else |
| - | &Curl_protocol_rtmp, |
| - | #endif |
| - | CURLPROTO_RTMPT, /* protocol */ |
| - | CURLPROTO_RTMPT, /* family */ |
| - | PROTOPT_NONE, /* flags */ |
| - | PORT_RTMPT, /* defport */ |
| - | }; |
| - | |
| - | const struct Curl_scheme Curl_scheme_rtmpe = { |
| - | "rtmpe", /* scheme */ |
| - | #ifndef USE_LIBRTMP |
| - | ZERO_NULL, |
| - | #else |
| - | &Curl_protocol_rtmp, |
| - | #endif |
| - | CURLPROTO_RTMPE, /* protocol */ |
| - | CURLPROTO_RTMPE, /* family */ |
| - | PROTOPT_NONE, /* flags */ |
| - | PORT_RTMP, /* defport */ |
| - | }; |
| - | |
| - | const struct Curl_scheme Curl_scheme_rtmpte = { |
| - | "rtmpte", /* scheme */ |
| - | #ifndef USE_LIBRTMP |
| - | ZERO_NULL, |
| - | #else |
| - | &Curl_protocol_rtmp, |
| - | #endif |
| - | CURLPROTO_RTMPTE, /* protocol */ |
| - | CURLPROTO_RTMPTE, /* family */ |
| - | PROTOPT_NONE, /* flags */ |
| - | PORT_RTMPT, /* defport */ |
| - | }; |
| - | |
| - | const struct Curl_scheme Curl_scheme_rtmps = { |
| - | "rtmps", /* scheme */ |
| - | #ifndef USE_LIBRTMP |
| - | ZERO_NULL, |
| - | #else |
| - | &Curl_protocol_rtmp, |
| - | #endif |
| - | CURLPROTO_RTMPS, /* protocol */ |
| - | CURLPROTO_RTMP, /* family */ |
| - | PROTOPT_NONE, /* flags */ |
| - | PORT_RTMPS, /* defport */ |
| - | }; |
| - | |
| - | const struct Curl_scheme Curl_scheme_rtmpts = { |
| - | "rtmpts", /* scheme */ |
| - | #ifndef USE_LIBRTMP |
| - | ZERO_NULL, |
| - | #else |
| - | &Curl_protocol_rtmp, |
| - | #endif |
| - | CURLPROTO_RTMPTS, /* protocol */ |
| - | CURLPROTO_RTMPT, /* family */ |
| - | PROTOPT_NONE, /* flags */ |
| - | PORT_RTMPS, /* defport */ |
| - | }; |
| - | |
| const struct Curl_scheme Curl_scheme_rtsp = { | |
| "rtsp", /* scheme */ | |
| #ifdef CURL_DISABLE_RTSP | |
| @@ -510,55 +431,49 @@ const struct Curl_scheme *Curl_getn_scheme(const char *scheme, size_t len) | |
| 6. make sure this function uses the same hash function that worked for | |
| schemetable.c | |
| */ | |
| - | static const struct Curl_scheme * const all_schemes[67] = { |
| - | &Curl_scheme_file, |
| - | &Curl_scheme_mqtts, NULL, |
| - | &Curl_scheme_gophers, NULL, |
| - | &Curl_scheme_rtmpe, |
| + | static const struct Curl_scheme * const all_schemes[47] = { |
| + | &Curl_scheme_mqtt, |
| &Curl_scheme_smtp, | |
| - | &Curl_scheme_sftp, |
| - | &Curl_scheme_smb, |
| - | &Curl_scheme_smtps, |
| - | &Curl_scheme_telnet, |
| - | &Curl_scheme_gopher, |
| - | &Curl_scheme_tftp, NULL, NULL, NULL, |
| - | &Curl_scheme_ftps, |
| - | &Curl_scheme_http, |
| - | &Curl_scheme_imap, |
| - | &Curl_scheme_rtmps, |
| - | &Curl_scheme_rtmpt, NULL, NULL, NULL, |
| + | &Curl_scheme_tftp, |
| + | &Curl_scheme_imap, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
| &Curl_scheme_ldaps, | |
| - | &Curl_scheme_wss, |
| - | &Curl_scheme_https, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
| - | &Curl_scheme_rtsp, |
| - | &Curl_scheme_smbs, |
| - | &Curl_scheme_scp, NULL, NULL, NULL, |
| - | &Curl_scheme_pop3, NULL, NULL, |
| - | &Curl_scheme_rtmp, NULL, NULL, NULL, |
| - | &Curl_scheme_rtmpte, NULL, NULL, NULL, |
| - | &Curl_scheme_dict, NULL, NULL, NULL, |
| - | &Curl_scheme_mqtt, |
| + | &Curl_scheme_dict, NULL, |
| + | &Curl_scheme_file, NULL, |
| &Curl_scheme_pop3s, | |
| - | &Curl_scheme_imaps, NULL, |
| - | &Curl_scheme_ws, NULL, |
| - | &Curl_scheme_rtmpts, |
| - | &Curl_scheme_ldap, NULL, NULL, |
| &Curl_scheme_ftp, | |
| + | &Curl_scheme_scp, |
| + | &Curl_scheme_mqtts, |
| + | &Curl_scheme_imaps, |
| + | &Curl_scheme_ldap, |
| + | &Curl_scheme_http, |
| + | &Curl_scheme_smb, NULL, NULL, |
| + | &Curl_scheme_telnet, |
| + | &Curl_scheme_https, |
| + | &Curl_scheme_gopher, |
| + | &Curl_scheme_rtsp, NULL, NULL, |
| + | &Curl_scheme_wss, NULL, |
| + | &Curl_scheme_gophers, |
| + | &Curl_scheme_smtps, |
| + | &Curl_scheme_pop3, |
| + | &Curl_scheme_ws, NULL, NULL, |
| + | &Curl_scheme_sftp, |
| + | &Curl_scheme_ftps, NULL, |
| + | &Curl_scheme_smbs, NULL, |
| }; | |
| if(len && (len <= 7)) { | |
| const char *s = scheme; | |
| size_t l = len; | |
| const struct Curl_scheme *h; | |
| - | unsigned int c = 978; |
| + | unsigned int c = 792; |
| while(l) { | |
| - | c <<= 5; |
| + | c <<= 4; |
| c += (unsigned int)Curl_raw_tolower(*s); | |
| s++; | |
| l--; | |
| } | |
| - | h = all_schemes[c % 67]; |
| + | h = all_schemes[c % 47]; |
| if(h && curl_strnequal(scheme, h->name, len) && !h->name[len]) | |
| return h; | |
| } | |
| @@ -50,9 +50,6 @@ struct easy_pollset; | |
| #define PORT_SMTP 25 | |
| #define PORT_SMTPS 465 /* sometimes called SSMTP */ | |
| #define PORT_RTSP 554 | |
| - | #define PORT_RTMP 1935 |
| - | #define PORT_RTMPT PORT_HTTP |
| - | #define PORT_RTMPS PORT_HTTPS |
| #define PORT_GOPHER 70 | |
| #define PORT_MQTT 1883 | |
| #define PORT_MQTTS 8883 | |
| @@ -264,12 +261,6 @@ extern const struct Curl_scheme Curl_scheme_mqtt; | |
| extern const struct Curl_scheme Curl_scheme_mqtts; | |
| extern const struct Curl_scheme Curl_scheme_pop3; | |
| extern const struct Curl_scheme Curl_scheme_pop3s; | |
| - | extern const struct Curl_scheme Curl_scheme_rtmp; |
| - | extern const struct Curl_scheme Curl_scheme_rtmpe; |
| - | extern const struct Curl_scheme Curl_scheme_rtmpt; |
| - | extern const struct Curl_scheme Curl_scheme_rtmpte; |
| - | extern const struct Curl_scheme Curl_scheme_rtmps; |
| - | extern const struct Curl_scheme Curl_scheme_rtmpts; |
| extern const struct Curl_scheme Curl_scheme_rtsp; | |
| extern const struct Curl_scheme Curl_scheme_scp; | |
| extern const struct Curl_scheme Curl_scheme_sftp; | |
| @@ -112,7 +112,6 @@ | |
| #include "imap.h" | |
| #include "url.h" | |
| #include "connect.h" | |
| - | #include "curl_rtmp.h" |
| #include "gopher.h" | |
| #include "mqtt.h" | |
| #include "rtsp.h" | |
| @@ -46,11 +46,6 @@ | |
| #include <libpsl.h> | |
| #endif | |
| - | #ifdef USE_LIBRTMP |
| - | #include <librtmp/rtmp.h> |
| - | #include "curl_rtmp.h" |
| - | #endif |
| - | |
| #ifdef HAVE_LIBZ | |
| #include <zlib.h> | |
| #endif | |
| @@ -178,9 +173,6 @@ char *curl_version(void) | |
| #if !defined(CURL_DISABLE_HTTP) && defined(USE_HTTP3) | |
| char h3_version[30]; | |
| #endif | |
| - | #ifdef USE_LIBRTMP |
| - | char rtmp_version[30]; |
| - | #endif |
| #ifdef USE_GSASL | |
| char gsasl_buf[30]; | |
| #endif | |
| @@ -244,10 +236,6 @@ char *curl_version(void) | |
| Curl_quic_ver(h3_version, sizeof(h3_version)); | |
| src[i++] = h3_version; | |
| #endif | |
| - | #ifdef USE_LIBRTMP |
| - | Curl_rtmp_version(rtmp_version, sizeof(rtmp_version)); |
| - | src[i++] = rtmp_version; |
| - | #endif |
| #ifdef USE_GSASL | |
| curl_msnprintf(gsasl_buf, sizeof(gsasl_buf), "libgsasl/%s", | |
| gsasl_check_version(NULL)); | |
| @@ -350,14 +338,6 @@ static const char * const supported_protocols[] = { | |
| #if defined(USE_SSL) && !defined(CURL_DISABLE_POP3) | |
| "pop3s", | |
| #endif | |
| - | #ifdef USE_LIBRTMP |
| - | "rtmp", |
| - | "rtmpe", |
| - | "rtmps", |
| - | "rtmpt", |
| - | "rtmpte", |
| - | "rtmpts", |
| - | #endif |
| #ifndef CURL_DISABLE_RTSP | |
| "rtsp", | |
| #endif | |
| @@ -694,13 +674,5 @@ curl_version_info_data *curl_version_info(CURLversion stamp) | |
| feature_names[n] = NULL; /* Terminate array. */ | |
| version_info.features = features; | |
| - | #ifdef USE_LIBRTMP |
| - | { |
| - | static char rtmp_version[30]; |
| - | Curl_rtmp_version(rtmp_version, sizeof(rtmp_version)); |
| - | version_info.rtmp_version = rtmp_version; |
| - | } |
| - | #endif |
| - | |
| return &version_info; | |
| } | |
| @@ -315,9 +315,6 @@ $write cvh "#endif" | |
| $write cvh "#ifdef USE_GNUTLS" | |
| $write cvh "#undef USE_GNUTLS" | |
| $write cvh "#endif" | |
| - | $write cvh "#ifdef USE_LIBRTMP" |
| - | $write cvh "#undef USE_LIBRTMP" |
| - | $write cvh "#endif" |
| $write cvh "#ifdef USE_MANUAL" | |
| $write cvh "#undef USE_MANUAL" | |
| $write cvh "#endif" | |
| @@ -166,8 +166,6 @@ my %knownprotos = ( | |
| 'MQTT' => 1, | |
| 'POP3' => 1, | |
| 'POP3S' => 1, | |
| - | 'RTMP' => 1, |
| - | 'RTMPS' => 1, |
| 'RTSP' => 1, | |
| 'SCP' => 1, | |
| 'SFTP' => 1, | |
| @@ -46,12 +46,6 @@ static const char *scheme[] = { | |
| "mqtts", | |
| "pop3", | |
| "pop3s", | |
| - | "rtmp", |
| - | "rtmpt", |
| - | "rtmpe", |
| - | "rtmpte", |
| - | "rtmps", |
| - | "rtmpts", |
| "rtsp", | |
| "scp", | |
| "sftp", | |
| @@ -341,10 +341,7 @@ void tool_version_info(void) | |
| #endif /* !CURL_DISABLE_IPFS */ | |
| curl_mprintf("Protocols:"); | |
| for(builtin = built_in_protos; *builtin; ++builtin) { | |
| - | /* Special case: do not list rtmp?* protocols. |
| - | They may only appear together with "rtmp" */ |
| - | if(!curl_strnequal(*builtin, "rtmp", 4) || !builtin[0][4]) |
| - | curl_mprintf(" %s", *builtin); |
| + | curl_mprintf(" %s", *builtin); |
| #ifndef CURL_DISABLE_IPFS | |
| if(insert && insert == *builtin) { | |
| curl_mprintf(" ipfs ipns"); | |
| @@ -18,7 +18,7 @@ Curl_get_scheme unit test | |
| <verify> | |
| <stdout mode="text"> | |
| - | 205 invokes |
| + | 199 invokes |
| </stdout> | |
| </verify> | |
| </testcase> | |
| @@ -35,17 +35,17 @@ static CURLcode test_unit1627(const char *arg) | |
| /* all upper */ | |
| "DICT", "FILE", "FTP", "FTPS", "GOPHER", "GOPHERS", "HTTP", "HTTPS", | |
| "IMAP", "IMAPS", "LDAP", "LDAPS", "MQTT", "MQTTS", "POP3", "POP3S", | |
| - | "RTMP", "RTMPS", "RTSP", "SCP", "SFTP", "SMB", "SMBS", "SMTP", "SMTPS", |
| + | "RTSP", "SCP", "SFTP", "SMB", "SMBS", "SMTP", "SMTPS", |
| "TELNET", "TFTP", "WS", "WSS", | |
| /* all lower */ | |
| "dict", "file", "ftp", "ftps", "gopher", "gophers", "http", "https", | |
| "imap", "imaps", "ldap", "ldaps", "mqtt", "mqtts", "pop3", "pop3s", | |
| - | "rtmp", "rtmps", "rtsp", "scp", "sftp", "smb", "smbs", "smtp", "smtps", |
| + | "rtsp", "scp", "sftp", "smb", "smbs", "smtp", "smtps", |
| "telnet", "tftp", "ws", "wss", | |
| /* mixed */ | |
| "diCt", "fIle", "Ftp", "ftpS", "Gopher", "gOphers", "htTp", "httPs", | |
| "imAP", "imaPS", "LDap", "LDAps", "mQTT", "mqtTS", "pOP3", "pOP3s", | |
| - | "rTMp", "rTMPS", "RtsP", "ScP", "SFtP", "Smb", "smBS", "sMTP", "SMTPs", |
| + | "RtsP", "ScP", "SFtP", "Smb", "smBS", "sMTP", "SMTPs", |
| "TELNEt", "tFTP", "Ws", "wSS", | |
| }; | |
| /* non-existing schemes */ | |