aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Ekström <jeebjp@gmail.com>2020-05-13 00:27:58 +0300
committerJan Ekström <jeebjp@gmail.com>2020-09-04 21:00:52 +0300
commit14002368999cda9ee64872889f939ed22e5fba48 (patch)
tree690f645d864cc31cc5b653fa80a6b124023702d7
parent27fec5be47603c191f9446180024e292ef12824d (diff)
downloadffmpeg-14002368999cda9ee64872889f939ed22e5fba48.tar.gz
avformat/tls_schannel: always decrypt all received data
The dec_buf seems to be properly managed between read calls, and we have no logic to decrypt before attempting socket I/O. Thus - until now - such data would not be decrypted in case of connections such as HTTP keep-alive, as the recv call would always get executed first, block until rw_timeout, and then get retried by retry_transfer_wrapper. Thus - if data is received - decrypt all of it right away. This way it is available for the following requests in case they can be satisfied with it. (cherry picked from commit 39977fff20048f1798a95c593d6034a0e73ebbe5)
-rw-r--r--libavformat/tls_schannel.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/tls_schannel.c b/libavformat/tls_schannel.c
index a8907eb3bb..b0ce6b88fa 100644
--- a/libavformat/tls_schannel.c
+++ b/libavformat/tls_schannel.c
@@ -422,7 +422,7 @@ static int tls_read(URLContext *h, uint8_t *buf, int len)
c->enc_buf_offset += ret;
}
- while (c->enc_buf_offset > 0 && sspi_ret == SEC_E_OK && c->dec_buf_offset < len) {
+ while (c->enc_buf_offset > 0 && sspi_ret == SEC_E_OK) {
/* input buffer */
init_sec_buffer(&inbuf[0], SECBUFFER_DATA, c->enc_buf, c->enc_buf_offset);