Re: Problem with select/5 on AF_INET sockets with Windows 7

Fx <[email protected]> Thu, 19 Feb 2015 19:58:56 +0100
Newsgroups gmane.comp.gnu.prolog.bugs
Message-ID <[email protected]>
Daniel,

Thank you very much for your answer, and this is a great news for 1.4.5 !!!

I=92ll be patient and wait for the official distribution.


Regards,

Fran=E7ois-Xavier.


Le 17 f=E9vr. 2015 =E0 13:32, Daniel Diaz <[email protected]> a =
=E9crit :

> 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 dis=
covered
>> 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 wi=
ll
>> 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 =
worker
>> ...'), 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 pre=
dicate
>> the server works well.
>> =

>> =

>> %- Program Test without Select -----------------------------------
>> =

>> worker_run(Socket, Client, StreamIn, StreamOut):- write('i am a working =
worker
>> ...'), 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.
> =