From: Pierre Ynard Date: Sun, 18 Mar 2012 03:06:36 +0000 (+0100) Subject: lua: do delete stdin/stdout client X-Git-Tag: 2.1.0-git~5163 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;ds=sidebyside;h=525e092dfd845b71af030fba2332ea961a4c2d37;p=vlc lua: do delete stdin/stdout client This fixes an endless loop when piping commands to stdin with echo for example --- diff --git a/share/lua/intf/modules/host.lua b/share/lua/intf/modules/host.lua index 0d299cbfe0..0d345b80b2 100644 --- a/share/lua/intf/modules/host.lua +++ b/share/lua/intf/modules/host.lua @@ -125,24 +125,24 @@ function host() return vlc.win.console_read() end - local function del_client( client, nostdioerror ) - --client:send("Cleaning up.\r\n") + local function del_client( client ) + if not clients[client] then + vlc.msg.err("couldn't find client to remove.") + return + end + if client.type == client_type.stdio then - if not nostdioerror then - client:send( "Cannot delete stdin/stdout client.\n" ) - end - elseif clients[client] then - if client.type == client_type.net - or client.type == client_type.telnet then - if client.wfd ~= client.rfd then - vlc.net.close( client.rfd ) - end - vlc.net.close( client.wfd ) + h:broadcast("Shutting down.\r\n") + vlc.msg.info("Requested shutdown.") + vlc.misc.quit() + elseif client.type == client_type.net + or client.type == client_type.telnet then + if client.wfd ~= client.rfd then + vlc.net.close( client.rfd ) end - clients[client] = nil - else - vlc.msg.err("couldn't find client to remove.") + vlc.net.close( client.wfd ) end + clients[client] = nil end local function switch_status( client, s ) @@ -318,7 +318,9 @@ function host() local function destructor( h ) for _,client in pairs(clients) do - client:del(true) + if client.type ~= client_type.stdio then + client:del() + end end end