diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index bbc2742dc7dcb8b5cd1e7f83deba29cf2d277f22..b850b1a320549dc35806d93926da1a5ba22dd1d7 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -269,8 +269,13 @@ static void hlsenc_io_close(AVFormatContext *s, AVIOContext **pb, char *filename
 
     if (!http_base_proto || !hls->http_persistent || hls->key_info_file || hls->encrypt) {
         ff_format_io_close(s, pb);
+#if CONFIG_HTTP_PROTOCOL
     } else {
+        URLContext *http_url_context = ffio_geturlcontext(*pb);
+        av_assert0(http_url_context);
         avio_flush(*pb);
+        ffurl_shutdown(http_url_context, AVIO_FLAG_WRITE);
+#endif
     }
 }