On 7/2/2010 12:01 PM, Marco Atzeri wrote:
--- Ven 2/7/10, Pavel Holejsovsky ha scritto:
Hi,
I think that following problem shows problematic behavior
in cygwin 1.7.5, at least incompatible with linux:
#include<stdio.h>
#include<sys/socket.h>
int main() {
int sock, option, optlen =
sizeof(int);
sock = socket(AF_INET,
SOCK_STREAM, 0);
getsockopt(sock, SOL_SOCKET,
SO_KEEPALIVE,&option,&optlen);
printf("option=%d,
optlen=%d\n", option, optlen);
return 0;
}
Prints optlen=1, while it is expected to be sizeof(int),
i.e. 4.
This is most probably because uinderlying winsock call has
this (mis)behavior, but I think that in cygwin layer this
could be worked around to be more unix compatible.
This issue is relevant:
SO_KEEPALIVE value is actually a char on Windows, not BOOL
https://bugzilla.gnome.org/show_bug.cgi?id=611756
And causes glib gio 2.24 to fail certain socket operations
on cygwin.
thanks,
Pavel
option=0, optlen=4
on XP-sp2, cygwin 1.7.5s(0.227/5/3) 20100628
Thanks for testing, Marco.
So it is even system-dependent misbehaviour of winsock. On w7-x64
cygwin 1.7.5 it prints
option=2674688, optlen=1
Pavel
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple