bug-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Daniel Diaz
Subject: Re: Problem with select/5 on AF_INET sockets with Windows 7
Date: Tue, 17 Feb 2015 13:32:25 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

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, address@hidden a écrit :
Dear Daniel,

I am working on a specific http server for gnu prolog (1.4.4), and i discovered
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 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 predicate
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
address@hidden
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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]