From 54d0ef1738ff30c05e2edb5b019dbd44b694ebe6 Mon Sep 17 00:00:00 2001
From: Aman Gupta <aman@tmm1.net>
Date: Fri, 22 Dec 2017 16:29:41 -0800
Subject: [PATCH] avformat/http: return EOF from ff_http_do_new_request if
 previous response said Connection:close

This fixes a deadlock when using the hls demuxer's new http_persistent feature
to stream a youtube live stream over HTTPS. The youtube servers are http/1.1
compliant, but return a "Connecton: close". Before this commit, the demuxer
would attempt to send a new request on the partially shutdown connection and
cause a deadlock in the tls protocol.

Signed-off-by: Aman Gupta <aman@tmm1.net>
---
 libavformat/http.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavformat/http.c b/libavformat/http.c
index ffdf11cf7ef..7a68378acb2 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -327,6 +327,9 @@ int ff_http_do_new_request(URLContext *h, const char *uri)
     if (ret < 0)
         return ret;
 
+    if (s->willclose)
+        return AVERROR_EOF;
+
     s->end_chunked_post = 0;
     s->chunkend      = 0;
     s->off           = 0;
-- 
GitLab