← Commit list

ceae02db04

Daniel Stenberg
Daniel Stenberg
2026-03-21
SUCCESS Duration: 254s

Subject

rtmp: drop support

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

.github/labeler.yml+0 -8
@@ -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:
.github/scripts/cmp-config.pl+0 -1
@@ -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,
.github/workflows/codeql.yml+3 -3
@@ -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
.github/workflows/linux-old.yml+4 -4
@@ -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() }}
.github/workflows/linux.yml+5 -5
@@ -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
.github/workflows/macos.yml+6 -6
@@ -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
CMake/FindLibrtmp.cmake+0 -106
@@ -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()
CMake/curl-config.in.cmake+0 -4
@@ -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)
CMakeLists.txt+0 -9
@@ -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"
Makefile.am+0 -1
@@ -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 \
README.md+2 -2
@@ -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
configure.ac+0 -85
@@ -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}
docs/DEPRECATE.md+2 -12
@@ -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)
+
docs/FAQ.md+2 -2
@@ -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
docs/HISTORY.md+4 -0
@@ -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
docs/INSTALL-CMAKE.md+0 -3
@@ -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)
docs/INSTALL.md+0 -1
@@ -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)
docs/URL-SYNTAX.md+5 -19
@@ -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`.
docs/cmdline-opts/_DESCRIPTION.md+2 -2
@@ -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.
docs/cmdline-opts/_PROTOCOLS.md+0 -3
@@ -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
docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.md+6 -2
@@ -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
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.md+2 -2
@@ -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
docs/libcurl/symbols-in-versions+6 -6
@@ -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
lib/Makefile.inc+0 -2
@@ -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 \
lib/curl_config-cmake.h.in+0 -3
@@ -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
lib/curl_rtmp.c+0 -248
@@ -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 */
lib/curl_rtmp.h+0 -31
@@ -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 */
lib/protocol.c+27 -112
@@ -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;
}
lib/protocol.h+0 -9
@@ -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;
lib/url.c+0 -1
@@ -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"
lib/version.c+0 -28
@@ -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;
}
projects/vms/generate_config_vms_h_curl.com+0 -3
@@ -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"
scripts/cd2nroff+0 -2
@@ -166,8 +166,6 @@ my %knownprotos = (
'MQTT' => 1,
'POP3' => 1,
'POP3S' => 1,
- 'RTMP' => 1,
- 'RTMPS' => 1,
'RTSP' => 1,
'SCP' => 1,
'SFTP' => 1,
scripts/schemetable.c+0 -6
@@ -46,12 +46,6 @@ static const char *scheme[] = {
"mqtts",
"pop3",
"pop3s",
- "rtmp",
- "rtmpt",
- "rtmpe",
- "rtmpte",
- "rtmps",
- "rtmpts",
"rtsp",
"scp",
"sftp",
src/tool_help.c+1 -4
@@ -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");
tests/data/test1627+1 -1
@@ -18,7 +18,7 @@ Curl_get_scheme unit test
<verify>
<stdout mode="text">
-205 invokes
+199 invokes
</stdout>
</verify>
</testcase>
tests/unit/unit1627.c+3 -3
@@ -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 */