From 017591dc9ef74135717c8dc426291dfc09297004 Mon Sep 17 00:00:00 2001 From: Terrance Date: Mon, 27 Apr 2020 08:56:45 +0100 Subject: [PATCH] player: Close ffmpeg stdin during streaming A `stdin` of `None` means the ffmpeg subprocess input inherits from the parent process, which may cause undesired control from a terminal (e.g. `C` causes ffmpeg to prompt for a command). It also closes the parent's stdin when the subprocess exits. This commit switches to `subprocess.DEVNULL`, which provides a separate pre-closed stdin for ffmpeg subprocesses. --- discord/player.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/discord/player.py b/discord/player.py index f62d75ea9e..c310251219 100644 --- a/discord/player.py +++ b/discord/player.py @@ -203,7 +203,7 @@ class FFmpegPCMAudio(FFmpegAudio): def __init__(self, source, *, executable='ffmpeg', pipe=False, stderr=None, before_options=None, options=None): args = [] - subprocess_kwargs = {'stdin': source if pipe else None, 'stderr': stderr} + subprocess_kwargs = {'stdin': source if pipe else subprocess.DEVNULL, 'stderr': stderr} if isinstance(before_options, str): args.extend(shlex.split(before_options)) @@ -293,7 +293,7 @@ def __init__(self, source, *, bitrate=128, codec=None, executable='ffmpeg', pipe=False, stderr=None, before_options=None, options=None): args = [] - subprocess_kwargs = {'stdin': source if pipe else None, 'stderr': stderr} + subprocess_kwargs = {'stdin': source if pipe else subprocess.DEVNULL, 'stderr': stderr} if isinstance(before_options, str): args.extend(shlex.split(before_options))