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.