From: Filipe C. <fi...@gm...> - 2009-04-28 15:53:29
|
Hi, Bart Van Assche wrote: > On Tue, Apr 28, 2009 at 9:03 AM, Nicholas Nethercote > <n.n...@gm...> wrote: >> none/tests/fdleak_ipv4 doesn't work on Darwin. I can't work out why, >> but I don't know much about network programming. If anyone who does >> (Filipe?) it would be very helpful. > > Some remarks (found via source reading): > * The statement "setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, > sizeof(int));" should be checked. While Linux accepts both one-byte > and four-byte arguments for SO_REUSEADDR, some platforms only accept > one-byte arguments when setting a boolean socket option. > * The statement "addr.sin_port = 12321;" should be "addr.sin_port = > htons(12321);", otherwise port number 12321 will be used on big endian > systems and port number 8496 on little-endian systems. > Isn't that already being done? With the DO(...) macro? As for the error... The "Single UNIX specification" (http://www.unix.org/single_unix_specification/ ) says, about connect: -------------------------------- APPLICATION USAGE If connect() fails, the state of the socket is unspecified. Conforming applications should close the file descriptor and create a new socket before attempting to reconnect. -------------------------------- In Linux it may work, but it's not guaranteed to work on a UNIX. I'm creating a new socket in every iteration right now but still have some differences on the stderr side (some ellipsis we're not expecting and an extra connection refused). I'll see what's happening and make a patch later today. Regards, Filipe |