summaryrefslogtreecommitdiff
path: root/libavformat/rtmpproto.c
Commit message (Collapse)AuthorAge
* lavf/rtmp: Add option to set TCP_NODELAY for rtmpNick Ruff2021-06-20
| | | | Suggested-By: ffmpeg@fb.com
* avformat/rtmpproto: Only include RTMP protocols that are enabledAndreas Rheinhardt2021-02-02
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avformat: Replace ffurl_close() by ffurl_closep() where appropriateAndreas Rheinhardt2020-05-25
| | | | | | | | | | It avoids leaving dangling pointers behind in memory. Also remove redundant checks for whether the URLContext to be closed is already NULL. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avformat/rtmpproto: use av_reallocp_array()Limin Wang2020-05-06
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* lavf/rtmpproto: Don't unref uninitialized buffersJun Zhao2019-12-07
| | | | | | This happens if ffurl_open_whitelist fails and stream is unset. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* lavf/rtmpproto: fix the playpath truncation if the len > 512Jun Zhao2019-11-17
| | | | | | | | fix the playpath truncation if the len > 512 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Found-by: liuwenhuang <liuwenhuang@tencent.com> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* avformat/rtmpproto: fix memleak when open rtmp failedSteven Liu2019-10-28
| | | | Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/rtmpptoto: add logging context to logSteven Liu2019-10-08
| | | | Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* libavformat/rtmpproto: Plug leak if sending bytes read report fails.Josh Allmann2018-01-25
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* Merge commit 'b864230c49089b087eef56988a3d6a784f6f9827'James Almer2017-10-21
|\ | | | | | | | | | | | | * commit 'b864230c49089b087eef56988a3d6a784f6f9827': rtmp: Move RTMP digest calculation to a separate file Merged-by: James Almer <jamrial@gmail.com>
| * rtmp: Move RTMP digest calculation to a separate fileDiego Biurrun2017-03-20
| | | | | | | | The rtmpcrypt protocol requires it.
* | Merge commit '15a92e0c402c830b607f905d6bf203b6cfb4fa8c'James Almer2017-09-26
|\| | | | | | | | | | | | | * commit '15a92e0c402c830b607f905d6bf203b6cfb4fa8c': rtmp: Correctly handle the Window Acknowledgement Size packets Merged-by: James Almer <jamrial@gmail.com>
| * rtmp: Correctly handle the Window Acknowledgement Size packetsMartin Storsjö2017-02-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This swaps which field is set when the Window Acknowledgement Size and Set Peer BW packets are received, renames the fields in order to clarify their role further and adds verbose comments explaining their respective roles and how well the code currently does what it is supposed to. The Set Peer BW packet tells the receiver of the packet (which can be either client or server) that it should not send more data if it already has sent more data than the specified number of bytes, without receiving acknowledgement for them. Actually checking this limit is currently not implemented. In order to be able to check that properly, one can send the Window Acknowledgement Size packet, which tells the receiver of the packet that it needs to send Acknowledgement packets (RTMP_PT_BYTES_READ) at least after receiving a given number of bytes since the last Acknowledgement. Therefore, when we receive a Window Acknowledgement Size packet, this sets the maximum number of bytes we can receive without sending an Acknowledgement; therefore when handling this packet we should set the receive_report_size field (previously client_report_size). Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'a1a143adb0fd11c474221431417cff25db7d920f'James Almer2017-09-26
|\| | | | | | | | | | | | | * commit 'a1a143adb0fd11c474221431417cff25db7d920f': rtmp: Rename packet types to closer match the spec Merged-by: James Almer <jamrial@gmail.com>
| * rtmp: Rename packet types to closer match the specMartin Storsjö2017-02-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also rename comments and log messages accordingly, and add clarifying comments for some hardcoded values. The previous names were taken from older, reverse engineered references. These names match the official public rtmp specification, and matches the names used by wirecast in annotating captured streams. These names also avoid hardcoding the roles of server and client, since the handling of them is irrelevant of whether we act as server or client. The RTMP_PT_PING type maps to RTMP_PT_USER_CONTROL. The SERVER_BW and CLIENT_BW types are a bit more intertwined; RTMP_PT_SERVER_BW maps to RTMP_PT_WINDOW_ACK_SIZE and RTMP_PT_CLIENT_BW maps to RTMP_PT_SET_PEER_BW. Signed-off-by: Martin Storsjö <martin@martin.st>
| * rtmp: Account for bytes_read wraparoundLuca Barbato2017-01-29
| | | | | | | | | | | | | | Servers seem to be happy to receive the wrapped-around value as long as they receive a report, otherwise they timeout. Initially reported and analyzed by Thomas Bernhard.
* | rtmpproto: Fix error returnDerek Buitenhuis2017-07-07
| | | | | | | | | | | | Mistake was added in 5840473890440dbe0bd2cce530ebb3d93e187ae6. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* | rtmpproto: send swfverify value as swfurl if latter is unusedRicardo Constantino2017-05-07
| | | | | | | | | | | | | | | | | | Replicates lavf/librtmp.c behavior in L149-156 and rtmpdump's behavior with "--swfVfy <url>" passing the url to swfUrl. Fixes trac ticket #5549. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit 'f4ca8ea92a8b36fe723412aefafc1b2fa89f8dc6'Clément Bœsch2017-03-29
|\| | | | | | | | | | | | | * commit 'f4ca8ea92a8b36fe723412aefafc1b2fa89f8dc6': rtmpproto: Restructure zlib code to avoid unreachable code warning Merged-by: Clément Bœsch <u@pkh.me>
| * rtmpproto: Restructure zlib code to avoid unreachable code warningDiego Biurrun2016-11-02
| | | | | | | | libavformat\rtmpproto.c(1165) : warning C4702: unreachable code
* | Merge commit 'c541a44e029e8a4f21db028c34fee3ad1c10a409'Clément Bœsch2017-03-27
|\| | | | | | | | | | | | | * commit 'c541a44e029e8a4f21db028c34fee3ad1c10a409': Revert "rtmpproto: Don't include a client version in the unencrypted C1 handshake" Merged-by: Clément Bœsch <u@pkh.me>
| * Revert "rtmpproto: Don't include a client version in the unencrypted C1 ↵Luca Barbato2016-10-30
| | | | | | | | | | | | handshake" This reverts commit 7d8d726be7dc46343ab1c98c339c1ed44bcb07c1.
* | Merge commit '7d8d726be7dc46343ab1c98c339c1ed44bcb07c1'Clément Bœsch2017-03-23
|\| | | | | | | | | | | | | * commit '7d8d726be7dc46343ab1c98c339c1ed44bcb07c1': rtmpproto: Don't include a client version in the unencrypted C1 handshake Merged-by: Clément Bœsch <u@pkh.me>
| * rtmpproto: Don't include a client version in the unencrypted C1 handshakeMartin Storsjö2016-10-14
| | | | | | | | | | | | | | | | | | | | According to the public RTMP specification, these 4 bytes should be zero. librtmp in server mode assumes that the RTMPE (FP9) handshake is used if these bytes are nonzero. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '9f23f77a532ca9c2b7dc4b5328bc413e4f6f5b56'Clément Bœsch2017-03-23
|\| | | | | | | | | | | | | * commit '9f23f77a532ca9c2b7dc4b5328bc413e4f6f5b56': rtmpproto: Don't include the libavformat version as "clientid" Merged-by: Clément Bœsch <u@pkh.me>
| * rtmpproto: Don't include the libavformat version as "clientid"Martin Storsjö2016-10-14
| | | | | | | | | | | | | | | | | | | | When acting as server, the server can include a "clientid" property in some status messages. But this should be a unique number identifying the client session, not identifying the server itself. In practice, omitting it works just as well as including this incorrect field. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '8b5e0d17e70400eaf5dc3845b5c1df8b2b88d830'Clément Bœsch2017-03-23
|\| | | | | | | | | | | | | * commit '8b5e0d17e70400eaf5dc3845b5c1df8b2b88d830': rtmpproto: Send chunk size on the network channel Merged-by: Clément Bœsch <u@pkh.me>
| * rtmpproto: Send chunk size on the network channelMartin Storsjö2016-10-14
| | | | | | | | | | | | | | | | This makes sure that e.g. Adobe FME actually reacts to it. As long as the value we've been sending is the default one (128), the bug hasn't been noticed. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'd6ded94036e43a04889f4ff2813a7f7dd60b82fe'Clément Bœsch2017-03-23
|\| | | | | | | | | | | | | * commit 'd6ded94036e43a04889f4ff2813a7f7dd60b82fe': rtmpproto: Lengthen the filename buffer when receiving streams Merged-by: Clément Bœsch <u@pkh.me>
| * rtmpproto: Lengthen the filename buffer when receiving streamsMartin Storsjö2016-10-14
| | | | | | | | | | | | | | Some applications such as Adobe FME append lots of parameters here, making it easily overflow the current limit. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '7395784ba72742b6daa62d35db4028e09f3fdf06'Clément Bœsch2017-03-23
|\| | | | | | | | | | | | | * commit '7395784ba72742b6daa62d35db4028e09f3fdf06': rtmpproto: Check the return from ff_amf_read_string Merged-by: Clément Bœsch <u@pkh.me>
| * rtmpproto: Check the return from ff_amf_read_stringMartin Storsjö2016-10-14
| | | | | | | | | | | | | | | | If this failed, we used to continue with an uninitialized filename buffer. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* | avformat/rtmpproto: change rtmp_open from url_open to url_open2Steven Liu2017-03-22
| | | | | | | | | | | | | | use the option set by user Reported-by: Lancelot Lai <laihy23@gmail.com> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* | lavf/rtmpproto: Make bytes_read variables 64bit.Carl Eugen Hoyos2017-01-25
| | | | | | | | | | | | | | | | | | When bytes_read overflowed, last_bytes_read did not yet overflow and no bytes-read report was created leading to a timeout. Analyzed-by: Thomas Bernhard Fixes ticket #5836.
* | avformat/rtmpproto: Fix RTMP control message handling error in listen mode.Hiroyuki OYAMA2016-10-21
| | | | | | | | | | | | | | Fix problem to fail by a RTMP Control Message except "Set Chunk Size (1)" after an RTMP handshake. When 'nginx-rtmp-module' relays an RTMP, it sends not only control message 'Set Chunk Size (1)' but also 'Window Acknowledgement Size (5)'. Reviewed-by: Steven Liu <lingjiujianke@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'Clément Bœsch2016-06-21
|\| | | | | | | | | | | | | * commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb': cosmetics: Fix spelling mistakes Merged-by: Clément Bœsch <u@pkh.me>
| * cosmetics: Fix spelling mistakesVittorio Giovara2016-05-04
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | Merge commit 'fab8156b2f30666adabe227b3d7712fd193873b1'Derek Buitenhuis2016-04-21
|\| | | | | | | | | | | | | * commit 'fab8156b2f30666adabe227b3d7712fd193873b1': avio: Copy URLContext generic options into child URLContexts Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * avio: Copy URLContext generic options into child URLContextsMartin Storsjö2016-03-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since all URLContexts have the same AVOptions, such AVOptions will be applied on the outermost context only and removed from the dict, while they probably make sense on all contexts. This makes sure that rw_timeout gets propagated to the innermost URLContext (to make sure it gets passed to the tcp protocol, when opening a http connection for instance). Alternatively, such matching options would be kept in the dict and only removed after the ffurl_connect call. Signed-off-by: Martin Storsjö <martin@martin.st>
| * urlprotocol: receive a list of protocols from the callerAnton Khirnov2016-02-22
| | | | | | | | | | This way, the decisions about which protocols are available for use in any given situations can be delegated to the caller.
* | avformat: Add a protocol blacklisting APIDerek Buitenhuis2016-03-04
| | | | | | | | Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* | Merge commit '2758cdedfb7ac61f8b5e4861f99218b6fd43491d'Derek Buitenhuis2016-02-29
|\| | | | | | | | | | | | | | | | | | | | | This commit also disables the async fate test, because it used internal APIs in a non-kosher way, which no longer exists. * commit '2758cdedfb7ac61f8b5e4861f99218b6fd43491d': lavf: reorganize URLProtocols Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * lavf: reorganize URLProtocolsAnton Khirnov2016-02-22
| | | | | | | | | | | | | | | | | | | | Instead of a linked list constructed at av_register_all(), store them in a constant array of pointers. Since no registration is necessary now, this removes some global state from lavf. This will also allow the urlprotocol layer caller to limit the available protocols in a simple and flexible way in the following commits.
* | Update demuxers and protocols for protocol whitelist supportMichael Niedermayer2016-02-02
| | | | | | | | | | Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit '64f8c439fd663fec4d57ac21af572d498fe21f7a'Hendrik Leppkes2016-01-01
|\| | | | | | | | | | | | | * commit '64f8c439fd663fec4d57ac21af572d498fe21f7a': rtmpproto: Include the full path as app when "slist=" is found Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * rtmpproto: Include the full path as app when "slist=" is foundMartin Storsjö2015-12-13
| | | | | | | | | | | | | | This matches what librtmp does. This fixes automatic url parsing of crunchyroll urls. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'e55376a1fd5abebbb0a082aa20739d58c2260a37'Hendrik Leppkes2015-10-14
|\| | | | | | | | | | | | | * commit 'e55376a1fd5abebbb0a082aa20739d58c2260a37': rtmpproto: Write correct flv packet sizes at the end of packets Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * rtmpproto: Write correct flv packet sizes at the end of packetsMichael Niedermayer2015-10-14
| | | | | | | | | | | | | | In one case it was written as zero, one case left it uninitialized, missed the 11 bytes for the flv header. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * rtmpproto: free hmac context properlyJames Almer2015-07-30
| | | | | | | | | | Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Martin Storsjö <martin@martin.st>
| * rtmpproto: use AVHMAC instead of a custom implementationJames Almer2015-07-29
| | | | | | | | | | Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Martin Storsjö <martin@martin.st>