Re: Problem with select/5 on AF_INET sockets with Windows 7
Daniel Diaz <[email protected]> Tue, 17 Feb 2015 13:32:25 +0100
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
Hi, sorry for the late reply. Thank you for this bug report. The bug is fixed in the last git version. Will be fixed in next 1.4.5 Daniel Le 27/01/2015 12:44, [email protected] a =E9crit : > Dear Daniel, > > I am working on a specific http server for gnu prolog (1.4.4), and i disc= overed > a strange comportment under windows 7 (32) with the select/5 predicate. > > The simple test below works fine on a OSX (maybe all unix) system but will > return a system error under Windos 7 (32) , "Bad File Descriptor": > > ERROR : Failed to start server : error(system_error(Bad file > descriptor),select/5) > > To test, launch one of the two test cases and open an internet browser to > http://127.0.0.1:8080/ for example, or change the 127.0.0.1 by your IP. > > %- Program Test with Select ----------------------------------- > > worker_run(Socket, Client, StreamIn, StreamOut):- write('i am a working w= orker > ...'), nl. > > server_test_with_select:- > socket('AF_INET', Socket), > socket_bind(Socket, 'AF_INET'(Host, 8080)), > socket_listen(Socket,10), > catch( server_loop_with_select(Socket),E, > ( socket_close(Socket), > format( "ERROR : Failed to start server : ~w~n", [E] ) > )). > > server_loop_with_select(Socket):- > repeat, > select([Socket],ReadyReads,[Socket],[],0), > worker_run(Socket, Client, StreamIn, StreamOut), > fail. > > %- End of Program Test with Select ----------------------------------- > > When not using usefull select/5 and directly use the socket_accept/4 pred= icate > the server works well. > > > %- Program Test without Select ----------------------------------- > > worker_run(Socket, Client, StreamIn, StreamOut):- write('i am a working w= orker > ...'), nl. > > server_test_without_select:- > socket('AF_INET', Socket), > socket_bind(Socket, 'AF_INET'(Host, 8080)), > socket_listen(Socket,10), > catch( server_loop_without_select(Socket),E, > ( socket_close(Socket), > format( "ERROR : Failed to start server : ~w~n", [E] ) > )). > > server_loop_without_select(Socket):- > repeat, > socket_accept(Socket, Client, StreamIn, StreamOut), > worker_run(Socket, Client, StreamIn, StreamOut), > fail. > > %- End of Program Test without Select ----------------------------------- > > > Is it a known bug and did you plan to fix it in a future version ? > > > Best Regards, > > Fx NION. > > > _______________________________________________ > Bug-prolog mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/bug-prolog > -- = Ce message a ete verifie par MailScanner pour des virus ou des polluriels et rien de suspect n'a ete trouve.