vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed Sep 30 21:48:36 2020 +0300| [b47dd251b5a6715cc58b443deb1e7de2400ab1c2] | committer: Rémi Denis-Courmont
ytdl: use vlc_read_i11e() This will abort should YoutubeDL get stuck waiting for network I/O. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b47dd251b5a6715cc58b443deb1e7de2400ab1c2 --- modules/demux/ytdl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/demux/ytdl.c b/modules/demux/ytdl.c index 63b082b4b9..54c722a783 100644 --- a/modules/demux/ytdl.c +++ b/modules/demux/ytdl.c @@ -36,6 +36,7 @@ #include <vlc_input_item.h> #include <vlc_plugin.h> #include <vlc_spawn.h> +#include <vlc_interrupt.h> struct ytdl_json { struct vlc_logger *logger; @@ -53,7 +54,14 @@ size_t json_read(void *data, void *buf, size_t size) { struct ytdl_json *sys = data; - return read(sys->fd, buf, size); + while (!vlc_killed()) { + ssize_t val = vlc_read_i11e(sys->fd, buf, size); + + if (val >= 0) + return val; + } + + return 0; } static int ytdl_popen(pid_t *restrict pid, const char *argv[]) @@ -398,8 +406,10 @@ static int OpenCommon(vlc_object_t *obj) } } - if (demux == NULL) + if (demux == NULL) { + json_free(&sys->json); return VLC_EGENERIC; + } s->pf_demux = DemuxNested; s->pf_control = ControlNested; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
