Commit 8d8b1194 authored by Antoine Cellerier's avatar Antoine Cellerier

Factorize and simplify client deletion

parent 79b98214
...@@ -125,25 +125,24 @@ function host() ...@@ -125,25 +125,24 @@ function host()
return vlc.win.console_read() return vlc.win.console_read()
end end
local function del_client( client ) local function del_client( client, nostdioerror )
--client:send("Cleaning up.\r\n")
if client.type == client_type.stdio then if client.type == client_type.stdio then
client:send( "Cannot delete stdin/stdout client.\n" ) if not nostdioerror then
return client:send( "Cannot delete stdin/stdout client.\n" )
end end
for i, c in pairs(clients) do elseif clients[client] then
if c == client then if client.type == client_type.net
if client.type == client_type.net or client.type == client_type.telnet then
or client.type == client_type.telnet then if client.wfd ~= client.rfd then
if client.wfd ~= client.rfd then vlc.net.close( client.rfd )
vlc.net.close( client.rfd )
end
vlc.net.close( client.wfd )
end end
clients[i] = nil vlc.net.close( client.wfd )
return
end end
clients[client] = nil
else
vlc.msg.err("couldn't find client to remove.")
end end
vlc.msg.err("couldn't find client to remove.")
end end
local function switch_status( client, s ) local function switch_status( client, s )
...@@ -194,7 +193,7 @@ function host() ...@@ -194,7 +193,7 @@ function host()
append = append, append = append,
} }
client:send( "VLC media player "..vlc.misc.version().."\n" ) client:send( "VLC media player "..vlc.misc.version().."\n" )
table.insert(clients, client) clients[client] = client
client:switch_status(status.password) client:switch_status(status.password)
end end
...@@ -282,7 +281,7 @@ function host() ...@@ -282,7 +281,7 @@ function host()
if is_flag_set(pollfds[client:fd()], vlc.net.POLLERR) if is_flag_set(pollfds[client:fd()], vlc.net.POLLERR)
or is_flag_set(pollfds[client:fd()], vlc.net.POLLHUP) or is_flag_set(pollfds[client:fd()], vlc.net.POLLHUP)
or is_flag_set(pollfds[client:fd()], vlc.net.POLLNVAL) then or is_flag_set(pollfds[client:fd()], vlc.net.POLLNVAL) then
del_client(client) client:del()
elseif is_flag_set(pollfds[client:fd()], vlc.net.POLLOUT) then elseif is_flag_set(pollfds[client:fd()], vlc.net.POLLOUT) then
table.insert(wclients, client) table.insert(wclients, client)
elseif is_flag_set(pollfds[client:fd()], vlc.net.POLLIN) then elseif is_flag_set(pollfds[client:fd()], vlc.net.POLLIN) then
...@@ -319,14 +318,7 @@ function host() ...@@ -319,14 +318,7 @@ function host()
local function destructor( h ) local function destructor( h )
for _,client in pairs(clients) do for _,client in pairs(clients) do
--client:send("Cleaning up.") client:del(true)
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)
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment