Thank you for your explanations. It was the first time I got the nonblocking connect error. Sorry to trouble you.
2016-06-20 22:09 GMT+03:00 David Matthews <david.matth...@prolingua.co.uk>: > Can you send a more complete test program? All the tests I have run have > worked as expected. > > > We get raise SysErr immediately after Socket.connectNB to a non-existent > > server. > > However, it is a nonblocking connect, so we should get information about > > unsuccesful connecton only after socket access. > > What do you mean by this? If you use connectNB to connect to a service > that is not yet running you will get a ECONNREFUSED error. The only > question is where. If the underlying "connect" system call returns the > error immediately then connectNB will raise an exception. Whether it does > or not depends on the system kernel. > > David > > > On 20/06/2016 14:52, Kostirya wrote: > >> Hello. >> >> Yes. It's worked when IP not 127.0.0.1. >> But is not worked whatever with NetHostDB.getByName "localhost". >> Probably bug have somewhere else. >> >> I use Poly/ML version from >> commit fccf59807aea1d12f11b49f80f38b7137ad8b642 >> Author: David Matthews <d...@prolingua.co.uk> >> Date: Wed May 25 17:09:38 2016 +0100 >> >> It's later than >> >> git show 0d050ae45 >>> >> commit 0d050ae450de3d5546deef873aa2b5486e64dea2 >> Author: David Matthews <d...@prolingua.co.uk> >> Date: Thu May 19 15:48:58 2016 +0100 >> >> >> P.S. >> >> cat 1.sml >>> >> val h0 = NetHostDB.addr(valOf(NetHostDB.getByName "localhost")) >> val h1 = valOf(NetHostDB.fromString "127.0.0.1") >> val _ = (if h0 = h1 then print "OK\n" else print "ERROR\n") >> >>> poly --script 1.sml >>> >> OK >> >> >> Nick. >> >> 2016-06-20 16:02 GMT+03:00 David Matthews <david.matth...@prolingua.co.uk >> >: >> >> It's not actually a bug with Socket.connectNB. There was a bug in >>> NetHostDB.scan and NetHostDB.fromString which meant that IP addresses >>> such >>> as 127.0.0.1 were not handled correctly. This was fixed in git master in >>> commit 0d050ae45. You can work around the problem using >>> NetHostDB.getByName "localhost". >>> >>> David >>> >>> >>> On 20/06/2016 10:21, Kostirya wrote: >>> >>> Hello, all. >>>> >>>> Socket.connectNB behaves oddly in Poly/ML. >>>> >>>> We get raise SysErr immediately after Socket.connectNB to a non-existent >>>> server. >>>> However, it is a nonblocking connect, so we should get information about >>>> unsuccesful connecton only after socket access. >>>> >>>> The source code is attached and here is the results for Poly/ML: >>>> >>>> ./a.out >>>> >>>>> >>>>> exc in 2 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> exc in 3 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> exc in 4 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> . >>>> . >>>> ^C >>>> >>>> ./a.out >>>>> >>>>> exc in 1 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> exc in 2 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> exc in 3 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> exc in 4 socket: SysErr ("Connection refused", SOME ECONNREFUSED) >>>> . >>>> . >>>> ^C >>>> >>>> We usually get errors in this situation. I've tested on Linix and >>>> FreeBSD. >>>> >>>> MLton and SML/NY don't get errors in the same situation. >>>> >>>> NIck. >>>> >>>> >>>> >>>> _______________________________________________ >>>> polyml mailing list >>>> polyml@inf.ed.ac.uk >>>> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml >>>> >>>> _______________________________________________ >>>> >>> polyml mailing list >>> polyml@inf.ed.ac.uk >>> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml >>> >>> >> >> >> _______________________________________________ >> polyml mailing list >> polyml@inf.ed.ac.uk >> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml >> >> _______________________________________________ > polyml mailing list > polyml@inf.ed.ac.uk > http://lists.inf.ed.ac.uk/mailman/listinfo/polyml >
_______________________________________________ polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml