Commit ea6dc345 authored by Antoine Cellerier's avatar Antoine Cellerier

Remove select timeout.

console and socket mode are now exclusive on windows.
parent e0092fc5
...@@ -215,11 +215,10 @@ static int vlclua_net_poll( lua_State *L ) ...@@ -215,11 +215,10 @@ static int vlclua_net_poll( lua_State *L )
lua_pop( L, 1 ); lua_pop( L, 1 );
i++; i++;
} }
int i_timeout = luaL_optint( L, 2, -1 );
int i_ret; int i_ret;
do do
i_ret = poll( p_fds, i_fds, i_timeout ); i_ret = poll( p_fds, i_fds, -1 );
while( i_ret == -1 ); while( i_ret == -1 );
for( i = 0; i < i_fds; i++ ) for( i = 0; i < i_fds; i++ )
......
...@@ -191,7 +191,7 @@ net.connect_tcp( host, port ): open a connection to the given host:port (TCP). ...@@ -191,7 +191,7 @@ net.connect_tcp( host, port ): open a connection to the given host:port (TCP).
net.close( fd ): Close file descriptor. net.close( fd ): Close file descriptor.
net.send( fd, string, [length] ): Send data on fd. net.send( fd, string, [length] ): Send data on fd.
net.recv( fd, [max length] ): Receive data from fd. net.recv( fd, [max length] ): Receive data from fd.
net.poll( { fd = events }, [timeout in ms] ): Implement poll function. net.poll( { fd = events } ): Implement poll function.
Returns the numbers of file descriptors with a non 0 revent. The function Returns the numbers of file descriptors with a non 0 revent. The function
modifies the input table to { fd = revents }. See "man poll". modifies the input table to { fd = revents }. See "man poll".
net.POLLIN/POLLPRI/POLLOUT/POLLRDHUP/POLLERR/POLLHUP/POLLNVAL: poll event flags net.POLLIN/POLLPRI/POLLOUT/POLLRDHUP/POLLERR/POLLHUP/POLLNVAL: poll event flags
......
...@@ -122,11 +122,7 @@ function host() ...@@ -122,11 +122,7 @@ function host()
local function read_console( client, len ) local function read_console( client, len )
-- Read stdin from a windows console (beware: select/poll doesn't work!) -- Read stdin from a windows console (beware: select/poll doesn't work!)
if vlc.win.console_wait(0) then
return vlc.win.console_read() return vlc.win.console_read()
else
return 0
end
end end
local function del_client( client ) local function del_client( client )
...@@ -208,6 +204,9 @@ function host() ...@@ -208,6 +204,9 @@ function host()
and listeners.tcp[host][port] then and listeners.tcp[host][port] then
error("Already listening on tcp host `"..host..":"..tostring(port).."'") error("Already listening on tcp host `"..host..":"..tostring(port).."'")
end end
if listeners.stdio and vlc.win then
error("Cannot listen on console and sockets concurrently on Windows")
end
if not listeners.tcp then if not listeners.tcp then
listeners.tcp = {} listeners.tcp = {}
end end
...@@ -230,6 +229,9 @@ function host() ...@@ -230,6 +229,9 @@ function host()
if listeners.stdio then if listeners.stdio then
error("Already listening on stdio") error("Already listening on stdio")
end end
if listeners.tcp and vlc.win then
error("Cannot listen on console and sockets concurrently on Windows")
end
new_client( h, 0, 1, client_type.stdio ) new_client( h, 0, 1, client_type.stdio )
listeners.stdio = true listeners.stdio = true
end end
...@@ -250,7 +252,10 @@ function host() ...@@ -250,7 +252,10 @@ function host()
end end
end end
local function _accept_and_select( h, timeout ) local function _accept_and_select( h )
local wclients = {}
local rclients = {}
if not (vlc.win and listeners.stdio) then
local function filter_client( fds, status, event ) local function filter_client( fds, status, event )
for _, client in pairs(clients) do for _, client in pairs(clients) do
if client.status == status then if client.status == status then
...@@ -271,16 +276,7 @@ function host() ...@@ -271,16 +276,7 @@ function host()
end end
end end
local timeout = -1 local ret = vlc.net.poll( pollfds )
if vlc.win and listeners.stdio then
timeout = 50
end
local ret = 0
if not vlc.win or listeners.tcp then
ret = vlc.net.poll( pollfds, timeout )
end
local wclients = {}
local rclients = {}
if ret > 0 then if ret > 0 then
for _, client in pairs(clients) do for _, client in pairs(clients) do
if is_flag_set(pollfds[client:fd()], vlc.net.POLLERR) if is_flag_set(pollfds[client:fd()], vlc.net.POLLERR)
...@@ -305,8 +301,7 @@ function host() ...@@ -305,8 +301,7 @@ function host()
end end
end end
end end
else
if vlc.win and listeners.stdio then
for _, client in pairs(clients) do for _, client in pairs(clients) do
if client.type == client_type.stdio then if client.type == client_type.stdio then
if client.status == status.read or client.status == status.password then if client.status == status.read or client.status == status.password then
...@@ -319,7 +314,6 @@ function host() ...@@ -319,7 +314,6 @@ function host()
end end
end end
end end
return wclients, rclients return wclients, rclients
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